/* ============================================================
   TrackID — Dark Club / Neon
   ============================================================ */
:root{
  --bg:#07070c;
  --bg2:#0d0d18;
  --glass:rgba(20,18,34,.6);
  --glass-brd:rgba(120,110,200,.18);
  --glass-brd-hi:rgba(255,70,200,.5);
  --txt:#f2eeff;
  --dim:#a49fc4;
  --faint:#6b6690;
  --cyan:#22e6d6;
  --magenta:#ff3ea5;
  --violet:#8b6bff;
  --lime:#8bff5c;
  --amber:#ffcf5c;
  --red:#ff5b7a;
  --line:rgba(130,120,190,.14);
  --radius:16px;
  color-scheme:dark;
  font-synthesis:none;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"Space Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--txt);background:var(--bg);min-height:100vh;overflow-x:hidden;position:relative;
  -webkit-tap-highlight-color:transparent;
}

/* ---- animated background ---- */
.bg-grid{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    linear-gradient(rgba(140,110,255,.05) 1px,transparent 1px) 0 0/44px 44px,
    linear-gradient(90deg,rgba(140,110,255,.05) 1px,transparent 1px) 0 0/44px 44px,
    linear-gradient(180deg,var(--bg2),var(--bg));
  mask-image:radial-gradient(ellipse at 50% -10%,#000 55%,transparent 100%);}
.bg-orb{position:fixed;z-index:0;border-radius:50%;filter:blur(80px);opacity:.5;pointer-events:none}
.orb-a{width:460px;height:460px;left:-120px;top:-100px;background:radial-gradient(circle,rgba(255,62,165,.6),transparent 65%);animation:f1 20s ease-in-out infinite}
.orb-b{width:520px;height:520px;right:-160px;top:120px;background:radial-gradient(circle,rgba(34,230,214,.5),transparent 65%);animation:f2 24s ease-in-out infinite}
@keyframes f1{50%{transform:translate(50px,40px) scale(1.1)}}
@keyframes f2{50%{transform:translate(-40px,-30px) scale(1.12)}}

.glass{background:var(--glass);border:1px solid var(--glass-brd);border-radius:var(--radius);
  backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%)}
.hidden{display:none!important}

/* ---- Logo mit Equalizer ---- */
.logo{font-family:"Space Grotesk";font-weight:700;letter-spacing:3px;font-size:26px;display:flex;align-items:center;gap:11px}
.logo.sm{font-size:19px;letter-spacing:2px;gap:9px}
.logo .accent{background:linear-gradient(120deg,var(--magenta),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.logo-eq{display:inline-flex;align-items:flex-end;gap:2.5px;height:22px}
.logo.sm .logo-eq{height:17px}
.logo-eq i{width:3px;border-radius:2px;background:linear-gradient(180deg,var(--cyan),var(--magenta));animation:eq 1s ease-in-out infinite}
.logo-eq i:nth-child(1){height:40%;animation-delay:0s}
.logo-eq i:nth-child(2){height:100%;animation-delay:.2s}
.logo-eq i:nth-child(3){height:60%;animation-delay:.4s}
.logo-eq i:nth-child(4){height:85%;animation-delay:.1s}
@keyframes eq{0%,100%{transform:scaleY(.4)}50%{transform:scaleY(1)}}

/* ---- Inputs & Buttons ---- */
.input{width:100%;background:rgba(8,8,16,.7);border:1px solid var(--glass-brd);border-radius:12px;
  padding:13px 15px;color:var(--txt);font-size:15px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}
.input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(34,230,214,.14)}
.input.area{resize:vertical;font-family:"JetBrains Mono",monospace;font-size:13.5px;line-height:1.6}
.btn{border:none;border-radius:12px;cursor:pointer;font-family:inherit;font-weight:600;font-size:14px;
  padding:12px 16px;transition:transform .12s,box-shadow .2s,background .2s;white-space:nowrap}
.btn:active{transform:scale(.96)}
.btn-primary{color:#0a0410;background:linear-gradient(120deg,var(--cyan),var(--magenta));
  box-shadow:0 8px 24px -8px rgba(255,62,165,.6)}
.btn-primary:hover{box-shadow:0 12px 30px -8px rgba(34,230,214,.7)}
.btn-ghost{color:var(--dim);background:rgba(255,255,255,.03);border:1px solid var(--glass-brd)}
.btn-ghost:hover{color:var(--txt);border-color:var(--glass-brd-hi)}
.icon-btn{width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.04);border:1px solid var(--glass-brd);
  color:var(--dim);font-size:18px;cursor:pointer;display:grid;place-items:center}
.icon-btn:hover{color:var(--txt);border-color:var(--glass-brd-hi)}

/* ---- Login ---- */
.login{position:fixed;inset:0;z-index:5;display:grid;place-items:center;padding:24px}
.login-card{width:100%;max-width:400px;padding:36px 30px;text-align:center;position:relative;z-index:2}
.login .logo{justify-content:center;margin-bottom:6px}
.login-sub{color:var(--dim);font-size:13.5px;margin:0 0 26px}
#login-form{display:flex;flex-direction:column;gap:13px}
.err{color:var(--red);font-size:13px;min-height:18px}

/* ---- App layout ---- */
#app{position:relative;z-index:2;width:min(920px,94vw);margin:0 auto;padding:18px 0 40px}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:6px 4px 16px}
.top-right{display:flex;align-items:center;gap:10px}
.stat{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--cyan);background:rgba(34,230,214,.1);
  border:1px solid rgba(34,230,214,.28);padding:6px 11px;border-radius:20px}

