.request-page{display:flex;flex-direction:column;align-items:center;width:100%;max-width:600px;margin:0 auto;padding:1.5rem 1rem;min-height:100dvh;overflow-y:auto}.header{text-align:center;margin-bottom:1.5rem;width:100%}.dj-avatar{background:rgba(139,92,246,.2);width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;border:1px solid rgba(139,92,246,.4);box-shadow:0 0 20px #8b5cf64d}.header h1{font-size:1.75rem;margin-bottom:.4rem;background:linear-gradient(to right,#ffffff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.2}.header p{color:var(--text-muted);font-size:.9rem;padding:0 .5rem}.search-container{width:100%;padding:1rem;display:flex;flex-direction:column;gap:.75rem;flex:1;min-height:0;overflow:hidden}.name-input-wrapper{position:relative;display:flex;align-items:center}.name-icon{position:absolute;left:.85rem;color:var(--text-muted);pointer-events:none}.name-input{width:100%;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.08);color:#fff;padding:.65rem 1rem .65rem 2.5rem;border-radius:10px;font-size:.88rem;outline:none;transition:all .3s ease;-webkit-appearance:none}.name-input:focus{border-color:#8b5cf666;box-shadow:0 0 0 2px #8b5cf61a}.name-input::placeholder{color:#94a3b880}.search-input-wrapper{position:relative;display:flex;align-items:center}.freeform-item{border:1px dashed rgba(139,92,246,.3);background:rgba(139,92,246,.05);border-radius:10px;margin-bottom:.25rem}.freeform-icon{width:44px;height:44px;border-radius:6px;display:flex;align-items:center;justify-content:center;background:rgba(139,92,246,.15);flex-shrink:0}.search-icon{position:absolute;left:.85rem;color:var(--text-muted);pointer-events:none}.spinner-icon{position:absolute;right:.85rem;color:var(--primary);animation:spin 1s linear infinite}.search-input{width:100%;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.1);color:#fff;padding:.85rem 2.5rem .85rem 2.75rem;border-radius:12px;font-size:1rem;outline:none;transition:all .3s ease;-webkit-appearance:none}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #8b5cf633}.results-list{display:flex;flex-direction:column;gap:.35rem;flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;padding-bottom:1rem}.no-results{text-align:center;color:var(--text-muted);padding:2rem 0}.track-item{display:flex;align-items:center;padding:.6rem .5rem;border-radius:10px;cursor:pointer;background:transparent;transition:background .2s ease;gap:.75rem;min-height:60px;min-width:0}.track-item:active{background:rgba(255,255,255,.06)}.album-art{width:44px;height:44px;border-radius:6px;object-fit:cover;flex-shrink:0}.track-info{flex:1;overflow:hidden;min-width:0}.track-info h4{font-weight:600;font-size:.9rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.track-info p{font-size:.8rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.action-btn{background:rgba(139,92,246,.15);padding:.45rem .85rem;border-radius:8px;border:1px solid rgba(139,92,246,.3);color:var(--primary);font-weight:600;font-size:.8rem;flex-shrink:0;white-space:nowrap;transition:all .2s ease}.track-item:active .action-btn{background:var(--primary);color:#fff;border-color:var(--primary)}.check-icon{color:var(--accent)!important}.requested-toast{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;background:rgba(16,185,129,.15);border:1px solid rgba(16,185,129,.3);border-radius:10px;color:var(--accent);font-size:.85rem;font-weight:500}.history-panel{width:100%;margin-top:1rem;padding:0;overflow:hidden}.history-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.history-title{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.88rem;color:#e2e8f0}.history-count{background:rgba(139,92,246,.2);color:#8b5cf6;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:10px}.history-list{border-top:1px solid rgba(255,255,255,.06)}.history-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.04)}.history-item:last-child{border-bottom:none}.history-track{flex:1;min-width:0}.history-track-title{display:block;font-weight:500;font-size:.85rem;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-track-artist{display:block;font-size:.75rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.history-status{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap}.st-ready{background:#065f46;color:#6ee7b7}.st-downloading{background:#713f12;color:#fde68a}.st-searching{background:#4a1d96;color:#c4b5fd}.st-pending{background:#334155;color:#94a3b8}.st-failed{background:#7f1d1d;color:#fca5a5}.history-time{font-size:.68rem;color:#475569}.history-file{font-size:.65rem;color:#475569;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:monospace}@media (min-width: 640px){.request-page{padding:2.5rem 1rem;height:auto;min-height:100dvh;overflow:visible}.header h1{font-size:2.5rem}.header p{font-size:1rem}.search-container{padding:1.5rem;flex:none;overflow:visible}.dj-avatar{width:64px;height:64px}.track-item:hover .action-btn{background:var(--primary);color:#fff;border-color:var(--primary)}.track-info h4{font-size:1rem}.track-info p{font-size:.85rem}.results-list{flex:none;max-height:420px;overflow-y:auto}}.dashboard-page{width:100%;display:flex;flex-direction:column;gap:1.25rem;padding:1.25rem 1rem 2rem;max-width:1000px;margin:0 auto;box-sizing:border-box}.dash-header{display:flex;justify-content:space-between;align-items:center}.logo-area{display:flex;align-items:center;gap:.75rem}.dj-avatar-small{background:rgba(139,92,246,.2);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(139,92,246,.4);flex-shrink:0}.dash-header h2{font-size:1.4rem;font-weight:700}.live-status{display:flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:600;color:var(--accent);background:rgba(16,185,129,.1);padding:.35rem .85rem;border-radius:20px;border:1px solid rgba(16,185,129,.2)}.pulse-dot{width:8px;height:8px;background-color:var(--accent);border-radius:50%;flex-shrink:0;animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1);box-shadow:0 0 0 6px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.stat-card{display:flex;align-items:flex-start;gap:.85rem;padding:1rem}.stat-icon-wrap{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon-wrap.server{background:rgba(139,92,246,.15);color:#a78bfa}.stat-icon-wrap.connected{background:rgba(16,185,129,.15);color:#34d399}.stat-icon-wrap.disconnected{background:rgba(239,68,68,.1);color:#f87171}.stat-icon-wrap.requests{background:rgba(59,130,246,.15);color:#60a5fa}.stat-icon-wrap.downloads{background:rgba(245,158,11,.15);color:#fbbf24}.stat-body{display:flex;flex-direction:column;min-width:0}.stat-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.stat-value{font-size:1.15rem;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.stat-sub{font-size:.72rem;color:var(--text-muted);margin-top:.1rem}.stat-pills{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem}.pill{font-size:.68rem;font-weight:600;padding:.15rem .5rem;border-radius:20px}.pill-green{background:rgba(16,185,129,.15);color:#34d399;border:1px solid rgba(16,185,129,.25)}.pill-yellow{background:rgba(245,158,11,.15);color:#fbbf24;border:1px solid rgba(245,158,11,.25)}.pill-red{background:rgba(239,68,68,.1);color:#f87171;border:1px solid rgba(239,68,68,.25)}.panel-header{display:flex;align-items:center;gap:.5rem;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.05);font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.dj-client-panel{overflow:hidden}.client-links{display:flex;flex-wrap:wrap;gap:.6rem;padding:1rem 1.25rem}.client-link{display:flex;align-items:center;gap:.5rem;padding:.55rem 1rem;border-radius:10px;background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.25);color:#c4b5fd;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .2s ease,border-color .2s ease}.client-link:hover{background:rgba(139,92,246,.2);border-color:#8b5cf680;color:#fff}.client-platform-icon{font-size:1rem}.client-dl-icon{opacity:.5;margin-left:.2rem}.client-install-block{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.6rem 1rem;border-radius:10px;background:rgba(139,92,246,.08);border:1px solid rgba(139,92,246,.2);width:100%;font-size:.85rem;color:#c4b5fd}.install-cmd{display:block;width:100%;margin-top:4px;padding:6px 10px;border-radius:6px;background:#0f172a;color:#e2e8f0;font-family:SF Mono,Fira Code,monospace;font-size:.72rem;word-break:break-all;cursor:pointer;border:1px solid #1e293b;-webkit-user-select:all;user-select:all}.install-cmd:hover{background:#1e293b;border-color:#8b5cf6}.queue-container{overflow:hidden}.queue-header{display:flex;padding:.6rem 1.25rem;font-weight:600;color:var(--text-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(255,255,255,.04)}.queue-row{display:flex;padding:.85rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.03);align-items:center}.queue-row:last-child{border-bottom:none}.cell{display:flex;flex-direction:column;min-width:0}.flex-1{flex:1;min-width:0}.flex-2{flex:2;min-width:0}.text-right{text-align:right}.justify-end{align-items:flex-end}.track-col .title{color:#fff;font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-col .artist{color:var(--text-muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-col .file-name{font-size:.78rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-col .file-name.muted{color:#94a3b866}.time-col{color:#94a3b8;font-size:.85rem}.status-col{align-items:flex-end}.status-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .65rem;border-radius:6px;font-size:.72rem;font-weight:600;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}.tag-pending{background:rgba(59,130,246,.1);color:#60a5fa;border:1px solid rgba(59,130,246,.2)}.tag-downloading{background:rgba(245,158,11,.1);color:#fbbf24;border:1px solid rgba(245,158,11,.2)}.tag-ready{background:rgba(16,185,129,.1);color:#34d399;border:1px solid rgba(16,185,129,.2)}.tag-failed{background:rgba(239,68,68,.1);color:#f87171;border:1px solid rgba(239,68,68,.2)}.tag-default{background:rgba(148,163,184,.1);color:#94a3b8;border:1px solid rgba(148,163,184,.2)}.status-icon{flex-shrink:0}.status-icon.pending{color:#60a5fa}.status-icon.downloading{color:#fbbf24}.status-icon.ready{color:#34d399}.status-icon.failed{color:#f87171}.empty-state{text-align:center;padding:3rem 2rem;color:var(--text-muted)}.empty-icon{opacity:.3;margin-bottom:1rem}.col-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0;padding-left:.5rem}.row-action-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:7px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:var(--text-muted);font-size:.72rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}.row-action-btn:hover{background:rgba(139,92,246,.12);border-color:#8b5cf64d;color:#c4b5fd}.row-action-btn.active{background:rgba(139,92,246,.18);border-color:#8b5cf673;color:#c4b5fd}.search-panel{margin:0 1.25rem .75rem;border:1px solid rgba(139,92,246,.2);border-radius:10px;overflow:hidden;background:rgba(139,92,246,.04)}.search-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem;border-bottom:1px solid rgba(139,92,246,.15);font-size:.8rem;color:var(--text-muted)}.search-panel-header em{color:#e2e8f0;font-style:normal;font-weight:600}.search-panel-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.2rem;display:flex;align-items:center;border-radius:5px;transition:color .15s;flex-shrink:0}.icon-btn:hover{color:#c4b5fd}.icon-btn:disabled{opacity:.4;cursor:default}.search-panel-loading,.search-panel-empty,.search-panel-error{padding:1.25rem;display:flex;align-items:center;gap:.6rem;font-size:.82rem;color:var(--text-muted)}.search-panel-error{color:#f87171}.search-results{display:flex;flex-direction:column}.sr-header{display:flex;align-items:center;padding:.4rem .85rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid rgba(255,255,255,.04)}.sr-row{display:flex;align-items:center;padding:.55rem .85rem;border-bottom:1px solid rgba(255,255,255,.03);gap:0;transition:background .15s}.sr-row:last-child{border-bottom:none}.sr-row:hover{background:rgba(255,255,255,.02)}.sr-col{display:flex;align-items:center}.sr-file{flex:1;min-width:0;font-size:.8rem;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:.75rem}.sr-meta{flex:0 0 90px;font-size:.78rem;color:var(--text-muted);padding-right:.5rem}.sr-action{flex:0 0 90px;justify-content:flex-end}.bitrate-badge{font-size:.72rem;font-weight:700;padding:.15rem .4rem;border-radius:4px}.bitrate-badge.high{background:rgba(16,185,129,.12);color:#34d399}.bitrate-badge.mid{background:rgba(245,158,11,.12);color:#fbbf24}.bitrate-badge.low{background:rgba(239,68,68,.1);color:#f87171}.pick-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .65rem;border-radius:7px;background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.3);color:#c4b5fd;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.pick-btn:hover:not(:disabled){background:rgba(139,92,246,.28);border-color:#8b5cf68c;color:#fff}.pick-btn:disabled{opacity:.5;cursor:default}.progress-detail{margin:0 1.25rem .75rem;border:1px solid rgba(245,158,11,.2);border-radius:10px;background:rgba(245,158,11,.04);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.35rem}.pd-bar-wrap{position:relative;height:22px;background:rgba(255,255,255,.06);border-radius:6px;overflow:hidden}.pd-bar{height:100%;background:linear-gradient(90deg,rgba(139,92,246,.5),rgba(139,92,246,.8));border-radius:6px;transition:width .4s ease;min-width:0}.pd-bar-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:#fff}.pd-stats{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted);padding:.25rem 0}.pd-row{display:flex;gap:.75rem;font-size:.8rem}.pd-label{color:var(--text-muted);font-weight:600;min-width:60px;flex-shrink:0}.pd-val{color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spinning{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 640px){.hide-mobile{display:none}.stat-grid{grid-template-columns:repeat(2,1fr)}.queue-row{padding:.75rem 1rem}.queue-header{padding:.5rem 1rem}.panel-header,.client-links{padding:.85rem 1rem}.search-panel,.progress-detail{margin:0 .75rem .6rem}.sr-meta{flex:0 0 72px}.sr-action{flex:0 0 80px}.row-action-btn span:not(svg){display:none}}:root{--bg-dark: #0f172a;--bg-card: rgba(30, 41, 59, .7);--text-light: #f8fafc;--text-muted: #94a3b8;--primary: #8b5cf6;--primary-hover: #7c3aed;--accent: #10b981;--danger: #ef4444;--glass-border: rgba(255, 255, 255, .08);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .37);font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{height:100%}body{background:var(--bg-dark);color:var(--text-light);height:100%;min-height:100vh;background-image:radial-gradient(at 0% 0%,hsla(253,16%,7%,1) 0,transparent 50%),radial-gradient(at 50% 0%,hsla(225,39%,30%,.2) 0,transparent 50%),radial-gradient(at 100% 0%,hsla(339,49%,30%,.2) 0,transparent 50%);background-attachment:fixed;background-size:cover;background-position:center;overflow-x:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:Outfit,sans-serif}button{cursor:pointer;border:none;background:none;font-family:inherit;transition:all .2s ease}input{font-family:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:rgba(0,0,0,.2)}::-webkit-scrollbar-thumb{background:var(--bg-card);border-radius:4px}.app-container{max-width:1200px;margin:0 auto;padding:0;height:100%;display:flex;flex-direction:column}.glass-panel{background:var(--bg-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow)}
