/* WavePlayer Component Styles */ .waveplayer { position: relative; width: 100%; background-color: var(--light-gray, #f5f5f5); border-radius: 8px; padding: 16px; margin-bottom: 16px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); overflow: hidden; } /* Hide native audio elements */ .waveplayer audio { display: none !important; } .waveplayer-controls { display: flex; align-items: center; margin-bottom: 12px; gap: 12px; } .waveplayer-play-btn { width: 40px; height: 40px; border-radius: 50%; background-color: var(--primary-color, #5046e5); color: white; border: none; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background-color 0.2s, transform 0.1s; flex-shrink: 0; } .waveplayer-play-btn:hover { background-color: var(--primary-hover, #4038c7); } .waveplayer-play-btn:active { transform: scale(0.95); } .waveplayer-play-btn svg { width: 20px; height: 20px; } .waveplayer-time { font-size: 14px; color: var(--text-color, #333); font-weight: 500; flex-shrink: 0; } .waveplayer-waveform { position: relative; width: 100%; height: 80px; cursor: pointer; } .waveplayer-loading { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.7); display: flex; flex-direction: column; align-items: center; justify-content: center; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); z-index: 10; } .waveplayer-spinner { width: 24px; height: 24px; border: 3px solid rgba(80, 70, 229, 0.3); border-radius: 50%; border-top-color: var(--primary-color, #5046e5); animation: spin 1s linear infinite; margin-bottom: 8px; } @keyframes spin { to { transform: rotate(360deg); } } /* Dark mode styles */ @media (prefers-color-scheme: dark) { .waveplayer { background-color: var(--light-gray, #1e1e24); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .waveplayer-time { color: var(--text-color, #e0e0e0); } .waveplayer-loading { background-color: rgba(30, 30, 36, 0.7); } } /* Mobile optimizations */ @media (max-width: 768px) { .waveplayer { padding: 12px; } .waveplayer-play-btn { width: 44px; height: 44px; } .waveplayer-waveform { height: 70px; touch-action: none; /* Prevents scroll/zoom on touch */ } .waveplayer-time { font-size: 12px; } }