/* 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}
}

/* 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}

/* 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(0,0,0,.5);padding:16px}
.acard[hidden]{display:none}
.acbox{position:relative;width:min(420px,100%);max-height:84vh;overflow:auto;background:rgba(12,14,13,.97);color:#eee;border:1px solid rgba(255,255,255,.18);border-radius:18px;padding:18px 18px 14px;box-shadow:0 20px 60px rgba(0,0,0,.65),0 0 0 1px rgba(var(--gr,255,211,77),.18);font-family:system-ui,-apple-system,'Segoe UI',sans-serif}
.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}
.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:78vh}}
/* 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(0,0,0,.72);padding:16px}
.azov[hidden]{display:none}
.azbox{position:relative;width:min(720px,100%);height:min(86vh,760px);display:flex;flex-direction:column;background:rgba(12,14,13,.98);color:#eee;border:1px solid rgba(255,255,255,.18);border-radius:18px;padding:16px 16px 10px;box-shadow:0 20px 60px rgba(0,0,0,.65);font-family:system-ui,-apple-system,'Segoe UI',sans-serif}
.azq{width:100%;box-sizing:border-box;margin:0 0 10px;padding:10px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:inherit;font:inherit;font-size:14px}
.azq:focus{outline:2px solid rgba(var(--gr,255,211,77),.6);border-color:transparent}
.azst{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;max-height:96px;overflow-y:auto}
.azst button{border:1px solid rgba(255,255,255,.22);background:transparent;color:inherit;border-radius:999px;padding:5px 11px;font-size:12px;cursor:pointer}
.azst button.on{background:var(--g,#ffd34d);color:#111;border-color:transparent}
.azl{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:6px}
.azl button{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:inherit;font-weight:700;font-size:13px;cursor:pointer}
.azl button:hover{background:rgba(255,255,255,.12)}
.azl button.on{background:rgba(var(--gr,255,211,77),.3);color:#fff}
.azlist{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;border-top:1px solid rgba(255,255,255,.1)}
.azrow{display:block;width:100%;text-align:left;padding:10px 6px;border:0;border-bottom:1px solid rgba(255,255,255,.07);background:transparent;color:inherit;cursor:pointer;font:inherit}
.azrow:hover{background:rgba(255,255,255,.07)}
.azrow b{display:block;font-size:15px}
.azrow span{display:block;font-size:11px;opacity:.65;margin-top:2px}
.azempty{padding:18px 6px;opacity:.65;font-size:13px}
.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}.azbox{border-radius:18px 18px 0 0;height:90vh}}
.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:900px){.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}
/* 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 .fprof{display:inline-flex;align-items:center;gap:10px;padding:0;border:0;background:transparent;font-size:14px;font-weight:600}
.featured .fprof:hover{background:transparent;text-decoration:underline}
.featured .fprof .fface{width:40px;height:40px}
.featured .fprof:not(:has(.fface:not([hidden]))){padding:0}
.featured .ftitle{font-size:19px}
.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}
.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){
  .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)}
}
