Spaces:
Runtime error
Runtime error
| :root { | |
| --keyboard-bg: #fafafa; | |
| --inactive-key-bg: #e0e0e0; | |
| --border-color: #e5e5e5; | |
| --slider-track: #393a39; | |
| --slider-thumb: #000000; | |
| --key-ratio: 1; | |
| } | |
| #keyboard-container { | |
| width: 100%; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0.25rem; | |
| background: var(--keyboard-bg); | |
| border: 2px solid var(--border-color); | |
| border-radius: 4px; | |
| user-select: none; | |
| box-sizing: border-box; | |
| color: #000000; /* Add this - sets a default dark color for all text */ | |
| } | |
| /* Make all text elements inside use the inherited color */ | |
| #keyboard-container .key-label, | |
| #keyboard-container .note-label, | |
| #keyboard-container .slider-label, | |
| #keyboard-container span, | |
| #keyboard-container h3, | |
| #keyboard-container summary { | |
| color: black; | |
| } | |
| .keyboard { | |
| width: 100%; | |
| padding: 0.25rem 0; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| box-sizing: border-box; | |
| } | |
| .keyboard-row { | |
| display: flex; | |
| gap: 0.125rem; | |
| margin-bottom: 0.125rem; | |
| width: 100%; | |
| justify-content: center; | |
| box-sizing: border-box; | |
| } | |
| .key { | |
| /* Smaller base size with viewport-based scaling */ | |
| width: clamp(1.5rem, min(4vw + 0.75rem, 3rem), 3rem); | |
| height: clamp(1.5rem, min(4vw + 0.75rem, 3rem), 3rem); | |
| padding: 0.125rem; | |
| border: 2px solid var(--border-color); | |
| border-radius: 4px; | |
| cursor: pointer; | |
| transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| touch-action: none; | |
| background: white; | |
| flex-shrink: 0; | |
| box-sizing: border-box; | |
| } | |
| .key-label { | |
| font-size: clamp(0.5rem, min(1.5vw + 0.4rem, 0.875rem), 0.875rem); | |
| font-weight: 500; | |
| color: #333; | |
| } | |
| .note-label { | |
| font-size: clamp(0.4rem, min(1.25vw + 0.3rem, 0.75rem), 0.75rem); | |
| color: #666; | |
| } | |
| /* Additional reduction for very small screens */ | |
| @media (max-width: 360px) { | |
| .keyboard-row { | |
| gap: 0.1rem; | |
| } | |
| .key { | |
| width: clamp(1.25rem, 3.5vw + 0.5rem, 1.75rem); | |
| height: clamp(1.25rem, 3.5vw + 0.5rem, 1.75rem); | |
| padding: 0.1rem; | |
| } | |
| .key-label { | |
| font-size: clamp(0.4rem, 1.25vw + 0.35rem, 0.5rem); | |
| } | |
| .note-label { | |
| font-size: clamp(0.35rem, 1vw + 0.3rem, 0.45rem); | |
| } | |
| } | |
| /* Larger screens */ | |
| @media (min-width: 768px) { | |
| .keyboard-row { | |
| gap: 0.25rem; | |
| margin-bottom: 0.25rem; | |
| } | |
| .key { | |
| padding: 0.25rem; | |
| } | |
| } | |
| /* Controls section */ | |
| .controls-section { | |
| margin: 0.5rem 0; | |
| width: 100%; | |
| box-sizing: border-box; | |
| } | |
| .controls-section details { | |
| background: white; | |
| border: 1px solid var(--border-color); | |
| border-radius: 4px; | |
| padding: 0.5rem; | |
| } | |
| .controls-section summary { | |
| cursor: pointer; | |
| padding: 0.5rem; | |
| } | |
| .controls-section summary h3 { | |
| display: inline; | |
| margin: 0; | |
| } | |
| .controls-row { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .control-group { | |
| margin: 0.5rem 0; | |
| } | |
| .control-group.half-width { | |
| flex: 1; | |
| } | |
| /* Slider styles */ | |
| .control-slider { | |
| width: 100%; | |
| height: 44px; | |
| padding: 14px 0; | |
| background: transparent; | |
| -webkit-appearance: none; | |
| appearance: none; | |
| } | |
| .control-slider::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| width: 28px; | |
| height: 28px; | |
| background: var(--slider-thumb); | |
| border-radius: 50%; | |
| cursor: pointer; | |
| margin-top: -14px; | |
| } | |
| .control-slider::-webkit-slider-runnable-track { | |
| width: 100%; | |
| height: 4px; | |
| background: var(--slider-track); | |
| border-radius: 2px; | |
| } | |
| /* Media Queries */ | |
| @media (min-width: 768px) { | |
| .key { | |
| width: 3.5rem; | |
| height: 3.5rem; | |
| } | |
| .key-label { | |
| font-size: 1rem; | |
| } | |
| .note-label { | |
| font-size: 0.75rem; | |
| } | |
| .controls-row { | |
| flex-direction: row; | |
| } | |
| } | |
| @media (min-width: 1024px) { | |
| .key { | |
| width: 4rem; | |
| height: 4rem; | |
| } | |
| } | |
| /* Ensure proper box-sizing everywhere */ | |
| *, *::before, *::after { | |
| box-sizing: border-box; | |
| } | |
| .loader { | |
| position: fixed; | |
| bottom: 20px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| padding: 10px 20px; | |
| border-radius: 20px; | |
| font-size: 30px; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| transition: all 0.3s ease; | |
| z-index: 1000; | |
| } | |
| .loader.active { | |
| background-color: #30b275; | |
| border: 1px solid #00ff22; | |
| color: #00ffae; | |
| box-shadow: 0 2px 4px rgba(0,0,0,0.1); | |
| } | |
| .loader.inactive { | |
| background-color: #e8f5e9; | |
| border: 1px solid #81c784; | |
| color: #2e7d32; | |
| } | |
| .loader-emoji { | |
| font-size: 16px; | |
| animation: bounce 1s infinite; | |
| } | |
| .loader.active .loader-emoji { | |
| animation: spin 1s infinite linear; | |
| } | |
| @keyframes bounce { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-3px); } | |
| } | |
| @keyframes spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } |