/* sleep timer, share card, song of the week (extras.js) */
.ctl .xbtn{position:relative;margin-top:0}
.xbtn svg{width:20px;height:20px;fill:currentColor}
.xbtn em{font-style:normal;font-size:10px;margin-left:3px;letter-spacing:.04em}
.xbtn.on{border-color:var(--g,#ffd34d)!important;color:var(--g,#ffd34d)}
.featured{margin-bottom:18px}
.featured .ftitle{font-size:22px;font-weight:600;line-height:1.25;margin:4px 0 6px}
.featured .fnote{opacity:.8;font-size:14px;margin-bottom:10px}
.featured .flinks{display:flex;gap:8px;flex-wrap:wrap}
.featured .flinks .chip{display:inline-block;padding:7px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.05);color:inherit;text-decoration:none;font-size:13px;font-weight:600;letter-spacing:.06em}
.featured .flinks .chip:hover{border-color:var(--g,#ffd34d);background:rgba(255,255,255,.12)}

/* did-you-know pop-ups (facts.js) */
#factbubble{position:fixed;left:18px;bottom:18px;z-index:60;max-width:min(340px,calc(100vw - 36px));padding:12px 34px 12px 14px;border-radius:14px;background:rgba(14,10,28,.94);color:#fff;border:2px solid var(--g,#ffd34d);box-shadow:0 8px 30px rgba(0,0,0,.5);font-size:14px;line-height:1.4}
#factbubble::after{content:"";position:absolute;left:26px;bottom:-12px;border:10px solid transparent;border-top-color:var(--g,#ffd34d);border-bottom:0}
#factbubble[hidden]{display:none}
#factbubble b{display:block;color:var(--g,#ffd34d);font-size:12px;letter-spacing:.14em;margin-bottom:4px}
#factbubble p{margin:0 0 6px}
#factbubble small{opacity:.65;font-size:11px}#factbubble small a{color:inherit}
#factbubble button{position:absolute;top:6px;right:8px;background:none;border:0;color:inherit;opacity:.6;cursor:pointer;font-size:14px}
#factbubble.pop{animation:factpop .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes factpop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:600px){#factbubble{left:12px;right:12px;bottom:12px;max-width:none}}

/* the control row stays on ONE line on every screen: volume shrinks, round buttons keep their size */
.ctl{flex-wrap:nowrap!important}
.ctl .vol{flex:1 1 90px;min-width:64px}
.ctl .vol input[type=range]{flex:1 1 auto;min-width:0;width:auto}
.ctl .sharebtn,.ctl .play{flex:0 0 auto}
.ctl .xbtn,.ctl #shareBtn{padding:9px 10px}
@media(max-width:600px){
  .ctl{gap:7px!important}
  .ctl .vol b{display:none}
  .ctl .vol input{min-width:36px}
  html .ctl .play{width:50px!important;height:50px!important;flex:0 0 50px!important}
  .ctl .vol{flex:1 1 40px;min-width:0!important}
  .ctl .vol span{display:none}
  html .ctl .xbtn,html .ctl #shareBtn{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;max-width:34px!important;padding:0!important;margin:0!important;border-radius:50%!important;display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 34px!important;box-sizing:border-box}
  .xbtn svg,.ctl #shareBtn svg{width:17px;height:17px}
  .xbtn em{position:absolute;top:-5px;right:-5px;margin:0;padding:1px 4px;border-radius:7px;background:var(--g,#ffd34d);color:#000;font-size:9px}
}

/* save hearts: at the left of each row on every screen, clear of the reaction column and the chat box */
html .list li .hb{order:-1;margin-left:0;margin-right:-2px;width:32px;height:30px}
/* computers: the lyrics are a small side window in the top-right corner (not a pop-up over the page), short enough to stay clear of the share / sleep buttons, so people can read along while the music plays */
@media(min-width:700px){
  html #lyrics{left:auto;right:16px;top:84px;bottom:auto;transform:none;width:min(340px,34vw);height:250px;z-index:70;border-width:1px;box-shadow:0 14px 44px rgba(0,0,0,.6)}
  html #lyrics.sync #lyB{padding:52px 14px}
  html #lyrics #lyB{font-size:14px;padding-top:10px;padding-bottom:10px}
  html #lyrics .lh{padding:9px 12px}
  html #lyrics #lyT{font-size:14px}
  html #lyrics .lf{padding:5px 12px}
}
/* phones only (the computer layout is unchanged): the shuttle is off for now, the did-you-know banner sits in its lane under the top bar, and the save hearts sit at the left of each row, clear of the reaction column */
@media(max-width:699px){
  .sh{display:none!important}
  html #factbubble{position:absolute;left:10px;right:10px;top:calc(var(--hb,100px) - 4px);bottom:auto;max-width:none;z-index:70;padding:10px 34px 10px 12px;border-radius:12px;font-size:14px;line-height:1.35;box-shadow:0 6px 22px rgba(0,0,0,.5)}
  html #factbubble::after{display:none}
  html #factbubble.pop{animation:factdrop .4s cubic-bezier(.2,1.2,.4,1)}
  @keyframes factdrop{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
}
#npArt[data-fallback]{cursor:default}

/* the record: a black vinyl that spins while the music plays, with the album cover (or the record-label picture) as its centre label; bigger, and centred beside the title */
html .np .npart{width:136px;height:136px;aspect-ratio:1/1;border-radius:50%!important;position:relative;overflow:hidden;border:0;margin:0;align-self:center!important;
  background:conic-gradient(from 25deg,rgba(255,255,255,0) 0 17%,rgba(255,255,255,.2) 24%,rgba(255,255,255,0) 31% 67%,rgba(255,255,255,.2) 74%,rgba(255,255,255,0) 81%),
             radial-gradient(circle,#1c1c20 0,#0b0b0d 55%,#050506 100%);
  box-shadow:0 8px 24px rgba(0,0,0,.65),0 0 0 2px rgba(255,255,255,.07)}
html .np:has(.npart:not([hidden])) > .npart{grid-row:1/span 4;align-self:center!important}
html .np .npart img{position:absolute;left:50%;top:50%;width:60%;height:60%;aspect-ratio:1/1;transform:translate(-50%,-50%);border-radius:50%!important;object-fit:cover;z-index:0;animation:none!important;box-shadow:0 0 0 3px rgba(0,0,0,.6),0 0 0 4px rgba(255,255,255,.16)}
html .np .npart::before{content:"";position:absolute;inset:0;border-radius:50%;z-index:1;pointer-events:none;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 3px,rgba(255,255,255,.045) 3px 4px)}
html .np .npart::after{width:8%;height:8%;z-index:2}
html .eq.on ~ .np .npart{animation:recspin 6s linear infinite}
@media(max-width:820px){html .np .npart{width:116px;height:116px}}
@media(max-width:720px){html .np .npart{width:100px;height:100px}html .np:has(.npart:not([hidden])) > .npart{grid-row:1/span 3;align-self:center!important}}
/* saved songs: round service buttons in each brand's own colours */
.sico{display:inline-flex;flex:0 0 auto;width:34px;height:34px;border-radius:50%;margin:0 6px 6px 0;box-shadow:0 0 0 1px rgba(255,255,255,.22),0 2px 6px rgba(0,0,0,.35);transition:transform .12s,box-shadow .12s;text-decoration:none}
.sico svg{width:100%;height:100%;display:block;border-radius:50%}
.sico:hover,.sico:focus-visible{transform:scale(1.14);box-shadow:0 0 0 2px rgba(255,255,255,.7),0 4px 12px rgba(0,0,0,.45);outline:0}
/* the artists' own accounts: a slim row under the play / volume row */
.artlinks{display:flex;flex-wrap:wrap;align-items:center;gap:5px 14px;margin:10px 0 0;color:var(--dim);font-size:11px}
.artlinks[hidden]{display:none}
.alklab{font-size:10px;letter-spacing:.16em;text-transform:uppercase;opacity:.8}
.alk{display:inline-flex;align-items:center;gap:6px}
.alk b{font-weight:600;color:inherit;margin-right:2px}
.alk .sico{width:20px;height:20px;margin:0;box-shadow:0 0 0 1px rgba(255,255,255,.2)}
html[data-skin=meters] .artlinks,html[data-skin=wormhole] .artlinks{display:none}
.artlnk{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor;cursor:pointer}
.artlnk:hover,.artlnk:focus-visible{border-bottom-style:solid;outline:0}
.alk.lbl em{font-style:normal;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.7;margin-right:2px}
.alk.trk em{font-style:normal;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.7;margin-right:2px}
.alk.trk b{font-weight:500;opacity:.9}
/* the artist profile card */
.acard{position:fixed;inset:0;z-index:2147483300;display:flex;align-items:center;justify-content:center;background:rgba(6,8,8,.78);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px}
.acard[hidden]{display:none}
.acbox{position:relative;width:min(460px,100%);max-height:84vh;overflow:auto;background:rgba(14,16,15,.985);color:#eee;border:1px solid rgba(255,255,255,.16);border-radius:18px;padding:18px 18px 14px;box-shadow:0 24px 70px rgba(0,0,0,.7),0 0 0 1px rgba(var(--gr,255,211,77),.16);font-family:system-ui,-apple-system,'Segoe UI',sans-serif;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.acbox::-webkit-scrollbar{width:10px}
.acbox::-webkit-scrollbar-track{background:transparent}
.acbox::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:99px;border:3px solid transparent;background-clip:padding-box}
.acbox .azlink{font-size:11px;padding:5px 11px;border:1px solid rgba(255,255,255,.24);border-radius:999px;text-decoration:none;opacity:.9}
.acx{position:absolute;top:8px;right:10px;width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:24px;line-height:1;cursor:pointer}
.acx:hover{background:rgba(255,255,255,.12)}
.acl{font:600 10px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--g,#ffd34d);margin-bottom:12px;padding-right:44px}
.achead{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.acpic{width:92px;height:92px;flex:0 0 92px;border-radius:50%;object-fit:cover;background:#222;box-shadow:0 0 0 2px var(--g,#ffd34d),0 6px 18px rgba(0,0,0,.5)}
.acpic.ph{display:flex;align-items:center;justify-content:center;font:700 34px system-ui;color:#fff;background:linear-gradient(135deg,#333,#111)}
.achead h3{margin:0;font-size:22px;line-height:1.15}
.acmeta{font-size:12px;opacity:.7;margin-top:4px}
.acbio{margin:8px 0;font-size:14px;line-height:1.45}
.acfact{margin:6px 0;font-size:13px;line-height:1.4;opacity:.9;padding-left:12px;border-left:2px solid rgba(var(--gr,255,211,77),.5)}
.acacc{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.acacc .sico,.aclab .sico{width:30px;height:30px;margin:0}
.aclab{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0 4px;font-size:13px}
.aclab em{font-style:normal;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.accr{margin-top:12px;font-size:10px;opacity:.6}
.accr a{color:inherit}
@media(max-width:600px){.acard{align-items:flex-end;padding:0}.acbox{width:100%;border-radius:18px 18px 0 0;max-height:88vh;padding-bottom:max(16px,env(safe-area-inset-bottom))}.acsg{flex-direction:column;gap:1px;padding:6px 0}.acsg em{white-space:normal;font-size:10.5px;opacity:.5}}
/* Artists A-Z */
.azbtn{margin-top:8px}
.azlink{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:inherit;opacity:.75;text-decoration:none;border-bottom:1px dotted currentColor}
.azlink:hover{opacity:1}
.azov{position:fixed;inset:0;z-index:2147483200;display:flex;align-items:center;justify-content:center;background:rgba(6,8,8,.9);-webkit-backdrop-filter:blur(14px) saturate(.85);backdrop-filter:blur(14px) saturate(.85);padding:16px}
body.azopen{overflow:hidden}
.azov[hidden]{display:none}
.azbox{position:relative;width:min(760px,100%);height:min(88vh,820px);display:flex;flex-direction:column;background:rgba(14,16,15,.985);color:#eee;border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:0 0 4px;box-shadow:0 28px 80px rgba(0,0,0,.7);font-family:system-ui,-apple-system,'Segoe UI',sans-serif;overflow:hidden}
.azbox .acl{margin:0;padding:18px 52px 12px 20px;border-bottom:1px solid rgba(255,255,255,.08)}
.azbox>.acl,.azbox>.azq,.azbox>.azst,.azbox>.azl{flex:0 0 auto}
.azq{width:calc(100% - 40px);box-sizing:border-box;margin:12px 20px 0;padding:11px 15px;border-radius:11px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:inherit;font:inherit;font-size:14px}
.azq::placeholder{color:rgba(238,238,238,.45)}
.azq:focus{outline:2px solid rgba(var(--gr,255,211,77),.6);border-color:transparent}
/* station filter: one tidy dropdown instead of 35 wrapped chips (they collapsed to a 3px sliver) */
.azst{display:flex;align-items:center;gap:10px;margin:10px 20px 0;max-height:none;overflow:visible}
.azslab{font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;opacity:.55;white-space:nowrap;flex:0 0 auto}
.azsel{flex:1 1 auto;min-width:0;appearance:none;-webkit-appearance:none;cursor:pointer;padding:9px 34px 9px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background-color:rgba(255,255,255,.06);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23eeeeee' stroke-opacity='.6' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;color:inherit;font:inherit;font-size:13px;text-overflow:ellipsis}
.azsel:hover{border-color:rgba(255,255,255,.3)}
.azsel:focus{outline:2px solid rgba(var(--gr,255,211,77),.55);outline-offset:1px}
.azsel option{background:#141614;color:#eee}
/* letter index: scrollable strip on touch sizes, 27 equal columns only when there is real width */
.azl{display:flex;gap:4px;margin:10px 20px 0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scroll-snap-type:x proximity}
.azl::-webkit-scrollbar{display:none}
.azl button{flex:0 0 40px;width:40px;height:40px;border:1px solid transparent;border-radius:9px;background:rgba(255,255,255,.045);color:inherit;font-weight:700;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;transition:background .12s ease,color .12s ease}
.azl button:hover{background:rgba(255,255,255,.12)}
.azl button:focus-visible{outline:2px solid rgba(var(--gr,255,211,77),.6);outline-offset:1px}
.azl button.on{background:rgba(var(--gr,255,211,77),.24);border-color:rgba(var(--gr,255,211,77),.55);color:#fff}
@media(min-width:761px){
  .azl{display:grid;grid-template-columns:repeat(27,minmax(0,1fr));gap:3px;overflow:visible;scroll-snap-type:none}
  .azl button{flex:1 1 auto;width:100%;height:32px;font-size:12px}
}
/* touch devices keep the 40px scrolling strip even on a wide screen: 24px grid cells are a mouse target */
@media(pointer:coarse){
  .azl{display:flex;overflow-x:auto;scroll-snap-type:x proximity}
  .azl button{flex:0 0 40px;width:40px;height:40px}
}
.azlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin-top:12px;border-top:1px solid rgba(255,255,255,.08);padding:4px 12px 12px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.azlist::-webkit-scrollbar{width:10px}
.azlist::-webkit-scrollbar-track{background:transparent}
.azlist::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:99px;border:3px solid transparent;background-clip:padding-box}
.azrow{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;padding:11px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.055);border-radius:10px;background:transparent;color:inherit;cursor:pointer;font:inherit}
.azrow:hover{background:rgba(255,255,255,.07)}
.azrow:focus-visible{background:rgba(255,255,255,.09);outline:0}
.azrow b{font-size:15px;font-weight:600;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.azrow span{font-size:11.5px;opacity:.62;margin-left:auto;max-width:56%;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.azrow::after{content:'\203a';opacity:.3;font-size:16px;line-height:1;margin-left:6px}
.azempty{padding:22px 10px;opacity:.65;font-size:13px;text-align:center}
.acsongs{margin-top:12px;border-top:1px solid rgba(255,255,255,.1);padding-top:8px}
.acsh{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.7;margin-bottom:4px}
.acsg{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:3px 0}
.acsg em{font-style:normal;opacity:.55;white-space:nowrap;font-size:11px}
.acsm{font-size:11px;opacity:.6;padding-top:2px}
@media(max-width:600px){.azov{align-items:flex-end;padding:0;overscroll-behavior:contain}.azbox{width:100%;height:92vh;height:92dvh;border-radius:20px 20px 0 0;border-bottom:0;padding-bottom:max(4px,env(safe-area-inset-bottom));-webkit-text-size-adjust:100%;text-size-adjust:100%}.azbox .acl{padding:15px 52px 10px 16px}.azbox .acx,#acard .acx{width:40px;height:40px;top:6px;right:8px;font-size:26px}.azq{width:calc(100% - 32px);margin:10px 16px 0;padding:13px 15px;font-size:16px}.azst{margin:10px 16px 0}.azslab{font-size:9px}.azsel{padding:13px 34px 13px 12px;font-size:16px}.azl{margin:10px 16px 0}.azlist{padding:4px 8px 14px}.azrow{padding:14px 8px}.azrow b{font-size:14.5px}.azrow span{max-width:50%;font-size:11px}}
/* short viewports (phone landscape, small laptops): shrink the header stack so the list keeps real height */
@media(max-height:520px){.azov{padding:8px}.azbox{height:96vh;height:96dvh;border-radius:16px}.azbox .acl{padding:9px 50px 7px 14px;font-size:9px;margin:0}.azbox .acx,#acard .acx{width:36px;height:36px;top:4px;right:6px;font-size:24px}.azq{margin:8px 14px 0;padding:9px 12px}.azst{margin:8px 14px 0}.azsel{padding:8px 30px 8px 10px}.azl{margin:8px 14px 0}.azl button{height:32px}.azlist{margin-top:8px}.acbox{max-height:96vh;max-height:96dvh}}
.aclinks{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
.aclk{font-size:11.5px;padding:4px 11px;border-radius:999px;border:1px solid rgba(255,255,255,.26);color:inherit;text-decoration:none;white-space:nowrap}
.aclk:hover,.aclk:focus-visible{background:rgba(255,255,255,.14);outline:0}
/* the "Playing now" panel: a header, then one tidy line per artist, label and track */
html .artlinks{display:block;margin:12px 0 0;padding:8px 12px 5px;border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:12px;background:color-mix(in srgb,currentColor 5%,transparent);color:var(--dim);font-size:12px}
html .alkhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:3px}
html .alklab{font-size:10px;letter-spacing:.16em;text-transform:uppercase;opacity:.85}
html .artlinks .alk{display:grid;grid-template-columns:minmax(110px,32%) 1fr;align-items:center;gap:8px;padding:5px 0;border-top:1px solid color-mix(in srgb,currentColor 12%,transparent);margin:0}
html .alkn{display:flex;flex-direction:column;min-width:0;line-height:1.2}
html .alkn em{font-style:normal;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.65;margin:0}
html .alkn b{font-weight:600;color:inherit;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html .alki{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
html .artlinks .alki .sico{width:22px;height:22px;margin:0}
html .artlinks .azlink{white-space:nowrap}
@media(max-width:600px){html .artlinks .alk{grid-template-columns:minmax(84px,36%) 1fr}}
.aclabs{margin-top:10px}
.aclh{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.7;margin-bottom:3px}
.aclr{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;border-top:1px solid rgba(255,255,255,.08)}
.aclr b{font-weight:600;flex:1 1 auto;min-width:0}
.aclr .sico{width:24px;height:24px;margin:0}
html .artlinks{display:none!important}
.artbtn{position:absolute;right:178px;top:50%;transform:translateY(-50%);padding:7px 14px;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 35%,transparent);background:transparent;color:inherit;font:600 11px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.artbtn:hover{background:color-mix(in srgb,currentColor 12%,transparent)}
.acaz{display:inline-block;margin-top:10px}
@media(max-width:760px){.artbtn{position:static;transform:none;margin-left:auto}.artbtn+.onair{margin-left:10px}}
.artbtn{right:168px;white-space:nowrap}
.featured .fprof{display:inline-flex;align-items:center;gap:10px;padding:5px 16px 5px 5px}
.featured .fface{width:34px;height:34px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px var(--g,#ffd34d)}
.featured .fface[hidden]{display:none}
.featured .fprof:not(:has(.fface:not([hidden]))){padding:7px 16px}
/* Culture Shock sound clash pad (soundclash.js): small FX-box style buttons */
.clash{margin-bottom:18px;border-color:rgba(245,197,24,.45);padding-top:10px;padding-bottom:12px}
.clash[hidden]{display:none}
.clash h2{margin-bottom:2px}
.clash .clashnote{margin:0 0 8px;font-size:12px;opacity:.7}
.clashpad{display:flex;flex-wrap:wrap;gap:14px 18px}
.clashbtn{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;width:56px;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.clashbtn::before{content:"";width:6px;height:6px;border-radius:50%;background:#3a2a2a;box-shadow:inset 0 0 1px #000;order:-1;transition:background .08s,box-shadow .08s}
.clashbtn span{order:2;font:700 8px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;opacity:.85}
.clashbtn small{display:none}
.clashbtn::after{content:"";order:1;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--c) 55%,#fff),var(--c) 55%,color-mix(in srgb,var(--c) 45%,#000));border:2px solid #0b0b0b;box-shadow:0 3px 0 #000,0 0 0 2px #888,inset 0 -2px 3px rgba(0,0,0,.4);transition:transform .06s,box-shadow .06s}
.clashbtn.on::before,.clashbtn:active::before{background:var(--c);box-shadow:0 0 7px 2px var(--c)}
.clashbtn.on::after,.clashbtn:active::after{transform:translateY(3px);box-shadow:0 0 0 #000,0 0 0 2px #888,inset 0 -1px 2px rgba(0,0,0,.5)}
.clashbtn:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:6px}
/* the "You are live with the station" line sits dead centre */
#hint:has(.live){text-align:center;font-size:14px;letter-spacing:.04em;margin:16px 0 4px}
#hint .live{display:inline-block}
/* Sound clash (left) and Song of the week (right) on one row */
.cpair{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:18px;margin-bottom:18px}
.cpair>.card{margin-bottom:0}
@media(max-width:640px){.cpair{grid-template-columns:1fr;gap:12px}}
/* the artist profile link: just the face and the words, no pill */
.featured .flinks .chip.fprof{display:inline-flex;align-items:center;gap:10px;padding:0;border:0;border-radius:0;background:transparent;font-size:14px;font-weight:600}
.featured .flinks .chip.fprof:hover{background:transparent;border:0;text-decoration:underline}
.featured .fprof .fface{width:40px;height:40px}
.featured .fprof:not(:has(.fface:not([hidden]))){padding:0}
.featured .ftitle{font-size:19px}
.acsg span small{display:block;font-size:11px;opacity:.6;margin-top:1px}
/* play/pause, share and sleep timer are one size; no dashed ring around play */
html[data-skin] .ctl .play::after,html .ctl .play::before{content:none!important;display:none!important}
html[data-skin] .ctl .play{margin:0}
@media(max-width:600px){
  html .ctl .play,html .ctl .xbtn,html .ctl #shareBtn,html[data-skin] .ctl .sharebtn{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;flex:0 0 40px!important}
  html .ctl .play svg{width:18px!important;height:18px!important}
}
/* phones: the play button keeps its round 40px shape (the skin rules set its height) */
@media(max-width:600px){
  html[data-skin]:not([data-skin=meters]):not([data-skin=wormhole]) .ctl .play{width:40px!important;height:40px!important;min-height:40px!important;flex:0 0 40px!important}
}
/* "All artists" beside Artist profile: phones only (desktop has it at the bottom and inside the card) */
.featured .flinks .fall{display:none}
@media(max-width:640px){
  #azcard{display:none!important}
  .featured .flinks{align-items:center;gap:16px}
  .featured .flinks .chip.fall{display:inline-flex;padding:6px 14px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:transparent;font-size:12px;letter-spacing:.06em;text-transform:none;border-bottom:1px solid rgba(255,255,255,.3)}
}
/* the big Omarchy Store shuttle sticker is off on the computer layout */
.bigst.bigs{display:none!important}
/* private preview: the code box under the station list */
.stcard.lockd{opacity:.8}
.stcode{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.18)}
.stcode label{flex:1 0 100%;font-size:12px;letter-spacing:.08em;opacity:.8}
.stcode input{flex:1 1 140px;min-width:0;padding:9px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.07);color:inherit;font:inherit}
.stcode button{padding:9px 18px;border-radius:999px;border:0;background:var(--g,#ffd34d);color:#111;font-weight:700;cursor:pointer}
.stcode em{flex:1 0 100%;font-style:normal;font-size:12px;color:#ff9a9a;min-height:1em}
.stcard.stgrp{margin-left:22px;padding-top:6px;padding-bottom:6px;transform:scale(.94);transform-origin:left center}
.stcard.stgrp img{width:40px;height:40px}
.stgtoggle{display:flex;justify-content:space-between;align-items:center;width:calc(100% - 22px);margin:-2px 0 8px 22px;padding:9px 14px;border-radius:12px;border:1px dashed rgba(var(--gr,255,211,77),.5);background:transparent;color:inherit;font:600 12px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.stgtoggle:hover{background:rgba(255,255,255,.08)}
.stgtoggle i{font-style:normal;font-size:14px}
.stgbox{margin:0 0 8px}
.stgbox[hidden]{display:none}
#npBpm{color:var(--g,#ffd34d);font-weight:700;letter-spacing:.14em}

/* BPM beside the songs in Up Next / Just Played */
.rbpm{font-style:normal;font-size:11px;font-weight:600;white-space:nowrap;opacity:.8;margin-left:6px;padding:1px 7px;border-radius:99px;border:1px solid rgba(var(--gr,255,255,255),.4);color:var(--g,inherit);vertical-align:1px}
.npleft{margin-top:6px;text-align:right;font:600 12px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.14em;color:var(--dim);font-variant-numeric:tabular-nums;min-height:1em}
/* inside the Portal: the genre picker */
.pgsel{margin-bottom:18px}
.pgsel[hidden]{display:none}
.pgsel h2{margin-bottom:10px}
.pgchips{display:flex;flex-wrap:wrap;gap:8px}
.pgchip{padding:7px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.05);color:inherit;font:600 12px 'Barlow Condensed',system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.pgchip:hover{background:rgba(255,255,255,.14)}
.pgchip.on{background:var(--g,#2bff88);color:#04120a;border-color:transparent}
/* the row of two cards (picker or Sound clash + Song of the week): smaller type, centred, even */
.cpair>.card{padding:12px 14px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.cpair>.card h2{font-size:11px;letter-spacing:.2em;margin:0 0 8px}
.cpair .pgchips{justify-content:center;gap:5px}
.cpair .pgchip{padding:4px 9px;font-size:10.5px;letter-spacing:.08em}
.cpair .featured .ftitle{font-size:15px;line-height:1.25;margin:2px 0 4px}
.cpair .featured .fnote{font-size:12px;margin-bottom:8px}
.cpair .featured .flinks{justify-content:center}
.cpair .featured .flinks .chip.fprof{font-size:12.5px}
.cpair .featured .fface{width:34px;height:34px}
.cpair .clash .clashnote{font-size:11px;margin:0 0 6px}
.cpair .clash .clashpad{justify-content:center}
.cpair>.card[hidden]{display:none}
/* no space shuttles on any channel (Billy) */
.sh,.shx,.shy,.bigs,.bigst.bigs{display:none!important}
#npBpm{margin-left:14px}
/* the time left now sits at the top right of the song block (it was a line above the sleep timer) */
.player .lab{position:relative}
/* the time left sits on the meter: right-aligned just above the progress line, no minus sign */
.player .bar{position:relative;overflow:visible}
.player .bar .npleft{position:absolute;right:0;top:auto!important;bottom:8px;margin:0;line-height:1;text-align:right;pointer-events:none}
/* the little badge on the sleep timer button is empty until a timer is set: no stray dash */
.xbtn em:empty,#sleepBtn em:empty{display:none!important}
/* BPM measured from the audio (not listed by a store): same look, slightly softer, no symbol */
#npBpm.est,.rbpm.est{opacity:.82}

/* ---- heart on track rows: a bare heart that fills with a pop when pushed (no box); service icons smaller, one colour on phones ---- */
html:root:root .list li .hb{background:transparent!important;border:0!important;border-radius:50%!important;box-shadow:none!important;width:34px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--g);opacity:.7;position:relative;transition:opacity .15s,transform .15s}
html:root:root .list li .hb svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;display:block;transition:fill .15s}
html:root:root .list li .hb:hover{opacity:1;transform:scale(1.12)}
html:root:root .list li .hb.on{opacity:1;color:#ff3b6b!important}
html:root:root .list li .hb.on svg{fill:currentColor}
html:root:root .list li.now .hb{color:inherit}
html:root:root .list li .hb.pop svg{animation:hbpop .45s cubic-bezier(.2,1.6,.4,1)}
html:root:root .list li .hb.pop::after{content:"";position:absolute;inset:4px;border-radius:50%;border:2px solid #ff3b6b;animation:hbring .5s ease-out forwards;pointer-events:none}
@keyframes hbpop{0%{transform:scale(.6)}60%{transform:scale(1.35)}100%{transform:scale(1)}}
@keyframes hbring{from{transform:scale(.6);opacity:.9}to{transform:scale(1.9);opacity:0}}
@media(prefers-reduced-motion:reduce){html:root:root .list li .hb.pop svg,html:root:root .list li .hb.pop::after{animation:none}}
.saved .sico{width:24px;height:24px;margin:0 5px 5px 0;box-shadow:0 0 0 1px rgba(255,255,255,.2)}
@media(max-width:640px){
  .saved .sico{width:25px;height:25px;margin:0 8px 8px 0;box-shadow:none}
  .saved .sico svg circle:first-of-type{fill:#1a1a20!important}
  .saved .sico svg circle:not(:first-of-type),.saved .sico svg g,.saved .sico svg g *,.saved .sico svg rect{fill:var(--g,#fff)!important}
  .saved .sico svg path[stroke]{stroke:var(--g,#fff)!important}
  .saved .sico svg{box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
}
.stcard.lockd i{border:1px dashed var(--g);color:var(--g);letter-spacing:.12em}
.pgchip.pgsoon{opacity:.65;border-style:dashed;cursor:default;font-style:italic}

/* The Guvernment floor plan (tap a room); on phones the list of rooms sits under the map */
.gvmap{display:block;width:100%;max-width:760px;margin:6px auto 12px;height:auto}
.gvmap .gvbg{fill:rgba(0,0,0,.35);stroke:rgba(255,255,255,.18)}
.gvmap .gvq{fill:rgba(255,255,255,.35);font:600 11px sans-serif;letter-spacing:.3em}
.gvroom{cursor:pointer;outline:none}
.gvroom rect{fill:rgba(255,255,255,.06);stroke:rgba(255,255,255,.35);stroke-width:1.5;transition:fill .15s,stroke .15s}
.gvroom:hover rect,.gvroom:focus-visible rect{fill:rgba(var(--gr,255,255,255),.22);stroke:var(--g,#fff)}
.gvroom.on rect{fill:rgba(var(--gr,255,255,255),.38);stroke:var(--g,#fff);stroke-width:3}
.gvroom .gvn{fill:var(--txt,#fff);font:800 17px sans-serif;letter-spacing:.06em}
.gvroom .gvs{fill:var(--dim,#bbb);font:500 11.5px sans-serif;letter-spacing:.04em}
.gvlist{display:none}
@media(max-width:700px){.gvroom .gvn{font-size:19px}.gvroom .gvs{display:none}.gvlist{display:flex;margin-top:4px}}
/* the Guvernment floor plan spans the whole row on wide screens */
@media(min-width:900px){#pgsel .gvmap{max-width:960px}}
#pgsel.gvw{grid-column:1/-1}
.gvmem .gv1{fill:rgba(255,255,255,.55);font:700 13px sans-serif;letter-spacing:.35em}
.gvmem .gv2{fill:rgba(255,255,255,.88);font:italic 800 24px 'Barlow Condensed',sans-serif;letter-spacing:.12em}
.gvmem .gv3{fill:rgba(190,196,206,.6);font:600 11px sans-serif;letter-spacing:.3em}
@media(max-width:700px){.gvmem .gv1{font-size:15px}.gvmem .gv2{font-size:27px}.gvmem .gv3{font-size:12px}}

/* Guvernment map: stacked corner text; the main room carries the Guvernment logo and what plays there */
.gvmem .gv2{font-size:26px}
.gvlogo{filter:drop-shadow(0 2px 10px rgba(0,0,0,.6))}
.gvx{font-family:'Barlow Condensed',sans-serif}
.gvx1{fill:#fff;font-weight:800;font-size:22px;letter-spacing:.35em}
.gvx2{fill:rgba(255,255,255,.88);font-weight:700;font-size:16px;letter-spacing:.22em}
.gvx3{fill:rgba(255,255,255,.62);font-weight:500;font-size:13px;letter-spacing:.14em}
.gvroom:not(.on) .gvx1,.gvroom:not(.on) .gvx2{fill:rgba(255,255,255,.82)}
.gvroom:not(.on) .gvx3{fill:rgba(255,255,255,.55)}
.gvroom:not(.on) .gvlogo{opacity:.92}
@media(max-width:700px){.gvx2,.gvx3{display:none}.gvx1{display:none}.gvroom[data-id=gvmain] .gvm{display:block;font-size:30px;fill:#fff}.gvmem .gv2{font-size:29px}}

/* every service / social icon in grey-silver, not in brand colours */
.sico svg,.sico img{filter:grayscale(1) brightness(1.05) contrast(.92)}
.sico{box-shadow:0 0 0 1px rgba(255,255,255,.22)!important}
.gvx2,.gvx3{display:none!important}
.sico svg circle:first-of-type{fill:#737983!important}

/* the Guvernment main room square is pitch black; the room that is playing has a green on-air light blinking in its corner */
.gvroom[data-id=gvmain] rect{fill:#000!important;stroke:rgba(255,255,255,.35)!important}
.gvroom[data-id=gvmain].on rect{fill:#000!important;stroke:#d7dbe2!important;stroke-width:3!important}
.gvled{fill:#2dff6a;filter:drop-shadow(0 0 6px #2dff6a);animation:gvblink 1.1s steps(2,jump-none) infinite}
.gvled2{fill:none;stroke:#2dff6a;stroke-width:1.2;opacity:.55;animation:gvblink 1.1s steps(2,jump-none) infinite}
@keyframes gvblink{0%{opacity:1}50%{opacity:.18}100%{opacity:1}}
@media(prefers-reduced-motion:reduce){.gvled,.gvled2{animation:none}}
.gvroom .gvs{text-transform:uppercase}

/* Artists A-Z next to Song of the week */
.cpair>.card.az{padding:12px 14px}
.cpair>.card.az .note{font-size:12px;margin:0 0 8px}
.cpair>.card.az .azbtn{margin:0 auto}
#azcard:not(.cpair>*){margin-top:0}
.cpair:has(#pgsel.gvw){grid-template-columns:1fr 1fr}
.cpair>#pgsel.gvw{grid-column:1/-1}
.cpair>.card.az{min-width:0}

/* header on a smaller desktop window: keep the logo clear of the THEME + SKIN buttons (they sit at the left edge of the screen) */
@media(min-width:761px) and (max-width:1400px){
  .top .wrap{padding-left:320px}   /* the buttons are placed from the left edge of this centred column, so the logo always starts after them */
}
@media(min-width:761px) and (max-width:1000px){
  .top .wrap{gap:12px}
  .top .tag{font-size:11px;letter-spacing:.2em}
}
/* other channels: the Billy Legal head sits at the right of the header, so a long channel name is cut short with "…" instead of running under it */
@media(min-width:761px) and (max-width:1300px){
  .top:has(.inhead) .wrap{justify-content:flex-start}
  .top:has(.inhead) .logo{min-width:0;max-width:calc(100vw - 210px - 320px - max(0px, (100vw - 1000px) / 2))}
  .top:has(.inhead) .logo .rad{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
}
