/* AudiOhm - Neon Cyberpunk Theme */ :root { --bg-dark: #0A0E27; --bg-darker: #050814; --bg-card: rgba(15, 23, 50, 0.8); --primary: #00F0FF; --secondary: #BF00FF; --accent: #FF006E; --text-primary: #FFFFFF; --text-secondary: #A0A0C0; --border: rgba(0, 240, 255, 0.2); --glow-primary: 0 0 20px rgba(0, 240, 255, 0.5); --glow-secondary: 0 0 20px rgba(191, 0, 255, 0.5); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: var(--bg-dark); color: var(--text-primary); overflow: hidden; } /* Loading Screen */ .loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-dark); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 9999; } .spinner { width: 60px; height: 60px; border: 4px solid rgba(0, 240, 255, 0.2); border-top-color: var(--primary); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Screens */ .screen { width: 100%; height: 100vh; } .screen.hidden { display: none !important; } /* Login Screen */ .login-container { display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100vh; background: linear-gradient(135deg, var(--bg-dark) 0%, var(--bg-darker) 100%); } .logo { font-size: 3rem; margin-bottom: 2rem; color: var(--primary); text-shadow: var(--glow-primary); } .login-form { background: var(--bg-card); padding: 2rem; border-radius: 10px; border: 1px solid var(--border); box-shadow: 0 0 30px rgba(0, 240, 255, 0.3); width: 100%; max-width: 400px; } .form-group { margin-bottom: 1.5rem; } .form-group input { width: 100%; padding: 0.8rem; background: rgba(255, 255, 255, 0.05); border: 1px solid var(--border); border-radius: 5px; color: var(--text-primary); font-size: 1rem; } .form-group input:focus { outline: none; border-color: var(--primary); box-shadow: var(--glow-primary); } .btn { width: 100%; padding: 0.8rem; background: linear-gradient(135deg, var(--primary), var(--secondary)); border: none; border-radius: 5px; color: white; font-size: 1rem; font-weight: bold; cursor: pointer; transition: all 0.3s ease; } .btn:hover { transform: translateY(-2px); box-shadow: var(--glow-primary); } .register-link { margin-top: 1rem; text-align: center; color: var(--text-secondary); } .register-link a { color: var(--primary); text-decoration: none; } .register-link a:hover { text-decoration: underline; } .error-message { margin-top: 1rem; padding: 1rem; background: rgba(255, 0, 110, 0.2); border: 1px solid var(--accent); border-radius: 5px; color: var(--accent); } /* Main App */ #main-app { display: flex; height: 100vh; } /* Sidebar */ .sidebar { width: 250px; background: var(--bg-darker); border-right: 1px solid var(--border); display: flex; flex-direction: column; padding: 1rem; } .sidebar-header { margin-bottom: 2rem; } .sidebar-nav { flex: 1; } .nav-item { display: flex; align-items: center; padding: 1rem; color: var(--text-secondary); text-decoration: none; border-radius: 5px; margin-bottom: 0.5rem; transition: all 0.3s ease; } .nav-item:hover, .nav-item.active { background: rgba(0, 240, 255, 0.1); color: var(--primary); } .nav-item i { margin-right: 1rem; width: 20px; } .sidebar-footer { margin-top: auto; } /* Main Content */ .main-content { flex: 1; overflow-y: auto; padding: 2rem; padding-bottom: 120px; } .page { display: none; } .page.active { display: block; } .page-header { margin-bottom: 2rem; } .page-header h1 { font-size: 2.5rem; margin-bottom: 0.5rem; } .page-header p { color: var(--text-secondary); } /* Sections */ .section { margin-bottom: 3rem; } .section h2 { font-size: 1.8rem; margin-bottom: 1.5rem; color: var(--primary); } /* Search Bar */ .search-bar { display: flex; gap: 1rem; margin-bottom: 2rem; } .search-bar input { flex: 1; padding: 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 5px; color: var(--text-primary); font-size: 1rem; } .search-bar button { width: auto; padding: 0 2rem; } /* Track List */ .track-list { display: grid; gap: 1rem; } .track-card { display: flex; align-items: center; padding: 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; transition: all 0.3s ease; } .track-card:hover { border-color: var(--primary); box-shadow: var(--glow-primary); transform: translateY(-2px); } .track-cover { width: 80px; height: 80px; object-fit: cover; border-radius: 5px; margin-right: 1rem; } .track-info { flex: 1; } .track-title { font-size: 1.2rem; font-weight: bold; margin-bottom: 0.3rem; } .track-artist { color: var(--text-secondary); } .track-duration { color: var(--text-secondary); font-size: 0.9rem; } .track-actions { display: flex; gap: 0.5rem; } .btn-play-track { padding: 0.5rem 1rem; background: linear-gradient(135deg, var(--primary), var(--secondary)); border: none; border-radius: 5px; color: white; cursor: pointer; font-size: 0.9rem; } /* Playlist List */ .playlist-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1.5rem; } .playlist-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; padding: 1rem; cursor: pointer; transition: all 0.3s ease; } .playlist-card:hover { border-color: var(--primary); box-shadow: var(--glow-primary); transform: translateY(-5px); } .playlist-cover { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 5px; margin-bottom: 1rem; } .playlist-name { font-size: 1.1rem; font-weight: bold; margin-bottom: 0.3rem; } .playlist-info { color: var(--text-secondary); font-size: 0.9rem; } /* Player */ .player { position: fixed; bottom: 0; left: 0; right: 0; background: var(--bg-darker); border-top: 1px solid var(--border); padding: 1rem 2rem; display: flex; align-items: center; gap: 2rem; z-index: 1000; } /* Hide player on login screen */ #login-screen .player, body:not(:has(#main-app.visible)) .player { display: none !important; } #main-app.visible .player { display: flex !important; } .player-info { display: flex; align-items: center; gap: 1rem; min-width: 250px; } .player-cover { width: 60px; height: 60px; object-fit: cover; border-radius: 5px; } .player-details { flex: 1; } .player-title { font-size: 1rem; font-weight: bold; margin-bottom: 0.2rem; } .player-artist { color: var(--text-secondary); font-size: 0.9rem; } .player-controls { display: flex; align-items: center; gap: 1rem; flex: 1; justify-content: center; } .btn-control { background: none; border: none; color: var(--text-primary); font-size: 1.5rem; cursor: pointer; transition: all 0.3s ease; } .btn-control:hover { color: var(--primary); } .btn-play { width: 50px; height: 50px; border-radius: 50%; background: var(--primary); color: var(--bg-dark); display: flex; align-items: center; justify-content: center; } .btn-play:hover { transform: scale(1.1); box-shadow: var(--glow-primary); } .player-progress { flex: 1; display: flex; align-items: center; gap: 1rem; max-width: 500px; } .progress-bar, .volume-bar { flex: 1; height: 4px; background: rgba(255, 255, 255, 0.1); border: none; border-radius: 2px; cursor: pointer; } .progress-bar::-webkit-slider-thumb, .volume-bar::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; background: var(--primary); border-radius: 50%; cursor: pointer; } .time { font-size: 0.8rem; color: var(--text-secondary); min-width: 40px; } .player-volume { display: flex; align-items: center; gap: 0.5rem; min-width: 150px; } /* Responsive */ @media (max-width: 768px) { .sidebar { position: fixed; left: -250px; z-index: 1001; transition: left 0.3s ease; } .sidebar.open { left: 0; } .main-content { padding: 1rem; } .player { flex-wrap: wrap; padding: 1rem; } .player-info { min-width: auto; flex: 1; } .player-controls { order: 3; width: 100%; } .player-progress { max-width: none; } }