@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap";:root{--bg-main:#0e0e10;--bg-glass:#101014b8;--bg-glass-hover:#1c1c24d9;--bg-active:#3976b329;--border-glass:#ffffff12;--border-focus:#3976b380;--text-main:#f0f2f5;--text-muted:#8b92a0;--accent:#3976b3;--accent-hover:#4b8cc9;--accent-dim:#3976b324;--sans-font:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--panel-shadow:0 4px 24px #0006;--player-h:76px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--sans-font);background-color:var(--bg-main);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;background-image:radial-gradient(at 72% 4%,#3976b31a,#0000 520px),radial-gradient(at 8% 92%,#3976b30f,#0000 450px);width:100vw;height:100vh;font-size:13px;overflow:hidden}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff17;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff2e}#root{flex-direction:column;width:100vw;height:100vh;display:flex}.app-container{height:calc(100vh - var(--player-h));flex:1;gap:0;padding:0;display:flex;overflow:hidden}.panel{background:var(--bg-glass);-webkit-backdrop-filter:blur(20px)saturate(180%);border:none;border-right:1px solid var(--border-glass);flex-direction:column;height:100%;display:flex;overflow:hidden}.panel:last-child{border-right:none}.panel-header{border-bottom:1px solid var(--border-glass);text-transform:uppercase;letter-spacing:1.1px;color:var(--text-muted);background:#0000001f;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 14px;font-size:9.5px;font-weight:700;display:flex}.panel-content{flex:1;min-height:0;position:relative;overflow-y:auto}.resize-handle{cursor:col-resize;z-index:5;background:0 0;flex-shrink:0;width:4px;transition:background .15s;position:relative}.resize-handle:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.resize-handle:hover:after,body[style*=col-resize] .resize-handle:after{background:var(--accent)}.nav-section{padding:6px 0}.nav-section-title{text-transform:uppercase;color:var(--text-muted);letter-spacing:1.3px;padding:4px 14px;font-size:9px;font-weight:700}.nav-item{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:7px 14px;font-size:12.5px;transition:all .12s;display:flex;position:relative}.nav-item:hover{color:var(--text-main);background:#ffffff09}.nav-item.active{color:var(--text-main);background:#3976b31f;font-weight:600}.nav-item.active:before{content:"";background:var(--accent);width:2px;position:absolute;top:0;bottom:0;left:0}input[type=text],input[type=password],input[type=url],select{border:1px solid var(--border-glass);color:var(--text-main);font-size:12.5px;font-family:var(--sans-font);-webkit-user-select:text;user-select:text;background:#00000047;border-radius:3px;outline:none;width:100%;padding:6px 10px;transition:border-color .15s}input[type=text]:focus,input[type=password]:focus,input[type=url]:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #3976b32e}button{color:var(--text-main);cursor:pointer;font-size:12px;font-family:var(--sans-font);white-space:nowrap;background:#ffffff0a;border:1px solid #ffffff14;border-radius:3px;justify-content:center;align-items:center;gap:6px;padding:5px 11px;transition:background .13s,border-color .13s;display:inline-flex}button:hover{background:#ffffff17;border-color:#ffffff26}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{color:#fca5a5;background:#ef444424;border-color:#ef444440}button.danger:hover{background:#ef44443d}.song-table{border-collapse:collapse;text-align:left;table-layout:fixed;width:100%}.song-table th{border-bottom:1px solid var(--border-glass);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;z-index:10;-webkit-user-select:none;user-select:none;background:#0e0e12fa;padding:6px 12px;font-size:10px;font-weight:600;position:sticky;top:0}.song-table td{white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff06;padding:6px 12px;overflow:hidden}.song-table tr{transition:background 80ms}.song-table tr:hover{background:#ffffff07}.song-table tr.playing{color:var(--accent);background:#3976b314}.link-cell{cursor:pointer;color:inherit;transition:color .12s}.link-cell:hover{color:var(--accent);text-decoration:underline}.albums-toolbar{border-bottom:1px solid var(--border-glass);background:#0000001a;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:7px 12px;display:flex}.album-grid{grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:12px;padding:12px;display:grid}.album-card{cursor:pointer;background:#ffffff05;border:1px solid #ffffff0d;border-radius:4px;padding:8px;transition:transform .16s ease-out,background .16s,border-color .16s,box-shadow .16s;position:relative}.album-card:hover{background:#ffffff0d;border-color:#3976b373;transform:translateY(-2px);box-shadow:0 6px 18px #00000061}.album-art-wrapper{aspect-ratio:1;background:#0003;border:1px solid #ffffff0a;border-radius:3px;justify-content:center;align-items:center;margin-bottom:7px;display:flex;position:relative;overflow:hidden}.album-art{object-fit:cover;width:100%;height:100%;display:block}.album-art-placeholder{background:linear-gradient(135deg,#ffffff0a 0%,#0003 100%);width:100%;height:100%}.album-card-play-overlay{opacity:0;background:#0000006b;justify-content:center;align-items:center;transition:opacity .14s;display:flex;position:absolute;inset:0}.album-card:hover .album-card-play-overlay{opacity:1}.album-title{white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:11.5px;font-weight:600;overflow:hidden}.album-artist{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.album-year{color:#8b92a0a6;margin-top:1px;font-size:10px}.album-detail-page{flex-direction:column;height:100%;display:flex;position:relative;overflow-y:auto}.album-detail-bg{filter:blur(44px)brightness(.28)saturate(1.5);z-index:0;pointer-events:none;background-position:top;background-size:cover;height:360px;position:absolute;top:0;left:0;right:0;transform:scale(1.1)}.album-back-btn{z-index:2;background:#0000004d;border-color:#ffffff1a;align-self:flex-start;margin:12px 20px 0;padding:3px 10px;font-size:11px;position:relative}.album-detail-header{z-index:2;align-items:flex-end;gap:22px;padding:14px 24px 22px;display:flex;position:relative}.album-detail-art{background:#18181c;border:1px solid #ffffff14;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:175px;height:175px;display:flex;overflow:hidden;box-shadow:0 14px 44px #000000b3}.album-detail-art img{object-fit:cover;width:100%;height:100%;display:block}.album-detail-meta{flex-direction:column;flex:1;justify-content:flex-end;min-width:0;display:flex}.album-detail-label{text-transform:uppercase;letter-spacing:1.6px;color:var(--text-muted);margin-bottom:5px;font-size:9.5px;font-weight:700}.album-detail-title{letter-spacing:-.5px;white-space:nowrap;text-overflow:ellipsis;margin-bottom:7px;font-size:30px;font-weight:900;line-height:1.1;overflow:hidden}.album-detail-subtitle{color:var(--text-muted);align-items:center;gap:6px;margin-bottom:5px;font-size:11.5px;display:flex}.album-detail-subtitle .dot{opacity:.4}.album-detail-artist{color:var(--accent);cursor:pointer;margin-bottom:14px;font-size:13.5px;font-weight:600;display:inline-block}.album-detail-artist:hover{text-decoration:underline}.album-detail-actions{align-items:center;gap:7px;display:flex}.album-play-btn{border-radius:16px;padding:6px 18px;font-size:12.5px}.album-action-btn{background:#ffffff0d;border-radius:50%;width:30px;height:30px;padding:6px}.album-detail-tracks{z-index:2;flex:1;padding:0 24px 20px;position:relative}.album-track-search-bar{border:1px solid var(--border-glass);background:#0003;border-radius:3px;align-items:center;gap:8px;width:190px;margin-bottom:10px;padding:4px 10px;display:flex}.album-track-search-bar input{width:100%;box-shadow:none;background:0 0;border:none;padding:0;font-size:12px}.album-track-search-bar input:focus{box-shadow:none;border:none}.album-tracklist.song-table{table-layout:fixed}.album-tracklist th:first-child{width:44px}.album-tracklist th:nth-child(3),.album-tracklist th:nth-child(4){width:60px}.album-more-section{z-index:2;padding:0 24px 28px;position:relative}.album-more-header{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:12.5px;font-weight:700;display:flex}.album-more-scroll{scroll-behavior:smooth;gap:12px;padding-bottom:6px;display:flex;overflow-x:auto}.album-more-scroll::-webkit-scrollbar{height:4px}.album-more-card{cursor:pointer;flex-shrink:0;width:115px}.album-more-card:hover .album-more-art{border-color:var(--accent)}.album-more-art{background:#0000002e;border:1px solid #ffffff0d;border-radius:3px;justify-content:center;align-items:center;width:115px;height:115px;margin-bottom:5px;transition:border-color .14s;display:flex;overflow:hidden}.album-more-art img{object-fit:cover;width:100%;height:100%;display:block}.album-more-name{white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.album-more-year{color:var(--text-muted);font-size:10px}.artist-split-container{width:100%;height:100%;display:flex}.artist-list-sidebar{border-right:1px solid var(--border-glass);background:#00000012;flex-shrink:0;width:210px;transition:width .35s cubic-bezier(.4,0,.2,1),opacity .3s,border-color .35s;overflow-y:auto}.artist-list-sidebar.collapsed{opacity:0;pointer-events:none;border-right-color:#0000;width:0}.artist-list-item{cursor:pointer;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff05;padding:7px 16px;font-size:12.5px;transition:all .1s;overflow:hidden}.artist-list-item:hover{color:var(--text-main);background:#ffffff06}.artist-list-item.active{background:var(--bg-active);color:var(--accent);font-weight:600}.artist-albums-detail{flex:1;overflow-y:auto}.az-horizontal-item{-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out;display:inline-block}.az-horizontal-item.clickable:hover{text-shadow:0 0 8px #3976b3d9,0 0 16px #3976b399;transform:scale(1.2);color:#fff!important}.az-horizontal-item.disabled{pointer-events:none}.artist-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:16px;padding:24px;display:grid}.artist-grid-card{border:1px solid var(--border-glass);text-align:center;cursor:pointer;background:#ffffff05;border-radius:8px;flex-direction:column;align-items:center;padding:12px;scroll-margin-top:70px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.artist-grid-card:hover{background:#ffffff0f;border-color:#3976b34d;transform:translateY(-2px);box-shadow:0 4px 12px #0000004d,0 0 10px #3976b31a}.artist-grid-photo-wrapper{background:#0003;border:1px solid #ffffff0d;border-radius:50%;justify-content:center;align-items:center;width:90px;height:90px;margin-bottom:10px;display:flex;overflow:hidden;box-shadow:0 4px 8px #0003}.artist-grid-photo{object-fit:cover;width:100%;height:100%;transition:transform .3s}.artist-grid-card:hover .artist-grid-photo{transform:scale(1.05)}.artist-grid-photo-placeholder{width:100%;height:100%;color:var(--text-muted);background:linear-gradient(135deg,#3976b31a 0%,#3976b333 100%);justify-content:center;align-items:center;font-size:28px;font-weight:800;display:flex}.artist-grid-name{color:var(--text-main);white-space:nowrap;text-overflow:ellipsis;width:100%;margin-bottom:3px;font-size:13px;font-weight:600;overflow:hidden}.artist-grid-meta{color:var(--text-muted);font-size:11px}.artist-hero{background:linear-gradient(135deg,#1c1c24f2,#0a0a0efa) 50% 20%/cover;align-items:flex-end;height:175px;display:flex;position:relative;overflow:hidden}.artist-hero-overlay{z-index:1;background:linear-gradient(#0000 0%,#0c0c0e40 45%,#0c0c0e 100%);position:absolute;inset:0}.artist-hero-content{z-index:2;align-items:center;gap:18px;padding:0 18px 18px;display:flex;position:relative}.artist-play-btn{cursor:pointer;background:#fff;border:none;border-radius:50%;padding:10px;display:flex;box-shadow:0 4px 14px #0000008c}.artist-hero-name{letter-spacing:-.5px;font-size:26px;font-weight:900}.section-label{text-transform:uppercase;color:var(--text-muted);letter-spacing:.8px;padding:13px 16px 7px;font-size:10.5px;font-weight:700}.search-section-title{text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border-glass);letter-spacing:.5px;margin-bottom:8px;padding-bottom:4px;font-size:10.5px;font-weight:700}.spotify-info-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#141418b3;border:1px solid #3976b359;border-radius:4px;gap:14px;max-width:580px;margin-bottom:18px;padding:14px;display:flex}.player-bar{height:var(--player-h);border-top:1px solid var(--border-glass);z-index:20;background:#0a0a0ef7;flex-direction:column;flex-shrink:0;display:flex;position:relative;overflow:visible}.player-progress-track{cursor:pointer;z-index:3;background:#ffffff12;flex-shrink:0;height:3px;position:relative;overflow:visible}.player-progress-fill{background:var(--accent);pointer-events:none;height:100%;transition:width .2s linear}.player-seek-input{opacity:0;cursor:pointer;width:100%;height:calc(100% + 12px);margin:0;position:absolute;inset:-6px 0}.player-progress-track:hover .player-progress-fill{background:var(--accent-hover)}.player-art-bar{width:calc(var(--player-h) - 3px);cursor:pointer;z-index:4;opacity:1;background:#0000004d;justify-content:center;align-items:center;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s;display:flex;position:absolute;top:3px;bottom:0;left:0;overflow:hidden;transform:translate(0)}.player-art-bar.art-hidden{opacity:0;pointer-events:none;transform:translate(-100%)}.player-art-bar-img{object-fit:cover;width:100%;height:100%;display:block}.player-art-bar-overlay{opacity:0;color:#fff;background:#00000080;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;inset:0}.player-art-bar:hover .player-art-bar-overlay{opacity:1}.player-bar-inner{padding:0 16px 0 calc(var(--player-h) + 10px);z-index:2;flex:1;justify-content:space-between;align-items:center;gap:8px;display:flex;position:relative}.player-track-info{align-items:center;gap:10px;width:30%;min-width:170px;transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;transform:translate(0)}.player-track-info.art-open{transform:translateX(calc(-1 * (var(--player-h) - 2px)))}.player-track-text{min-width:0}.player-track-title{white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:600;overflow:hidden}.player-track-sub{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.player-track-sub .dot{opacity:.4}.player-track-audio-info{align-items:center;gap:6px;margin-top:3px;font-size:10.5px;line-height:1;display:flex}.audio-info-text{color:#52627a;font-weight:500}.audio-badge{letter-spacing:.5px;border-radius:4px;padding:1px 4px;font-size:8px;font-weight:700;line-height:1}.audio-badge.lossless{color:#c084fc;background:#a855f714;border:1px solid #a855f766}.audio-badge.lossy{color:#8b92a0;background:#8b92a014;border:1px solid #8b92a04d}.audio-badge.mp3{color:#fb923c;background:#f9731614;border:1px solid #f9731666}.player-track-empty{color:var(--text-muted);font-size:11px}.player-time{color:var(--text-muted);white-space:nowrap;flex-shrink:0;gap:4px;font-size:10px;display:flex}.player-controls{align-items:center;gap:6px;display:flex}.player-time-inline{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:center;-webkit-user-select:none;user-select:none;min-width:30px;font-size:10.5px}.ctrl-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;transition:color .12s,background .12s;display:flex}.ctrl-btn:hover{color:var(--text-main);background:#ffffff12}.ctrl-btn.active{color:var(--accent)}.ctrl-btn:disabled{opacity:.3;cursor:not-allowed}.play-btn{border-radius:50%;width:44px;height:44px;box-shadow:0 3px 10px #3976b373;background:var(--accent)!important;color:#fff!important;border:none!important}.play-btn:hover{background:var(--accent-hover)!important}.player-right{justify-content:flex-end;align-items:center;gap:6px;width:28%;min-width:160px;display:flex}.player-volume-slider{width:80px;height:3px;accent-color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:2px;padding:0}.player-art-expanded{left:0;bottom:var(--player-h);z-index:50;opacity:0;pointer-events:none;background:#0e0e12;width:240px;height:240px;transition:transform .3s cubic-bezier(.34,1.4,.64,1),opacity .22s;position:fixed;overflow:hidden;transform:translateY(100%);box-shadow:8px -8px 40px #000000bf}.player-art-expanded.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.player-art-expanded img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.player-art-expanded-overlay{color:#ffffffe6;opacity:0;cursor:pointer;background:linear-gradient(#0000 45%,#000000b8 100%);justify-content:center;align-items:flex-end;padding-bottom:14px;transition:opacity .18s;display:flex;position:absolute;inset:0}.player-art-expanded:hover .player-art-expanded-overlay{opacity:1}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;background:#000000d1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{border:1px solid var(--border-glass);background:#18181e;border-radius:6px;width:400px;padding:24px;box-shadow:0 18px 60px #000000b3}.form-group{flex-direction:column;gap:5px;margin-bottom:10px;display:flex}.form-group label{text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;font-size:10px;font-weight:700}.text-danger{color:#f87171;margin-top:4px;font-size:11px}.queue-lyrics-split{flex-direction:column;height:100%;display:flex}.queue-section{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.lyrics-section{border-top:1px solid var(--border-glass);background:#00000026;flex-direction:column;flex-shrink:0;height:240px;transition:height .2s;display:flex;overflow:hidden}.lyrics-section.collapsed{height:auto;min-height:0}.lyrics-scroller{text-align:center;flex:1;padding:14px 12px;overflow-y:auto}.lyrics-line{color:var(--text-muted);margin-bottom:9px;line-height:1.5}.lyrics-line.active{color:var(--accent)}.compact-mode{--player-h:64px}.compact-mode .song-table td{padding:4px 10px}.compact-mode .album-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:9px;padding:9px}.custom-context-menu{-webkit-backdrop-filter:blur(14px);background:#0e0e12f0;border:1px solid #ffffff14;border-radius:6px;flex-direction:column;min-width:170px;padding:4px 0;animation:.1s ease-out contextMenuFadeIn;display:flex;box-shadow:0 8px 32px #0009}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.custom-context-menu .menu-item{color:var(--text-main);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 16px;font-size:12px;font-weight:500;transition:background-color .12s;display:flex}.custom-context-menu .menu-item:hover{background-color:#ffffff0f}.custom-context-menu .menu-divider{background-color:#ffffff12;height:1px;margin:4px 0}.track-details-overlay{-webkit-backdrop-filter:blur(8px);z-index:2000;background:#000000b3;justify-content:center;align-items:center;animation:.15s ease-out modalFadeIn;display:flex;position:fixed;inset:0}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.track-details-modal{background:#141419f2;border:1px solid #ffffff1a;border-radius:8px;width:440px;max-width:90%;animation:.18s cubic-bezier(.34,1.56,.64,1) modalScaleIn;overflow:hidden;box-shadow:0 20px 50px #000c}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.track-details-modal .modal-header{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.track-details-modal .modal-header h3{text-transform:uppercase;letter-spacing:.8px;color:#3976b3;margin:0;font-size:14px;font-weight:700}.track-details-modal .modal-header button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:20px;line-height:1;transition:color .12s}.track-details-modal .modal-header button:hover{color:var(--text-main)}.track-details-modal .modal-body{max-height:400px;padding:20px;overflow-y:auto}.details-table{border-collapse:collapse;width:100%}.details-table td{vertical-align:top;border-bottom:1px solid #ffffff0a;padding:8px 10px}.details-table tr:last-child td{border-bottom:none}.details-table td:first-child{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;width:120px;font-size:11.5px;font-weight:600}.details-table td:last-child{color:var(--text-main);font-weight:500}
