@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&display=swap'); :root { --background-color: #121212; --surface-color: #1E1E1E; --primary-color: #1DB954; --text-primary-color: #FFFFFF; --text-secondary-color: #B3B3B3; --border-radius-btn: 12px; --border-radius-card: 12px; } body { background-color: var(--background-color); color: var(--text-primary-color); font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; scroll-behavior: smooth; } .navbar { background-color: rgba(30, 30, 30, 0.8); backdrop-filter: blur(10px); } .navbar-brand { font-weight: 900; font-size: 1.75rem; color: var(--text-primary-color); } .navbar-brand:hover { color: var(--primary-color); } .hero { background: linear-gradient(180deg, var(--surface-color) 0%, var(--background-color) 100%); padding: 120px 0; text-align: center; } .hero h1 { font-weight: 900; font-size: 3.5rem; margin-bottom: 1rem; } .hero p { color: var(--text-secondary-color); font-size: 1.25rem; margin-bottom: 2rem; } .btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); border-radius: var(--border-radius-btn); font-weight: 700; padding: 12px 32px; font-size: 1.1rem; transition: background-color 0.3s ease, transform 0.2s ease; } .btn-primary:hover { background-color: #1ed760; border-color: #1ed760; transform: scale(1.05); } .section { padding: 80px 0; } .section-title { text-align: center; font-weight: 700; font-size: 2.5rem; margin-bottom: 3rem; } .feature-card { background-color: var(--surface-color); border-radius: var(--border-radius-card); padding: 2rem; text-align: center; height: 100%; border: 1px solid #282828; } .feature-card .icon { font-size: 3rem; color: var(--primary-color); margin-bottom: 1.5rem; } .feature-card h3 { font-weight: 700; font-size: 1.5rem; margin-bottom: 1rem; } .feature-card p { color: var(--text-secondary-color); } .footer { background-color: var(--surface-color); padding: 2rem 0; text-align: center; color: var(--text-secondary-color); } .footer a { color: var(--text-secondary-color); text-decoration: none; } .footer a:hover { color: var(--primary-color); } /* Floating Action Button (FAB) */ .fab { position: fixed; bottom: 30px; right: 30px; width: 60px; height: 60px; background-color: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--text-primary-color); font-size: 24px; border: none; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); cursor: pointer; transition: transform 0.2s ease-in-out, background-color 0.2s; z-index: 1050; } .fab:hover { background-color: #1ed760; transform: scale(1.1); } /* Modal Styles */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); backdrop-filter: blur(5px); z-index: 1055; display: none; /* Hidden by default */ opacity: 0; transition: opacity 0.3s ease; } .modal-overlay.visible { display: block; opacity: 1; } .modal-container { position: fixed; bottom: 0; left: 0; width: 100%; background-color: var(--surface-color); border-top-left-radius: 20px; border-top-right-radius: 20px; padding: 1.5rem; transform: translateY(100%); transition: transform 0.3s ease-out; max-height: 80vh; overflow-y: auto; } .modal-overlay.visible .modal-container { transform: translateY(0); } .modal-header { display: flex; justify-content: space-between; align-items: center; padding-bottom: 1rem; border-bottom: 1px solid #282828; } .modal-title { font-weight: 700; font-size: 1.5rem; } .btn-close-modal { background: none; border: none; color: var(--text-secondary-color); font-size: 1.5rem; } .btn-close-modal:hover { color: var(--text-primary-color); } .search-bar-container { position: relative; margin-top: 1rem; } .search-bar-container .bi-search { position: absolute; top: 50%; left: 15px; transform: translateY(-50%); color: var(--text-secondary-color); } #song-search-input { background-color: #282828; border: 1px solid #333; color: var(--text-primary-color); border-radius: 8px; padding-left: 40px; height: 50px; } #song-search-input::placeholder { color: var(--text-secondary-color); } .source-toggles { display: flex; gap: 10px; margin-top: 1rem; } .btn-source { flex-grow: 1; background-color: #282828; border: 1px solid #333; color: var(--text-secondary-color); border-radius: 8px; padding: 10px; transition: background-color 0.2s, color 0.2s; } .btn-source.active { background-color: var(--primary-color); color: var(--text-primary-color); border-color: var(--primary-color); } .search-result-item { display: flex; align-items: center; padding: 10px; border-radius: 8px; cursor: pointer; transition: background-color 0.2s; } .search-result-item:hover { background-color: #282828; } .search-result-item img { width: 50px; height: 50px; border-radius: 4px; margin-right: 15px; } .search-result-item .track-info { flex-grow: 1; } .search-result-item .track-title { font-weight: 600; } .search-result-item .artist-name { font-size: 0.9rem; color: var(--text-secondary-color); } .source-icon { font-size: 1.5rem; color: var(--text-secondary-color); } .queue-item { background-color: var(--surface-color); border-radius: var(--border-radius-card); padding: 1rem; margin-bottom: 1rem; display: flex; align-items: center; border: 1px solid #282828; opacity: 1; transform: translateY(0); transition: opacity 0.5s ease, transform 0.5s ease; } .queue-item.new-item { opacity: 0; transform: translateY(20px); } .queue-item img { width: 64px; height: 64px; border-radius: 8px; margin-right: 1rem; } .queue-item .track-info { flex-grow: 1; } .queue-item .track-title { font-weight: 600; color: var(--text-primary-color); } .queue-item .artist-name { color: var(--text-secondary-color); } .vote-button { background-color: transparent; border: 1px solid var(--primary-color); color: var(--primary-color); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0.5rem; border-radius: 8px; font-weight: 600; width: 50px; height: 50px; } .vote-button .bi { font-size: 1.2rem; }