/* ---------- Zik Hunter v3: my radio, Collection and Catalogue ----------

/* ===== radio: menu entry, panel, mini player additions ===== */
body.radio-on #tab-radio{color:#ffe2a0}
body.radio-on #tab-radio .ico{animation:radioPulse 1.6s ease-in-out infinite}
@keyframes radioPulse{50%{opacity:.45}}
#radioPanel{position:fixed;left:calc(var(--sidebar,240px) + 14px);top:120px;z-index:44;width:min(420px,calc(100vw - 24px));max-height:calc(100vh - 160px);overflow:auto;padding:18px 18px 16px;border-radius:18px;
  background:rgba(16,12,22,.88);backdrop-filter:blur(22px) saturate(1.4);border:1px solid rgba(255,255,255,.12);box-shadow:0 30px 70px rgba(0,0,0,.6);animation:rpIn .22s ease}
@keyframes rpIn{from{opacity:0;transform:translateY(8px) scale(.98)}}
#radioPanel[hidden]{display:none}
.rp-head{display:flex;align-items:center;justify-content:space-between}
.rp-head b{font-family:var(--display);font-size:1.15rem}
.rp-x{width:32px;height:32px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:#fff;cursor:pointer}
.rp-sub{margin:6px 0 4px;color:#b7aec6;font-size:.85rem}
#radioPanel h4{margin:14px 0 8px;font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#9c92ad;font-weight:500}
.rp-row{display:flex;flex-wrap:wrap;gap:6px}
.rchip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:#ddd5ea;font:500 .82rem/1 var(--body);cursor:pointer}
.rchip i{width:8px;height:8px;border-radius:50%}
.rchip[aria-pressed="true"]{background:#f4ead6;color:#140f1c;border-color:#f4ead6}
.rp-note{margin:12px 0 0;font-size:.8rem;color:#9c92ad}
.rp-foot{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}
.rp-foot span{font-family:var(--mono);font-size:.78rem;color:#b7aec6}
.rp-foot .rp-go{margin-left:auto}
#v2Player .pv,#v2Player .nx{display:none}
#v2Player.radio .pv,#v2Player.radio .nx{display:block}
#v2Player .rl{display:none;position:absolute;left:14px;top:-22px;padding:3px 10px;border-radius:999px;background:rgba(16,12,22,.85);border:1px solid rgba(255,255,255,.12);font:500 .7rem/1.3 var(--mono);letter-spacing:.06em;color:#ffe2a0;max-width:calc(100% - 28px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#v2Player.radio .rl{display:block}
#radioResume{position:fixed;left:50%;bottom:92px;z-index:41;translate:-50% 0;display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;border:1px solid rgba(255,226,160,.4);
  background:rgba(16,12,22,.9);backdrop-filter:blur(14px);color:#ffe2a0;font:600 .85rem/1 var(--body);cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.5)}
#radioResume[hidden]{display:none}
@media (max-width:860px){#radioPanel{left:12px;top:auto;bottom:150px}#radioResume{bottom:156px}}

/* ===== Collection ===== */
.v3 #view-binder>.sub{display:none}
.v3-vitrine{position:relative;height:300px;margin:6px 0 70px;display:flex;justify-content:center;align-items:flex-end;perspective:1000px}
.v3-vitrine[hidden]{display:none}
.v3-v{position:absolute;bottom:0;left:50%;width:175px;border:0;padding:0;background:none;cursor:pointer;
  transform:translateX(calc(-50% + var(--k) * 130px)) rotate(calc(var(--k) * 7deg)) translateY(calc(var(--k) * var(--k) * 10px));
  transform-origin:50% 120%;transition:transform .35s cubic-bezier(.2,.9,.3,1.2);z-index:calc(10 - var(--k) * var(--k))}
.v3-v:hover{transform:translateX(calc(-50% + var(--k) * 130px)) rotate(calc(var(--k) * 4deg)) translateY(-22px) scale(1.06);z-index:20}
.v3-v .cq{width:100%;filter:drop-shadow(0 22px 30px rgba(0,0,0,.55))}
/* genres become small rings */
.v3 #prog{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;overflow:visible}
.v3 #prog button{display:flex;align-items:center;gap:9px;padding:6px 14px 6px 6px;min-width:0;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.v3 #prog button::before{content:"";width:26px;height:26px;border-radius:50%;flex:none;
  background:conic-gradient(hsl(var(--h) 70% 62%) var(--p,0%),rgba(255,255,255,.1) 0);-webkit-mask:radial-gradient(circle,transparent 54%,#000 56%);mask:radial-gradient(circle,transparent 54%,#000 56%)}
.v3 #prog button[aria-pressed="true"]{background:#f4ead6;color:#140f1c;border-color:#f4ead6}
.v3 #prog button .meter,.v3 #prog button .legs{display:none}
.v3 #prog button .row{display:flex;align-items:baseline;gap:7px;font-weight:600;font-size:.86rem}
.v3 #prog button .row small{font-family:var(--mono);opacity:.7}
.v3-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px}
.v3-tools form.search{flex:1 1 260px;margin:0}
.v3-tools .filters{margin:0;flex:2 1 520px}
.v3-tools .filters .chip{padding:5px 10px;font-size:.78rem}
.v3-listen{white-space:nowrap}
.v3 #binder .cell .cq{transition:transform .25s ease}
.v3 #binder .cell:hover .cq{transform:translateY(-6px) scale(1.03)}
/* the showcase keeps its size; on narrow screens the fan closes up instead, and only phones get smaller cards */
@media (max-width:1100px){.v3-v{transform:translateX(calc(-50% + var(--k) * 105px)) rotate(calc(var(--k) * 7deg)) translateY(calc(var(--k) * var(--k) * 10px))}
  .v3-v:hover{transform:translateX(calc(-50% + var(--k) * 105px)) rotate(calc(var(--k) * 4deg)) translateY(-22px) scale(1.06)}}
@media (max-width:600px){.v3-vitrine{height:230px;margin-bottom:50px}.v3-v{width:130px;transform:translateX(calc(-50% + var(--k) * 58px)) rotate(calc(var(--k) * 7deg)) translateY(calc(var(--k) * var(--k) * 8px))}}

/* ===== Catalogue: rows like a music app while browsing, the grid when searching ===== */
.v3 #view-catalog>.sub{display:none}
.v3-rows{display:none}
.v3 #view-catalog.v3-browse .v3-rows{display:grid;grid-template-columns:minmax(0,1fr);gap:30px;margin-top:8px}
.v3-row{min-width:0}
.v3 #view-catalog.v3-browse #catFilters,.v3 #view-catalog.v3-browse #catStatus,.v3 #view-catalog.v3-browse #catalog,.v3 #view-catalog.v3-browse .more{display:none}
.v3-row h3{font-family:var(--display);font-size:1.15rem}
.v3-row h3::after{display:none}
.v3-rh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.v3-rh h3{margin:0}
.v3-arrows{display:flex;gap:6px}
.v3-ar{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#fff;font:600 20px/1 var(--body);cursor:pointer}
.v3-ar:hover{background:rgba(255,255,255,.14)}
.v3-strip{--n:6;display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - (var(--n) - 1) * 16px) / var(--n));gap:16px;overflow-x:auto;padding:4px 0 14px;scroll-snap-type:x mandatory;scrollbar-width:none}
.v3-strip::-webkit-scrollbar{display:none}
.v3-row.hero .v3-strip{--n:5}
.v3-strip .cell{scroll-snap-align:start}
.v3-skel{aspect-ratio:63/88;border-radius:12px;background:linear-gradient(100deg,rgba(255,255,255,.04) 30%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.04) 70%);background-size:300% 100%;animation:skel 1.4s linear infinite}
@keyframes skel{to{background-position:-100% 0}}
/* cards you don't have: shown as they are, with a small "À trouver" label */
.v3 #view-catalog .cell.locked .cq{filter:none}
.v3 #view-catalog .cell.locked .lock{bottom:10px;padding:3px 10px;background:rgba(10,8,14,.72);border-color:rgba(255,255,255,.18);color:#e8e0f2;backdrop-filter:blur(6px);transition:opacity .2s ease}
@media (max-width:1250px){.v3-strip{--n:5}.v3-row.hero .v3-strip{--n:4}}
@media (max-width:1000px){.v3-strip{--n:4}.v3-row.hero .v3-strip{--n:3}}
@media (max-width:600px){.v3-strip{--n:2.4}.v3-row.hero .v3-strip{--n:1.8}.v3-arrows{display:none}}


/* showcase editing */
.v3-vbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;margin:-14px 0 30px;position:relative;z-index:2}
.v3-vbar span{color:#d8cfe6;font-size:.88rem}
.v3-vedit{padding:7px 14px;font-size:.82rem;background:rgba(10,8,14,.55);backdrop-filter:blur(10px)}
.v3-vempty{margin:0 0 90px;color:#9c92ad;font-family:var(--mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase}
#view-binder.v3-editing .v3-v::after{content:"✕";position:absolute;top:-10px;right:-10px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#f4ead6;color:#140f1c;font:700 13px/1 var(--body);box-shadow:0 4px 10px rgba(0,0,0,.4)}
#view-binder.v3-editing #binder .cell{position:relative}
#view-binder.v3-editing #binder .cell::after{content:"+";position:absolute;top:8px;right:8px;z-index:3;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  background:rgba(10,8,14,.75);border:1px solid rgba(255,255,255,.3);color:#fff;font:700 18px/1 var(--body)}
#view-binder.v3-editing #binder .cell.in-vitrine::after{content:"✓";background:#f4ead6;color:#140f1c;border-color:#f4ead6}
#view-binder.v3-editing #binder .cell.in-vitrine .cq{outline:3px solid #f4ead6;outline-offset:3px;border-radius:14px}
/* catalogue: you own this track in a better rarity than today's */
.v3 #view-catalog .cell .lock.mine{bottom:10px;padding:3px 10px;background:rgba(10,8,14,.78);border-color:rgba(255,226,160,.45);color:#ffe2a0;backdrop-filter:blur(6px)}
