@import url('https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600&family=Allura&display=swap');
*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0c0815;--bg2:#110d1c;--bg3:#1a1428;--border:rgba(255,255,255,0.08);--text:#f0eef5;--text2:#c4c0d4;--text3:#8a86a0;--accent:#8b2252;--accent2:#6b1a40;--accent-light:rgba(139,34,82,0.25)}
body{font-family:'Sora',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--accent);text-decoration:none}
button{font-family:'Sora',sans-serif;cursor:pointer}
input{font-family:'Sora',sans-serif}

/* LOGIN */
.login-wrap{display:flex;min-height:100vh;align-items:stretch}
.login-left{flex:1;max-width:380px;background:linear-gradient(160deg,#0a0a12,#1a0f20 40%,#2d1b3a 70%,#1a0f20);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem 2rem;gap:20px;position:relative;overflow:hidden}
.login-left::before{content:'';position:absolute;top:-40px;right:-40px;width:160px;height:160px;border-radius:50%;background:rgba(139,34,82,0.06)}
.login-avatar{width:120px;height:120px;border-radius:14px;border:1px solid rgba(139,34,82,0.3);object-fit:cover;position:relative;z-index:1}
.login-divider{width:40px;height:1px;background:rgba(255,255,255,0.08);z-index:1}
.login-brand{font-family:'Allura',cursive;font-size:32px;color:#d4c5e4;z-index:1}
.login-sub{font-size:9px;color:rgba(255,255,255,0.35);letter-spacing:.12em;text-transform:uppercase;z-index:1}
.login-desc{font-size:11px;color:rgba(255,255,255,0.3);text-align:center;line-height:1.6;z-index:1;max-width:200px}
.login-right{flex:1;max-width:340px;background:var(--bg2);display:flex;flex-direction:column;justify-content:center;padding:2.5rem 2rem;border-left:0.5px solid var(--border)}
.login-right h2{font-size:16px;font-weight:500;color:var(--text);margin-bottom:6px}
.login-hint{font-size:11px;color:var(--text3);margin-bottom:28px;line-height:1.5}
.field-wrap{display:flex;flex-direction:column;gap:5px;margin-bottom:18px}
.field-wrap label{font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.06em}
.field-wrap input{padding:10px 12px;border:0.5px solid var(--border);border-radius:8px;font-size:13px;background:rgba(255,255,255,0.05);color:var(--text);outline:none;transition:border-color .15s}
.field-wrap input:focus{border-color:rgba(139,34,82,0.5);background:rgba(255,255,255,0.07)}
.field-wrap input::placeholder{color:#5a5470}
.btn-login{width:100%;padding:11px;background:linear-gradient(135deg,#2d1b4e,#8b2252,#6b1a40);color:#f0d4e4;border:none;border-radius:8px;font-size:13px;font-weight:500;letter-spacing:.04em;margin-top:6px;transition:opacity .15s}
.btn-login:hover{opacity:.88}
.login-err{font-size:11px;color:#f06060;margin-top:10px;display:none}
.login-footer{margin-top:32px;font-size:9px;color:#3a3555;text-align:center}

/* APP LAYOUT */
.app-wrap{display:flex;flex-direction:column;min-height:100vh}
.header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:0.5px solid var(--border);background:rgba(12,8,21,0.9)}
.logo{display:flex;align-items:baseline;gap:6px}
.logo-brand{font-family:'Allura',cursive;font-size:24px;color:#d4c5e4}
.logo-sub{font-size:9px;color:#5a5470;letter-spacing:.08em;text-transform:uppercase}
.nav{display:flex;gap:4px}
.nav-btn{padding:6px 16px;border-radius:20px;font-size:12px;border:0.5px solid var(--border);background:transparent;color:var(--text2)}
.nav-btn.active{background:var(--accent-light);border-color:rgba(139,34,82,0.4);color:#f0d4e4}
.nav-btn:hover:not(.active){background:rgba(255,255,255,0.04)}
.header-right{display:flex;align-items:center;gap:8px}
.user-info{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2)}
.user-avatar{width:28px;height:28px;border-radius:50%;background:var(--bg3);border:0.5px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text2);font-weight:500}
.btn-header{padding:5px 12px;border-radius:6px;font-size:11px;border:0.5px solid var(--border);background:transparent;color:var(--text2);display:inline-flex;align-items:center}
.btn-header:hover{background:rgba(255,255,255,0.04);color:var(--text)}
.btn-logout{color:var(--text3)}

/* CONTENT */
.content{flex:1;padding:24px;overflow-y:auto}
.section-title{font-size:12px;font-weight:400;color:var(--text2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px}
.empty-state{text-align:center;padding:40px;color:var(--text3);font-size:13px}
.empty-state code{background:var(--bg3);padding:2px 6px;border-radius:4px;font-size:11px;color:var(--text2)}

/* ALBUM GRID */
.artist-section{margin-bottom:28px}
.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px}
.album-card{background:rgba(255,255,255,0.03);border:0.5px solid var(--border);border-radius:10px;overflow:hidden;cursor:pointer;transition:border-color .15s}
.album-card:hover{border-color:rgba(139,34,82,0.35)}
.album-cover{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;position:relative}
.cover-icon{font-size:30px;color:rgba(196,181,212,0.2)}
.cover-icon-sm{font-size:20px;color:rgba(196,181,212,0.2)}
.album-cover-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}
.album-card:hover .album-cover-overlay{opacity:1}
.play-icon{width:34px;height:34px;border-radius:50%;background:rgba(139,34,82,0.75);display:flex;align-items:center;justify-content:center;font-size:14px;color:#f0d4e4}
.album-info{padding:10px 12px}
.album-title{font-size:11px;font-weight:500;color:var(--text);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.album-sub{font-size:10px;color:var(--text3)}
.badge{display:inline-block;font-size:7px;padding:1px 5px;border-radius:3px;margin-left:3px;font-weight:500;letter-spacing:.04em;vertical-align:middle}
.badge-open{background:rgba(29,158,117,0.15);color:#70d4b0}
.badge-protected{background:rgba(186,117,23,0.15);color:#f0d080}
.badge-private{background:rgba(226,75,74,0.15);color:#f0a0a0}

/* TRACKS */
.tracks-header{margin-bottom:20px}
.btn-back{background:none;border:none;color:var(--text2);font-size:13px;margin-bottom:12px;padding:4px 0}
.btn-back:hover{color:var(--text)}
.album-detail{display:flex;gap:16px;align-items:center}
.album-detail-cover{width:80px;height:80px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background-size:cover;background-position:center}
.album-detail-info{min-width:0}
.album-detail-title{font-size:18px;font-weight:500;color:var(--text)}
.album-detail-artist{font-size:13px;color:var(--text2);margin-top:2px}
.album-detail-meta{font-size:11px;color:var(--text3);margin-top:4px}
.tracks-list{display:flex;flex-direction:column;gap:2px}
.track-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .1s}
.track-row:hover{background:rgba(255,255,255,0.04)}
.track-num{width:24px;font-size:11px;color:var(--text3);text-align:center;flex-shrink:0}
.track-title{flex:1;font-size:13px;color:var(--text);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-album-hint{font-size:10px;color:var(--text3);margin-left:6px}
.track-duration{font-size:11px;color:var(--text3);font-family:monospace;flex-shrink:0;min-width:36px;text-align:right}
.track-actions{display:flex;gap:6px;flex-shrink:0}
.track-actions button{background:none;border:0.5px solid var(--border);border-radius:5px;color:var(--text2);font-size:10px;padding:3px 8px}
.track-actions button:hover{background:rgba(255,255,255,0.06);border-color:rgba(139,34,82,0.3);color:#f0d4e4}

/* PLAYLISTS */
.playlists-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.playlist-create{display:flex;gap:8px}
.playlist-create input{padding:6px 10px;border:0.5px solid var(--border);border-radius:7px;font-size:12px;background:rgba(255,255,255,0.05);color:var(--text);outline:none;width:180px}
.playlist-create input:focus{border-color:rgba(139,34,82,0.5)}
.playlist-create input::placeholder{color:#5a5470}
.btn-create-playlist{padding:6px 14px;background:linear-gradient(135deg,#2d1b4e,#8b2252);color:#f0d4e4;border:none;border-radius:7px;font-size:12px;font-weight:500}
.btn-create-playlist:hover{opacity:.88}
.playlist-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.playlist-card{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,0.03);border:0.5px solid var(--border);border-radius:10px;padding:12px 14px;cursor:pointer;transition:border-color .15s}
.playlist-card:hover{border-color:rgba(139,34,82,0.3)}
.playlist-card-icon{font-size:20px;color:var(--text3)}
.playlist-card-info{flex:1;min-width:0}
.playlist-card-name{font-size:13px;font-weight:500;color:var(--text)}
.playlist-card-count{font-size:10px;color:var(--text3)}
.btn-playlist-del{background:none;border:none;color:var(--text3);font-size:18px;padding:0 4px}
.btn-playlist-del:hover{color:#f06060}
.playlist-detail{margin-top:8px}

/* ADD TO PLAYLIST POPUP */
.add-to-playlist-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg2);border:0.5px solid var(--border);border-radius:12px;padding:14px;min-width:220px;z-index:1000;box-shadow:0 8px 32px rgba(0,0,0,0.5)}
.popup-title{font-size:12px;font-weight:500;color:var(--text);margin-bottom:10px}
.popup-item{padding:8px 12px;font-size:12px;color:var(--text2);cursor:pointer;border-radius:6px}
.popup-item:hover{background:rgba(255,255,255,0.06);color:var(--text)}
.popup-cancel{padding:8px 12px;font-size:11px;color:var(--text3);cursor:pointer;text-align:center;margin-top:6px;border-top:0.5px solid var(--border)}

/* PLAYER BAR */
.player-bar{display:flex;align-items:center;gap:16px;padding:12px 24px;background:rgba(12,8,21,0.92);border-top:0.5px solid var(--border)}
.now-cover{width:44px;height:44px;border-radius:6px;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--text3);flex-shrink:0;background-size:cover;background-position:center}
.now-info{min-width:0;flex-shrink:0;width:140px}
.now-title{font-size:12px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.now-album{font-size:10px;color:var(--text3)}
.controls{display:flex;align-items:center;gap:16px}
.ctrl-btn{background:none;border:none;color:var(--text2);font-size:16px;padding:4px;display:flex;align-items:center;justify-content:center}
.ctrl-btn:hover{color:var(--text)}
.ctrl-main{width:36px;height:36px;border-radius:50%;background:rgba(139,34,82,0.4);border:0.5px solid rgba(139,34,82,0.5);color:#f0d4e4;display:flex;align-items:center;justify-content:center;font-size:14px}
.ctrl-main:hover{background:rgba(139,34,82,0.55)}
.progress{flex:1;display:flex;align-items:center;gap:8px}
.time{font-size:10px;color:var(--text3);font-family:monospace;min-width:32px}
.bar{flex:1;height:3px;background:rgba(255,255,255,0.07);border-radius:2px;position:relative;cursor:pointer}
.bar-fill{height:100%;width:0;background:linear-gradient(90deg,#6b1a40,#8b2252);border-radius:2px;pointer-events:none}
.bar-dot{width:10px;height:10px;border-radius:50%;background:#8b2252;position:absolute;top:-3.5px;left:0;transform:translateX(-50%);pointer-events:none}
.vol{display:flex;align-items:center;gap:6px;flex-shrink:0}
.vol-icon{font-size:14px;color:var(--text3)}
.vol-bar{width:70px;height:3px;background:rgba(255,255,255,0.07);border-radius:2px;cursor:pointer;position:relative}
.vol-fill{height:100%;width:70%;background:var(--text3);border-radius:2px;pointer-events:none}

/* ADMIN */
.admin-wrap{max-width:700px;margin:0 auto;padding:24px}
.admin-section{margin-bottom:28px}
.admin-title{font-size:14px;font-weight:500;color:var(--text);margin-bottom:14px}
.admin-form{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.admin-form input,.admin-form select{padding:7px 10px;border:0.5px solid var(--border);border-radius:7px;font-size:12px;background:rgba(255,255,255,0.05);color:var(--text);outline:none}
.admin-form input:focus{border-color:rgba(139,34,82,0.5)}
.admin-form select{background:var(--bg3);color:var(--text)}
.btn-admin{padding:7px 14px;background:linear-gradient(135deg,#2d1b4e,#8b2252);color:#f0d4e4;border:none;border-radius:7px;font-size:12px;font-weight:500}
.btn-admin:hover{opacity:.88}
.user-table{width:100%;font-size:12px;border-collapse:collapse}
.user-table th{text-align:left;padding:6px 8px;color:var(--text2);font-weight:400;font-size:10px;text-transform:uppercase;letter-spacing:.06em;border-bottom:0.5px solid var(--border)}
.user-table td{padding:6px 8px;border-bottom:0.5px solid var(--border);color:var(--text2)}
.user-table select{background:var(--bg3);color:var(--text);border:0.5px solid var(--border);border-radius:4px;padding:3px 6px;font-size:11px}
.user-table .btn-del{background:none;border:0.5px solid var(--border);border-radius:5px;color:var(--text2);font-size:11px;padding:2px 8px;cursor:pointer}
.user-table .btn-del:hover{color:#f06060;border-color:#f06060}

/* RESPONSIVE */
@media(max-width:600px){
  .login-wrap{flex-direction:column}
  .login-left{max-width:none;padding:2rem 1.5rem}
  .login-right{max-width:none;padding:2rem 1.5rem;border-left:none;border-top:0.5px solid var(--border)}
  .header{flex-wrap:wrap;gap:8px;padding:10px 14px}
  .logo-brand{font-size:20px}
  .content{padding:14px}
  .album-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
  .player-bar{flex-wrap:wrap;gap:10px;padding:10px 14px}
  .now-info{width:auto;flex:1}
  .progress{width:100%;order:10}
  .vol{display:none}
  .track-actions button{padding:2px 6px;font-size:9px}
  .playlist-create input{width:120px}
}