.add{padding:16px;margin-bottom:14px}
.quick{display:flex;gap:10px}
.quick .input{flex:1}
.bulk-toggle{margin-top:11px;background:none;border:none;color:var(--faint);font-family:inherit;font-size:12.5px;
  cursor:pointer;padding:2px}
.bulk-toggle:hover{color:var(--cyan)}
.bulk{margin-top:11px;display:flex;flex-direction:column;gap:10px}

.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.filters{display:flex;gap:7px;flex-wrap:wrap}
.chip{font-size:12.5px;font-weight:600;color:var(--dim);background:rgba(255,255,255,.03);border:1px solid var(--glass-brd);
  padding:7px 13px;border-radius:20px;cursor:pointer;transition:.15s}
.chip.on{color:#0a0410;background:linear-gradient(120deg,var(--cyan),var(--violet));border-color:transparent}
.tools{display:flex;gap:8px}
.tools .btn{padding:9px 13px;font-size:13px}
.searchrow{margin-bottom:14px}

/* ---- Track list ---- */
.list{display:flex;flex-direction:column;gap:11px}
.track{position:relative;overflow:hidden;display:flex;gap:13px;align-items:flex-start;
  background:var(--glass);border:1px solid var(--glass-brd);border-radius:14px;padding:14px 15px;
  backdrop-filter:blur(12px);transition:border-color .2s,transform .12s}
.track:hover{border-color:var(--glass-brd-hi)}
.track::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--faint)}
.track.st-open::before{background:var(--amber);box-shadow:0 0 12px var(--amber)}
.track.st-found::before{background:var(--lime);box-shadow:0 0 12px var(--lime)}
.track.st-not_found::before{background:var(--red);box-shadow:0 0 12px var(--red)}
.track.checking::before{background:var(--cyan);animation:pulse 1.1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

.tk-main{flex:1;min-width:0}
.tk-name{font-size:15.5px;font-weight:600;line-height:1.35;word-break:break-word}
.tk-name .rmx{color:var(--cyan);font-weight:500}
.tk-meta{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:7px;font-size:12px;color:var(--dim)}
.tk-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.4px;
  padding:3px 8px;border-radius:6px;text-transform:uppercase}
.b-open{color:var(--amber);background:rgba(255,207,92,.12)}
.b-found{color:var(--lime);background:rgba(139,255,92,.12)}
.b-not_found{color:var(--red);background:rgba(255,91,122,.12)}
.tk-meta .m{display:inline-flex;align-items:center;gap:5px}
.tk-meta .m b{color:var(--txt);font-weight:600}
.tk-note{font-size:11.5px;color:var(--faint);margin-top:6px;font-style:italic}

.tk-links{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.buy{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;text-decoration:none;
  padding:6px 11px;border-radius:9px;border:1px solid transparent}
.buy.beatport{color:#a6ff00;background:rgba(166,255,0,.1);border-color:rgba(166,255,0,.32)}
.buy.traxsource{color:#3ec6ff;background:rgba(62,198,255,.1);border-color:rgba(62,198,255,.32)}
.buy.bandcamp{color:#67b3cc;background:rgba(103,179,204,.12);border-color:rgba(103,179,204,.34)}
.buy:hover{transform:translateY(-1px)}

.tk-actions{display:flex;flex-direction:column;gap:7px;flex:0 0 auto;align-items:flex-end}
.act{width:36px;height:36px;border-radius:10px;border:1px solid var(--glass-brd);background:rgba(255,255,255,.03);
  color:var(--dim);cursor:pointer;display:grid;place-items:center;font-size:15px;transition:.15s}
.act:hover{color:var(--txt);border-color:var(--glass-brd-hi)}
.act.copy:hover{color:var(--cyan);border-color:var(--cyan)}
.act.check:hover{color:var(--magenta);border-color:var(--magenta)}
.act.del:hover{color:var(--red);border-color:var(--red)}
.act.copied{color:var(--lime)!important;border-color:var(--lime)!important}
.act[disabled]{opacity:.5;cursor:default}
.spin{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.empty{text-align:center;color:var(--faint);font-size:14px;padding:50px 20px}
.foot{text-align:center;color:var(--faint);font-size:12px;padding:26px 0 10px}

/* ---- Toast ---- */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(16px);z-index:60;
  padding:12px 20px;border-radius:12px;font-size:13.5px;font-weight:600;background:rgba(16,14,28,.95);
  border:1px solid var(--glass-brd-hi);box-shadow:0 14px 40px -12px rgba(0,0,0,.8);opacity:0;transition:.26s;
  backdrop-filter:blur(12px)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:rgba(139,255,92,.5)}
.toast.err{border-color:rgba(255,91,122,.55)}

@media(max-width:560px){
  .quick{flex-direction:column}
  .toolbar{flex-direction:column;align-items:stretch}
  .tools{justify-content:stretch}.tools .btn{flex:1}
}
