*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #1a1a2e;--bg-surface: #16213e;--bg-elevated: #0f3460;--accent: #2ecc71;--accent-glow: rgba(46, 204, 113, .4);--text: #eee;--text-muted: #888;--border: #333;--radius: 8px;font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--text);background-color:var(--bg)}body{min-height:100vh;display:flex;align-items:flex-start;justify-content:center}#root{width:100%;max-width:100%;padding:0}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:var(--border);outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg);box-shadow:0 0 6px var(--accent-glow)}input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg);box-shadow:0 0 6px var(--accent-glow)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes popupIn{0%{opacity:0;transform:translate(-50%) translateY(-4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app{padding:0}.main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;max-width:640px;margin:0 auto;padding:1.5rem;min-height:calc(100vh - 4rem)}h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.75rem}.navbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:1.5rem;min-height:4rem;padding:.5rem 1.25rem;background:var(--bg-surface);border-bottom:1px solid var(--border);width:100%}.page-title{font-size:1.4rem;font-weight:800;letter-spacing:.04em;color:var(--accent);text-align:center;cursor:pointer;border-bottom:1px dashed transparent;transition:border-color .15s ease}.page-title:hover{border-color:var(--accent)}.page-title-input{font-size:1.4rem;font-weight:800;letter-spacing:.04em;color:var(--accent);text-align:center;background:transparent;border:none;border-bottom:1px solid var(--accent);outline:none;font-family:inherit;width:100%;max-width:400px}.nav-group{display:flex;align-items:center;gap:.4rem}.nav-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:600}.nav-stepper{display:flex;align-items:center;gap:.25rem}.nav-btn{width:28px;height:28px;border-radius:50%;background:var(--bg-elevated);border:1px solid var(--border);font-size:1rem;font-weight:600;color:var(--text);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.nav-btn:hover:not(:disabled){border-color:var(--accent)}.nav-btn:disabled{opacity:.3;cursor:default}.nav-input{font-size:1.1rem;font-weight:800;background:transparent;border:none;color:var(--text);text-align:center;width:3.5ch;font-family:inherit;-moz-appearance:textfield}.nav-input::-webkit-outer-spin-button,.nav-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.nav-input:focus{outline:none;border-bottom:2px solid var(--accent)}.nav-spacer{flex:1}.nav-settings{position:relative}.nav-settings-btn{width:36px;height:36px;border-radius:50%;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.nav-settings-btn:hover{border-color:var(--accent);color:var(--text)}.settings-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;min-width:220px;overflow:hidden;z-index:70;animation:slideDown .15s ease-out}.settings-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.75rem 1rem;font-size:.85rem;color:var(--text);transition:background .1s ease;border-bottom:1px solid var(--border)}.settings-item:last-child{border-bottom:none}.settings-item:hover{background:var(--bg-elevated)}.settings-item-label{font-weight:600}.settings-item-value{font-size:.75rem;color:var(--text-muted)}.settings-accent-mode{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;gap:.5rem}.settings-accent-mode .settings-item-label{font-size:.85rem;font-weight:600}.accent-mode-btns{display:flex;gap:.2rem}.accent-mode-btn{padding:.3rem .6rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);font-size:.7rem;font-weight:600;color:var(--text-muted);transition:all .15s ease}.accent-mode-btn:hover{border-color:var(--accent)}.accent-mode-btn.active{background:#2ecc7126;border-color:var(--accent);color:var(--accent)}.beat-display{text-align:center;padding:.5rem 0}.beats-grid{display:flex;flex-direction:column;align-items:center;gap:1rem}.bars-row{display:flex;justify-content:center;gap:1.5rem}.bar-group{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}.bar-label{font-size:.8rem;font-weight:600;color:var(--text-muted);white-space:nowrap;width:64px;text-align:center}.multi-bar .bar-label{width:44px}.bar-beats{display:flex;gap:.3rem;align-items:flex-end}.multi-bar .beat-indicator{width:44px;height:44px}.multi-bar .beat-indicator .beat-number{font-size:.9rem}.beat-cell{display:flex;flex-direction:column;align-items:center;gap:.15rem;position:relative}.beat-indicator{width:64px;height:64px;border-radius:50%;border:2.5px solid var(--border);display:flex;align-items:center;justify-content:center;transition:all .06s ease;background:transparent;cursor:pointer;padding:0}.beat-indicator:hover{border-color:var(--accent);opacity:.85}.beat-indicator .beat-number{font-size:1.2rem;font-weight:600;color:var(--text-muted);transition:color .06s ease}.beat-indicator.accent-1{border-color:#2ecc7159}.beat-indicator.accent-1 .beat-number{color:#2ecc7180}.beat-indicator.accent-2{border-color:#2ecc71a6}.beat-indicator.accent-2 .beat-number{color:#2ecc71bf}.beat-indicator.accent-3{border-color:var(--accent)}.beat-indicator.accent-3 .beat-number{color:var(--accent)}.beat-indicator.muted{border-color:var(--border);opacity:.4}.beat-indicator.muted .beat-number{text-decoration:line-through;color:var(--text-muted)}.beat-indicator.active{background:var(--bg-elevated);border-color:#5a7cbf;box-shadow:0 0 12px #5a7cbf4d}.beat-indicator.active .beat-number{color:#fff}.beat-indicator.active.accent-1{background:#2ecc714d;border-color:#2ecc7180;box-shadow:0 0 10px #2ecc7133}.beat-indicator.active.accent-2{background:#2ecc7199;border-color:#2ecc71cc;box-shadow:0 0 14px #2ecc714d}.beat-indicator.active.accent-2 .beat-number,.beat-indicator.active.accent-3 .beat-number{color:#fff}.beat-indicator.active.accent-3{background:var(--accent);border-color:var(--accent);box-shadow:0 0 18px var(--accent-glow)}.beat-indicator.selected{border-color:#5a7cbf;box-shadow:0 0 10px #5a7cbf66}.beat-note{font-size:1rem;font-weight:700;color:var(--accent);line-height:1;min-height:1rem}.multi-bar .beat-note{font-size:.85rem;min-height:.85rem}.edit-mode-tabs{display:flex;gap:.25rem}.edit-mode-tab{padding:.4rem 1.2rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);font-size:.8rem;font-weight:600;color:var(--text-muted);transition:all .15s ease}.edit-mode-tab:hover{border-color:var(--accent)}.edit-mode-tab.active{background:#2ecc7126;border-color:var(--accent);color:var(--accent)}.edit-mode-tab.clear-btn{color:var(--text-muted);border-color:transparent;background:transparent}.edit-mode-tab.clear-btn:hover{color:var(--accent);border-color:var(--accent)}.confirm-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;min-width:280px;text-align:center;animation:scaleIn .15s ease-out}.confirm-dialog p{margin:0 0 1.25rem;font-size:.95rem;color:var(--text)}.confirm-actions{display:flex;gap:.75rem;justify-content:center}.confirm-cancel,.confirm-ok{padding:.5rem 1.5rem;border-radius:var(--radius);font-size:.85rem;font-weight:600;cursor:pointer;border:1px solid var(--border);transition:all .15s ease}.confirm-cancel{background:var(--bg-surface);color:var(--text-muted)}.confirm-cancel:hover{border-color:var(--text-muted)}.confirm-ok{background:var(--accent);border-color:var(--accent);color:#fff}.confirm-ok:hover{filter:brightness(1.1)}.accent-tab-wrapper{position:relative}.accent-dropdown{position:absolute;top:100%;left:0;margin-top:.25rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;overflow:hidden;z-index:70;animation:slideDown .15s ease-out;min-width:130px}.accent-dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;font-size:.8rem;font-weight:600;color:var(--text);transition:background .1s ease;border-bottom:1px solid var(--border)}.accent-dropdown-item:last-child{border-bottom:none}.accent-dropdown-item:hover{background:var(--bg-elevated)}.accent-dropdown-item.active{color:var(--accent)}.accent-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.accent-dot-1{background:#2ecc7159}.accent-dot-2{background:#2ecc71a6}.accent-dot-3{background:var(--accent)}.accent-dot--1{background:var(--text-muted);position:relative}.accent-dot--1:after{content:"";position:absolute;top:50%;left:-1px;right:-1px;height:1.5px;background:var(--bg-surface);transform:rotate(-45deg)}.sub-popup{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:.35rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;z-index:50;animation:popupIn .15s ease-out;box-shadow:0 4px 16px #0006;display:flex;flex-direction:column;align-items:center;gap:.4rem}.sub-row{display:flex;gap:.3rem;align-items:flex-end}.sub-cell{display:flex;flex-direction:column;align-items:center;gap:.1rem}.sub-note{font-size:.65rem;font-weight:700;color:var(--accent);line-height:1;min-height:.65rem;white-space:nowrap}.sub-indicator{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;background:transparent;cursor:pointer;padding:0;transition:all .1s ease}.sub-indicator:hover{border-color:var(--accent)}.sub-indicator.accent-1{border-color:#2ecc7159}.sub-indicator.accent-2{border-color:#2ecc71a6}.sub-indicator.accent-3{border-color:var(--accent)}.sub-indicator.selected{border-color:#5a7cbf;box-shadow:0 0 8px #5a7cbf66}.sub-number{font-size:.75rem;font-weight:600;color:var(--text-muted)}.sub-indicator.accent-1 .sub-number{color:#2ecc7180}.sub-indicator.accent-2 .sub-number{color:#2ecc71bf}.sub-indicator.accent-3 .sub-number{color:var(--accent)}.sub-dot-inner{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.sub-indicator.accent-1 .sub-dot-inner{background:#2ecc7180}.sub-indicator.accent-2 .sub-dot-inner{background:#2ecc71bf}.sub-indicator.accent-3 .sub-dot-inner{background:var(--accent)}.sub-indicator.muted{border-color:var(--border);opacity:.4}.note-popup{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:.35rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;z-index:50;animation:popupIn .15s ease-out;box-shadow:0 4px 16px #0006;display:flex;flex-direction:column;align-items:center;gap:.4rem}.piano{position:relative;display:flex;width:350px;height:150px}.piano-white{flex:1;height:100%;background:#f0f0f0;border:1px solid #999;border-radius:0 0 4px 4px;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding-bottom:.3rem;position:relative;z-index:1;transition:background .1s ease}.piano-white:hover{background:#ddd}.piano-white.selected{background:var(--accent);border-color:var(--accent)}.piano-white.selected .piano-key-label{color:#fff}.piano-white .piano-key-label{font-size:.95rem;font-weight:700;color:#333}.piano-black{position:absolute;top:0;width:calc(100% / 7 * .65);height:62%;background:#222;border:1px solid #111;border-radius:0 0 3px 3px;cursor:pointer;transform:translate(-50%);z-index:2;display:flex;align-items:flex-end;justify-content:center;padding-bottom:.2rem;transition:background .1s ease}.piano-black:hover{background:#444}.piano-black.selected{background:var(--accent);border-color:var(--accent)}.piano-black .piano-key-label{font-size:.65rem;font-weight:700;color:#ccc}.piano-black.selected .piano-key-label{color:#fff}.piano-none{padding:.25rem .75rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);font-size:.7rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s ease}.piano-none:hover{border-color:var(--accent)}.piano-none.selected{background:#2ecc7126;border-color:var(--accent);color:var(--accent)}.stepper{display:flex;align-items:center;justify-content:center;gap:1rem}.stepper-btn{width:44px;height:44px;border-radius:50%;background:var(--bg-surface);border:1px solid var(--border);font-size:1.4rem;font-weight:600;color:var(--text);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.stepper-btn:hover:not(:disabled){border-color:var(--accent);background:var(--bg-elevated)}.stepper-btn:disabled{opacity:.3;cursor:default}.stepper-value{font-size:2rem;font-weight:800;min-width:3ch;text-align:center}.subdivision-section{text-align:center}.subdivision-row{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.subdivision-btn{display:flex;flex-direction:column;align-items:center;gap:.35rem;width:52px;height:58px;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);padding:.5rem .25rem;transition:all .15s ease}.subdivision-btn:hover{border-color:var(--accent)}.subdivision-btn.selected{background:#2ecc7126;border-color:var(--accent)}.subdivision-dots{display:flex;gap:3px;align-items:center;justify-content:center;height:16px}.subdivision-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.subdivision-btn.selected .subdivision-dot{background:var(--accent)}.subdivision-label{font-size:.7rem;font-weight:600;color:var(--text-muted)}.subdivision-btn.selected .subdivision-label{color:var(--accent)}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem;animation:fadeIn .15s ease-out}.modal-panel{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:scaleIn .15s ease-out}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-header h2{margin-bottom:0;font-size:1rem;text-transform:none;letter-spacing:normal;color:var(--text)}.modal-close{width:32px;height:32px;border-radius:50%;background:var(--bg-surface);border:1px solid var(--border);font-size:1.2rem;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.modal-close:hover{border-color:var(--accent);color:var(--text)}.sound-section{text-align:center}.sound-grid{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.sound-btn{padding:.5rem 1rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);font-size:.85rem;font-weight:600;color:var(--text);transition:all .15s ease}.sound-btn:hover{border-color:var(--accent)}.sound-btn.selected{background:#2ecc7126;border-color:var(--accent);color:var(--accent)}.hidden-input{display:none}.sample-controls{display:flex;justify-content:center;gap:.5rem;margin-top:.5rem}.sample-change-btn{padding:.3rem .75rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border);font-size:.75rem;font-weight:600;color:var(--text-muted);transition:all .15s ease}.sample-change-btn:hover{border-color:var(--accent);color:var(--text)}.auto-increment-section{text-align:center}.auto-config-row{display:flex;flex-direction:row;align-items:flex-end;justify-content:center;gap:2rem;margin-top:.5rem}.auto-toggle-label{font-size:.85rem;color:var(--text);font-weight:600}.toggle-switch{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer}.toggle-switch input{opacity:0;width:0;height:0}.toggle-track{position:absolute;inset:0;background:var(--border);border-radius:11px;transition:background .2s ease}.toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--text-muted);transition:all .2s ease}.toggle-switch input:checked+.toggle-track{background:var(--accent)}.toggle-switch input:checked+.toggle-track:after{left:21px;background:#fff}.auto-config{display:flex;flex-direction:row;justify-content:center;gap:2rem;transition:opacity .2s ease}.auto-config.disabled{opacity:.35;pointer-events:none}.auto-row{display:flex;flex-direction:column;align-items:center;gap:.35rem}.auto-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.stepper-sm{gap:.5rem}.stepper-btn-sm{width:32px;height:32px;font-size:1.1rem}.stepper-value-sm{font-size:1.2rem;min-width:3ch}.stepper-input-sm{font-size:1.2rem;font-weight:700;font-family:inherit;width:4ch;text-align:center;background:transparent;border:1px solid transparent;border-radius:var(--radius);color:var(--text);padding:.1rem 0;transition:border-color .15s ease}.stepper-input-sm:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated)}.stepper-input-sm:disabled{opacity:.4}.transport{display:flex;justify-content:center}.play-btn{width:200px;height:56px;border-radius:28px;background:var(--accent);color:#fff;font-size:1.1rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;transition:all .2s ease;box-shadow:0 4px 20px var(--accent-glow)}.play-btn:hover{transform:translateY(-1px);box-shadow:0 6px 24px var(--accent-glow)}.play-btn:active{transform:translateY(0)}.play-btn.playing{background:var(--bg-surface);border:2px solid var(--accent);color:var(--accent);box-shadow:none}.play-btn.playing:hover{background:#2ecc711a}.chord-config{display:flex;flex-direction:column;gap:.75rem;transition:opacity .2s ease}.chord-config.disabled{opacity:.35;pointer-events:none}.bass-volume-row{display:flex;align-items:center;justify-content:center;gap:.75rem}.bass-volume-slider{width:120px}.bass-volume-value{font-size:.8rem;font-weight:600;color:var(--text-muted);min-width:5ch}.preset-save-row{display:flex;gap:.5rem;margin-bottom:1rem}.preset-name-input{flex:1;padding:.5rem .75rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);color:var(--text);font-size:.85rem;font-family:inherit}.preset-name-input:focus{outline:none;border-color:var(--accent)}.preset-save-btn{padding:.5rem 1rem;border-radius:var(--radius);background:var(--accent);color:#fff;font-size:.85rem;font-weight:600;transition:opacity .15s ease}.preset-save-btn:disabled{opacity:.4;cursor:default}.preset-empty{text-align:center;color:var(--text-muted);font-size:.85rem;padding:1rem 0}.preset-list{display:flex;flex-direction:column;gap:.25rem;max-height:300px;overflow-y:auto}.preset-item{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;border-radius:var(--radius);background:var(--bg-surface);border:1px solid var(--border)}.preset-info{display:flex;flex-direction:column;gap:.1rem}.preset-item-name{font-size:.85rem;font-weight:600;color:var(--text)}.preset-item-detail{font-size:.7rem;color:var(--text-muted)}.preset-actions{display:flex;align-items:center;gap:.4rem}.preset-load-btn{padding:.3rem .75rem;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);font-size:.75rem;font-weight:600;color:var(--text);transition:all .15s ease}.preset-load-btn:hover{border-color:var(--accent);color:var(--accent)}.preset-overwrite-btn{padding:.3rem .75rem;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);font-size:.75rem;font-weight:600;color:var(--text-muted);transition:all .15s ease}.preset-overwrite-btn:hover{border-color:var(--accent);color:var(--accent)}.preset-overwrite-btn.saved{background:var(--accent);border-color:var(--accent);color:#fff}.preset-delete-btn{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:color .15s ease}.preset-delete-btn:hover{color:var(--accent)}
