*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e5e5e5;background:#0f0f0f;min-height:100vh;font-family:Segoe UI,system-ui,sans-serif}#root{height:100vh}input,select,textarea,button{font-family:inherit}.layout{height:100vh;display:flex}.sidebar nav{flex:1}.sidebar-footer{border-top:1px solid #2a2a2a;flex-direction:column;gap:8px;margin-top:8px;padding-top:16px;display:flex}.admin-info{color:#aaa;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;padding:4px 8px;font-size:13px;display:flex;overflow:hidden}.logout-btn{color:#e53944;cursor:pointer;background:0 0;border:1px solid #2a2a2a;border-radius:8px;align-items:center;gap:8px;width:100%;padding:9px 12px;font-size:13px;font-weight:500;transition:background .15s;display:flex}.logout-btn:hover{background:#e5394411}.auth-page{background:#0f0f0f;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:#161616;border:1px solid #2a2a2a;border-radius:16px;width:100%;max-width:400px;padding:36px 32px}.auth-logo{text-align:center;margin-bottom:28px}.auth-logo h1{color:#fff;margin:10px 0 4px;font-size:24px;font-weight:700}.auth-logo p{color:#555;font-size:13px}.auth-tabs{background:#0f0f0f;border-radius:10px;gap:4px;margin-bottom:24px;padding:4px;display:flex}.auth-tab{color:#666;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px;font-size:13px;font-weight:500;transition:background .15s,color .15s;display:flex}.auth-tab.active{color:#000;background:#1db954}.pass-wrap{position:relative}.pass-wrap input{width:100%;padding-right:42px}.pass-eye{color:#555;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.pass-eye:hover{color:#aaa}.sidebar{background:#161616;border-right:1px solid #2a2a2a;flex-direction:column;flex-shrink:0;gap:8px;width:220px;padding:24px 16px;display:flex}.logo{color:#1db954;align-items:center;gap:10px;margin-bottom:24px;padding:0 8px;font-size:18px;font-weight:700;display:flex}.nav-item{color:#aaa;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item:hover{color:#fff;background:#222}.nav-item.active{color:#1db954;background:#1db95422}.main{flex:1;padding:32px;overflow-y:auto}.page-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.page-title{color:#fff;font-size:22px;font-weight:700}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin-bottom:32px;display:grid}.stat-card{background:#161616;border:1px solid #2a2a2a;border-radius:12px;flex-direction:column;gap:8px;padding:20px;display:flex}.stat-card .label{color:#777;text-transform:uppercase;letter-spacing:.05em;font-size:12px}.stat-card .value{color:#1db954;font-size:32px;font-weight:700}.table-wrap{background:#161616;border:1px solid #2a2a2a;border-radius:12px;overflow:hidden}table{border-collapse:collapse;width:100%;font-size:14px}thead th{text-align:left;color:#888;text-transform:uppercase;letter-spacing:.05em;background:#1e1e1e;border-bottom:1px solid #2a2a2a;padding:12px 16px;font-size:12px;font-weight:600}tbody tr{border-bottom:1px solid #1e1e1e;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#1a1a1a}tbody td{color:#ccc;vertical-align:middle;padding:12px 16px}.artwork-thumb{object-fit:cover;background:#333;border-radius:6px;width:40px;height:40px}.artwork-placeholder{color:#555;background:#2a2a2a;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;display:flex}btn,.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:opacity .15s;display:inline-flex}.btn-green{color:#000;background:#1db954}.btn-red{color:#e53944;background:#e5394422;border:1px solid #e5394444}.btn-ghost{color:#aaa;background:0 0;border:1px solid #333}btn:hover,.btn:hover{opacity:.85}btn:disabled,.btn:disabled{opacity:.4;cursor:not-allowed}.form-card{background:#161616;border:1px solid #2a2a2a;border-radius:12px;max-width:600px;padding:28px}.form-group{flex-direction:column;gap:6px;margin-bottom:18px;display:flex}.form-group label{color:#aaa;font-size:13px;font-weight:500}.form-group input,.form-group select{color:#e5e5e5;background:#0f0f0f;border:1px solid #2a2a2a;border-radius:8px;outline:none;padding:10px 14px;font-size:14px;transition:border-color .15s}.form-group input:focus,.form-group select:focus{border-color:#1db954}.form-group input[type=file]{cursor:pointer;padding:8px 14px}.progress-bar{background:#2a2a2a;border-radius:6px;height:6px;margin-top:8px;overflow:hidden}.progress-fill{background:#1db954;border-radius:6px;height:100%;transition:width .3s}.badge{color:#1db954;background:#1db95422;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.search-input{color:#e5e5e5;background:#161616;border:1px solid #2a2a2a;border-radius:8px;outline:none;width:240px;padding:8px 14px;font-size:14px}.search-input:focus{border-color:#1db954}.empty{text-align:center;color:#555;padding:60px;font-size:14px}.loading{text-align:center;color:#555;padding:60px}.upload-tabs{background:#161616;border:1px solid #2a2a2a;border-radius:10px;gap:4px;width:fit-content;margin-bottom:20px;padding:5px;display:flex}.upload-tab{color:#777;cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:7px;padding:8px 20px;font-size:14px;font-weight:500;transition:background .15s,color .15s;display:flex}.upload-tab:hover{color:#ccc;background:#222}.upload-tab.active{color:#000;background:#1db954;font-weight:600}.bulk-dropzone{text-align:center;cursor:pointer;background:#111;border:2px dashed #2a2a2a;border-radius:14px;padding:40px 30px;transition:border-color .2s,background .2s}.bulk-dropzone:hover,.bulk-dropzone.drag-over{background:#1db95410;border-color:#1db954}.bulk-title-input{color:#e5e5e5;background:0 0;border:1px solid #0000;border-radius:6px;outline:none;width:100%;padding:5px 8px;font-size:13px;transition:border-color .15s}.bulk-title-input:focus{background:#1a1a1a;border-color:#1db954}.bulk-title-input:disabled{color:#555;cursor:default}.bulk-badge{border-radius:20px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.bulk-badge.pending{color:#777;background:#2a2a2a}.bulk-badge.uploading{color:#f5a623;background:#f5a62322}.bulk-badge.done{color:#1db954;background:#1db95422}.bulk-badge.error{color:#e74c3c;background:#e74c3c22}.activity-overview{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin-bottom:24px;display:grid}.overview-card{background:#161616;border:1px solid #2a2a2a;border-radius:12px;align-items:center;gap:14px;padding:20px;display:flex}.overview-value{color:#fff;font-size:26px;font-weight:700;line-height:1}.overview-label{color:#555;margin-top:4px;font-size:12px}.activity-controls{align-items:center;gap:8px;margin-bottom:16px;display:flex}.sort-btn{color:#666;cursor:pointer;background:0 0;border:1px solid #2a2a2a;border-radius:20px;padding:5px 12px;font-size:12px;transition:all .15s}.sort-btn:hover{color:#ccc;border-color:#444}.sort-btn.active{color:#000;background:#1db954;border-color:#1db954;font-weight:600}.activity-list{flex-direction:column;gap:10px;display:flex}.activity-card{background:#161616;border:1px solid #2a2a2a;border-radius:12px;transition:border-color .2s;overflow:hidden}.activity-card:hover{border-color:#333}.activity-card-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:16px;padding:14px 18px;display:flex}.activity-card-id{align-items:center;gap:8px;min-width:0;display:flex}.device-id{color:#e5e5e5;font-family:monospace;font-size:14px;font-weight:700}.device-full-id{color:#444;text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-family:monospace;font-size:11px;overflow:hidden}.activity-stats-row{flex-wrap:wrap;align-items:center;gap:20px;margin-left:auto;display:flex}.activity-stat{color:#e5e5e5;align-items:center;gap:5px;font-size:14px;font-weight:600;display:flex}.stat-label{color:#555;font-size:11px;font-weight:400}.last-seen{font-size:12px}.expand-btn{cursor:pointer;color:#444;background:0 0;border:none;flex-shrink:0;align-items:center;padding:4px;display:flex}.activity-detail{border-top:1px solid #222;flex-direction:column;gap:18px;padding:16px 18px;display:flex}.activity-section h4{text-transform:uppercase;letter-spacing:.05em;color:#777;align-items:center;gap:6px;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.empty-detail{color:#444;font-size:13px}.song-chips{flex-wrap:wrap;gap:8px;display:flex}.song-chip-wrap{flex-direction:column;gap:2px;display:flex}.played-at{color:#444;padding-left:6px;font-size:10px}.song-chip{background:#1e1e1e;border:1px solid #2a2a2a;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;display:flex}.song-chip img{object-fit:cover;background:#2a2a2a;border-radius:4px;width:32px;height:32px}.song-chip-info{flex-direction:column;display:flex}.song-chip-title{color:#e5e5e5;font-size:13px;font-weight:500}.song-chip-artist{color:#555;font-size:11px}.top-songs-list{flex-direction:column;gap:4px;display:flex}.top-song-row{align-items:center;gap:10px;padding:4px 0;font-size:13px;display:flex}.top-song-rank{color:#555;width:24px;font-size:12px}.top-song-id{color:#888;flex:1;font-family:monospace;font-size:12px}.top-song-count{color:#1db954;font-weight:600}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-box{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:12px;width:100%;max-width:520px;max-height:90vh;padding:28px;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.modal-header h2{color:#fff;margin:0;font-size:18px;font-weight:600}.mobile-topbar,.sidebar-overlay,.hamburger-btn{display:none}@media (width<=900px){.sidebar{width:200px;padding:20px 12px}.main{padding:28px 20px}}@media (width<=768px){.mobile-topbar{z-index:200;background:#161616;border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:center;height:56px;padding:0 16px;display:flex;position:fixed;top:0;left:0;right:0}.mobile-topbar .logo{margin-bottom:0;font-size:16px}.hamburger-btn{color:#aaa;cursor:pointer;background:0 0;border:none;align-items:center;padding:8px;display:flex}.sidebar-overlay{z-index:299;background:#0009;display:block;position:fixed;inset:0}.layout{flex-direction:column;height:auto;min-height:100vh;padding-top:56px}.sidebar{z-index:300;width:240px;padding-top:20px;transition:left .25s;position:fixed;top:56px;bottom:0;left:-260px;overflow-y:auto}.sidebar.open{left:0}.sidebar .logo{display:none}.main{width:100%;padding:20px 14px}.page-header{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:18px}.page-title{font-size:18px}.search-input{width:100%;min-width:0}.page-header form{width:100%}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table{min-width:580px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat-card .value{font-size:26px}.form-card{max-width:100%;padding:20px}.upload-tabs{width:100%}.upload-tab{flex:1;justify-content:center;padding:8px 10px}.bulk-dropzone{padding:24px 16px}.activity-overview{grid-template-columns:repeat(2,1fr);gap:10px}.overview-card{gap:10px;padding:14px}.overview-value{font-size:22px}.activity-card-header{flex-wrap:wrap;gap:8px;padding:12px 14px}.activity-stats-row{justify-content:flex-start;gap:12px;width:100%;margin-left:0}.device-full-id{display:none}.activity-controls{flex-wrap:wrap}.modal-overlay{align-items:flex-end;padding:12px}.modal-box{border-radius:16px 16px 0 0;max-width:100%;max-height:92vh;padding:20px}.empty,.loading{padding:40px 20px}}@media (width<=480px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:14px}.stat-card .value{font-size:22px}.activity-overview{grid-template-columns:repeat(2,1fr)}.btn{padding:7px 12px;font-size:13px}.auth-card{padding:24px 18px}}.mini-player{z-index:400;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1a1a1a;border-top:1px solid #2a2a2a;align-items:center;gap:16px;height:72px;padding:0 20px;display:flex;position:fixed;bottom:0;left:0;right:0}.mini-player-info{flex-shrink:0;align-items:center;gap:10px;width:220px;min-width:0;display:flex}.mini-player-art{object-fit:cover;background:#2a2a2a;border-radius:6px;flex-shrink:0;width:44px;height:44px}.mini-player-art-placeholder{color:#555;justify-content:center;align-items:center;display:flex}.mini-player-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.mini-player-artist{color:#666;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.mini-player-center{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.mini-player-play{color:#000;cursor:pointer;background:#1db954;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:opacity .15s;display:flex}.mini-player-play:hover{opacity:.85}.mini-player-time{color:#555;font-variant-numeric:tabular-nums;text-align:center;flex-shrink:0;width:34px;font-size:11px}.mini-player-bar{cursor:pointer;box-sizing:content-box;background:#2a2a2a;border-radius:4px;flex:1;height:4px;margin:-10px 0;padding:10px 0;position:relative}.mini-player-fill{pointer-events:none;background:#1db954;border-radius:4px;height:100%;transition:width .1s linear}.mini-player-thumb{pointer-events:none;opacity:0;background:#fff;border-radius:50%;width:10px;height:10px;transition:opacity .15s;position:absolute;top:50%;transform:translate(-50%,-50%)}.mini-player-bar:hover .mini-player-thumb{opacity:1}.mini-spinner{border:2px solid #555;border-top-color:#1db954;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}.mini-player-text{flex-direction:column;gap:2px;min-width:0;display:flex}.mini-player-right{flex-shrink:0;align-items:center;gap:8px;display:flex;position:relative}.mini-player-volume{accent-color:#1db954;cursor:pointer;width:80px}.mini-player-close{color:#666;cursor:pointer;background:0 0;border:1px solid #333;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;transition:color .15s,border-color .15s;display:flex}.mini-player-close:hover{color:#e53944;border-color:#e53944}@media (width<=768px){.mini-player{gap:10px;height:64px;padding:0 12px}.mini-player-info{flex-shrink:1;width:auto;min-width:0;max-width:140px}.mini-player-volume,.mini-player-time:first-of-type{display:none}}.mini-vol-btn{color:#888;cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:4px;display:flex}.mini-vol-btn:hover{color:#fff}@media (width>=769px){.mini-vol-btn{display:none!important}}@media (width<=768px){.mini-vol-btn{display:flex}}.mini-vol-popup{z-index:201;background:#1a1a1a;border:1px solid #333;border-radius:10px;justify-content:center;align-items:center;padding:14px 10px;display:flex;position:absolute;bottom:calc(100% + 10px);right:0;box-shadow:0 4px 20px #00000080}.mini-vol-popup-slider{writing-mode:vertical-lr;accent-color:#1db954;cursor:pointer;direction:rtl;width:36px;height:100px}@media (width<=480px){.mini-player-art{width:36px;height:36px}.mini-player-time{display:none}.mini-player-info{max-width:100px}}.songs-search-form{align-items:center;gap:8px;display:flex}.song-actions{gap:6px;display:flex}.form-row-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.songs-card-list{display:none}@media (width<=900px){.songs-table-wrap th:nth-child(5),.songs-table-wrap td:nth-child(5),.songs-table-wrap th:nth-child(7),.songs-table-wrap td:nth-child(7){display:none}}@media (width<=680px){.songs-table-wrap{display:none}.songs-card-list{flex-direction:column;gap:10px;display:flex}.song-card{background:#161616;border:1px solid #2a2a2a;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;transition:border-color .15s;display:flex}.song-card:hover{border-color:#333}.song-card-art{object-fit:cover;background:#2a2a2a;border-radius:8px;flex-shrink:0;width:52px;height:52px}.song-card-left{flex-shrink:0}.song-card-body{flex:1;min-width:0}.song-card-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;margin-bottom:3px;font-size:14px;font-weight:600;overflow:hidden}.song-card-meta{color:#888;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;margin-bottom:5px;font-size:12px;display:flex;overflow:hidden}.song-card-dot{color:#444}.song-card-row2{align-items:center;gap:8px;display:flex}.song-card-dur{color:#555;font-size:11px}.song-card-actions{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.song-card-btn{justify-content:center;min-width:36px;padding:7px 9px!important}.songs-search-form{width:100%}.songs-search-form .search-input{flex:1;width:auto}.form-row-2{grid-template-columns:1fr;gap:0}}
