:root{
  --bg:#0a0a0e; --bg2:#101019;
  --surf:rgba(255,255,255,.045); --surf2:rgba(255,255,255,.075);
  --line:rgba(255,255,255,.09); --line2:rgba(255,255,255,.16);
  --txt:#f5f5f7; --dim:rgba(245,245,247,.62); --dim2:rgba(245,245,247,.34);
  --navbg:rgba(10,10,14,.62); --playerbg:rgba(16,16,25,.86);
  --p:#a020f0; --p2:#c44dff; --magenta:#d946ef; --violet:#7c3aed; --pink:#ec4899; --cyan:#22d3ee;
  --gold:#a020f0; --gold2:#c44dff; --accent:#a020f0; --card:var(--surf); --card2:var(--surf2);
  --grad:linear-gradient(120deg,#c44dff,#d946ef 52%,#7c3aed);
  --font-display:'Unbounded',system-ui,sans-serif; --font-body:'Inter',system-ui,sans-serif;
  --lvl:0;
}
html[data-theme="light"]{
  --bg:#f1ecfa; --bg2:#e7def4;
  --surf:rgba(34,16,54,.045); --surf2:rgba(34,16,54,.08);
  --line:rgba(34,16,54,.12); --line2:rgba(34,16,54,.2);
  --txt:#19092b; --dim:rgba(25,9,43,.64); --dim2:rgba(25,9,43,.44);
  --navbg:rgba(241,236,250,.75); --playerbg:rgba(255,255,255,.86);
}
html[data-theme="light"]{background:#f1ecfa}
html[data-theme="light"] .bg-orbs span{opacity:.32}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:#0a0a0e}
body{background:transparent;color:var(--txt);font-family:var(--font-body);overflow-x:hidden;-webkit-font-smoothing:antialiased;padding-bottom:100px;position:relative}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:9px}::-webkit-scrollbar-track{background:rgba(0,0,0,.2)}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--p),var(--violet));border-radius:8px}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-size:200% auto;animation:grad 6s linear infinite}
@keyframes grad{to{background-position:200% center}}

/* atmosphere */
#bgfx{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.bg-orbs{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.bg-orbs span{position:absolute;border-radius:50%;filter:blur(110px);opacity:.5;animation:orbFloat 20s ease-in-out infinite}
.bg-orbs span:nth-child(1){width:540px;height:540px;background:rgba(160,32,240,.22);top:-130px;left:-110px}
.bg-orbs span:nth-child(2){width:500px;height:500px;background:rgba(217,70,239,.18);bottom:-150px;right:-130px;animation-delay:-7s}
.bg-orbs span:nth-child(3){width:380px;height:380px;background:rgba(124,58,237,.16);top:42%;left:54%;animation-delay:-13s}
@keyframes orbFloat{0%,100%{transform:translate(0,0)}33%{transform:translate(22px,-18px)}66%{transform:translate(-16px,14px)}}
@media(max-width:860px){.bg-orbs span{filter:blur(54px);animation:none}.bg-orbs span:nth-child(3){display:none}}

