@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); :root { /* Light mode variables */ --bg-primary: #f8fafc; --bg-secondary: rgba(255, 255, 255, 0.8); --bg-glass: rgba(255, 255, 255, 0.25); --text-primary: #1e293b; --text-secondary: #64748b; --accent-primary: #3b82f6; --accent-secondary: #8b5cf6; --border-glass: rgba(255, 255, 255, 0.18); --shadow-glass: 0 8px 32px rgba(31, 38, 135, 0.37); --aurora-1: #ff6b6b; --aurora-2: #4ecdc4; --aurora-3: #45b7d1; --aurora-4: #f9ca24; --aurora-5: #6c5ce7; } [data-theme="dark"] { /* Dark mode variables */ --bg-primary: #0f172a; --bg-secondary: rgba(15, 23, 42, 0.8); --bg-glass: rgba(15, 23, 42, 0.3); --text-primary: #f1f5f9; --text-secondary: #94a3b8; --accent-primary: #60a5fa; --accent-secondary: #a78bfa; --border-glass: rgba(255, 255, 255, 0.125); --shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.3); --aurora-1: #ff5757; --aurora-2: #5ac8c8; --aurora-3: #4fb3d9; --aurora-4: #feca57; --aurora-5: #6a5acd; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', sans-serif; background: var(--bg-primary); color: var(--text-primary); overflow-x: hidden; min-height: 100vh; } /* Glassmorphism effect */ .glass { background: var(--bg-glass); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid var(--border-glass); border-radius: 20px; box-shadow: var(--shadow-glass); } .glass-strong { background: var(--bg-secondary); backdrop-filter: blur(40px); -webkit-backdrop-filter: blur(40px); border: 1px solid var(--border-glass); border-radius: 20px; box-shadow: var(--shadow-glass); } /* Aurora background animation */ .aurora-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; overflow: hidden; } .aurora-orb { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.6; animation: float 8s ease-in-out infinite; } .aurora-orb:nth-child(1) { background: linear-gradient(45deg, var(--aurora-1), var(--aurora-2)); width: 300px; height: 300px; top: 10%; left: 10%; animation-delay: 0s; } .aurora-orb:nth-child(2) { background: linear-gradient(45deg, var(--aurora-3), var(--aurora-4)); width: 250px; height: 250px; top: 60%; right: 20%; animation-delay: 2s; animation-duration: 10s; } .aurora-orb:nth-child(3) { background: linear-gradient(45deg, var(--aurora-5), var(--aurora-1)); width: 200px; height: 200px; bottom: 20%; left: 50%; animation-delay: 4s; animation-duration: 12s; } .aurora-orb:nth-child(4) { background: linear-gradient(45deg, var(--aurora-2), var(--aurora-5)); width: 180px; height: 180px; top: 30%; right: 10%; animation-delay: 6s; animation-duration: 9s; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -30px) scale(1.1); } 66% { transform: translate(-20px, 20px) scale(0.9); } } /* Button styles */ .btn { background: var(--bg-glass); backdrop-filter: blur(20px); border: 1px solid var(--border-glass); border-radius: 12px; color: var(--text-primary); cursor: pointer; transition: all 0.3s ease; padding: 12px 20px; font-weight: 500; } .btn:hover { background: var(--accent-primary); color: white; transform: translateY(-2px); box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3); } .btn-icon { background: var(--bg-glass); backdrop-filter: blur(20px); border: 1px solid var(--border-glass); border-radius: 50%; width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; } .btn-icon:hover { background: var(--accent-primary); transform: scale(1.1); box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4); } /* Music player container */ .music-player { max-width: 1200px; margin: 0 auto; padding: 20px; padding-bottom: 140px; /* Space for fixed controls */ } /* Track list styles */ .track-list { background: var(--bg-glass); backdrop-filter: blur(20px); border: 1px solid var(--border-glass); border-radius: 20px; padding: 20px; margin-bottom: 20px; } .track-item { padding: 12px 16px; border-radius: 12px; cursor: pointer; transition: all 0.3s ease; border: 1px solid transparent; } .track-item:hover { background: var(--bg-glass); border-color: var(--border-glass); transform: translateX(5px); } .track-item.active { background: linear-gradient(45deg, var(--accent-primary), var(--accent-secondary)); color: white; } /* Player controls */ .player-controls { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: var(--bg-glass); backdrop-filter: blur(40px); border: 1px solid var(--border-glass); border-radius: 20px; padding: 20px; display: flex; align-items: center; gap: 20px; box-shadow: var(--shadow-glass); } /* Progress bar */ .progress-bar { width: 300px; height: 6px; background: var(--bg-glass); border-radius: 3px; overflow: hidden; cursor: pointer; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); border-radius: 3px; transition: width 0.1s ease; } /* Volume control */ .volume-control { display: flex; align-items: center; gap: 10px; } .volume-slider { width: 100px; height: 6px; background: var(--bg-glass); border-radius: 3px; overflow: hidden; cursor: pointer; } /* Responsive design */ @media (max-width: 768px) { .music-player { padding: 15px; padding-bottom: 100px; } .player-controls { position: fixed; bottom: calc(20px + env(safe-area-inset-bottom)); left: 20px; right: 20px; width: auto; max-width: calc(100vw - 40px); height: auto; transform: none; background: var(--bg-glass); backdrop-filter: blur(40px); border: 1px solid var(--border-glass); border-radius: 16px; padding: 12px 16px; display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 8px; box-shadow: var(--shadow-glass); z-index: 1000; overflow: hidden; min-height: 60px; transition: bottom 0.3s ease; } /* Previous button */ .player-controls > button:first-child { flex-shrink: 0; width: 36px; height: 36px; font-size: 0.9rem; } /* Play/Pause button */ .player-controls > button:nth-child(2) { flex-shrink: 0; width: 44px; height: 44px; font-size: 1.2rem; } /* Next button */ .player-controls > button:nth-child(3) { flex-shrink: 0; width: 36px; height: 36px; font-size: 0.9rem; } /* Progress bar */ .progress-bar { flex: 1; min-width: 60px; max-width: 120px; height: 4px; margin: 0 8px; } /* Time display */ .player-controls > div:nth-child(5) { flex-shrink: 0; font-size: 0.75rem; color: var(--text-secondary); white-space: nowrap; min-width: 70px; text-align: center; } /* Volume control */ .volume-control { flex-shrink: 0; display: flex; align-items: center; gap: 6px; min-width: 80px; } .volume-control span { font-size: 0.8rem; } .volume-slider { width: 50px; height: 4px; } .aurora-orb { filter: blur(60px); } /* Dynamic viewport handling for mobile browser bars */ .player-controls.browser-bars-visible { bottom: calc(20px + env(safe-area-inset-bottom) + var(--browser-bar-height, 0px)); } /* Support for different viewport units */ @supports (height: 100dvh) { .player-controls { bottom: calc(100dvh - 100vh + 20px + env(safe-area-inset-bottom)); } } } /* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--bg-glass); border-radius: 4px; } ::-webkit-scrollbar-thumb { background: var(--accent-primary); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--accent-secondary); }