.audio-controls { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; } .player-container { display: flex; flex-direction: column; gap: 1rem; background: rgba(15, 23, 42, 0.3); padding: 1rem; border-radius: 0.5rem; border: 1px solid var(--border); } .player-controls { display: flex; align-items: center; gap: 1rem; width: 100%; background: rgba(15, 23, 42, 0.3); padding: 0.5rem; border-radius: 0.5rem; } .seek-slider, .volume-slider { -webkit-appearance: none; height: 4px; border-radius: 2px; background: rgba(99, 102, 241, 0.2); outline: none; cursor: pointer; transition: height 0.2s ease-in-out; } .seek-slider { flex: 1; } .volume-slider { width: 100px; } .seek-slider::-webkit-slider-thumb, .volume-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; border-radius: 50%; background: var(--fg-color); cursor: pointer; transition: transform 0.2s ease; } .seek-slider::-webkit-slider-thumb:hover, .volume-slider::-webkit-slider-thumb:hover { transform: scale(1.2); } .seek-slider::-moz-range-thumb, .volume-slider::-moz-range-thumb { width: 12px; height: 12px; border: none; border-radius: 50%; background: var(--fg-color); cursor: pointer; transition: transform 0.2s ease; } .seek-slider::-moz-range-thumb:hover, .volume-slider::-moz-range-thumb:hover { transform: scale(1.2); } .volume-control { display: flex; align-items: center; gap: 0.5rem; padding-left: 0.5rem; border-left: 1px solid var(--border); } .volume-icon { color: var(--fg-color); opacity: 0.8; transition: opacity 0.2s ease; } .volume-icon:hover { opacity: 1; } .player-btn { background: var(--fg-color); color: var(--text); padding: 0.5rem 1rem; border-radius: 0.5rem; border: none; font-weight: 500; cursor: pointer; transition: all 0.2s ease; flex: 0 0 auto; min-width: 80px; } .player-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(99, 102, 241, 0.2); } .wave-container { width: 100%; height: 120px; background: rgba(15, 23, 42, 0.3); border-radius: 0.25rem; overflow: hidden; position: relative; margin-top: 0.5rem; } .wave-container canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .time-display { color: var(--text-light); font-size: 0.875rem; min-width: 100px; text-align: right; font-variant-numeric: tabular-nums; } .download-button { position: relative; width: 40px; height: 40px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: transform 0.2s ease; align-self: flex-end; } .download-glow { position: absolute; inset: -15%; background: conic-gradient( from 0deg, var(--fg-color), var(--success), var(--fg-color) ); border-radius: 4px; animation: rotate 4s linear infinite; filter: blur(8px); opacity: 0.5; } .download-icon { width: 40px; height: 40px; position: relative; z-index: 2; background: var(--surface); border: 1px solid var(--border); border-radius: 4px; display: flex; align-items: center; justify-content: center; color: var(--text); transition: transform 0.2s ease, box-shadow 0.2s ease; } .download-button:hover { transform: scale(1.05); } .download-button:hover .download-icon { box-shadow: 0 0 15px rgba(34, 197, 94, 0.3); } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }