/* CSS Variables */ :root { /* Light mode */ --background-color: #f5f5f5; --container-background: #fafafa; --key-background: white; --key-hover-background: #f5f5f5; --border-color: #e5e5e5; --text-primary: #333; --text-secondary: #666; --slider-track: #393a39; --slider-thumb: #000000; --button-background: #015131; --button-hover: #002114; --button-text: white; --keyboard-bg: #fafafa; --inactive-key-bg: #e0e0e0; } @media (prefers-color-scheme: dark) { :root { --background-color: #121212; --container-background: #1e1e1e; --key-background: #2d2d2d; --key-hover-background: #3d3d3d; --border-color: #404040; --text-primary: #e0e0e0; --text-secondary: #a0a0a0; --slider-track: #666666; --slider-thumb: #015131; --button-background: #015131; --button-hover: #026b41; --keyboard-bg: #1e1e1e; --inactive-key-bg: #2d2d2d; } } /* Base styles */ html, body, #root, .wrapper, main, .main-container { background-color: var(--background-color); min-height: 100vh; margin: 0; padding: 0; width: 100%; max-width: 100%; } body { font-family: 'Roboto', sans-serif; font-size: 1rem; line-height: 1.5; color: var(--text-primary); overflow-x: hidden; transition: background-color 0.2s ease; } /* Keyboard layout */ .keyboard-container { width: 100%; padding: 1.5rem; background: var(--keyboard-bg); border: 1px solid var(--border-color); border-radius: 4px; user-select: none; } .keyboard-row { display: flex; gap: 0.25rem; margin-bottom: 0.25rem; width: 100%; } /* Key styles */ .key { width: calc((100% - 2.75rem) / 12); aspect-ratio: 1; min-width: 40px; flex: none; padding: 0.5rem; border: 1px solid var(--border-color); border-radius: 4px; background: var(--key-background); 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; } .key:hover { background: var(--key-hover-background); transform: translateY(-1px); } .key:active { transform: translateY(0); } .key.inactive, .key:disabled { background: var(--inactive-key-bg); } .key-label { font-size: 0.875rem; font-weight: 500; color: var(--text-primary); } .note-label { font-size: 0.75rem; color: var(--text-secondary); margin-top: 0.25rem; } /* Controls section */ .controls-section { margin: 1em 0; padding: 1em; } .controls-row { display: flex; gap: 1em; margin: 1em 0; } .control-group { margin: 1em 0; } .control-group.half-width { flex: 1; margin: 0; } /* Labels and values */ .slider-label, h3 { display: block; margin-bottom: 0.5em; font-size: 0.9em; color: var(--text-primary); } h3 { margin-top: 0; font-size: 1rem; font-weight: 500; } .slider-value, .master-value, .release-value, .reverb-mix-value, .root-value, .column-value, .row-value { color: var(--text-secondary); font-weight: 500; } /* Range inputs */ input[type="range"] { width: 100%; height: 24px; background: transparent; border-radius: 2px; appearance: none; cursor: pointer; margin: 0.5em 0; padding: 10px 0; } input[type="range"]::-webkit-slider-thumb { appearance: none; width: 16px; height: 16px; background: var(--slider-thumb); border-radius: 50%; cursor: pointer; margin-top: -6px; } input[type="range"]::-webkit-slider-runnable-track { background: var(--slider-track); height: 4px; border-radius: 2px; } input[type="range"]::-moz-range-thumb { width: 16px; height: 16px; background: var(--slider-thumb); border: none; border-radius: 50%; cursor: pointer; } input[type="range"]::-moz-range-track { background: var(--slider-track); height: 4px; border-radius: 2px; } /* Mobile styles */ @media (max-width: 768px) { .control-group { min-width: 100%; } .key { min-width: 35px; } .key-label { font-size: 0.75rem; } input[type="range"] { height: 32px; padding: 14px 0; } input[type="range"]::-webkit-slider-thumb { width: 28px; height: 28px; } }