:root{--bg: #0a0a0f;--bg-elevated: #14141f;--bg-hover: #1e1e2e;--accent: #6c5ce7;--accent-glow: rgba(108, 92, 231, .35);--text: #f0f0f5;--text-muted: #8888a0;--border: #2a2a3a;--danger: #ff6b6b;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}audio{display:none}.app{display:flex;flex-direction:column;height:100%;padding-top:var(--safe-top)}.header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0}.header-title{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}.header-actions{display:flex;align-items:center;gap:4px}.btn-text{background:none;border:none;color:var(--accent);font-size:1rem;font-weight:600;padding:8px 12px;cursor:pointer;border-radius:8px}.btn-text:active{background:var(--bg-hover)}.btn-logout{color:var(--text-muted)}.btn-logout:active{color:var(--danger)}.main{flex:1;overflow:hidden;display:flex;flex-direction:column}.error-banner{background:var(--danger);color:#fff;padding:12px 20px;font-size:.9rem;text-align:center}.browser{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(80px + var(--safe-bottom))}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:12px 16px;font-size:.85rem}.crumb{background:none;border:none;color:var(--accent);cursor:pointer;padding:4px 6px;border-radius:6px;font-size:.85rem}.crumb.current{color:var(--text-muted);cursor:default}.crumb-sep{color:var(--text-muted)}.item-list{list-style:none}.list-item{display:flex;align-items:center;width:100%;padding:16px 20px;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);font-size:1.05rem;cursor:pointer;text-align:left;gap:14px;min-height:60px}.list-item:active{background:var(--bg-hover)}.list-item.active{background:var(--accent-glow);border-left:3px solid var(--accent)}.list-item.up{color:var(--text-muted)}.item-icon{font-size:1.3rem;flex-shrink:0;width:28px;text-align:center}.item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-arrow{color:var(--text-muted);font-size:1.4rem}.loading,.empty,.player-empty,.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;color:var(--text-muted);gap:8px;flex:1;min-height:100%}.empty-hint{font-size:.85rem;opacity:.7}.player{flex:1;display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:20px 20px calc(20px + var(--safe-bottom))}.now-playing{text-align:center;padding:24px 0 32px}.album-art{position:relative;width:160px;height:160px;margin:0 auto 24px;background:linear-gradient(135deg,var(--accent),#a29bfe);border-radius:24px;display:flex;align-items:center;justify-content:center;font-size:4rem;box-shadow:0 12px 40px var(--accent-glow);overflow:hidden}.album-art-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block}.album-art-fallback{line-height:1}.track-title{font-size:1.4rem;font-weight:700;margin-bottom:6px;padding:0 16px;line-height:1.3}.track-artist{color:var(--accent);font-size:1rem;font-weight:500;margin-bottom:4px;padding:0 16px}.track-folder{color:var(--text-muted);font-size:.95rem;margin-bottom:4px}.track-filename{color:var(--text-muted);font-size:.8rem;opacity:.75;margin-bottom:4px;padding:0 16px;word-break:break-word}.track-counter{color:var(--text-muted);font-size:.85rem}.progress-section{padding:0 4px 24px}.progress-bar{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:var(--border);outline:none;cursor:pointer}.progress-bar::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.progress-bar::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--accent);border:none}.time-labels{display:flex;justify-content:space-between;font-size:.8rem;color:var(--text-muted);margin-top:8px}.controls{display:flex;align-items:center;justify-content:center;gap:16px;padding:8px 0 32px}.control-btn{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text);border-radius:50%;width:64px;height:64px;font-size:1.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .1s}.control-btn:active{transform:scale(.93)}.control-btn.small{width:48px;height:48px;font-size:1.2rem}.control-btn.active{color:var(--accent);border-color:var(--accent);background:var(--accent-glow)}.play-btn{width:80px;height:80px;font-size:2rem;background:var(--accent);border-color:var(--accent);box-shadow:0 8px 24px var(--accent-glow)}.mini-player{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;padding:12px 16px calc(12px + var(--safe-bottom));background:var(--bg-elevated);border-top:1px solid var(--border);cursor:pointer;gap:12px;z-index:100}.mini-player-info{flex:1;overflow:hidden}.mini-player-title{display:block;font-weight:600;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-player-folder{display:block;font-size:.8rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-player-btn{width:52px;height:52px;border-radius:50%;background:var(--accent);border:none;color:#fff;font-size:1.3rem;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.mini-player-btn:active{transform:scale(.93)}@media(orientation:landscape)and (max-height:500px){.album-art{width:100px;height:100px;font-size:2.5rem;margin-bottom:12px}.now-playing{padding:12px 0 16px}.track-title{font-size:1.1rem}.controls{padding:4px 0 16px}.play-btn{width:64px;height:64px;font-size:1.6rem}.control-btn{width:52px;height:52px;font-size:1.3rem}}.login-screen{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:360px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:24px;padding:32px 24px;box-shadow:0 20px 60px #00000059}.login-icon{font-size:3rem;text-align:center;margin-bottom:12px}.login-title{text-align:center;font-size:1.5rem;font-weight:700;margin-bottom:8px}.login-subtitle{text-align:center;color:var(--text-muted);margin-bottom:24px}.login-form{display:flex;flex-direction:column;gap:16px}.login-field{display:flex;flex-direction:column;gap:8px;font-size:.9rem;color:var(--text-muted)}.login-field input{background:var(--bg);border:1px solid var(--border);border-radius:12px;color:var(--text);font-size:1rem;padding:14px 16px}.login-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.login-error{color:var(--danger);font-size:.9rem;text-align:center}.login-btn{margin-top:8px;background:var(--accent);color:#fff;border:none;border-radius:14px;font-size:1rem;font-weight:700;padding:16px;cursor:pointer}.login-btn:disabled{opacity:.7;cursor:default}.login-btn:active:not(:disabled){transform:scale(.98)}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:#000000a6}.confirm-dialog{width:100%;max-width:320px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:20px;padding:24px;box-shadow:0 20px 60px #00000073}.confirm-title{font-size:1.2rem;font-weight:700;margin-bottom:10px;text-align:center}.confirm-message{color:var(--text-muted);text-align:center;line-height:1.45;margin-bottom:24px}.confirm-actions{display:flex;gap:12px}.confirm-btn{flex:1;border:none;border-radius:12px;font-size:1rem;font-weight:600;padding:14px 12px;cursor:pointer}.confirm-btn.cancel{background:var(--bg-hover);color:var(--text)}.confirm-btn.danger{background:var(--danger);color:#fff}.confirm-btn:active{opacity:.85}
