channelcorp/JA-TTS-Arena
2
1/* WavePlayer Component Styles */2.waveplayer {3 position: relative;4 width: 100%;5 background-color: var(--light-gray, #f5f5f5);6 border-radius: 8px;7 padding: 16px;8 margin-bottom: 16px;9 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);10 overflow: hidden;11}12 13/* Hide native audio elements */14.waveplayer audio {15 display: none !important;16}17 18.waveplayer-controls {19 display: flex;20 align-items: center;21 margin-bottom: 12px;22 gap: 12px;23}24 25.waveplayer-play-btn {26 width: 40px;27 height: 40px;28 border-radius: 50%;29 background-color: var(--primary-color, #5046e5);30 color: white;31 border: none;32 display: flex;33 align-items: center;34 justify-content: center;35 cursor: pointer;36 transition: background-color 0.2s, transform 0.1s;37 flex-shrink: 0;38}39 40.waveplayer-play-btn:hover {41 background-color: var(--primary-hover, #4038c7);42}43 44.waveplayer-play-btn:active {45 transform: scale(0.95);46}47 48.waveplayer-play-btn svg {49 width: 20px;50 height: 20px;51}52 53.waveplayer-time {54 font-size: 14px;55 color: var(--text-color, #333);56 font-weight: 500;57 flex-shrink: 0;58}59 60.waveplayer-waveform {61 position: relative;62 width: 100%;63 height: 80px;64 cursor: pointer;65}66 67.waveplayer-loading {68 position: absolute;69 top: 0;70 left: 0;71 width: 100%;72 height: 100%;73 background-color: rgba(255, 255, 255, 0.7);74 display: flex;75 flex-direction: column;76 align-items: center;77 justify-content: center;78 -webkit-backdrop-filter: blur(2px);79 backdrop-filter: blur(2px);80 z-index: 10;81}82 83.waveplayer-spinner {84 width: 24px;85 height: 24px;86 border: 3px solid rgba(80, 70, 229, 0.3);87 border-radius: 50%;88 border-top-color: var(--primary-color, #5046e5);89 animation: spin 1s linear infinite;90 margin-bottom: 8px;91}92 93@keyframes spin {94 to {95 transform: rotate(360deg);96 }97}98 99/* Dark mode styles */100@media (prefers-color-scheme: dark) {101 .waveplayer {102 background-color: var(--light-gray, #1e1e24);103 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);104 }105 106 .waveplayer-time {107 color: var(--text-color, #e0e0e0);108 }109 110 .waveplayer-loading {111 background-color: rgba(30, 30, 36, 0.7);112 }113} 114 115/* Mobile optimizations */116@media (max-width: 768px) {117 .waveplayer {118 padding: 12px;119 }120 121 .waveplayer-play-btn {122 width: 44px;123 height: 44px;124 }125 126 .waveplayer-waveform {127 height: 70px;128 touch-action: none; /* Prevents scroll/zoom on touch */129 }130 131 .waveplayer-time {132 font-size: 12px;133 }134} 