*{box-sizing:border-box;margin:0;padding:0}html,body{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;overflow-x:hidden}.piano-app{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:radial-gradient(at top,#ffffff1a 0%,#0000 50%),linear-gradient(135deg,#667eea 0%,#764ba2 100%);flex-direction:column;min-height:100vh;display:flex;position:relative}.app-header{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff1a;border-bottom:1px solid #fff3;padding:2rem 2rem 1rem}.header-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;max-width:1200px;margin:0 auto;display:flex}.app-title{flex-direction:column;align-items:flex-start;display:flex}.title-main{background:linear-gradient(45deg,#fff,#e0e0e0);-webkit-text-fill-color:transparent;letter-spacing:-.5px;-webkit-background-clip:text;background-clip:text;font-size:2.5rem;font-weight:800}.title-sub{color:#fffc;margin-top:-5px;font-size:1.2rem;font-weight:400}.status-indicator{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:50px;align-items:center;gap:.75rem;padding:.75rem 1.5rem;display:flex}@media (max-width:768px){.app-header{padding:1rem 1rem .5rem}.header-content{text-align:center;flex-direction:column;align-items:center;gap:1.5rem}.title-main{font-size:2rem}.title-sub{font-size:1rem}.status-indicator{gap:.5rem;padding:.5rem 1rem}.status-text{font-size:.8rem}}.status-dot{border-radius:50%;width:12px;height:12px;transition:all .3s}.status-dot.idle{background:#ffffff80}.status-dot.recording{background:#ff4757;animation:2s infinite pulse;box-shadow:0 0 20px #ff475780}.status-dot.playing{background:#2ed573;box-shadow:0 0 20px #2ed57380}.status-text{color:#fff;font-size:.9rem;font-weight:500}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.main-content{flex-direction:column;flex:1;gap:3rem;width:100%;max-width:1200px;margin:0 auto;padding:2rem;display:flex}.piano-section{justify-content:center;display:flex}.piano-container{width:100%;max-width:900px;position:relative}.piano-wrapper{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff1a;border:1px solid #fff3;border-radius:24px;padding:2rem;position:relative;overflow:hidden;box-shadow:0 20px 40px #0000001a}@media (max-width:768px){.main-content{gap:2rem;padding:1rem}.piano-wrapper{border-radius:16px;padding:1rem}}@media (max-width:480px){.main-content{gap:1.5rem;padding:.5rem}.piano-wrapper{border-radius:12px;padding:.75rem}}.piano-wrapper:before{content:"";background:linear-gradient(90deg,#0000,#ffffff80,#0000);height:1px;position:absolute;top:0;left:0;right:0}.loading-overlay{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex;position:absolute;inset:0}.loading-spinner{border:3px solid #667eea4d;border-top-color:#667eea;border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay p{color:#667eea;font-weight:500}.controls-section{justify-content:center;display:flex}.controls-container{flex-direction:column;gap:2rem;width:100%;max-width:900px;display:flex}.control-group{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.control-btn{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:16px;justify-content:center;align-items:center;gap:.75rem;min-width:120px;padding:1rem 2rem;font-size:1rem;font-weight:600;transition:all .3s;display:flex}@media (max-width:768px){.controls-container{gap:1.5rem}.control-group{gap:.75rem}.control-btn{flex:1;min-width:100px;padding:.75rem 1.5rem;font-size:.9rem}.btn-icon{width:18px;height:18px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.stat-value{font-size:1.1rem}}@media (max-width:480px){.control-group{flex-direction:column;gap:.5rem}.control-btn{min-width:auto;padding:.75rem 1rem;font-size:.85rem}.stats-grid{grid-template-columns:1fr;gap:.75rem}.stat-label{font-size:.8rem}.stat-value{font-size:1rem}.info-card{padding:1rem}}.control-btn:hover:not(:disabled){background:#fff3;transform:translateY(-2px);box-shadow:0 10px 25px #0003}.control-btn:active:not(:disabled){transform:translateY(0)}.control-btn:disabled{opacity:.5;cursor:not-allowed}.control-btn.active{background:linear-gradient(45deg,#667eea,#764ba2);box-shadow:0 10px 25px #667eea4d}.btn-icon{width:20px;height:20px}.play-btn:hover:not(:disabled){background:linear-gradient(45deg,#2ed573,#17c0eb)}.stop-btn:hover:not(:disabled){background:linear-gradient(45deg,#ff4757,#ff6b7d)}.clear-btn:hover:not(:disabled){background:linear-gradient(45deg,#ffa726,#ff7043)}.recording-info{justify-content:center;width:100%;display:flex}.info-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);text-align:center;background:#ffffff1a;border:1px solid #fff3;border-radius:16px;width:100%;padding:1.5rem}.info-card h3{color:#fff;margin-bottom:1rem;font-size:1.1rem;font-weight:600}.stats-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;max-width:100%;display:grid}.stat-item{flex-direction:column;align-items:center;gap:.25rem;display:flex}.stat-label{color:#ffffffb3;text-align:center;font-size:.85rem;font-weight:500}.stat-value{color:#fff;text-align:center;word-break:break-word;font-size:1.3rem;font-weight:700}.recording-section{justify-content:center;display:flex}.recording-container{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff1a;border:1px solid #fff3;border-radius:20px;width:100%;max-width:900px;overflow:hidden}.recording-header{background:#0000001a;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:1.5rem 2rem;display:flex}.recording-header h2{color:#fff;font-size:1.5rem;font-weight:600}.export-btn{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:12px;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;transition:all .3s;display:flex}.export-btn:hover:not(:disabled){background:#fff3}.export-btn:disabled{opacity:.5;cursor:not-allowed}.recording-display{padding:2rem}.notes-preview{color:#ffffffe6;white-space:pre-wrap;scrollbar-width:thin;scrollbar-color:#ffffff4d #ffffff1a;background:#0003;border:1px solid #ffffff1a;border-radius:12px;height:300px;max-height:300px;padding:1.5rem;font-family:Monaco,Menlo,monospace;font-size:.9rem;line-height:1.6;overflow-y:auto}@media (max-width:768px){.recording-container{border-radius:16px}.recording-header{flex-direction:column;align-items:flex-start;gap:1rem;padding:1rem 1.5rem}.recording-header h2{font-size:1.3rem}.recording-actions{width:100%}.export-btn{flex:1;justify-content:center;padding:.75rem 1rem}.recording-display{padding:1.5rem}.notes-preview{height:250px;max-height:250px;padding:1rem;font-size:.8rem}}@media (max-width:480px){.recording-container{border-radius:12px}.recording-header{padding:1rem}.recording-header h2{font-size:1.2rem}.recording-display{padding:1rem}.notes-preview{height:200px;max-height:200px;padding:.75rem;font-size:.75rem;line-height:1.5}}.notes-preview::-webkit-scrollbar{width:8px}.notes-preview::-webkit-scrollbar-track{background:#ffffff1a;border-radius:4px}.notes-preview::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px}.notes-preview::-webkit-scrollbar-thumb:hover{background:#fff6}.save-section{justify-content:center;display:flex}.save-container{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff1a;border:1px solid #fff3;border-radius:16px;width:100%;max-width:900px;padding:2rem}.record-saving{width:100%}.save-section h3{color:#fff;text-align:center;margin-bottom:1.5rem;font-size:1.2rem;font-weight:600}.save-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.5rem;margin-bottom:2.5rem;display:flex}@media (max-width:768px){.save-container{border-radius:12px;padding:1.5rem}.save-section h3{margin-bottom:1.25rem;font-size:1.1rem}.save-controls{flex-direction:column;align-items:center;gap:1.5rem;margin-bottom:2rem}.recording-name-input{width:100%;min-width:auto;max-width:none}.save-btn{width:100%;max-width:300px}.retrieve-btn{width:100%;max-width:300px;margin:1.5rem auto 0}}@media (max-width:480px){.save-container{padding:1rem}.save-section h3{margin-bottom:1rem;font-size:1rem}.save-btn,.retrieve-btn{min-width:auto;height:48px;padding:.75rem 1rem;font-size:.85rem}.recording-name-input{height:48px;padding:.75rem}}.recording-name-input{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;box-sizing:border-box;background:#ffffff1a;border:1px solid #fff3;border-radius:16px;flex:2;min-width:250px;max-width:400px;height:56px;padding:1rem;font-size:1rem;font-weight:600}.recording-name-input::placeholder{color:#fff9}.recording-name-input:focus{background:#ffffff26;border-color:#fff6;outline:none;box-shadow:0 0 0 2px #ffffff1a}.save-btn,.retrieve-btn{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;cursor:pointer;white-space:nowrap;background:#ffffff1a;border:1px solid #fff3;border-radius:16px;justify-content:center;align-items:center;gap:.75rem;min-width:150px;height:56px;padding:1rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s;display:flex}.save-btn:hover:not(:disabled),.retrieve-btn:hover:not(:disabled){background:#fff3;transform:translateY(-2px);box-shadow:0 10px 25px #0003}.save-btn:active:not(:disabled),.retrieve-btn:active:not(:disabled){transform:translateY(0)}.save-btn:disabled{opacity:.5;cursor:not-allowed}.retrieve-btn{width:100%;max-width:300px;margin:2rem auto 0;display:flex}.saved-recordings{margin-top:2rem}.saved-recordings h2{color:#fff;margin-bottom:1.5rem;font-size:1.5rem;font-weight:600}.recording-item{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:12px;margin-bottom:1rem;padding:1.5rem}.recording-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.recording-header h3{color:#fff;margin:0;font-size:1.2rem;font-weight:600}.recording-actions{gap:.5rem;display:flex}.export-btn,.delete-btn{cursor:pointer;border:none;border-radius:6px;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:all .3s}.export-btn{color:#fff;background:#4caf50cc}.delete-btn{color:#fff;background:#f44336cc}.export-btn:hover,.delete-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0003}.recording-details{background:#0003;border-radius:8px;margin-bottom:1rem;padding:1rem}.recording-details pre{color:#ffffffe6;white-space:pre-wrap;margin:0;font-size:.9rem;line-height:1.4}.recording-full-data{margin-top:1rem}.recording-full-data summary{color:#fffc;cursor:pointer;padding:.5rem 0;font-weight:500}.recording-full-data summary:hover{color:#fff}.recording-json{color:#fffc;white-space:pre-wrap;background:#0000004d;border:1px solid #ffffff1a;border-radius:8px;max-height:300px;margin-top:.5rem;padding:1rem;font-size:.8rem;line-height:1.4;overflow-y:auto}@media (max-width:768px){.save-controls{flex-direction:column;align-items:stretch}.recording-header{flex-direction:column;align-items:flex-start;gap:1rem}.recording-actions{align-self:stretch}.export-btn,.delete-btn{flex:1;min-height:44px}.recording-name-input{border-radius:12px;min-height:44px;padding:.75rem 1rem;font-size:16px}.save-btn,.retrieve-btn{border-radius:12px;min-width:100px;min-height:44px;padding:.75rem 1.5rem;font-size:.9rem}}@media (max-width:480px){.recording-item{padding:1rem}.recording-details{padding:.75rem}.recording-details pre{font-size:.8rem}.recording-json{padding:.75rem;font-size:.75rem}}@media (max-width:768px){*{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-khtml-user-select:none;-webkit-tap-highlight-color:transparent}input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}button,.control-btn,.export-btn,.save-btn,.retrieve-btn{min-width:44px;min-height:44px}input,select,textarea{font-size:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:high){.piano-app{background:linear-gradient(135deg,#000 0%,#333 100%)}.control-btn,.export-btn,.save-btn{border:2px solid #fff}}
.ReactPiano__Keyboard{display:flex;position:relative}.ReactPiano__Key{display:flex}.ReactPiano__Key--accidental{cursor:pointer;z-index:1;background:#555;border:1px solid #fff;border-top-color:#0000;border-radius:0 0 4px 4px;height:66%;position:absolute;top:0}.ReactPiano__Key--natural{cursor:pointer;z-index:0;background:#f6f5f3;border:1px solid #888;border-radius:0 0 6px 6px;flex:1;margin-right:1px}.ReactPiano__Key--natural:last-child{margin-right:0}.ReactPiano__Key--active{background:#3ac8da}.ReactPiano__Key--active.ReactPiano__Key--accidental{border:1px solid #fff;border-top-color:#3ac8da;height:65%}.ReactPiano__Key--active.ReactPiano__Key--natural{border:1px solid #3ac8da;height:98%}.ReactPiano__Key--disabled.ReactPiano__Key--accidental{background:#ddd;border:1px solid #999}.ReactPiano__Key--disabled.ReactPiano__Key--natural{background:#eee;border:1px solid #aaa}.ReactPiano__NoteLabelContainer{flex:1;align-self:flex-end}.ReactPiano__NoteLabel{text-align:center;text-transform:capitalize;-webkit-user-select:none;user-select:none;font-size:12px}.ReactPiano__NoteLabel--accidental{color:#f8e8d5;margin-bottom:3px}.ReactPiano__NoteLabel--natural{color:#888;margin-bottom:3px}.ReactPiano__NoteLabel--natural.ReactPiano__NoteLabel--active{color:#f8e8d5}