/* intro */
.intro{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;background:radial-gradient(ellipse at 50% 42%,#160f28,#0a0a0e 72%);animation:introOut .7s 1.6s forwards}
.intro.gone{display:none}
.intro-name{font-family:var(--font-display);font-weight:800;font-size:clamp(2.8rem,12vw,5rem);letter-spacing:-2px;line-height:1;color:#f5f5f7;opacity:0;transform:scale(.92);animation:introIn .85s cubic-bezier(.2,.8,.2,1) .1s forwards}
.intro-name span{color:var(--p)}
.intro-tag{font-size:.7rem;letter-spacing:6px;text-transform:uppercase;color:rgba(245,245,247,.34);opacity:0;animation:fadeIn 1s .55s forwards}
@keyframes introIn{to{opacity:1;transform:none}}@keyframes introOut{to{opacity:0;visibility:hidden}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* shared */
.btn-primary{display:inline-flex;align-items:center;gap:.5rem;padding:.9rem 1.9rem;border:none;border-radius:50px;background:var(--grad);background-size:200% auto;color:#fff;font-family:inherit;font-weight:600;font-size:.85rem;letter-spacing:.4px;cursor:pointer;transition:transform .25s,box-shadow .25s;box-shadow:0 12px 38px rgba(160,32,240,.4)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 18px 54px rgba(217,70,239,.5);background-position:right center}
.badge-dot{width:7px;height:7px;border-radius:50%;background:var(--p);box-shadow:0 0 12px var(--p);animation:blink 1.6s infinite;flex-shrink:0;display:inline-block}

/* ===== TOP NAV ===== */
nav#nav{position:sticky;top:0;z-index:200;display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 1.6rem;background:var(--navbg);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-bottom:1px solid var(--line);transition:background .3s}
nav#nav.solid{background:var(--bg2)}
.brand{display:flex;align-items:center;gap:.55rem;font-family:var(--font-display);font-weight:800;font-size:1.3rem;letter-spacing:-.5px}
.brand b{color:var(--p)}.brand-logo{width:28px;height:28px;border-radius:8px}
.nav-links{display:flex;gap:1.7rem;list-style:none}
.nav-links a{font-size:.82rem;font-weight:500;letter-spacing:.2px;color:var(--dim);transition:.2s}
.nav-links a:hover{color:var(--txt)}
.nav-right{display:flex;align-items:center;gap:.6rem}
.theme-toggle{width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--surf);color:var(--dim);cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:.2s}
.theme-toggle:hover{color:var(--p2);border-color:var(--line2)}
.theme-toggle .ti-moon{display:none}.theme-toggle .ti-sun{display:inline}
html[data-theme="light"] .theme-toggle .ti-sun{display:none}html[data-theme="light"] .theme-toggle .ti-moon{display:inline}
.nav-fav{display:inline-flex;align-items:center;gap:4px;padding:.5rem .75rem;border:1px solid var(--line);border-radius:10px;background:var(--surf);color:var(--dim);font-family:inherit;font-size:.8rem;cursor:pointer;transition:.2s}
.nav-fav:hover{color:var(--p2);border-color:rgba(160,32,240,.5)}.nav-fav.has{color:var(--magenta);border-color:rgba(217,70,239,.4)}
.lang-select{appearance:none;-webkit-appearance:none;background:var(--surf);border:1px solid var(--line);color:var(--dim);font-family:inherit;font-size:.74rem;padding:.45rem 1.5rem .45rem .7rem;border-radius:10px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23999' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .55rem center}
.lang-select:hover{color:var(--txt);border-color:var(--line2)}.lang-select option{background:#12121c;color:#fff}

/* ===== MARQUEE (English ticker) ===== */
.marquee{padding:.85rem 0;border-bottom:1px solid var(--line);overflow:hidden;background:var(--surf)}
.marquee-row{display:flex;white-space:nowrap;animation:marq 32s linear infinite;width:max-content}
.marquee-row span{font-family:var(--font-display);font-weight:700;font-size:1.05rem;letter-spacing:-.3px;color:var(--dim2);padding:0 1.4rem;text-transform:uppercase}
.marquee-row .g{color:var(--p2)}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ===== MAIN ===== */
.wrap{max-width:1200px;margin:0 auto;padding:0 1.6rem}

/* now showcase */
.now{padding:2.6rem 0 2.4rem;border-bottom:1px solid var(--line)}
.stage{display:grid;grid-template-columns:340px 1fr 320px;gap:2.4rem;align-items:center}
.np-deck{position:relative;width:340px;height:340px;display:flex;align-items:center;justify-content:center;max-width:100%;justify-self:center}
.np-glow{position:absolute;width:330px;height:330px;border-radius:50%;background:radial-gradient(circle,rgba(160,32,240,.4),rgba(217,70,239,.14) 55%,transparent 72%);filter:blur(12px);transform:scale(.96)}
#vinyl{position:relative;width:340px;height:340px;max-width:100%;border-radius:50%;box-shadow:0 26px 70px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.05)}
.np-cover{position:absolute;width:120px;height:120px;border-radius:50%;background-size:cover;background-position:center;background-color:#16101f;box-shadow:0 0 0 7px #07070b,0 8px 30px rgba(0,0,0,.7);animation:spin 8s linear infinite;animation-play-state:paused}
.np-cover::after{content:'';position:absolute;top:50%;left:50%;width:13px;height:13px;border-radius:50%;background:#07070b;transform:translate(-50%,-50%);box-shadow:0 0 0 3px rgba(255,255,255,.1)}
body.playing .np-cover{animation-play-state:running}
@keyframes spin{to{transform:rotate(360deg)}}
.np-now{min-width:0}
.np-status{display:inline-flex;align-items:center;gap:8px;font-size:.66rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--p2);margin-bottom:1rem}
.np-status b{color:var(--txt);font-weight:700}
.np-ch{font-size:.64rem;letter-spacing:4px;text-transform:uppercase;color:var(--p2);margin-bottom:.5rem}
.np-title{font-family:var(--font-display);font-weight:800;font-size:clamp(1.8rem,3.4vw,3rem);line-height:1.04;letter-spacing:-1.5px}
.np-artist{color:var(--dim);margin-top:.4rem;font-size:1rem}
#spectrum{width:100%;height:84px;margin:1.1rem 0;display:block}
.np-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:.4rem}
.np-links{display:flex;gap:.6rem;flex-wrap:wrap;margin:.8rem 0 0}.np-links:empty{display:none}

/* up-next */
.upnext{align-self:stretch;background:linear-gradient(170deg,var(--surf2),var(--surf));border:1px solid var(--line);border-radius:20px;padding:1.1rem;backdrop-filter:blur(12px)}
.upnext-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem;padding:0 .2rem}
.upnext-head h3{font-family:var(--font-display);font-weight:700;font-size:.95rem;letter-spacing:-.2px}
.upnext-head span{font-size:.6rem;letter-spacing:2px;text-transform:uppercase;color:var(--dim2)}
.upnext-list{display:flex;flex-direction:column;gap:.25rem;list-style:none}
.un-item{display:flex;align-items:center;gap:.7rem;padding:.45rem .5rem;border-radius:11px;transition:.2s}
.un-item:hover{background:var(--surf)}
.un-item.on{background:rgba(160,32,240,.14);box-shadow:inset 2px 0 0 var(--p)}
.un-cover{width:40px;height:40px;border-radius:10px;flex-shrink:0;background:linear-gradient(135deg,var(--p),#3a1060);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.6);font-size:.85rem}
.un-info{min-width:0;flex:1}
.un-name{font-weight:600;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.un-sub{font-size:.68rem;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.08rem}
.un-tag{font-size:.58rem;letter-spacing:1px;text-transform:uppercase;color:var(--p2);flex-shrink:0}
.upnext-empty{padding:1.4rem .5rem;color:var(--dim2);font-size:.82rem;line-height:1.6}

/* sections */
.sec{padding:3rem 0;border-bottom:1px solid var(--line)}
.sec:last-of-type{border-bottom:none}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:1.6rem}
.sec-title{font-family:var(--font-display);font-weight:800;font-size:clamp(1.5rem,2.8vw,2.3rem);letter-spacing:-1px;line-height:1.05}
.sec-tag,.sec-more{font-size:.66rem;letter-spacing:2px;text-transform:uppercase;color:var(--dim2);white-space:nowrap}
.sec-more{color:var(--p2);letter-spacing:.5px;text-transform:none;font-size:.78rem}

/* DJ Bar — a designed beat-machine panel */
.dj{border:1px solid var(--line2);border-radius:22px;padding:1.5rem;position:relative;overflow:hidden;background:linear-gradient(168deg,rgba(160,32,240,.10),var(--surf) 58%),var(--bg2);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 30px 70px rgba(0,0,0,.4)}
.dj::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);background-size:200% auto;opacity:.85;animation:grad 6s linear infinite}
.dj::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 86% -12%,rgba(217,70,239,.16),transparent 52%);pointer-events:none}
.dj>*{position:relative;z-index:1}
.dj-top{display:flex;flex-direction:column;gap:1rem}
.dj-pads{display:grid;grid-template-columns:repeat(8,1fr);gap:.5rem}
.dj-pad{aspect-ratio:1.6;border:1px solid var(--line2);border-radius:13px;background:linear-gradient(180deg,var(--surf2),rgba(0,0,0,.2));color:var(--txt);font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.32rem;position:relative;transition:transform .07s,box-shadow .15s,border-color .15s,background .12s;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 5px 13px rgba(0,0,0,.32);user-select:none;-webkit-user-select:none;touch-action:manipulation}
.dj-pad b{font-size:.84rem;font-weight:700;letter-spacing:.2px}
.dj-pad small{font-size:.52rem;color:var(--dim2);letter-spacing:1.5px;border:1px solid var(--line);border-radius:5px;padding:1px 5px}
.dj-pad:hover{border-color:var(--p);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(160,32,240,.32),0 7px 18px rgba(0,0,0,.38)}
.dj-pad.hit,.dj-pad:active{background:var(--grad);transform:translateY(2px) scale(.97);box-shadow:0 0 30px rgba(160,32,240,.7),inset 0 0 0 1px rgba(255,255,255,.22)}
.dj-pad.hit b,.dj-pad.hit small,.dj-pad:active b,.dj-pad:active small{color:#fff;border-color:rgba(255,255,255,.4)}
.dj-bass{display:flex;flex-direction:column;gap:.5rem}
.dj-bass-h{font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim2)}
.dj-bass-h small{color:var(--p2);text-transform:none;letter-spacing:0;margin-left:.35rem}
.dj-keys{display:grid;grid-template-columns:repeat(8,1fr);gap:.26rem;padding:.5rem;background:rgba(0,0,0,.24);border:1px solid var(--line);border-radius:12px}
.dj-key{height:52px;border:1px solid rgba(0,0,0,.32);border-top:none;border-radius:0 0 7px 7px;background:linear-gradient(180deg,#f1ebf8,#cabddd);color:#2a0d4a;font-family:inherit;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding-bottom:.35rem;box-shadow:inset 0 -7px 8px rgba(0,0,0,.13),0 2px 4px rgba(0,0,0,.32);transition:transform .07s,background .12s,box-shadow .12s;-webkit-user-select:none;user-select:none;touch-action:manipulation}
.dj-key small{font-size:.55rem;font-weight:700;letter-spacing:.5px}
.dj-key:hover{background:linear-gradient(180deg,#fff,#d9cdea)}
.dj-key.hit,.dj-key:active{background:var(--grad);color:#fff;transform:translateY(2px);box-shadow:0 0 18px rgba(160,32,240,.6)}
.dj-seq{margin-top:1.3rem;display:flex;flex-direction:column;gap:.34rem;padding:.95rem;background:rgba(0,0,0,.3);border:1px solid var(--line);border-radius:14px;box-shadow:inset 0 2px 14px rgba(0,0,0,.45)}
.dj-row{display:flex;align-items:center;gap:.55rem}
.dj-rlabel{width:58px;flex-shrink:0;text-align:left;background:none;border:none;color:rgba(245,245,247,.66);font-family:inherit;font-size:.7rem;font-weight:600;cursor:pointer;padding:.2rem 0}.dj-rlabel:hover{color:var(--p2)}
.dj-mute{flex-shrink:0;width:13px;border:none;background:none;color:var(--p2);cursor:pointer;font-size:.6rem;line-height:1;padding:0}
.dj-row.muted{opacity:.4}.dj-row.muted .dj-mute{color:rgba(245,245,247,.34)}
.dj-cells{display:grid;grid-template-columns:repeat(16,1fr);gap:4px;flex:1;min-width:0}
.dj-cell{height:24px;border:1px solid rgba(255,255,255,.08);border-radius:5px;background:rgba(255,255,255,.035);cursor:pointer;transition:.1s;padding:0}
.dj-cell.beat{background:rgba(255,255,255,.085)}
.dj-cell:hover{border-color:var(--p2)}
.dj-cell.on{background:var(--p);border-color:transparent;box-shadow:0 0 12px rgba(160,32,240,.6),inset 0 0 0 1px rgba(255,255,255,.22)}
.dj-cell.play{box-shadow:0 0 0 2px var(--p2)}.dj-cell.on.play{background:var(--p2);box-shadow:0 0 16px var(--p2)}
.dj-bar-ctrl{display:flex;align-items:center;gap:.6rem;margin-top:1.3rem;flex-wrap:wrap}
.dj-play{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.7rem;border:none;border-radius:11px;background:var(--grad);background-size:200% auto;color:#fff;font-family:inherit;font-weight:700;font-size:.88rem;cursor:pointer;box-shadow:0 8px 26px rgba(160,32,240,.45);transition:transform .15s,box-shadow .2s}
.dj-play:hover{transform:translateY(-1px)}
.dj-play.on{box-shadow:0 0 0 1px var(--p2),0 0 28px rgba(217,70,239,.6)}
.dj-clear{padding:.6rem 1.05rem;border:1px solid var(--line2);border-radius:10px;background:var(--surf);color:var(--dim);font-family:inherit;font-size:.78rem;font-weight:600;cursor:pointer;transition:.2s}.dj-clear:hover{color:var(--txt);border-color:var(--p)}
.dj-presets{display:inline-flex;gap:.4rem;flex-wrap:wrap;padding-left:.7rem;margin-left:.3rem;border-left:1px solid var(--line)}
.dj-presets button{padding:.55rem .85rem;border:1px solid var(--line2);border-radius:9px;background:var(--surf);color:var(--dim);font-family:inherit;font-size:.74rem;font-weight:600;cursor:pointer;transition:.2s}
.dj-presets button:hover{color:#fff;background:var(--grad);background-size:200% auto;border-color:transparent;transform:translateY(-1px)}
.dj-share{padding:.6rem 1.05rem;border:1px solid rgba(160,32,240,.5);border-radius:10px;background:rgba(160,32,240,.14);color:var(--p2);font-family:inherit;font-size:.8rem;font-weight:600;cursor:pointer;margin-left:auto;transition:.2s}
.dj-share:hover{background:rgba(160,32,240,.28);color:#fff}
.dj-knobs{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.2rem}
.dj-knobs label{display:flex;align-items:center;gap:.6rem;font-size:.62rem;letter-spacing:1.2px;text-transform:uppercase;color:var(--dim2);background:var(--surf);border:1px solid var(--line);border-radius:11px;padding:.62rem .9rem}
.dj-knobs input[type=range]{-webkit-appearance:none;appearance:none;width:96px;height:4px;border-radius:4px;background:var(--line2);outline:none}
.dj-knobs input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border-radius:50%;background:var(--p2);cursor:pointer;box-shadow:0 0 8px rgba(160,32,240,.6)}
.dj-knobs input[type=range]::-moz-range-thumb{width:15px;height:15px;border:none;border-radius:50%;background:var(--p);cursor:pointer}
.dj-knobs b{color:var(--p2);font-variant-numeric:tabular-nums;font-size:.8rem;min-width:36px;text-align:right}
.dj-hint{margin-top:1.1rem;font-size:.78rem;color:var(--dim2);line-height:1.6}
.dj-hint code{background:var(--surf2);padding:1px 6px;border-radius:5px;font-size:.92em}.dj-hint b{color:var(--p2)}

/* playlists */
.pl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
.pcard{position:relative;min-height:190px;border-radius:18px;overflow:hidden;border:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column;justify-content:flex-end;padding:1.3rem;color:#fff;font-family:inherit;text-align:left;transition:.35s;background:#12121c}
.pcard:hover{transform:translateY(-5px);box-shadow:0 24px 60px rgba(0,0,0,.5);border-color:var(--line2)}
.pcard.active{border-color:var(--p);box-shadow:0 0 0 1px var(--p),0 18px 50px rgba(160,32,240,.32)}
.pcard-bg{position:absolute;inset:0;opacity:.92;z-index:0;transition:.4s}.pcard:hover .pcard-bg{transform:scale(1.06)}
.pcard::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 28%,rgba(10,10,14,.85));z-index:1}
.pcard>*{position:relative;z-index:2}
.pcard-mood{font-size:.6rem;letter-spacing:3px;text-transform:uppercase;color:rgba(255,255,255,.7);margin-bottom:.4rem}
.pcard-name{font-family:var(--font-display);font-weight:800;font-size:1.45rem;letter-spacing:-.5px;line-height:1.04}
.pcard-sub{font-size:.74rem;color:rgba(255,255,255,.7);margin-top:.3rem}
.pcard-play{position:absolute;top:1rem;right:1rem;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;font-size:.8rem;z-index:2;transition:.25s}
.pcard:hover .pcard-play{background:#fff;color:#0a0a0e}

/* releases */
.empty{padding:2.4rem 1.6rem;text-align:center;color:var(--dim2);border:1px dashed var(--line2);border-radius:16px}
.rel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:1.1rem}
.rel-card{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surf);transition:.35s}
.rel-card:hover{transform:translateY(-5px);border-color:rgba(160,32,240,.45);box-shadow:0 20px 48px rgba(0,0,0,.4)}
.rel-art{position:relative;aspect-ratio:1;overflow:hidden}
.rel-art img{width:100%;height:100%;object-fit:cover;transition:.4s}.rel-card:hover .rel-art img{transform:scale(1.06)}
.rel-art-ph{width:100%;height:100%;background:linear-gradient(135deg,var(--violet),#0c0c15);display:flex;align-items:center;justify-content:center;font-size:2.2rem;color:rgba(255,255,255,.25)}
.rel-badge{position:absolute;top:8px;left:8px;padding:2px 9px;border-radius:6px;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.12);font-size:.56rem;letter-spacing:1px;text-transform:uppercase;color:#fff}
.rel-play{position:absolute;bottom:9px;right:9px;width:38px;height:38px;border-radius:50%;border:none;background:var(--p);color:#fff;font-size:.8rem;cursor:pointer;opacity:0;transform:translateY(8px);transition:.3s}
.rel-card:hover .rel-play{opacity:1;transform:none}
.rel-body{padding:.85rem}
.rel-name{font-weight:600;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rel-sub{font-size:.72rem;color:var(--dim2);margin-top:.2rem}
.rel-plats{display:flex;gap:.4rem;margin-top:.5rem}.rel-plats:empty{display:none}
.plat{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .85rem;border-radius:8px;font-size:.76rem;font-weight:600;border:1px solid var(--line2);color:var(--txt);background:var(--surf);transition:.2s;cursor:pointer}
.plat svg{width:15px;height:15px}.plat:hover{transform:translateY(-2px)}
.plat-spotify{border-color:rgba(30,215,96,.55);color:#1db954}.plat-youtube{border-color:rgba(255,60,60,.5);color:#e23b3b}.plat-apple{border-color:var(--line2)}
.rel-plats .plat,.recent-plats .plat{padding:0;width:28px;height:28px;justify-content:center;border-radius:50%;gap:0}

/* recent */
.recent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.9rem}
.recent-card{display:flex;gap:.75rem;align-items:center;padding:.6rem;border:1px solid var(--line);border-radius:12px;background:var(--surf);transition:.3s}
.recent-card:hover{border-color:rgba(160,32,240,.4)}
.recent-cover{width:50px;height:50px;border-radius:10px;flex-shrink:0;background:linear-gradient(135deg,var(--violet),#0c0c15);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.4)}
.recent-info{min-width:0;flex:1}
.recent-name{font-weight:600;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recent-sub{font-size:.7rem;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:.1rem 0 .3rem}
.recent-plats{display:flex;gap:.3rem}.recent-plats .plat{width:24px;height:24px}

/* journal teaser */
.journal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
.jcard{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surf);transition:.3s;display:flex;flex-direction:column}
.jcard:hover{transform:translateY(-5px);border-color:var(--line2);box-shadow:0 18px 44px rgba(0,0,0,.4)}
.jcard-art{aspect-ratio:16/9;background:linear-gradient(135deg,#1a1030,#0c0c15);background-size:cover;background-position:center}
.jcard-body{padding:1rem}
.jcard-title{font-family:var(--font-display);font-weight:700;font-size:.96rem;line-height:1.25;margin-bottom:.4rem}
.jcard-ex{font-size:.8rem;color:var(--dim);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* about + footer */
.about-inner{max-width:780px}
.about-inner p{color:var(--dim);line-height:1.95;font-size:1.05rem}.about-inner b{color:var(--p2)}
.app-foot{padding:2.6rem 0 1rem}
.foot-social{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.2rem}
.soc{width:42px;height:42px;border-radius:11px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--dim);transition:.25s;background:var(--surf)}
.soc:hover{color:var(--p2);border-color:rgba(160,32,240,.55);transform:translateY(-3px)}
.foot-bottom{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.72rem;color:var(--dim2);padding-top:1.2rem;border-top:1px solid var(--line)}

/* ===== bottom-center PLAYER ===== */
.player{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:300;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;width:min(900px,calc(100% - 24px));padding:.7rem 1.1rem;border:1px solid var(--line2);border-radius:18px;background:var(--playerbg);backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);box-shadow:0 20px 60px rgba(0,0,0,.5);overflow:hidden}
.player::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);background-size:200% auto;opacity:.7;animation:grad 6s linear infinite}
.pl-left{display:flex;align-items:center;gap:.8rem;min-width:0}
.pl-cover{width:48px;height:48px;border-radius:12px;flex-shrink:0;background:linear-gradient(135deg,var(--p),#1a1322);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.6);transform:scale(calc(1 + var(--lvl)*.05));transition:transform .12s}
.pl-info{min-width:0}
.pl-title{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-artist{font-size:.72rem;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-fav{background:none;border:none;color:var(--dim2);font-size:1.3rem;cursor:pointer;flex-shrink:0;line-height:1;transition:.2s;padding:0 .2rem}
.pl-fav:not([disabled]):hover{transform:scale(1.15);color:var(--magenta)}.pl-fav.on{color:var(--magenta)}.pl-fav[disabled]{opacity:.3;cursor:default}
.pl-center{display:flex;align-items:center;gap:.6rem;justify-self:center}
.pl-play{width:50px;height:50px;border-radius:50%;border:none;background:var(--grad);background-size:200% auto;color:#fff;font-size:1.05rem;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:transform .2s;box-shadow:0 6px 24px rgba(160,32,240,.45)}
.pl-play:hover{transform:scale(1.07)}.pl-play:active{transform:scale(.93)}
.pl-more{background:none;border:1px solid var(--line);border-radius:50%;width:34px;height:34px;color:var(--dim);font-size:1rem;cursor:pointer;flex-shrink:0;transition:.2s}
.pl-more:hover{color:var(--txt);border-color:var(--line2)}
.pl-right{display:flex;align-items:center;gap:1rem;justify-self:end}
.pl-live{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--dim)}
.pl-vol{display:flex;align-items:center;gap:.5rem}
.pl-vol input{-webkit-appearance:none;appearance:none;width:84px;height:4px;border-radius:4px;background:var(--line2);outline:none}
.pl-vol input::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--p2);cursor:pointer}
.pl-vol input::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:var(--p);cursor:pointer}
.pl-eq{position:absolute;bottom:0;left:0;right:0;height:3px;display:flex;gap:2px;opacity:.8}
.pl-eq i{flex:1;background:var(--grad);transform-origin:bottom;transform:scaleY(.2)}
.pl-menu{position:absolute;bottom:calc(100% + 12px);right:12px;width:230px;background:var(--bg2);border:1px solid var(--line2);border-radius:13px;padding:.85rem;box-shadow:0 16px 44px rgba(0,0,0,.55);z-index:5}
.pl-menu[hidden]{display:none}
.pm-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-size:.82rem;color:var(--dim);margin-bottom:.75rem}.pm-row input{width:auto;margin:0}
.pm-sleep{display:flex;gap:.3rem}
.pm-sleep button{background:var(--surf2);border:1px solid var(--line);border-radius:7px;color:var(--dim);font-family:inherit;font-size:.72rem;padding:.25rem .45rem;cursor:pointer}.pm-sleep button.on{background:var(--p);color:#fff;border-color:transparent}
.pm-share{width:100%;padding:.55rem;border:1px solid var(--line);border-radius:9px;background:var(--surf);color:var(--txt);font-family:inherit;font-size:.82rem;cursor:pointer}.pm-share:hover{border-color:var(--p);color:var(--p2)}

/* favorites overlay */
.fav-overlay{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:1.2rem;background:rgba(0,0,0,.65);backdrop-filter:blur(6px)}
.fav-overlay[hidden]{display:none}
.fav-box{width:100%;max-width:460px;max-height:80vh;display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--line2);border-radius:16px;overflow:hidden}
.fav-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid var(--line)}
.fav-head h3{font-family:var(--font-display);font-weight:800;font-size:1.05rem}
.fav-close{background:none;border:none;color:var(--dim);font-size:1.7rem;cursor:pointer;line-height:1}
.fav-list{overflow-y:auto;padding:.6rem}
.fav-empty{padding:2.2rem 1rem;text-align:center;color:var(--dim2);font-size:.88rem}
.fav-item{display:flex;align-items:center;gap:.8rem;padding:.6rem;border-radius:11px}.fav-item:hover{background:var(--surf)}
.fav-cover{width:46px;height:46px;border-radius:9px;flex-shrink:0;background:linear-gradient(135deg,#2a1238,#11111a);background-size:cover;background-position:center}
.fav-info{flex:1;min-width:0}.fav-name{font-weight:600;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fav-sub{font-size:.72rem;color:var(--dim2)}
.fav-plats{display:flex;gap:.4rem;margin-top:.3rem;flex-wrap:wrap}.fav-plats .plat{padding:.25rem .55rem;font-size:.66rem;border-radius:7px;width:auto;height:auto}
.fav-rm{background:none;border:none;color:var(--dim2);font-size:1.3rem;cursor:pointer;flex-shrink:0;line-height:1}.fav-rm:hover{color:var(--magenta)}

@keyframes blink{0%,100%{opacity:.4}50%{opacity:1}}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s,transform .7s}.reveal.vis{opacity:1;transform:none}

/* blog pages (chrome.php) */
body.page{padding-bottom:40px}
.eq-mini{display:inline-flex;align-items:flex-end;gap:2px;height:11px}
.eq-mini i{width:2px;background:#fff;border-radius:2px;height:4px;animation:eqm .8s ease-in-out infinite alternate}
.eq-mini i:nth-child(2){animation-delay:.2s}.eq-mini i:nth-child(3){animation-delay:.35s}
@keyframes eqm{to{height:11px}}
.page .nav-cta{display:flex;align-items:center;gap:.5rem;padding:.5rem 1.1rem;border:none;border-radius:9px;background:var(--grad);background-size:200% auto;color:#fff;font-weight:600;font-size:.74rem;cursor:pointer}
.page footer{max-width:1080px;margin:0 auto;padding:3rem 1.5rem 2.2rem;border-top:1px solid var(--line)}
.page .foot-top{display:flex;justify-content:space-between;align-items:center;gap:1.4rem;flex-wrap:wrap}
.page .foot-brand{display:flex;align-items:center;gap:.9rem}.page .foot-logo{width:42px;height:42px;border-radius:10px}
.page .foot-name{font-family:var(--font-display);font-weight:800;font-size:1.2rem}.page .foot-name b{color:var(--p)}
.page .foot-brand p{color:var(--dim2);font-size:.78rem;max-width:280px}
.page .foot-links{display:flex;gap:1.3rem}.page .foot-links a{font-size:.78rem;color:var(--dim)}.page .foot-links a:hover{color:var(--p2)}
.page .foot-bottom{max-width:1080px;margin:1.4rem auto 0}
.blog-wrap{max-width:1080px;margin:0 auto;padding:6rem 1.5rem 4rem}
.blog-head{margin-bottom:2.6rem}.blog-head h1,.blog-head .sec-title{font-family:var(--font-display);font-weight:800;letter-spacing:-1px}
.blog-lead{color:var(--dim);margin-top:.7rem;max-width:560px;font-size:.92rem}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.bpost{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surf);transition:.3s;display:flex;flex-direction:column}
.bpost:hover{transform:translateY(-5px);border-color:var(--line2);box-shadow:0 18px 44px rgba(0,0,0,.4)}
.bpost-art{aspect-ratio:16/10;background:linear-gradient(135deg,#1a1030,#0c0c15);background-size:cover;background-position:center}
.bpost-body{padding:1.1rem;flex:1;display:flex;flex-direction:column}
.bpost-title{font-family:var(--font-display);font-weight:700;font-size:1.02rem;margin-bottom:.45rem;line-height:1.25}
.bpost-ex{font-size:.85rem;color:var(--dim);line-height:1.6;flex:1}
.bpost-meta{margin-top:1rem;font-size:.7rem;color:var(--dim2);display:flex;justify-content:space-between;align-items:center}.bpost-read{color:var(--p2)}
.article{max-width:760px;margin:0 auto;padding:6rem 1.5rem 4rem}
.article-back{font-size:.8rem;color:var(--dim);display:inline-block;margin-bottom:1.2rem}.article-back:hover{color:var(--p2)}
.article h1{font-family:var(--font-display);font-weight:800;font-size:clamp(1.9rem,4.5vw,2.9rem);line-height:1.12;letter-spacing:-1px}
.article-meta{color:var(--dim2);font-size:.78rem;margin-top:.6rem}
.article-cover{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:16px;margin:1.4rem 0 .4rem;border:1px solid var(--line)}
.article-body{margin-top:1.6rem;color:var(--txt);opacity:.92;line-height:1.85;font-size:1.05rem}
.article-body p{margin-bottom:1.15rem}.article-body a{color:var(--p2);text-decoration:underline}.article-body strong{color:var(--txt)}
.tag{display:inline-block;font-size:.62rem;letter-spacing:4px;text-transform:uppercase;color:var(--p2);margin-bottom:.6rem}

/* responsive */
@media(max-width:1080px){
  .stage{grid-template-columns:1fr;gap:1.8rem;text-align:center}
  .np-now{order:-1}.np-actions,.np-links,.np-status{justify-content:center}
  .upnext{text-align:left;max-width:520px;margin:0 auto;width:100%}
  .pl-grid,.journal-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:860px){
  .nav-links{display:none}
  nav#nav{padding:0 1rem}
  .now{padding:1.8rem 0}
  .pl-right{display:none}
  .player{grid-template-columns:1fr auto;gap:.7rem}
  .dj-top{grid-template-columns:1fr}
  .dj-pads{grid-template-columns:repeat(4,1fr)}
  .dj-keys{grid-template-columns:repeat(8,1fr)}.dj-key{width:auto;height:46px}
  .dj-share{margin-left:0}
  .dj-rlabel{width:46px;font-size:.62rem}.dj-cells{gap:3px}.dj-cell{height:22px}.dj-bpm{margin-left:0}
  .pl-grid,.journal-grid{grid-template-columns:1fr}
}
@media(max-width:520px){.np-deck,#vinyl{width:280px;height:280px}.np-glow{width:270px;height:270px}.dj-cells{gap:2px}.dj-cell{height:18px;border-radius:4px}.dj-pads{gap:.45rem}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001s!important;animation-iteration-count:1!important}.reveal{transition:none}.np-cover{animation:none}}
