*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
html{height:100%}
html,body{touch-action:pan-x pan-y;overscroll-behavior:none;-webkit-overflow-scrolling:touch}
:root{--blue:#0a84ff;--green:#30d158;--red:#ff453a;--orange:#ff9f0a;--yellow:#ffd60a;--g1:#1c1c1e;--g2:#2c2c2e;--g3:#3a3a3c;--tx2:#8e8e93}
html,body{background:#000}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;background:radial-gradient(ellipse 80% 60% at center,#23232b 0%,#0a0a0d 55%,#000 100%) #000;color:#fff;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 10px calc(env(safe-area-inset-bottom) + 8px);overflow-x:hidden}
.appHeader{position:sticky;top:0;z-index:100;margin:0 -5px;padding:calc(env(safe-area-inset-top) + 10px) 9px 12px;background:rgba(10,10,13,.88);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.06);display:flex;justify-content:space-between;align-items:center;transform:translateZ(0);-webkit-transform:translateZ(0)}
.ipodMini{width:36px;height:36px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#2a0060,#000);border:1.5px solid rgba(160,80,255,.5);box-shadow:0 0 10px rgba(123,47,255,.6);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden;flex-shrink:0;padding:0;transition:box-shadow .3s}
.ipodMini.playing{box-shadow:0 0 14px rgba(123,47,255,.9),0 0 28px rgba(123,47,255,.4);animation:ipodMiniPulse 2s ease-in-out infinite alternate}
@keyframes ipodMiniPulse{from{box-shadow:0 0 10px rgba(123,47,255,.6)}to{box-shadow:0 0 20px rgba(200,100,255,.9),0 0 40px rgba(123,47,255,.4)}}
.ipodMiniVinyl{width:22px;height:22px;border-radius:50%;background:conic-gradient(from 0deg,#1a0030,#2d0050,#0d0020,#3b1060,#1a0030);position:absolute;transition:opacity .3s}
.ipodMini.playing .ipodMiniVinyl{animation:vinylSpin 2s linear infinite}
.ipodMiniEQ{display:flex;align-items:flex-end;gap:2px;height:14px;position:absolute;opacity:0;transition:opacity .3s}
.ipodMiniEQ span{width:3px;border-radius:2px;background:linear-gradient(to top,#7b2fff,#e879f9);transform-origin:bottom;transform:scaleY(.3)}
.ipodMini.playing .ipodMiniEQ span:nth-child(1){animation:ieq1 .5s ease-in-out infinite alternate}
.ipodMini.playing .ipodMiniEQ span:nth-child(2){animation:ieq2 .4s ease-in-out .1s infinite alternate}
.ipodMini.playing .ipodMiniEQ span:nth-child(3){animation:ieq3 .6s ease-in-out .05s infinite alternate}
.appBrand{display:flex;align-items:center;gap:3px}
/* ── App Logo ──────────────────────────────────────────────────────────────── */
.appLogoWrap{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center;flex-shrink:0}
.appLogoImg{height:36px;width:auto;display:block}
.appLogoSub{margin:1px 0 0;font-size:7px;font-weight:700;letter-spacing:.12em;color:rgba(255,255,255,.45);line-height:1;white-space:nowrap}
.appLogoSubHL{color:#c084fc}
/* ── EQ Bars ── */
.eqBars{display:flex;align-items:center;gap:2px;height:40px;margin-right:6px;flex-shrink:0}
.eqBars span{display:block;width:1.5px;border-radius:2px;background:var(--c);height:var(--h);transform-origin:center center;transform:scaleY(1)}
.playing .eqBars span{animation:eqDance var(--d) ease-in-out infinite alternate}
@keyframes eqDance{0%{transform:scaleY(.15)}100%{transform:scaleY(1)}}
.djIcon{font-size:30px;filter:drop-shadow(0 0 10px rgba(10,132,255,.5))}
.djIcon svg rect{transform-box:fill-box;transform-origin:bottom;transition:transform .1s}
.playing .djIcon svg rect:nth-child(1){animation:eq1 .65s ease-in-out infinite alternate}
.playing .djIcon svg rect:nth-child(2){animation:eq2 .5s  ease-in-out .08s infinite alternate}
.playing .djIcon svg rect:nth-child(3){animation:eq3 .55s ease-in-out .04s infinite alternate}
.playing .djIcon svg rect:nth-child(4){animation:eq2 .6s  ease-in-out .12s infinite alternate}
.playing .djIcon svg rect:nth-child(5){animation:eq1 .7s  ease-in-out .16s infinite alternate}
@keyframes eq1{0%{transform:scaleY(.25)}100%{transform:scaleY(1)}}
@keyframes eq2{0%{transform:scaleY(.45)}100%{transform:scaleY(1)}}
@keyframes eq3{0%{transform:scaleY(.15)}100%{transform:scaleY(1)}}
.appTitle{font-size:22px;font-weight:800;letter-spacing:.6px;background:linear-gradient(90deg,#ffd60a 0%,#ff9f0a 25%,#ff453a 50%,#ff9f0a 75%,#ffd60a 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:shine 3.5s linear infinite;filter:drop-shadow(0 0 8px rgba(255,180,0,.4))}
@keyframes shine{0%{background-position:0% 0%}100%{background-position:200% 0%}}
.wrap{flex:1;width:100%;max-width:820px;margin:0 auto;display:flex;align-items:center;justify-content:center;padding:14px 0;position:relative;min-height:0}
.card{width:100%;max-width:820px;min-height:65vh;padding:18px 22px 22px;border-radius:26px;background:linear-gradient(180deg,rgba(40,40,45,.95),rgba(20,20,24,.95));box-shadow:0 20px 60px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.06);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:flex;flex-direction:column;gap:14px;overflow:visible}
.head{display:flex;align-items:center;gap:8px;min-height:44px}
.headL{display:flex;flex-wrap:nowrap;align-items:center;gap:12px;font-size:12px;color:var(--tx2);min-width:0;flex:1;line-height:44px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.headL>*{display:inline-flex;align-items:center;line-height:1}
.headL #bWarn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.headL b{color:#fff;font-weight:600}
.np{color:var(--green);font-weight:600;font-size:12px}
.np.off{color:var(--tx2);font-weight:500}
.shareBtn,.editBtn{background:transparent;color:var(--blue);border:none;width:44px;height:44px;padding:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,transform .1s;font-size:22px;line-height:1}
.shareBtn:active,.editBtn:active,#btnResetCard:active{background:rgba(255,255,255,.16);transform:scale(.9)}
.shareBtn svg{width:24px;height:24px;display:block}
.editBtn{color:#fff}
.editBtn svg{width:24px;height:24px;display:block}
#btnMinimizeCard svg{width:26px;height:26px}
.hMore{position:relative;display:inline-flex;flex-shrink:0}
.hMoreMenu{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:rgba(28,28,32,.98);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:6px;box-shadow:0 16px 40px rgba(0,0,0,.55);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:none;flex-direction:column;gap:2px;z-index:50}
.hMore.open .hMoreMenu{display:flex}
.hMoreItem{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:transparent;border:none;color:#fff;font:inherit;font-size:14px;border-radius:8px;cursor:pointer;text-align:left}
.hMoreItem:hover,.hMoreItem:focus-visible{background:rgba(255,255,255,.08);outline:none}
.hMoreItem:active{background:rgba(255,255,255,.14)}
.hMoreItem svg{width:18px;height:18px;flex-shrink:0;color:var(--blue)}
.dots{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:rgba(0,0,0,.25);border-radius:12px;gap:6px}
.dot{width:10px;height:10px;border-radius:50%;background:var(--g3);cursor:pointer;transition:transform .15s,background .2s}
.dot.has{background:var(--green)}
.dot.cur{transform:scale(1.5);box-shadow:0 0 0 2px var(--yellow)}
.dot.play{background:var(--red);animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.4}}
.warn{display:inline-block;background:var(--orange);color:#000;padding:5px 10px;border-radius:8px;font-size:11px;font-weight:600;animation:pop .3s}
@keyframes pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
.body{text-align:center;padding:18px 0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}
.time{font-size:28px;color:var(--tx2);font-weight:500;letter-spacing:-.3px;margin-bottom:10px}
.title{font-size:44px;font-weight:700;letter-spacing:-1.2px;margin-bottom:14px}
.desc{font-size:24px;color:#d1d1d6;font-weight:500}
.controls{display:flex;justify-content:center;gap:28px;margin-top:26px}
.ic{width:1em;height:1em;fill:currentColor;display:inline-block;vertical-align:-.15em;flex-shrink:0;pointer-events:none}
.navBtn{background:var(--g2);color:#fff;border:none;font-size:22px;width:64px;height:48px;border-radius:14px;cursor:pointer;font-family:inherit;transition:transform .1s,background .15s;display:inline-flex;align-items:center;justify-content:center}
.navBtn:active{transform:scale(.94);background:var(--g3)}
.navBtn.eject{background:var(--orange);color:#000}
.scriptWrap{display:none;border-top:1px solid rgba(255,255,255,.08);padding-top:18px}
.scriptGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.left,.right{font-size:17px;line-height:1.5}
.left{border-right:1px solid rgba(255,255,255,.1);padding-right:16px;text-align:right}
.left ul,.right ul{list-style:none;padding:0;margin:0}
.left li,.right li{position:relative;min-height:28px;height:auto;display:flex;align-items:flex-start;padding-top:4px;padding-bottom:4px;word-break:break-word;white-space:normal}
.left li{padding-right:22px;justify-content:flex-end}
.left li::after,.right li::before{content:"●";position:absolute;top:8px;font-size:10px;color:var(--yellow)}
.left li::after{right:0}
.right{text-align:left;color:var(--yellow)}
.right li{padding-left:22px}
.right li::before{left:0}
.appFooter{position:sticky;bottom:0;z-index:99;margin:0 -10px;padding:10px 18px calc(env(safe-area-inset-bottom) + 10px);background:rgba(14,14,18,.97);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);border-top:1px solid rgba(255,255,255,.07);box-shadow:0 -8px 28px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:10px;transform:translateZ(0);-webkit-transform:translateZ(0)}
.albNowInfo{display:flex;align-items:center;gap:6px;flex:1;min-width:0;font-size:12px;color:#fff;overflow:hidden}
.albNowAlbum{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;color:#60b3ff}
.albNowTrack{display:none}
.albNowSep{opacity:.4;flex-shrink:0}
.albNowStop{background:rgba(255,255,255,.12);border:none;color:#fff;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.albNowStop:active{background:rgba(255,255,255,.22)}
.albTrackRow.playing{background:rgba(10,132,255,.18);border-color:rgba(10,132,255,.35)}
.fRow{display:flex;align-items:center;gap:14px;min-width:0}
.upBtn{display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.08);color:#fff;width:40px;height:40px;border-radius:50%;font-size:17px;cursor:pointer;user-select:none;transition:transform .1s,background .15s,color .15s;flex-shrink:0;border:1px solid rgba(255,255,255,.06)}
.upBtn:active{transform:scale(.92);background:rgba(255,255,255,.16)}
.upBtn.has{background:rgba(48,209,88,.16);color:var(--green);border-color:rgba(48,209,88,.3)}
.songInfo{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;overflow:hidden;cursor:pointer}
.songTitle{font-size:14px;font-weight:600;color:#fff;line-height:1.25;letter-spacing:-.1px;overflow:hidden;position:relative}
.songSub{font-size:11px;color:var(--tx2);line-height:1.2;letter-spacing:.2px;text-transform:uppercase;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.songInfo.empty .songTitle{color:var(--tx2);font-weight:500}
.songInfo.live .songSub{color:var(--green)}
.songInfo.live .songSub::before{content:"●";margin-right:5px;animation:pulse 1.4s infinite}
.remixBtn{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px 0 12px;border-radius:20px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(135deg,rgba(94,92,230,.22),rgba(255,107,157,.22));color:#fff;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.2px;transition:transform .1s,background .15s}
.remixBtn:active{transform:scale(.95);background:linear-gradient(135deg,rgba(94,92,230,.4),rgba(255,107,157,.4))}
.remixBtn svg{opacity:.9}
.rxUpBtn{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;height:40px;padding:0 12px 0 10px;border-radius:20px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.07);color:rgba(255,255,255,.7);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.2px;transition:transform .1s,background .15s,color .15s;position:relative}
.rxUpBtn:active{transform:scale(.95)}
.rxUpBtn.has{background:rgba(94,92,230,.28);color:#fff;border-color:rgba(94,92,230,.4)}
.rxUpBtn svg{opacity:.8;width:13px;height:13px}
.rxResetBtn{display:inline-flex;align-items:center;justify-content:center;align-self:center;flex-shrink:0;height:40px;padding:0 14px;border-radius:20px;border:1px solid rgba(255,69,58,.25);background:rgba(255,69,58,.1);color:var(--red);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:transform .1s,background .15s;letter-spacing:.2px}
.rxResetBtn:active{transform:scale(.95);background:rgba(255,69,58,.22)}
.rxBadge{position:absolute;top:-5px;right:-5px;background:var(--blue);color:#fff;font-size:9px;font-weight:700;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none}
.playBtn{flex-shrink:0;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 30% 25%,#3a3a44,#0e0e12 80%);color:#fff;font-size:24px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .1s,background .2s,box-shadow .2s,border-color .2s;box-shadow:0 6px 18px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.12)}
.playBtn:hover{border-color:rgba(10,132,255,.45);box-shadow:0 8px 22px rgba(10,132,255,.28),inset 0 1px 0 rgba(255,255,255,.14)}
.playBtn:active{transform:scale(.9)}
.playBtn.pa{background:radial-gradient(circle at 30% 25%,#5cf08a,#127a32 85%);color:#04210d;border-color:rgba(48,209,88,.55);box-shadow:0 8px 24px rgba(48,209,88,.5),inset 0 1px 0 rgba(255,255,255,.25)}
.volRow{display:flex;align-items:center;gap:12px;padding:0 2px}
.spk{flex-shrink:0;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 30% 25%,#3a3a44,#0e0e12 80%);color:#e6e6ea;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .1s,background .2s,box-shadow .2s,border-color .2s,color .2s;box-shadow:0 6px 18px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.12);opacity:.92;padding:0}
.spk.on{opacity:1;color:#fff;border-color:rgba(10,132,255,.45);box-shadow:0 8px 22px rgba(10,132,255,.3),inset 0 1px 0 rgba(255,255,255,.14)}
.spk:hover{border-color:rgba(10,132,255,.6)}
.spk:active{transform:scale(.9)}
.spk .ic{width:22px;height:22px;display:block;flex-shrink:0;fill:currentColor;transition:filter .3s}
.spk .spk-woofer-ring,.spk .spk-tweeter-ring{stroke:currentColor;fill:none;transition:stroke .25s,filter .3s}
.spk .spk-woofer-dot,.spk .spk-tweeter-dot{fill:currentColor;transition:fill .25s,filter .3s}
.spk .spk-woofer-ring,.spk .spk-woofer-dot{transform-origin:12px 16px;transform-box:fill-box}
.spk .spk-tweeter-ring,.spk .spk-tweeter-dot{transform-origin:12px 5.5px;transform-box:fill-box}
body.playing .spk.on .spk-woofer-ring{animation:spkWoof .9s ease-in-out infinite alternate,spkPulseW 1.1s ease-in-out infinite;filter:drop-shadow(0 0 8px currentColor) drop-shadow(0 0 3px currentColor) saturate(1.6)}
body.playing .spk.on .spk-woofer-dot{animation:spkWoof .9s ease-in-out infinite alternate,spkPulseDot 1.1s ease-in-out infinite;filter:drop-shadow(0 0 8px currentColor) drop-shadow(0 0 3px currentColor) saturate(1.6)}
body.playing .spk.on .spk-tweeter-ring{animation:spkTwt .55s ease-in-out infinite alternate,spkPulseT .7s ease-in-out infinite;filter:drop-shadow(0 0 6px currentColor) drop-shadow(0 0 2px currentColor) saturate(1.6)}
body.playing .spk.on .spk-tweeter-dot{animation:spkTwt .55s ease-in-out infinite alternate,spkPulseDot .7s ease-in-out infinite;filter:drop-shadow(0 0 6px currentColor) drop-shadow(0 0 2px currentColor) saturate(1.6)}
body.playing .spk.on .spk-woofer-ring,body.playing .spk.on .spk-tweeter-ring{stroke:currentColor;stroke-width:1.8}
body.playing .spk.on .spk-woofer-dot,body.playing .spk.on .spk-tweeter-dot{fill:currentColor}
@keyframes spkWoof{0%{color:#00f0ff}20%{color:#00ff88}40%{color:#9d00ff}60%{color:#ff007a}80%{color:#ff3d00}100%{color:#ffe600}}
@keyframes spkTwt{0%{color:#ff00ea}25%{color:#00e5ff}50%{color:#7cff00}75%{color:#ffd000}100%{color:#ff0040}}
@keyframes spkPulseW{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes spkPulseT{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
@keyframes spkPulseDot{0%,100%{transform:scale(1)}50%{transform:scale(1.4)}}
#vol{--vtrack:4px;--vthumb:16px;--vfill:rgba(255,255,255,.1);flex:1;width:100%;height:26px;-webkit-appearance:none;appearance:none;background:transparent;border-radius:0;outline:none;cursor:pointer;touch-action:none}
#vol::-webkit-slider-runnable-track{height:var(--vtrack);border-radius:calc(var(--vtrack)/2);background:var(--vfill);box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
#vol::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--vthumb);height:var(--vthumb);border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff,#c9ccd3 80%);border:1px solid rgba(0,0,0,.25);box-shadow:0 2px 6px rgba(0,0,0,.45),0 0 0 0 rgba(10,132,255,0);cursor:pointer;transition:transform .1s,box-shadow .15s;margin-top:calc((var(--vtrack) - var(--vthumb)) / 2)}
#vol:hover::-webkit-slider-thumb{box-shadow:0 2px 6px rgba(0,0,0,.45),0 0 0 4px rgba(10,132,255,.2)}
#vol::-webkit-slider-thumb:active{transform:scale(1.15);box-shadow:0 2px 10px rgba(0,0,0,.55),0 0 0 6px rgba(10,132,255,.32)}
#vol::-moz-range-track{height:var(--vtrack);border-radius:calc(var(--vtrack)/2);background:var(--vfill);box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
#vol::-moz-range-thumb{width:var(--vthumb);height:var(--vthumb);border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff,#c9ccd3 80%);border:1px solid rgba(0,0,0,.25);box-shadow:0 2px 6px rgba(0,0,0,.45);cursor:pointer}
/* ── iOS Sheet (replaces .modal/.modalCard) ──────────────────────────────────── */
.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:flex-end;opacity:0;visibility:hidden;transition:opacity .3s ease-in-out,visibility .3s ease-in-out;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:200}
.modal.open{opacity:1;visibility:visible}
.modal::before{display:none}
.modalCard{background:#1c1c1e;border-radius:20px 20px 0 0;width:100%;max-width:600px;max-height:92dvh;display:flex;flex-direction:column;box-shadow:0 -8px 40px rgba(0,0,0,.6);overflow:hidden;transform:translateY(100%);transition:transform .3s ease-in-out;will-change:transform;touch-action:pan-y;padding-bottom:env(safe-area-inset-bottom);position:relative}
.modal.open .modalCard{transform:translateY(0)}
/* pill handle */
.modalCard::before{content:"";display:block;width:36px;height:4px;background:rgba(255,255,255,.22);border-radius:2px;margin:10px auto 0;flex-shrink:0}
.modalHead{display:flex;justify-content:space-between;align-items:center;padding:12px 20px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.modalHead h3{margin:0;font-size:17px;font-weight:700;letter-spacing:-.3px}
.modalHead .x{background:none;color:#fff;border:none;width:60px;height:60px;font-size:30px;cursor:pointer;display:flex;align-items:center;justify-content:center}

.modalBody{padding:14px 20px 20px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.modalBody label{display:block;font-size:11px;color:var(--tx2);margin:14px 0 6px;text-transform:uppercase;letter-spacing:.7px;font-weight:700}
.modalBody label:first-child{margin-top:0}
.eFld{width:100%;padding:11px 13px;font-size:16px;border-radius:10px;background:var(--g2);border:1px solid transparent;color:#fff;font-family:inherit;outline:none;transition:border-color .15s}
.eFld:focus{border-color:var(--blue)}
.bRow{display:flex;gap:8px;margin-bottom:6px}
.bInp{flex:1;padding:9px 11px;font-size:15px;border-radius:9px;background:var(--g2);border:1px solid transparent;color:#fff;font-family:inherit;outline:none;min-width:0}
.bInp:focus{border-color:var(--blue)}
.bDel{background:rgba(255,69,58,.18);color:var(--red);border:none;width:38px;border-radius:9px;cursor:pointer;font-size:18px;font-weight:700;flex-shrink:0}
.bDel:active{background:rgba(255,69,58,.32)}
.bAdd{background:rgba(10,132,255,.18);color:var(--blue);border:none;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;margin-top:4px}
.bAdd:active{background:rgba(10,132,255,.3)}
.modalFoot{display:flex;gap:10px;padding:14px 20px;border-top:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.2)}
.modalFoot button{flex:1;padding:13px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .1s,background .15s}
.modalFoot button:active{transform:scale(.97)}
.modalFoot .cancel{background:var(--g2);color:#fff}
.modalFoot .save{background:var(--blue);color:#fff}
#btnResetCard{color:var(--red,#ff453a)}
.badge{background:transparent;border:none;width:36px;height:36px;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;filter:drop-shadow(0 0 10px rgba(255,180,50,.55));transition:transform .15s}
.badge svg{width:36px;height:36px;animation:spin 14s linear infinite}
.badge:active{transform:scale(.85)}
@keyframes spin{to{transform:rotate(360deg)}}
.aboutCard{background:radial-gradient(ellipse at top,#1a1a2e 0%,#0a0a14 100%);text-align:center;padding:0 26px 28px;overflow:hidden;position:relative;border-radius:20px 20px 0 0}
.aboutCard::before{content:"";position:absolute;inset:-50% -20% auto;height:100%;background:radial-gradient(ellipse,rgba(255,200,80,.15),transparent 65%);pointer-events:none;z-index:0}
.aboutCard>*{position:relative;z-index:1}
.aboutHandle{width:36px;height:4px;background:rgba(255,255,255,.22);border-radius:2px;margin:10px auto 18px}
.aboutCard .x{position:absolute;top:14px;right:14px;background:none;border:none;width:60px;height:60px;color:#fff;cursor:pointer;font-size:28px;z-index:2;display:flex;align-items:center;justify-content:center}
.aboutSparks{font-size:13px;letter-spacing:8px;color:rgba(255,215,100,.5);margin-bottom:14px}
.aboutLogo{margin-bottom:10px}
.aboutAppName{font-size:26px;font-weight:900;letter-spacing:2px;background:linear-gradient(90deg,#ffd60a,#ff9f0a,#ff453a,#ff9f0a,#ffd60a);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 3.5s linear infinite;margin-bottom:4px}
.aboutTagline{margin:1px 0 0;font-size:7px;font-weight:700;letter-spacing:.12em;color:rgba(255,255,255,.45);line-height:1;white-space:nowrap}
.aboutText{font-size:13px;color:rgba(255,255,255,.65);line-height:1.6;margin:14px 8px 0;font-style:italic}
.aboutSep{display:flex;align-items:center;gap:10px;margin:20px 0 16px;color:rgba(255,200,80,.4);font-size:12px}
.aboutSep::before,.aboutSep::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,200,80,.3),transparent)}
.aboutDesigner{font-size:10px;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:3px;margin-bottom:4px}
.aboutAuthor{font-size:20px;font-weight:700;color:#fff;margin-bottom:20px;letter-spacing:-.3px}
.aboutActions{display:flex;gap:10px;justify-content:center;margin-bottom:24px}
.aboutActionBtn{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;max-width:130px;padding:12px 0;border-radius:14px;font-size:13px;font-weight:600;text-decoration:none;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);transition:transform .1s,background .15s}
.aboutActionBtn svg{width:1em;height:1em;flex-shrink:0}
.aboutActionBtn:active{transform:scale(.96);background:rgba(255,255,255,.18)}
.aboutActionBtn.venmo{background:#008CFF;border-color:#008CFF}
.aboutActionBtn.venmo:active{background:#0070cc}
.aboutActionBtn.paypal{background:#003087;border-color:#003087}
.aboutActionBtn.paypal:active{background:#4983eb}
.aboutCopyright{font-size:11px;color:rgba(255,255,255,.25);letter-spacing:.5px}
.aboutPricingBox{background:rgba(255,255,255,.05);border:1px solid rgba(255,200,80,.15);border-radius:14px;padding:18px 16px;margin:0 0 4px;text-align:left}
.aboutPricingHeadline{font-size:13px;font-weight:700;color:rgba(255,200,80,.9);letter-spacing:.3px;margin-bottom:10px}
.aboutPricingBody{font-size:12px;color:rgba(255,255,255,.6);line-height:1.7}
.aboutSupportLabel{font-size:12px;color:rgba(255,255,255,.45);margin:0 0 14px;font-style:italic}
.aboutFoot{font-size:11px;color:rgba(255,255,255,.4);margin-top:12px}
.aboutDate{font-size:10px;color:rgba(255,215,100,.5);margin-top:14px;letter-spacing:3px;font-weight:600}
.authGate{position:fixed;inset:0;z-index:500;background:radial-gradient(ellipse 80% 60% at center,#23232b 0%,#0a0a0d 55%,#000 100%);display:flex;align-items:center;justify-content:center;padding:20px}
.authCard{width:100%;max-width:360px;background:rgba(40,40,45,.96);border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:32px 28px;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.6)}
.authCard h2{font-size:22px;font-weight:700;margin-bottom:6px}
.authCard p{font-size:13px;color:#8e8e93;margin-bottom:24px;line-height:1.5}
.authFld{width:100%;padding:13px 15px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#fff;font-size:16px;font-family:inherit;outline:none;transition:border-color .15s;margin-bottom:12px;text-align:center;letter-spacing:1px;box-sizing:border-box}
.authFld:focus{border-color:#0a84ff}
.authBtn{width:100%;padding:14px;border:none;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;background:#0a84ff;color:#fff;transition:opacity .15s,transform .1s;margin-top:8px}
.authBtn:active{transform:scale(.97);opacity:.9}
.authBtn.sec{background:rgba(255,255,255,.08);color:#fff;font-weight:600;font-size:13px;padding:11px}
.otpBoxes{display:flex;gap:8px;justify-content:center;margin-bottom:14px}
.otpBox{width:44px;height:52px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:12px;color:#fff;font-size:22px;font-weight:700;text-align:center;outline:none;font-family:inherit;transition:border-color .15s;-webkit-appearance:none}
.otpBox:focus{border-color:#0a84ff}

/* ── Landing Page ────────────────────────────────────────────────────────────── */
#landingPage{width:100%;padding:0 0 24px}
.landingWrap{display:flex;flex-direction:column;align-items:center;gap:0;width:100%}
.landingHero{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;padding:32px 24px 28px;text-align:center;overflow:hidden}
.landingGlow{position:absolute;inset:-40px;background:radial-gradient(ellipse 70% 50% at 50% 30%,rgba(10,132,255,.18),transparent 70%);pointer-events:none}
.landingLogo{margin-bottom:14px;animation:landingPulse 3s ease-in-out infinite alternate}
@keyframes landingPulse{from{filter:drop-shadow(0 0 10px rgba(10,132,255,.4))}to{filter:drop-shadow(0 0 28px rgba(10,132,255,.8))}}
.landingTitle{font-size:clamp(32px,8vw,52px);font-weight:900;letter-spacing:-1px;background:linear-gradient(90deg,#0a84ff,#30d158,#ffd60a,#ff9f0a);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 4s linear infinite;margin:0 0 12px}
.landingSubtitle{font-size:clamp(14px,3.5vw,17px);color:var(--tx2);line-height:1.6;max-width:420px;margin:0 0 28px}
.landingSignIn{display:flex;align-items:center;gap:10px;background:#0a84ff;color:#fff;border:none;border-radius:16px;padding:16px 28px;font-size:16px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:0 8px 32px rgba(10,132,255,.4);transition:transform .15s,box-shadow .15s;letter-spacing:.2px}
.landingSignIn:active{transform:scale(.97);box-shadow:0 4px 16px rgba(10,132,255,.3)}
.landingFeatures{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%;padding:24px 16px 0;max-width:600px}
.landingFeatureCard{background:rgba(40,40,48,.7);border:1px solid rgba(255,255,255,.07);border-radius:18px;padding:14px 16px;display:flex;flex-direction:row;align-items:flex-start;gap:12px;transition:border-color .2s,transform .2s;backdrop-filter:blur(10px)}
.landingFeatureCard:hover{border-color:rgba(10,132,255,.35);transform:translateY(-2px)}
.lfIcon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:rgba(10,132,255,.12);border-radius:10px;color:#0a84ff;flex-shrink:0}
.lfText{display:flex;flex-direction:column;gap:4px;min-width:0}
.lfTitle{font-size:14px;font-weight:700;color:#fff}
.lfDesc{font-size:12px;color:var(--tx2);line-height:1.5}
.landingFootNote{font-size:12px;color:rgba(255,255,255,.25);margin:20px 0 0;text-align:center}
@media(max-width:400px){.landingFeatures{grid-template-columns:1fr}}

/* ── Demo Player ── */
#demoPlayer{width:100%;max-width:600px;padding:20px 16px 8px;display:flex;flex-direction:column;gap:16px}
.dpHead{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:rgba(255,255,255,.55);letter-spacing:.5px;text-transform:uppercase;padding:0 2px}
.dpSection{background:rgba(30,30,38,.8);border:1px solid rgba(255,255,255,.06);border-radius:16px;overflow:hidden;backdrop-filter:blur(12px)}
.dpSectionLabel{font-size:11px;font-weight:700;color:rgba(255,255,255,.35);letter-spacing:.8px;text-transform:uppercase;padding:10px 14px 0;display:flex;align-items:center;gap:5px}
/* Tracks */
.dpTrackList{display:flex;flex-direction:column;padding:6px 0 6px}
.dpTrack{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;padding:8px 14px;transition:background .15s}
.dpTrack:active{background:rgba(255,255,255,.04)}
.dpPlayBtn{width:32px;height:32px;border-radius:50%;background:rgba(10,132,255,.15);border:1.5px solid rgba(10,132,255,.3);color:#0a84ff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,transform .1s}
.dpPlayBtn:active{transform:scale(.92)}
.dpPlayBtn.playing{background:rgba(10,132,255,.25);border-color:#0a84ff}
.dpTrackInfo{display:flex;flex-direction:column;gap:2px;min-width:0}
.dpTrackName{font-size:13px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dpTrackArtist{font-size:11px;color:rgba(255,255,255,.35)}
.dpBar{height:3px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden;width:52px;flex-shrink:0}
.dpBarFill{height:100%;width:0%;background:linear-gradient(90deg,#0a84ff,#30d158);border-radius:2px;transition:width .5s linear}
/* Album */
.dpAlbumPlayer{display:flex;align-items:center;gap:12px;padding:12px 14px}
.dpVinyl{flex-shrink:0;transition:transform .5s linear}
.dpVinyl.spinning{animation:dpSpin 3s linear infinite}
@keyframes dpSpin{to{transform:rotate(360deg)}}
.dpAlbumInfo{flex:1;min-width:0}
.dpAlbumName{font-size:13px;font-weight:700;color:#fff}
.dpAlbumTrack{font-size:11px;color:rgba(255,255,255,.4);margin-top:2px}
.dpAlbumControls{display:flex;align-items:center;gap:6px;flex-shrink:0}
/* Remix */
.dpRemixWrap{display:flex;align-items:center;gap:12px;padding:12px 14px}
.dpRemixEq{display:flex;align-items:flex-end;gap:3px;height:28px;flex-shrink:0}
.dpRemixEq span{width:4px;background:#0a84ff;border-radius:2px;height:4px;transition:height .2s}
.dpRemixEq.active span:nth-child(1){animation:dpEq 0.9s ease-in-out infinite alternate}
.dpRemixEq.active span:nth-child(2){animation:dpEq 0.7s ease-in-out .1s infinite alternate}
.dpRemixEq.active span:nth-child(3){animation:dpEq 1.1s ease-in-out .2s infinite alternate}
.dpRemixEq.active span:nth-child(4){animation:dpEq 0.8s ease-in-out .05s infinite alternate}
.dpRemixEq.active span:nth-child(5){animation:dpEq 1.0s ease-in-out .15s infinite alternate}
@keyframes dpEq{from{height:4px}to{height:24px}}
.dpRemixMeta{flex:1;min-width:0}
.dpRemixTitle{font-size:13px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dpRemixSub{font-size:11px;color:rgba(255,255,255,.35);margin-top:2px}
.dpCtrlBtn{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,transform .1s;flex-shrink:0}
.dpCtrlBtn:active{transform:scale(.9)}
.dpCtrlBtn.dpCtrlPlay{background:rgba(10,132,255,.2);border-color:rgba(10,132,255,.4);color:#0a84ff;width:38px;height:38px}
.dpCtrlBtn.dpCtrlPlay.playing{background:rgba(10,132,255,.3);border-color:#0a84ff}
.authErr{color:#ff453a;font-size:13px;min-height:18px;margin-bottom:8px}
.authNote{font-size:12px;color:#636366;margin-top:14px}
.authAdminLink{font-size:12px;color:#636366;cursor:pointer;text-decoration:underline;margin-top:6px;display:inline-block}
.userMenuWrap{position:relative;flex-shrink:0}
.userMenuBtn{background:none;border:none;cursor:pointer;padding:0;margin:0;display:flex;align-items:center;gap:7px;color:#fff;font-family:inherit;line-height:1}
.userAvatar{width:34px;height:34px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.2);flex-shrink:0;background:var(--g2);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;overflow:hidden}
.userAvatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.userAvatarPlaceholder{width:36px;height:36px;min-width:36px;min-height:36px;max-height:36px;border-radius:50%;background:none;border:none;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;color:rgba(255,255,255,.9);flex-shrink:0;letter-spacing:-.3px;overflow:hidden;box-sizing:border-box}
.userAvatarPlaceholder svg{width:22px;height:22px;display:block}
.loginPill{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);color:#fff;font-size:13px;font-weight:600;padding:6px 13px;border-radius:20px;transition:background .15s}
.loginPill:hover{background:rgba(255,255,255,.16)}
.userDropdown{position:absolute;top:calc(100% + 10px);right:0;background:rgba(28,28,32,.97);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:6px;min-width:180px;box-shadow:0 16px 40px rgba(0,0,0,.6);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:300;display:none}
.userDropdown.open{display:block;animation:dropIn .18s ease}
@keyframes dropIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.dropSection{padding:8px 10px 6px;font-size:11px;color:#636366;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.dropItem{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;cursor:pointer;font-size:14px;font-weight:500;color:#fff;transition:background .12s;border:none;background:none;width:100%;text-align:left;font-family:inherit;text-decoration:none}
.dropItem:hover{background:rgba(255,255,255,.08)}
.dropItem.danger{color:var(--red)}
.dropItem.blue{color:var(--blue)}
.dropItem .dicon{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none !important}
.dropItem .dicon svg{width:18px;height:18px;display:block;fill:currentColor}
.dropSep{height:1px;background:rgba(255,255,255,.07);margin:4px 0}
.dropUserInfo{padding:10px 10px 8px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:4px}
.dropUserInfo .duAvatar{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex-shrink:0;overflow:hidden}
.dropUserInfo .duAvatar img{width:100%;height:100%;object-fit:cover}
.dropUserInfo .duName{font-size:13px;font-weight:600;line-height:1.3}
.dropUserInfo .duRole{font-size:11px;color:#636366}
/* ── Album ───────────────────────────────────────────────────────────────────── */
.albumBtn{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;height:40px;padding:0 14px 0 10px;border-radius:20px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.07);color:rgba(255,255,255,.75);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.2px;transition:transform .1s,background .15s,color .15s}
.albumBtn:active{transform:scale(.95)}
.albumBtn svg{width:15px;height:15px;opacity:.8}
.albumModalCard{max-width:600px;background:radial-gradient(120% 60% at 50% -10%,rgba(120,72,252,.18),transparent 60%),radial-gradient(80% 50% at 100% 100%,rgba(10,132,255,.12),transparent 60%),#0e0e12}
.albumModalCard .modalHead h3{background:linear-gradient(90deg,#fff 0%,#c084fc 100%);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800;letter-spacing:-.3px}
.albSearch{display:flex;gap:8px;padding:10px 18px 12px;border-bottom:1px solid rgba(255,255,255,.06)}
.albSearchFld{flex:1;padding:10px 14px;font-size:14px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);color:#fff;font-family:inherit;outline:none;transition:border-color .18s,background .18s;min-width:0}
.albSearchFld::placeholder{color:rgba(255,255,255,.35)}
.albSearchFld:focus{border-color:rgba(168,85,247,.55);background:rgba(255,255,255,.07)}
.albNewBtn{flex-shrink:0;background:linear-gradient(135deg,#0a84ff,#7948fc);color:#fff;border:none;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;transition:transform .15s,box-shadow .15s;box-shadow:0 6px 16px rgba(10,132,255,.3)}
.albNewBtn:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(10,132,255,.4)}
.albNewBtn:active{transform:scale(.97)}
.albPlayAllBtn,.albShuffleBtn{flex-shrink:0;background:rgba(255,255,255,.06);color:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.1);border-radius:12px;width:38px;height:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s,background .15s,color .15s,border-color .15s}
.albPlayAllBtn:hover,.albShuffleBtn:hover{background:rgba(255,255,255,.1);color:#fff}
.albPlayAllBtn:active,.albShuffleBtn:active{transform:scale(.94)}
.albShuffleBtn.active{color:#bf5af2;border-color:rgba(191,90,242,.55);background:rgba(191,90,242,.12);box-shadow:0 0 12px rgba(191,90,242,.25)}
.albGrid{padding:14px 18px 22px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:60vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.albCard{position:relative;display:flex;flex-direction:column;gap:10px;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:12px;cursor:pointer;transition:transform .2s cubic-bezier(.16,1,.3,1),border-color .2s,box-shadow .2s;overflow:hidden}
.albCard::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 0%,rgba(168,85,247,.12),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none}
.albCard:hover{transform:translateY(-3px);border-color:rgba(168,85,247,.35);box-shadow:0 14px 30px rgba(0,0,0,.45),0 0 0 1px rgba(168,85,247,.15)}
.albCard:hover::before{opacity:1}
.albCard:active{transform:translateY(-1px) scale(.99)}
.albCardIcon{position:relative;width:100%;aspect-ratio:1;border-radius:12px;background:linear-gradient(135deg,#5e5ce6 0%,#bf5af2 50%,#ff6b9d 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 4px 14px rgba(94,92,230,.3)}
.albCardIcon::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.25),transparent 50%);pointer-events:none}
.albCardIcon svg{width:34px;height:34px;fill:#fff;opacity:.95;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));position:relative;z-index:1}
.albCardInfo{display:flex;flex-direction:column;gap:2px;min-width:0;padding:0 2px}
.albCardName{font-size:13px;font-weight:700;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.1px}
.albCardCount{font-size:11px;color:rgba(255,255,255,.5);font-weight:500}
.albCardDel{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#ff6b6b;border:1px solid rgba(255,69,58,.3);width:26px;height:26px;border-radius:8px;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,transform .15s;opacity:0;z-index:2}
.albCard:hover .albCardDel{opacity:1}
.albCardDel:hover{background:rgba(255,69,58,.25)}
.albCardDel:active{transform:scale(.9)}
.albEmpty{text-align:center;color:var(--tx2);font-size:13px;padding:28px 0}
.albBack{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.02)}
.albUploadBar{position:relative;height:28px;margin:0 20px 4px;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.07)}
.albUploadBarFill{position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(90deg,#0a84ff,#30d158);border-radius:8px;transition:width .2s ease}
.albUploadBarLabel{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;letter-spacing:.3px}
.albBackBtn{background:none;border:none;color:var(--blue);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;padding:0}
.albCurNameWrap{flex:1;display:flex;align-items:center;gap:6px;min-width:0}
.albCurName{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.albRenameBtn{flex-shrink:0;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:rgba(255,255,255,.5);cursor:pointer;padding:7px 10px;display:flex;align-items:center;transition:color .15s,background .15s}
.albRenameBtn:active{color:#fff}
.albStatsCard{display:flex;gap:8px;padding:10px 20px;border-bottom:1px solid rgba(255,255,255,.07)}
.albStat{flex:1;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:11px 8px;text-align:center;display:flex;flex-direction:column;gap:3px}
.albStat .albStatVal{font-size:16px;font-weight:800;color:#fff;letter-spacing:-.3px}
.albStat .albStatLbl{font-size:10px;color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:.7px;font-weight:600}
.albAddTrack{display:inline-flex;align-items:center;gap:5px;background:var(--blue);color:#fff;border-radius:10px;padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .15s;flex-shrink:0;border:none}
.albAddTrack:active{opacity:.8}
.albTrackList{padding:10px 20px 18px;display:flex;flex-direction:column;gap:6px;max-height:52vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.albTrackRow{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:10px 12px;transition:background .15s,border-color .15s}
.albTrackRow:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.1)}
.albTrackNum{width:22px;text-align:center;color:var(--tx2);font-size:11px;flex-shrink:0}
.albTrackName{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.albTrackSize{font-size:11px;color:var(--tx2);flex-shrink:0}
.albTrackPlay{background:rgba(10,132,255,.18);color:var(--blue);border:none;width:26px;height:26px;border-radius:8px;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.albTrackRename,.albTrackMove{background:rgba(255,255,255,.08);color:rgba(255,255,255,.5);border:none;width:26px;height:26px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color .15s}
.albTrackRename:active,.albTrackMove:active{color:#fff}
.albTrackDel{background:rgba(255,69,58,.15);color:var(--red);border:none;width:26px;height:26px;border-radius:8px;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.albLabel{display:block;font-size:11px;color:var(--tx2);margin-bottom:8px;text-transform:uppercase;letter-spacing:.7px;font-weight:700}
.albMsg{font-size:13px;min-height:18px;margin-top:6px}
.modalFoot-btn{flex:1;padding:13px;border:none;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .1s,background .15s}
.modalFoot-btn:active{transform:scale(.97)}
.modalFoot-btn.cancel{background:var(--g2);color:#fff}
.modalFoot-btn.save{background:var(--blue);color:#fff}
.upDestBtn{display:flex;align-items:center;gap:14px;background:var(--g2);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:14px 16px;cursor:pointer;color:#fff;font-family:inherit;text-align:left;font-size:14px;transition:background .15s}
.upDestBtn:hover,.upDestBtn:active{background:var(--g3)}
/* ── Project Sheet ───────────────────────────────────────────────────────────── */
.projBtn{background:rgba(255,180,30,.12);border-color:rgba(255,180,30,.25);color:#ffd60a}
.projBtn:active{background:rgba(255,180,30,.22)}
.projHeaderBtn{display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:#fff;font-size:13px;font-weight:600;padding:7px 12px;cursor:pointer;font-family:inherit;transition:background .15s;white-space:nowrap}
.projHeaderBtn:active{background:rgba(255,255,255,.14)}
.projModalCard{max-width:600px}
.projNameInput{flex:1;background:var(--g2);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px 14px;color:#fff;font-size:14px;font-family:inherit;outline:none}
.projNameInput:focus{border-color:rgba(10,132,255,.6)}
.projSaveNameBtn{background:#0a84ff;border:none;border-radius:10px;color:#fff;font-size:13px;font-weight:600;padding:10px 16px;cursor:pointer;font-family:inherit;white-space:nowrap}
.projActionBtn{background:var(--g2);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:#fff;font-size:13px;padding:9px 14px;cursor:pointer;font-family:inherit;transition:background .15s}
.projActionBtn:active{background:var(--g3)}
.projActionBtn.primary{background:#0a84ff;border-color:#0a84ff}
.projActionBtn.danger{background:rgba(255,69,58,.15);border-color:rgba(255,69,58,.3);color:#ff453a}
.projCardList{padding:0 20px;display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.projCardRow{display:flex;align-items:center;gap:10px;background:var(--g2);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:12px 14px;cursor:pointer;transition:background .15s;touch-action:none}
.projCardRow:active{background:var(--g3)}
.projCardDrag{cursor:grab;color:rgba(255,255,255,.3);font-size:18px;padding:0 4px;flex-shrink:0;touch-action:none}
.projCardMeta{flex:1;min-width:0}
.projCardTime{font-size:11px;color:rgba(255,255,255,.4);margin-bottom:2px}
.projCardTitle{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.projAddCardBtn{width:100%;background:rgba(10,132,255,.12);border:1px dashed rgba(10,132,255,.4);border-radius:12px;color:#0a84ff;font-size:14px;font-weight:600;padding:13px;cursor:pointer;font-family:inherit;transition:background .15s}
.projAddCardBtn:active{background:rgba(10,132,255,.22)}
.projField{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.projField label{font-size:12px;font-weight:600;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.5px}
.projField input,.projField textarea{background:var(--g2);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:11px 14px;color:#fff;font-size:14px;font-family:inherit;outline:none;resize:vertical}
.projField input:focus,.projField textarea:focus{border-color:rgba(10,132,255,.6)}
.projNoProject{padding:32px 20px;text-align:center;color:rgba(255,255,255,.4);font-size:14px}
/* ── Confirm Sheet ────────────────────────────────────────────────────────── */
.confirmIcon{font-size:32px;text-align:center}
.confirmMsg{font-size:15px;font-weight:600;color:#fff;text-align:center;line-height:1.5}
.confirmCancelBtn{flex:1;background:var(--g2);border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#fff;font-size:14px;font-weight:600;padding:13px;cursor:pointer;font-family:inherit;transition:background .15s}
.confirmCancelBtn:active{background:var(--g3)}
.confirmOkBtn{flex:1;background:rgba(255,69,58,.18);border:1px solid rgba(255,69,58,.35);border-radius:12px;color:#ff453a;font-size:14px;font-weight:700;padding:13px;cursor:pointer;font-family:inherit;transition:background .15s}
.confirmOkBtn:active{background:rgba(255,69,58,.32)}
@media(max-width:480px){
  .albumBtn{height:36px;font-size:11px;padding:0 10px 0 8px}
  .albumModalCard{max-width:100%}
}
  .appHeader{padding:calc(env(safe-area-inset-top) + 8px) 7px 10px}
  .djIcon{font-size:26px}
  .appTitle{font-size:18px;letter-spacing:.4px}
  .wrap{padding:10px 0}
  .card{padding:14px 16px 16px;border-radius:22px;gap:12px}
  .body{padding:12px 0}
  .time{font-size:22px}.title{font-size:32px}.desc{font-size:18px}
  .left,.right{font-size:13px;line-height:1.4}
  .left li,.right li{min-height:22px;height:auto}
  .navBtn{width:56px;height:46px;font-size:18px}
  .upBtn{width:36px;height:36px;font-size:15px}
  .playBtn{width:38px;height:38px;font-size:22px}
  .spk{width:38px;height:38px}
  .spk .ic{width:22px;height:22px}
  .remixBtn{height:36px;font-size:12px;padding:0 12px 0 10px}
  .rxUpBtn{height:36px;font-size:11px;padding:0 10px 0 8px}
  .rxResetBtn{height:36px;font-size:11px;padding:0 10px}
  .songTitle{font-size:13px}.songSub{font-size:10px}
  .dots{padding:8px 10px}
  .dot{width:8px;height:8px}
  .dot.cur{transform:scale(1.6)}
  .appFooter{padding:12px 14px calc(env(safe-area-inset-bottom) + 12px);gap:10px}
  .fRow{gap:12px}
}

/* ══════════════════════════════════════════════════════════════════════════════
   FUTURISTIC iPOD OVERLAY
══════════════════════════════════════════════════════════════════════════════ */
/* ── iPod Sheet ─────────────────────────────────────────────────────────────── */
#ipodModal{align-items:flex-end}
.ipodCard{width:100%;max-width:520px;max-height:92vh;border-radius:28px 28px 0 0;background:radial-gradient(ellipse 120% 80% at 50% 10%,#0d0025 0%,#000 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:0 0 calc(env(safe-area-inset-bottom) + 12px);gap:0;position:relative}
#ipodOverlay{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;flex:1;gap:0;--dial:clamp(170px,calc(85vw - 2rem),256px);--vinyl:clamp(64px,14vmin,88px);--vcenter:calc(var(--dial)*0.16)}
.ipodNowBar{width:100%;padding:6px 20px;background:rgba(10,132,255,.15);border-bottom:1px solid rgba(10,132,255,.25);display:flex;align-items:center;gap:10px;flex-shrink:0}

/* ── Stars ─────────────────────────────────────────────────────────────────── */
.ipodStars{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ipodStars::before,.ipodStars::after{content:'';position:absolute;inset:0;background-image:radial-gradient(1px 1px at 10% 15%,#fff 0,transparent 100%),radial-gradient(1px 1px at 25% 60%,rgba(255,255,255,.8) 0,transparent 100%),radial-gradient(1.5px 1.5px at 40% 30%,#fff 0,transparent 100%),radial-gradient(1px 1px at 55% 80%,rgba(255,255,255,.6) 0,transparent 100%),radial-gradient(1px 1px at 70% 10%,#fff 0,transparent 100%),radial-gradient(1.5px 1.5px at 80% 50%,rgba(180,140,255,.9) 0,transparent 100%),radial-gradient(1px 1px at 90% 70%,#fff 0,transparent 100%),radial-gradient(1px 1px at 15% 90%,rgba(255,255,255,.7) 0,transparent 100%),radial-gradient(1px 1px at 60% 45%,rgba(140,180,255,.8) 0,transparent 100%),radial-gradient(1.5px 1.5px at 35% 70%,rgba(255,255,255,.5) 0,transparent 100%);animation:starDrift 40s linear infinite}
.ipodStars::after{background-image:radial-gradient(1px 1px at 5% 40%,rgba(255,255,255,.6) 0,transparent 100%),radial-gradient(1.5px 1.5px at 20% 25%,#fff 0,transparent 100%),radial-gradient(1px 1px at 45% 55%,rgba(200,160,255,.8) 0,transparent 100%),radial-gradient(1px 1px at 65% 20%,rgba(255,255,255,.7) 0,transparent 100%),radial-gradient(1px 1px at 75% 85%,#fff 0,transparent 100%),radial-gradient(1.5px 1.5px at 85% 35%,rgba(140,200,255,.9) 0,transparent 100%),radial-gradient(1px 1px at 50% 95%,rgba(255,255,255,.5) 0,transparent 100%),radial-gradient(1px 1px at 95% 15%,rgba(255,255,255,.6) 0,transparent 100%);animation-duration:60s;animation-direction:reverse}
@keyframes starDrift{0%{transform:translateY(0)}100%{transform:translateY(-40px)}}

/* ── Header ────────────────────────────────────────────────────────────────── */
/* ipodHeader/Back/AlbumLabel removed — real app header is used */
.ipodAlbumLabel{font-size:13px;font-weight:700;color:rgba(180,140,255,.9);letter-spacing:1px;text-transform:uppercase;text-align:center}

/* ── iPod responsive sizing via CSS custom properties ────────────────────── */

/* ── EQ Visualizer ─────────────────────────────────────────────────────────── */
.ipodEQ{display:flex;align-items:flex-end;justify-content:center;gap:3px;height:clamp(24px,5vmin,36px);padding:0 20px;width:100%;max-width:420px;flex-shrink:0;margin:4px 0 2px}
.ipodEQ span{flex:1;max-width:14px;border-radius:3px 3px 0 0;background:linear-gradient(to top,#7b2fff,#a855f7,#e879f9,#f0abfc);transform-origin:bottom;transform:scaleY(.15);transition:transform .1s}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(1){animation:ieq1 .55s ease-in-out infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(2){animation:ieq2 .42s ease-in-out .06s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(3){animation:ieq3 .61s ease-in-out .02s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(4){animation:ieq1 .38s ease-in-out .1s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(5){animation:ieq2 .5s ease-in-out .08s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(6){animation:ieq3 .44s ease-in-out .14s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(7){animation:ieq1 .67s ease-in-out .04s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(8){animation:ieq2 .35s ease-in-out .12s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(9){animation:ieq3 .58s ease-in-out .03s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(10){animation:ieq1 .46s ease-in-out .09s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(11){animation:ieq2 .63s ease-in-out .07s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(12){animation:ieq3 .41s ease-in-out .15s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(13){animation:ieq1 .52s ease-in-out .01s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(14){animation:ieq2 .47s ease-in-out .11s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(15){animation:ieq3 .59s ease-in-out .05s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(16){animation:ieq1 .4s ease-in-out .13s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(17){animation:ieq2 .65s ease-in-out .02s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(18){animation:ieq3 .37s ease-in-out .08s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(19){animation:ieq1 .54s ease-in-out .16s infinite alternate}
#ipodOverlay.ipod-playing .ipodEQ span:nth-child(20){animation:ieq2 .43s ease-in-out .06s infinite alternate}
@keyframes ieq1{0%{transform:scaleY(.12)}100%{transform:scaleY(.9)}}
@keyframes ieq2{0%{transform:scaleY(.2)}100%{transform:scaleY(1)}}
@keyframes ieq3{0%{transform:scaleY(.08)}100%{transform:scaleY(.75)}}

/* ── Vinyl + Track Info ─────────────────────────────────────────────────────── */
.ipodCenter{display:flex;align-items:center;gap:10px;padding:4px 16px;width:100%;max-width:440px;flex-shrink:0}
.ipodMiniDial{position:relative;width:var(--vinyl);height:var(--vinyl);flex-shrink:0;display:flex;align-items:center;justify-content:center}
.ipodMiniDialRing{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#3b0080,#7b2fff 20%,#e879f9 40%,#f0abfc 50%,#e879f9 60%,#7b2fff 80%,#3b0080 100%);box-shadow:0 0 14px rgba(123,47,255,.5);animation:vinylSpin 4s linear infinite paused}
.ipodMiniDialRingR{animation-direction:reverse;animation-duration:6s}
#ipodOverlay.ipod-playing .ipodMiniDialRing{animation-play-state:running}
.ipodMiniDialCenter{position:absolute;inset:22%;border-radius:50%;background:radial-gradient(circle at 40% 38%,#1a003a,#000 70%);border:1px solid rgba(200,100,255,.25);box-shadow:inset 0 1px 8px rgba(0,0,0,.8)}
.ipodMiniDialR:active{opacity:.7;transform:scale(.93);transition:transform .1s,opacity .1s}
.ipodVinyl{width:var(--vinyl);height:var(--vinyl);flex-shrink:0;border-radius:50%;background:conic-gradient(from 0deg,#1a0030,#2d0050,#0d0020,#3b1060,#1a0030);box-shadow:0 0 24px rgba(123,47,255,.5),0 0 60px rgba(123,47,255,.18),inset 0 0 20px rgba(0,0,0,.8);position:relative}
#ipodOverlay.ipod-playing .ipodVinyl{animation:vinylSpin 3s linear infinite}
@keyframes vinylSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.ipodVinylInner{position:absolute;inset:8px;border-radius:50%;background:conic-gradient(from 45deg,rgba(180,100,255,.3),rgba(80,0,200,.2),rgba(220,150,255,.25),rgba(60,0,160,.2),rgba(180,100,255,.3));border:1px solid rgba(200,100,255,.2)}
.ipodVinylHole{position:absolute;inset:calc(var(--vinyl)*0.4 - var(--vinyl)*0.05);border-radius:50%;background:radial-gradient(circle,#1a0030,#000);border:2px solid rgba(160,80,255,.4);box-shadow:0 0 10px rgba(123,47,255,.6)}
.ipodTrackInfo{flex:1;min-width:0;width:0;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}
.ipodTrackName{font-size:clamp(13px,3.5vmin,17px);font-weight:800;color:#fff;text-shadow:0 0 14px rgba(200,120,255,.7),0 0 30px rgba(123,47,255,.4);overflow:hidden;position:relative}
.mq-inner{display:flex;white-space:nowrap;width:max-content}
.mq-a,.mq-b{display:inline-block;white-space:nowrap}
.mq-b{padding-left:40px}
.scrolling .mq-inner{animation:marqScroll var(--marq-dur,14s) linear infinite}
@keyframes marqScroll{
  0%{transform:translateX(0);opacity:0}
  5%{opacity:1}
  85%{opacity:1}
  100%{transform:translateX(var(--marq-px,-200px));opacity:0}
}
.ipodTrackAlbum{font-size:11px;color:rgba(180,140,255,.65);margin-top:4px;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}

/* ── Seek Bar ──────────────────────────────────────────────────────────────── */
.ipodSeekWrap{width:100%;max-width:380px;padding:8px 24px 2px;flex-shrink:0}
.ipodSeekBar{position:relative;height:4px;background:rgba(255,255,255,.12);border-radius:2px;cursor:pointer;margin:10px 0;touch-action:none}
.ipodSeekBar::before{content:'';position:absolute;inset:-12px 0;cursor:pointer}
.ipodSeekFill{position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(90deg,#7b2fff,#e879f9);border-radius:2px;transition:width .5s linear;pointer-events:none}
.ipodSeekThumb{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 8px rgba(200,100,255,.8);transform:translate(-50%,-50%);left:0;transition:left .5s linear;pointer-events:none}
.ipodSeekThumb:active{width:18px;height:18px}
.ipodSeekTimes{display:flex;justify-content:space-between;font-size:11px;color:rgba(255,255,255,.35);margin-top:5px;font-variant-numeric:tabular-nums;letter-spacing:.3px}

/* ── Dial ──────────────────────────────────────────────────────────────────── */
.ipodDialWrap{position:relative;display:flex;align-items:center;justify-content:center;width:var(--dial);height:var(--dial);flex-shrink:0;margin:4px auto 2px}
.ipodDialBtn{position:absolute;background:none;border:none;color:rgba(255,255,255,.5);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s,transform .12s;z-index:3;padding:0}
.ipodDialBtn:active{color:#fff}
.ipodDialPrev{left:calc(var(--vcenter)/2 - 16px);top:50%;transform:translateY(-50%)}
.ipodDialPrev:active{transform:translateY(-50%) scale(.85)}
.ipodDialNext{right:calc(var(--vcenter)/2 - 16px);top:50%;transform:translateY(-50%)}
.ipodDialNext:active{transform:translateY(-50%) scale(.85)}
.ipodDialPower{top:8px;left:50%;transform:translateX(-50%);color:rgba(255,80,80,.9);z-index:5}
.ipodDialPower:active{transform:translateX(-50%) scale(.85);color:#ff3030}
.ipodDial{width:var(--dial);height:var(--dial);border-radius:50%;position:relative;cursor:pointer;flex-shrink:0}
/* Static box-shadow; glow pulsed via opacity on ::after halo (GPU composited = no flash) */
.ipodDialRing{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#3b0080,#7b2fff 20%,#e879f9 40%,#f0abfc 50%,#e879f9 60%,#7b2fff 80%,#3b0080 100%);box-shadow:0 0 30px rgba(123,47,255,.5),0 0 60px rgba(123,47,255,.2),inset 0 0 40px rgba(0,0,0,.7)}
.ipodDialRing::before{content:'';position:absolute;inset:6px;border-radius:50%;border:1px solid rgba(255,255,255,.06)}
.ipodDialRing::after{content:'VOL';position:absolute;bottom:calc(var(--dial)*0.068);left:50%;transform:translateX(-50%);font-size:clamp(6px,1.5vmin,8px);letter-spacing:2px;color:rgba(255,255,255,.3);font-weight:700}
/* Halo layer — only opacity animates */
.ipodDialHalo{position:absolute;inset:-20px;border-radius:50%;background:radial-gradient(circle,rgba(168,85,247,.6) 20%,rgba(123,47,255,.3) 55%,transparent 75%);pointer-events:none;will-change:opacity;opacity:.4;animation:dialGlow 3s ease-in-out infinite alternate}
#ipodOverlay.ipod-playing .ipodDialHalo{animation:dialGlowPulse 2.5s ease-in-out infinite alternate}
@keyframes dialGlow{from{opacity:.3}to{opacity:.75}}
@keyframes dialGlowPulse{from{opacity:.4}to{opacity:1}}
.ipodDialCenter{position:absolute;inset:var(--vcenter);border-radius:50%;background:radial-gradient(circle at 40% 38%,#1a003a,#000 70%);border:1px solid rgba(200,100,255,.25);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 2px 12px rgba(0,0,0,.8),0 0 20px rgba(0,0,0,.5);overflow:visible;user-select:none;-webkit-user-select:none}
.ipodDialPlayIc{opacity:.7;transition:opacity .15s,transform .15s;width:clamp(18px,5vmin,28px);height:clamp(18px,5vmin,28px)}
.ipodDialCenter:active .ipodDialPlayIc{opacity:1;transform:scale(1.2)}

/* ── Project Mini Wheel (header) ───────────────────────────────────────────── */
.projMiniWheel{width:36px;height:36px;border-radius:50%;position:relative;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:box-shadow .3s}
.projMiniWheel:hover,.projMiniWheel:active{box-shadow:0 0 18px rgba(10,132,255,.7)}
.projMiniWheelRing{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#003080,#0a84ff 20%,#60cfff 40%,#fff 50%,#60cfff 60%,#0a84ff 80%,#003080 100%);box-shadow:0 0 10px rgba(10,132,255,.5);animation:projWheelSpin 4s linear infinite,projRingPulse 2s ease-in-out infinite alternate}
@keyframes projRingPulse{from{box-shadow:0 0 10px rgba(10,132,255,.5)}to{box-shadow:0 0 20px rgba(96,207,255,.9),0 0 40px rgba(10,132,255,.4)}}
@keyframes projWheelSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.projMiniWheelCenter{position:absolute;inset:22%;border-radius:50%;background:radial-gradient(circle at 40% 38%,#001840,#000 70%);border:1px solid rgba(10,132,255,.3);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 6px rgba(0,0,0,.8)}

/* ── Feature Cards ─────────────────────────────────────────────────────────── */
#projFeatureCards{width:100%;max-width:820px;margin:0 auto;padding:18px 0 8px}
.pfcGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pfcCard{position:relative;border-radius:22px;padding:24px 20px 22px;overflow:hidden;cursor:pointer;border:1px solid rgba(255,255,255,.07);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:transform .2s,box-shadow .2s,border-color .2s}
.pfcCard:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.15)}
.pfcCard:active{transform:scale(.97)}
.pfcGlow{position:absolute;inset:0;border-radius:22px;opacity:.25;transition:opacity .3s;pointer-events:none}
.pfcCard:hover .pfcGlow{opacity:.4}
.pfcAlbums{background:linear-gradient(135deg,rgba(30,0,80,.85),rgba(10,0,30,.9))}
.pfcAlbums .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#7b2fff,transparent 65%)}
.pfcAlbums .pfcIcon{color:#a855f7}
.pfcSupport{background:linear-gradient(135deg,rgba(80,46,0,.85),rgba(25,14,0,.92))}
.pfcSupport .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#ffd60a,transparent 65%)}
.pfcSupport .pfcIcon{color:#ffd60a}
.pfcLocal{background:linear-gradient(135deg,rgba(60,0,80,.85),rgba(20,0,30,.92))}
.pfcLocal .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#bf5af2,transparent 65%)}
.pfcLocal .pfcIcon{color:#bf5af2}
#apResumeBar{position:fixed;top:calc(env(safe-area-inset-top) + 14px);left:50%;transform:translateX(-50%);z-index:9999;display:inline-flex;align-items:center;gap:9px;padding:11px 20px 11px 16px;border:1px solid rgba(255,255,255,.18);border-radius:999px;cursor:pointer;font:600 13px/1 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.3px;color:#fff;background:linear-gradient(135deg,#0a84ff 0%,#7948fc 55%,#bf5af2 100%);background-size:200% 200%;box-shadow:0 8px 28px rgba(10,132,255,.45),0 0 0 1px rgba(255,255,255,.06) inset;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:apResumePulse 2s ease-in-out infinite,apResumeShine 4s linear infinite;white-space:nowrap;-webkit-tap-highlight-color:transparent;overflow:hidden}
#apResumeBar::before{content:"";position:absolute;inset:-2px;border-radius:999px;padding:2px;background:linear-gradient(135deg,#0a84ff,#bf5af2,#0a84ff);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.6;pointer-events:none}
#apResumeBar svg{filter:drop-shadow(0 0 6px rgba(255,255,255,.6))}
#apResumeBar:hover{transform:translateX(-50%) scale(1.04)}
#apResumeBar:active{transform:translateX(-50%) scale(.97)}
@keyframes apResumePulse{0%,100%{box-shadow:0 8px 28px rgba(10,132,255,.45),0 0 0 0 rgba(191,90,242,.55),0 0 0 1px rgba(255,255,255,.06) inset}50%{box-shadow:0 10px 34px rgba(10,132,255,.6),0 0 0 14px rgba(191,90,242,0),0 0 0 1px rgba(255,255,255,.1) inset}}
@keyframes apResumeShine{0%{background-position:0% 50%}100%{background-position:200% 50%}}
.lcCard{background:radial-gradient(ellipse at top,#1d142e 0%,#0a0a14 100%)}
.lcCard::before{content:"";position:absolute;inset:-50% -20% auto;height:100%;background:radial-gradient(ellipse,rgba(191,90,242,.18),transparent 65%);pointer-events:none;z-index:0}
.lcCard>*{position:relative;z-index:1}
.lcStatus{font-size:13px;opacity:.85;margin:10px 0 0;text-align:center}
.lcBody{margin:14px 0 0;text-align:left}
.lcActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;justify-content:center}
.lcPlaylists{margin-top:16px;text-align:left}
.lcWarn{background:rgba(255,159,10,.1);border:1px solid rgba(255,159,10,.35);color:#ffd28a;padding:11px 13px;border-radius:12px;font-size:13px;line-height:1.5;margin-top:14px;text-align:left}
.lcBtn{background:#bf5af2;color:#fff;border:0;border-radius:12px;padding:12px 18px;font-size:14px;font-weight:600;cursor:pointer;letter-spacing:.2px;transition:transform .15s,opacity .15s}
.lcBtn:hover{opacity:.9}
.lcBtn:active{transform:scale(.97)}
.lcBtn.alt{background:rgba(255,255,255,.08);color:#fff}
.lcBtn.warn{background:linear-gradient(135deg,#bf5af2,#7c3aed)}
.lcBtn:disabled{opacity:.5;cursor:not-allowed}
.lcPl{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:12px 14px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.lcPl .lcPlName{font-weight:600;color:#fff;font-size:14px}
.lcPl .lcPlMeta{font-size:12px;opacity:.65;margin-top:2px}
.lcPl .lcPlPlay{background:#bf5af2;color:#fff;border:0;border-radius:10px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer}
.lcPriceBox{background:rgba(255,255,255,.04);border:1px solid rgba(191,90,242,.25);border-radius:14px;padding:16px 18px;text-align:left}
.lcPriceBox .lcPrice{font-size:26px;font-weight:700;color:#fff}
.lcPriceBox .lcPriceSub{font-size:13px;opacity:.7;font-weight:500;margin-left:6px}
.lcPriceBox ul{margin:12px 0 0;padding-left:20px;font-size:14px;line-height:1.65;opacity:.9;color:#fff}
.pfcRemix{background:linear-gradient(135deg,rgba(0,40,80,.85),rgba(0,10,30,.9))}
.pfcRemix .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#0a84ff,transparent 65%)}
.pfcRemix .pfcIcon{color:#0a84ff}
.pfcProject{background:linear-gradient(135deg,rgba(0,60,40,.85),rgba(0,15,10,.9))}
.pfcProject .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#30d158,transparent 65%)}
.pfcProject .pfcIcon{color:#30d158}
.pfcParty{background:linear-gradient(135deg,rgba(80,30,0,.85),rgba(30,10,0,.9))}
.pfcParty .pfcGlow{background:radial-gradient(ellipse at 30% 30%,#ff9f0a,transparent 65%)}
.pfcParty .pfcIcon{color:#ff9f0a}
.pfcIcon{width:40px;height:40px;margin-bottom:14px;filter:drop-shadow(0 0 8px currentColor)}
.pfcIcon svg{width:40px;height:40px}
.pfcLabel{font-size:17px;font-weight:700;color:#fff;margin-bottom:6px;letter-spacing:-.3px}
.pfcSub{font-size:13px;color:rgba(255,255,255,.5);line-height:1.5}
@media(max-width:480px){.pfcGrid{grid-template-columns:1fr}.pfcCard{padding:20px 16px 18px}}

/* ── Project action button accent variant ──────────────────────────────────── */
.projActionBtn.accent{background:rgba(10,132,255,.18);color:var(--blue);border-color:rgba(10,132,255,.3)}
.projActionBtn.accent:active{background:rgba(10,132,255,.3)}

/* ── Party Mode Sheet ──────────────────────────────────────────────────────── */
.pmStep{display:flex;align-items:flex-start;gap:14px;padding:14px;background:rgba(255,255,255,.05);border-radius:14px;border:1px solid rgba(255,255,255,.07)}
.pmStepNum{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#ff9f0a,#ff6b0a);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:#fff;flex-shrink:0;box-shadow:0 0 12px rgba(255,159,10,.4)}
.pmStepTitle{font-size:14px;font-weight:700;color:#fff;margin-bottom:4px}
.pmStepDesc{font-size:13px;color:rgba(255,255,255,.55);line-height:1.6}

/* ── Bot Chat ──────────────────────────────────────────────────────────────── */
.botFab{position:fixed;right:14px;bottom:calc(env(safe-area-inset-bottom) + 116px);z-index:260;width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(168,85,247,.5);background:linear-gradient(135deg,#1a0040,#0d0020);color:#c084fc;cursor:pointer;box-shadow:0 8px 22px rgba(0,0,0,.5),0 0 16px rgba(168,85,247,.3);display:inline-flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s,opacity .2s;padding:0;opacity:.5}
.botFab:hover{opacity:1;transform:scale(1.08);box-shadow:0 12px 32px rgba(0,0,0,.6),0 0 28px rgba(192,132,252,.5)}
.botFab svg{width:26px;height:26px;fill:currentColor}
.botFloat{position:fixed;right:14px;bottom:calc(env(safe-area-inset-bottom) + 180px);z-index:259;width:min(92vw,400px);height:min(66vh,580px);display:grid;grid-template-rows:auto 1fr auto auto;gap:.55rem;background:rgba(10,8,20,.96);border:1px solid rgba(168,85,247,.25);border-radius:18px;padding:.85rem .85rem 1.1rem;box-shadow:0 18px 50px rgba(0,0,0,.7),0 0 30px rgba(168,85,247,.12);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);transform-origin:bottom right;transform:scale(.88) translateY(10px);opacity:0;visibility:hidden;pointer-events:none;transition:transform .22s cubic-bezier(.16,1,.3,1),opacity .18s ease,visibility 0s linear .22s}
.botFloat.show{transform:scale(1) translateY(0);opacity:1;visibility:visible;pointer-events:auto;transition:transform .26s cubic-bezier(.16,1,.3,1),opacity .2s ease,visibility 0s}
@media(max-width:600px){.botFloat{right:0;left:0;bottom:0;width:100%;height:100%;border-radius:0;border:none;padding:.9rem .9rem calc(env(safe-area-inset-bottom) + 1.4rem)}}
.botFloatHead{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;margin:0 10px}
.botHeadId{display:flex;align-items:center;gap:.5rem}
.botHeadIcon{width:22px;height:22px;color:#c084fc;fill:currentColor;flex-shrink:0}
.botHeadTitle{font-size:.95rem;font-weight:700;color:#e5e5e5;letter-spacing:.03em}
.botHeadHL{color:#c084fc}
.botClose{background:none;border:none;color:rgba(255,255,255,.5);width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s;flex-shrink:0}
.botClose:hover{color:#fff}
.botClose svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;pointer-events:none}
.botLog{overflow-y:auto;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:.9rem;display:flex;flex-direction:column;gap:5px}
.botMsg{max-width:80%;padding:.45rem .85rem;line-height:1.4;font-size:.88rem;position:relative;word-wrap:break-word;overflow-wrap:anywhere;animation:botMsgIn .2s cubic-bezier(.16,1,.3,1) both}
@keyframes botMsgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.botMsg.user{align-self:flex-end;background:linear-gradient(135deg,#6d28d9,#a855f7);color:#fff;border-radius:18px 18px 4px 18px}
.botMsg.bot{align-self:flex-start;background:rgba(255,255,255,.07);color:#e5e5e5;border-radius:18px 18px 18px 4px;border:1px solid rgba(255,255,255,.08)}
.botMsg.bot p{margin:0 0 .3rem}.botMsg.bot p:last-child{margin:0}
.botMsg.bot b,.botMsg.bot strong{color:#c084fc}
.botMsg.bot code{background:rgba(255,255,255,.08);border-radius:4px;padding:0 .2rem;font-size:.9em}
.botTyping span{display:inline-block;width:6px;height:6px;border-radius:50%;background:rgba(192,132,252,.7);animation:botDot 1.2s ease-in-out infinite;margin:0 1px}
.botTyping span:nth-child(2){animation-delay:.2s}
.botTyping span:nth-child(3){animation-delay:.4s}
@keyframes botDot{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-5px)}}
.botQuickQ{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;flex-shrink:0;margin:0 10px}
.botQBtn{background:rgba(168,85,247,.1);border:1px solid rgba(168,85,247,.3);border-radius:20px;color:#c084fc;font-size:.75rem;padding:5px 12px;cursor:pointer;transition:background .15s;font-family:inherit;white-space:nowrap;flex:1 1 auto;text-align:center;min-width:0}
.botQBtn:hover{background:rgba(168,85,247,.22)}
.botInput{display:grid;grid-template-columns:1fr auto;gap:.5rem;flex-shrink:0;margin:0 10px}
.botInput input{background:rgba(255,255,255,.06);border:1px solid rgba(168,85,247,.25);border-radius:10px;color:#fff;font-size:.88rem;padding:.55rem .8rem;outline:none;font-family:inherit;transition:border-color .15s}
.botInput input:focus{border-color:rgba(168,85,247,.55)}
.botInput input::placeholder{color:rgba(255,255,255,.3)}
.botSendBtn{background:linear-gradient(135deg,#6d28d9,#a855f7);border:none;border-radius:10px;color:#fff;font-size:.82rem;font-weight:700;padding:.55rem 1rem;cursor:pointer;font-family:inherit;transition:opacity .15s}
.botSendBtn:disabled{opacity:.5;cursor:not-allowed}

/* ── Volume Row ────────────────────────────────────────────────────────────── */
.ipodVolRow{display:flex;align-items:center;gap:10px;width:100%;max-width:380px;padding:4px 24px;flex-shrink:0}
.ipodVolBar{flex:1;height:3px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden}
.ipodVolFill{height:100%;width:100%;background:linear-gradient(90deg,#7b2fff,#e879f9);border-radius:2px;transition:width .1s}
.ipodVolPct{font-size:11px;color:rgba(200,140,255,.7);min-width:36px;text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:390px){.appLogoImg{height:26px}.eqBars{height:30px}.appLogoSub{font-size:7px;letter-spacing:.3px}}
