*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:20px;color:#fff}.header{text-align:center;margin-bottom:30px}.header h1{font-size:2.5em;margin-bottom:10px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.status{background:#ffffff1a;padding:10px 20px;border-radius:25px;margin-bottom:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.status.connected{background:#4caf504d;border-color:#4caf50}.status.error{background:#f443364d;border-color:#f44336}.clock-status{background:#ffffff1a;padding:8px 16px;border-radius:20px;margin-bottom:15px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);font-size:14px;font-weight:500;text-align:center;transition:all .3s ease}.clock-status.synced{background:#4caf504d;border-color:#4caf50;box-shadow:0 0 10px #4caf504d}.clock-status.free{background:#ffc1074d;border-color:#ffc107;box-shadow:0 0 10px #ffc1074d}.clock-status.stopped{background:#f443364d;border-color:#f44336;box-shadow:0 0 10px #f443364d}.arpeggiator-controls{display:flex;gap:15px;margin-top:15px;padding:15px;background:#ffffff1a;border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);flex-wrap:wrap;justify-content:center}.arpeggiator-controls .control-group{background:#ffffff0d;padding:10px;border-radius:8px;min-width:120px}.arpeggiator-controls .control-group label{font-size:12px;margin-bottom:5px;opacity:.9}.arpeggiator-controls .control-group input[type=range]{width:100%;margin:5px 0}.arpeggiator-controls .control-group span{font-size:11px;opacity:.8}.controls{display:flex;gap:20px;margin-bottom:30px;flex-wrap:wrap;justify-content:center}.control-group{background:#ffffff1a;padding:15px;border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;border:1px solid rgba(255,255,255,.2)}.control-group label{display:block;margin-bottom:5px;font-weight:500}.control-group input,.control-group select{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 12px;border-radius:5px;font-size:14px}.wheel-indicator{padding:6px 10px;border-radius:14px;border:1px solid rgba(255,255,255,.3);background:#ffffff26;font-size:12px;min-width:48px;text-align:center;opacity:.9;transition:all .15s ease}.wheel-indicator.active{background:#4caf5059;border-color:#4caf50;box-shadow:0 0 8px #4caf5059}.piano-container{background:#0003;padding:20px;border-radius:15px;margin-bottom:30px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.piano{display:flex;position:relative;height:120px;margin:20px 0;-webkit-user-select:none;user-select:none}.key{border:1px solid #ccc;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;font-size:12px;font-weight:700;transition:all .1s ease;box-shadow:0 2px 4px #0003}.white-key{background:linear-gradient(to bottom,#fff,#f0f0f0);color:#333;width:40px;height:120px;margin-right:1px;padding-bottom:10px;border-radius:0 0 5px 5px}.black-key{background:linear-gradient(to bottom,#333,#111);color:#fff;width:25px;height:80px;position:absolute;z-index:2;padding-bottom:10px;border-radius:0 0 3px 3px}.white-key.active{background:linear-gradient(to bottom,#4caf50,#45a049);color:#fff;transform:scale(.98);box-shadow:0 1px 2px #0000004d}.black-key.active{background:linear-gradient(to bottom,#2196f3,#1976d2);transform:scale(.98);box-shadow:0 1px 2px #0000004d}.white-key.in-scale{box-shadow:0 0 12px #4caf5099,0 2px 4px #0003;border:2px solid rgba(76,175,80,.8)}.black-key.in-scale{box-shadow:0 0 12px #2196f3cc,0 2px 4px #0000004d;border:2px solid rgba(33,150,243,.9)}.white-key.active.in-scale{background:linear-gradient(to bottom,#4caf50,#45a049);color:#fff;transform:scale(.98);box-shadow:0 0 15px #4caf50cc,0 1px 2px #0000004d}.black-key.active.in-scale{background:linear-gradient(to bottom,#2196f3,#1976d2);transform:scale(.98);box-shadow:0 0 15px #2196f3e6,0 1px 2px #0000004d}.scale-filter-controls{display:flex;gap:15px;margin-top:15px;padding:15px;background:#ffffff1a;border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);flex-wrap:wrap;justify-content:center}.scale-filter-controls .control-group{background:#ffffff0d;padding:10px;border-radius:8px;min-width:120px}.scale-filter-controls .control-group label{font-size:12px;margin-bottom:5px;opacity:.9}.keyboard-mapping{background:#ffffff1a;padding:20px;border-radius:15px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);max-width:800px;margin-bottom:20px;border:1px solid rgba(255,255,255,.2)}.keyboard-mapping h3{margin-bottom:15px;text-align:center}.key-row,.keyboard-row{display:flex;justify-content:center;gap:5px;margin-bottom:10px}.keyboard-key{background:#fff3;padding:8px 12px;border-radius:5px;font-family:monospace;font-weight:700;min-width:40px;text-align:center;transition:all .1s ease}.keyboard-key.active{background:#4caf50;transform:scale(.95)}.kb-key{background:#fff3;padding:8px 12px;border-radius:5px;font-family:monospace;font-weight:700;min-width:40px;text-align:center;transition:all .1s ease;margin:2px}.kb-key.white-bg{background:#ffffff4d;color:#333;border:1px solid rgba(255,255,255,.5)}.kb-key.black-bg{background:#0009;color:#fff;border:1px solid rgba(255,255,255,.3)}.kb-key.control-key{background:#4caf504d;color:#4caf50;border:1px solid rgba(76,175,80,.5);font-weight:700}.kb-key.control-key.wide{min-width:120px}.kb-key.active{background:#4caf50;color:#fff;transform:scale(.95);box-shadow:0 2px 4px #0003}.instructions{background:#ffffff1a;padding:20px;border-radius:15px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);max-width:600px;text-align:center;border:1px solid rgba(255,255,255,.2)}.instructions h3,.instructions h4{margin-bottom:15px}.instructions h5{margin-bottom:10px;color:#4caf50}.instructions p{margin-bottom:10px;line-height:1.6}.instructions ol{text-align:left;margin:10px 0;padding-left:20px}.instructions code{background:#0000004d;padding:2px 6px;border-radius:3px;font-family:monospace}.octave-display{font-size:1.2em;font-weight:700;color:#4caf50;margin-bottom:10px}button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:700;transition:all .2s ease;margin:2px}button:hover{background:#ffffff4d;transform:translateY(-1px)}button:focus{outline:none;background:#4caf504d;border-color:#4caf50;box-shadow:0 0 8px #4caf5066}button:active{transform:translateY(0) scale(.98)}button.button-pressed{background:#4caf5066;border-color:#4caf50;box-shadow:0 0 12px #4caf5099;transform:translateY(0) scale(.96);transition:all .1s ease}button.button-pressed:hover{background:#4caf5080;box-shadow:0 0 15px #4caf50b3;transform:translateY(0) scale(.96)}input:focus,select:focus{outline:2px solid #4CAF50;outline-offset:2px;background:#ffffff4d}.key:focus{outline:2px solid #4CAF50;outline-offset:2px}.white-key:focus{background:linear-gradient(to bottom,#e8f5e8,#d0e0d0)}.black-key:focus{background:linear-gradient(to bottom,#555,#333)}.key-label{position:absolute;bottom:5px;font-size:10px;font-weight:400;opacity:.7;pointer-events:none}.black-key-label{position:absolute;bottom:5px;font-size:9px;font-weight:400;opacity:.8;color:#fffc;pointer-events:none}.piano-row{display:flex;position:relative;height:120px;margin:10px 0}.bottom-row,.top-row{margin-top:5px}.keyboard-wrapper{display:flex;flex-direction:column;align-items:center;gap:10px}@media (max-width: 768px){body{padding:10px}.header h1{font-size:2em}.controls{flex-direction:column;gap:10px;align-items:center}.control-group{width:100%;max-width:300px}.piano-container{padding:10px;overflow-x:auto}.piano{min-width:400px}.white-key{width:35px}.black-key{width:22px}.arpeggiator-controls{flex-direction:column;gap:10px}.keyboard-mapping{padding:15px;max-width:100%;transform:scale(.9);transform-origin:center top}.instructions{max-width:100%;padding:15px;text-align:left}}@media (max-width: 480px){.header h1{font-size:1.8em}.white-key{width:30px;height:100px}.black-key{width:20px;height:70px}.piano,.piano-row{height:100px}.keyboard-mapping{transform:scale(.75);transform-origin:center top}.kb-key{min-width:30px;padding:6px 8px;font-size:10px}}
