:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}body,html{margin:0;padding:0;height:100%;display:flex;justify-content:center;align-items:center}.device-message{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:1000;justify-content:center;align-items:center;color:#fff;font-size:24px;text-align:center;padding:20px;font-family:sans-serif;overflow:hidden;box-sizing:border-box}@media only screen and (max-width: 1200px){body,html{overflow:hidden;position:fixed;width:100%;height:100%}.device-message{display:flex}.piano-wrapper,.octave-button,.recording-buttons{display:none}}.piano-wrapper{padding:30px;border-radius:16px;display:inline-block;position:relative}.piano{position:relative;width:1320px;height:400px;display:flex}.white-key{width:120px;height:360px;background:#fff;border:2px solid #333;box-shadow:0 5px 10px #0006;margin-right:2px;display:flex;justify-content:center;align-items:flex-end;position:relative;cursor:pointer}.white-key:active,.white-key.active{background:#ddd}.black-key{position:absolute;width:100px;height:220px;background:#000;border-radius:0 0 5px 5px;z-index:10;cursor:pointer}.black-key:active,.black-key.active{background:#333}.key-label{font-size:18px;margin-bottom:8px;color:#666;user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none}.black-label{color:#ccc;user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none}.octave-indicator{position:absolute;top:20px;right:30px;color:#fff;font-family:sans-serif;font-size:20px;pointer-events:none;-webkit-user-select:none;user-select:none}.recording-buttons{position:fixed;bottom:30px;left:50%;transform:translate(-50%);display:flex;gap:8px;z-index:20;-webkit-user-select:none;user-select:none}.recording-buttons input[type=file]{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;color:#fff;cursor:pointer;transition:border-color .25s;width:auto}.recording-buttons input[type=file]:hover{border-color:#646cff}.recording-buttons input[type=file]:focus,.recording-buttons input[type=file]:focus-visible{outline:4px auto -webkit-focus-ring-color}.recording-buttons input[type=file]::-webkit-file-upload-button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;color:#fff;cursor:pointer;transition:border-color .25s}.recording-buttons input[type=file]:hover::-webkit-file-upload-button{border-color:#646cff}.recording-buttons input[type=file]:focus::-webkit-file-upload-button,.recording-buttons input[type=file]:focus-visible::-webkit-file-upload-button{outline:4px auto -webkit-focus-ring-color}.recording-buttons input[type=file]:hover::-webkit-file-upload-button{background-color:#444}.octave-button{position:fixed;top:50%;transform:translateY(-50%);z-index:10;font-size:24px;padding:15px;color:#fff;border:none;border-radius:50%;width:60px;height:60px;cursor:pointer;background-color:#333;transition:background-color .3s ease;user-select:none;-webkit-user-select:none;-ms-user-select:none;outline:none}.octave-button:focus{outline:none}.octave-button:hover{background-color:#111}.octave-button:active{background-color:#444;box-shadow:0 2px 4px #0003;transform:translateY(-50%) scale(.95)}.octave-button:disabled{background-color:#111;color:#111;cursor:not-allowed;opacity:.7}.octave-button.down{left:20px}.octave-button.up{right:20px}.white-key:focus,.black-key:focus{outline:none}.tutorial-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;overflow:hidden}.tutorial-content{background-color:#242424;border-radius:12px;padding:30px;width:80%;max-width:700px;max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 5px 15px #00000080;color:#fff}.tutorial-close-button{position:absolute;top:15px;right:15px;background:none;border:none;font-size:24px;cursor:pointer;color:#aaa;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;user-select:none;-moz-user-select:none;-webkit-user-select:none;outline:none;pointer-events:auto}.tutorial-body{margin:20px 0;font-size:18px;line-height:1.6}.tutorial-image{max-width:100%;margin-top:20px;border-radius:8px}.tutorial-navigation{display:flex;justify-content:space-between;align-items:center;margin-top:30px;-webkit-user-select:none;user-select:none;outline:none}.tutorial-nav-button{padding:10px 20px;border-radius:8px;cursor:pointer;font-size:16px;transition:background-color .3s;outline:none}.tutorial-nav-button:disabled{opacity:.5;cursor:not-allowed}.tutorial-progress{display:flex;gap:8px}.tutorial-dot{width:12px;height:12px;border-radius:50%;background-color:#555;cursor:pointer;transition:background-color .3s}.tutorial-dot.active{background-color:#646cff}.tutorial-dot:hover{background-color:#777}@media (prefers-color-scheme: light){.tutorial-content{background-color:#f9f9f9;color:#213547}.tutorial-close-button{color:#666}.tutorial-close-button:hover{color:#333;background-color:#0000001a}.tutorial-dot{background-color:#ccc}.tutorial-dot.active{background-color:#747bff}.tutorial-dot:hover{background-color:#aaa}}
