:root{--bg-primary:#f8f9fa;--bg-secondary:#fff;--bg-tertiary:#e9ecef;--text-primary:#212529;--text-secondary:#495057;--text-muted:#6c757d;--accent-primary:#4dabf7;--accent-secondary:#339af0;--accent-dark:#228be6;--beat-normal:#adb5bd;--beat-left:#4dabf7;--beat-right:#ff8787;--beat-accent:#9b59b6;--beat-active:#40c057;--border-color:#dee2e6;--shadow:0 2px 8px #0000001a;--shadow-lg:0 4px 16px #00000026}@media (prefers-color-scheme:dark){:root{--bg-primary:#1a1a2e;--bg-secondary:#16213e;--bg-tertiary:#0f3460;--text-primary:#eaeaea;--text-secondary:#a0a0a0;--text-muted:#6c757d;--accent-primary:#4dabf7;--accent-secondary:#74c0fc;--accent-dark:#339af0;--beat-normal:#495057;--beat-left:#4dabf7;--beat-right:#ff8787;--beat-accent:#b084c9;--beat-active:#69db7c;--border-color:#343a40;--shadow:0 2px 8px #0000004d;--shadow-lg:0 4px 16px #0006}}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;transition:background-color .3s,color .3s}#app{min-height:100vh}.tempo-control[data-v-f38588b3]{background:var(--bg-secondary);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.tempo-display[data-v-f38588b3]{justify-content:center;align-items:center;gap:.5rem;display:flex}.tempo-input[data-v-f38588b3]{text-align:center;border:2px solid var(--border-color);width:120px;color:var(--text-primary);background:0 0;border-radius:8px;padding:.25rem;font-size:3rem;font-weight:700}.tempo-input[data-v-f38588b3]:focus{border-color:var(--accent-primary);outline:none}.tempo-label[data-v-f38588b3]{color:var(--text-secondary);font-size:1.2rem}.slider-container[data-v-f38588b3]{padding-bottom:2.5rem;position:relative}.tempo-slider[data-v-f38588b3]{appearance:none;background:var(--bg-tertiary);z-index:2;border-radius:4px;outline:none;width:100%;height:8px;position:relative}.tempo-slider[data-v-f38588b3]::-webkit-slider-thumb{appearance:none;background:var(--accent-primary);cursor:pointer;z-index:3;border-radius:50%;width:24px;height:24px;transition:transform .1s,background .2s;position:relative}.tempo-slider[data-v-f38588b3]::-webkit-slider-thumb:hover{background:var(--accent-secondary);transform:scale(1.1)}.tempo-slider[data-v-f38588b3]::-moz-range-thumb{background:var(--accent-primary);cursor:pointer;z-index:3;border:none;border-radius:50%;width:24px;height:24px}.tempo-marks[data-v-f38588b3]{pointer-events:none;height:40px;position:absolute;top:12px;left:12px;right:12px}.tempo-mark[data-v-f38588b3]{cursor:pointer;pointer-events:auto;background:0 0;border:none;flex-direction:column;align-items:center;gap:.25rem;padding:0;transition:all .2s;display:flex;position:absolute;transform:translate(-50%)}.tempo-mark[data-v-f38588b3]:hover{transform:translate(-50%)translateY(-2px)}.tempo-mark.is-active .mark-tick[data-v-f38588b3]{background:var(--accent-primary);height:16px}.tempo-mark.is-active .mark-label[data-v-f38588b3]{color:var(--accent-primary);font-weight:600}.tempo-mark:hover .mark-tick[data-v-f38588b3]{background:var(--accent-secondary);height:14px}.tempo-mark:hover .mark-label[data-v-f38588b3]{color:var(--accent-secondary)}.mark-tick[data-v-f38588b3]{background:var(--text-muted);width:2px;height:10px;transition:all .2s}.mark-label[data-v-f38588b3]{color:var(--text-muted);white-space:nowrap;font-size:.65rem;transition:all .2s}.tempo-range[data-v-f38588b3]{color:var(--text-muted);justify-content:space-between;margin-top:-1rem;font-size:.875rem;display:flex}.tap-button[data-v-f38588b3]{background:var(--accent-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:1rem 2rem;font-size:1rem;font-weight:600;transition:all .2s;position:relative}.tap-button[data-v-f38588b3]:hover{background:var(--accent-secondary);transform:translateY(-2px)}.tap-button[data-v-f38588b3]:active{transform:translateY(0)}.tap-message[data-v-f38588b3]{background:var(--bg-tertiary);color:var(--text-primary);white-space:nowrap;border-radius:4px;padding:.25rem .75rem;font-size:.875rem;position:absolute;top:-30px;left:50%;transform:translate(-50%)}@media (width<=640px){.tempo-control[data-v-f38588b3]{padding:1rem}.tempo-input[data-v-f38588b3]{width:100px;font-size:2.5rem}.mark-label[data-v-f38588b3]{font-size:.55rem}}.pattern-input[data-v-2380e9ad]{flex-direction:column;gap:.5rem;display:flex}.pattern-label[data-v-2380e9ad]{color:var(--text-primary);font-weight:600}.pattern-input-wrapper[data-v-2380e9ad]{justify-content:center;align-items:center;display:flex;position:relative}.pattern-field[data-v-2380e9ad]{background:var(--bg-secondary);border:2px solid var(--border-color);width:100%;color:var(--text-primary);text-transform:uppercase;letter-spacing:.1em;border-radius:8px;padding:.75rem 2.5rem .75rem 1rem;font-family:monospace;font-size:1.25rem}.pattern-field[data-v-2380e9ad]:focus{border-color:var(--accent-primary);outline:none}.pattern-field.has-error[data-v-2380e9ad]{border-color:var(--beat-accent)}.clear-button[data-v-2380e9ad]{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 .5rem;font-size:1.5rem;transition:color .2s;position:absolute;right:.5rem}.clear-button[data-v-2380e9ad]:hover{color:var(--beat-accent)}.error-message[data-v-2380e9ad]{color:var(--beat-accent);padding:.25rem 0;font-size:.875rem}.pattern-help[data-v-2380e9ad]{color:var(--text-secondary);font-size:.875rem}.pattern-help strong[data-v-2380e9ad]{color:var(--text-primary)}.pattern-preview[data-v-2380e9ad]{background:var(--bg-tertiary);border-radius:8px;flex-wrap:wrap;gap:.5rem;margin-top:.5rem;padding:.75rem;display:flex}.beat-char[data-v-2380e9ad]{background:var(--beat-normal);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;font-weight:700;transition:transform .2s;display:flex}.beat-char.is-left[data-v-2380e9ad]{background:var(--beat-left)}.beat-char.is-right[data-v-2380e9ad]{background:var(--beat-right)}.beat-char.is-accent[data-v-2380e9ad]{background:var(--beat-accent);box-shadow:0 0 8px var(--beat-accent);transform:scale(1.1)}.visualizer[data-v-fcad5e6d]{background:var(--bg-secondary);box-shadow:var(--shadow);border-radius:12px;padding:2rem;transition:background-color .2s}.visualizer.is-in-gap[data-v-fcad5e6d]{background:rgba(var(--bg-secondary), .5)}.gap-indicator[data-v-fcad5e6d]{border-bottom:1px solid var(--border-color);margin-bottom:1rem;padding-bottom:1rem}.gap-status[data-v-fcad5e6d]{text-align:center;color:var(--beat-active);background:rgba(var(--beat-active), .1);border-radius:8px;margin-bottom:.5rem;padding:.5rem;font-size:1rem;font-weight:700}.gap-status.in-gap[data-v-fcad5e6d]{color:var(--text-muted);background:rgba(var(--text-muted), .1)}.gap-progress-bar[data-v-fcad5e6d]{justify-content:center;gap:4px;height:8px;display:flex}.gap-progress-segment[data-v-fcad5e6d]{background:var(--bg-tertiary);border-radius:4px;flex:1;max-width:40px;height:100%;transition:background-color .2s}.gap-progress-segment.is-past[data-v-fcad5e6d]{background:var(--beat-active)}.gap-progress-segment.is-current[data-v-fcad5e6d]{background:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary)}.gap-progress-segment.is-gap[data-v-fcad5e6d]{background:rgba(var(--text-muted), .3)}.gap-progress-segment.is-gap.is-past[data-v-fcad5e6d]{background:var(--text-muted)}.gap-progress-segment.is-gap.is-current[data-v-fcad5e6d]{background:var(--beat-accent)}.visualizer-container[data-v-fcad5e6d]{flex-wrap:nowrap;justify-content:center;align-items:center;gap:.75rem;min-height:120px;padding:.5rem;display:flex;overflow-x:auto}.beat-indicator[data-v-fcad5e6d]{width:var(--beat-size,64px);height:var(--beat-size,64px);font-size:var(--beat-font-size,1.5rem);background:var(--beat-normal);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;transition:all .1s;display:flex;position:relative}.beat-indicator[data-v-fcad5e6d]:before{content:"";border:3px solid #0000;border-radius:50%;transition:border-color .1s;position:absolute;inset:-4px}.beat-indicator.small[data-v-fcad5e6d]{width:48px;height:48px;font-size:1.2rem}.beat-indicator.left[data-v-fcad5e6d]{background:var(--beat-left)}.beat-indicator.right[data-v-fcad5e6d]{background:var(--beat-right)}.beat-indicator.accent[data-v-fcad5e6d]{background:var(--beat-accent);box-shadow:0 0 15px var(--beat-accent);transform:scale(1.1)}.beat-indicator.is-active[data-v-fcad5e6d]{box-shadow:0 0 25px var(--beat-active);transform:scale(1.2)}.beat-indicator.is-active[data-v-fcad5e6d]:before{border-color:var(--beat-active)}.beat-indicator.is-active.accent[data-v-fcad5e6d]{box-shadow:0 0 30px var(--beat-accent), 0 0 45px var(--beat-active);transform:scale(1.3)}.beat-indicator.is-playing[data-v-fcad5e6d]{opacity:.6}.beat-indicator.is-active[data-v-fcad5e6d]{opacity:1}.beat-indicator.is-muted[data-v-fcad5e6d]{opacity:.3;filter:grayscale()}.empty-pattern[data-v-fcad5e6d]{color:var(--text-muted);text-align:center;font-style:italic}.polyrhythm-visualizer[data-v-fcad5e6d]{flex-direction:column;gap:1rem;display:flex}.hand-pattern[data-v-fcad5e6d]{flex-direction:column;gap:.5rem;display:flex}.hand-label[data-v-fcad5e6d]{color:var(--text-primary);font-size:.875rem;font-weight:600}.hand-beats[data-v-fcad5e6d]{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}@media (width<=640px){.visualizer[data-v-fcad5e6d]{padding:1rem}.visualizer-container[data-v-fcad5e6d]{gap:.5rem;min-height:80px}.beat-indicator.small[data-v-fcad5e6d]{width:40px;height:40px;font-size:1rem}}.preset-selector[data-v-9cf9a4da]{flex-direction:column;gap:.5rem;display:flex}.preset-label[data-v-9cf9a4da]{color:var(--text-primary);font-weight:600}.preset-grid[data-v-9cf9a4da]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem;display:grid}.preset-button[data-v-9cf9a4da]{background:var(--bg-secondary);border:2px solid var(--border-color);cursor:pointer;text-align:left;border-radius:8px;flex-direction:column;padding:.75rem;transition:all .2s;display:flex}.preset-button[data-v-9cf9a4da]:hover{border-color:var(--accent-primary);background:var(--bg-tertiary);transform:translateY(-2px)}.preset-name[data-v-9cf9a4da]{color:var(--text-primary);font-size:.9rem;font-weight:600}.preset-desc[data-v-9cf9a4da]{color:var(--text-muted);margin-top:.25rem;font-size:.75rem}.gap-training[data-v-bbeb1ec2]{background:var(--bg-tertiary);border:2px solid #0000;border-radius:8px;flex-direction:column;gap:.75rem;padding:1rem;transition:border-color .2s;display:flex}.gap-header[data-v-bbeb1ec2]{justify-content:space-between;align-items:center;display:flex}.gap-label[data-v-bbeb1ec2]{color:var(--text-primary);font-size:1rem;font-weight:600}.toggle-switch[data-v-bbeb1ec2]{cursor:pointer;width:50px;height:26px;display:inline-block;position:relative}.toggle-switch input[data-v-bbeb1ec2]{opacity:0;width:0;height:0}.toggle-switch input:checked+.toggle-slider[data-v-bbeb1ec2]{background:var(--accent-primary)}.toggle-switch input:checked+.toggle-slider[data-v-bbeb1ec2]:before{transform:translate(24px)}.toggle-slider[data-v-bbeb1ec2]{cursor:pointer;background:var(--beat-normal);border-radius:26px;transition:all .2s;position:absolute;inset:0}.toggle-slider[data-v-bbeb1ec2]:before{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:all .2s;position:absolute;bottom:3px;left:3px}.gap-controls[data-v-bbeb1ec2]{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.gap-input-group[data-v-bbeb1ec2]{flex-direction:column;flex:1;gap:.25rem;min-width:120px;display:flex}.gap-input-label[data-v-bbeb1ec2]{color:var(--text-secondary);font-size:.75rem}.gap-input[data-v-bbeb1ec2]{text-align:center;background:var(--bg-secondary);border:2px solid var(--border-color);color:var(--text-primary);border-radius:8px;width:100%;padding:.5rem;font-size:1.2rem}.gap-input[data-v-bbeb1ec2]:focus{border-color:var(--accent-primary);outline:none}.gap-divider[data-v-bbeb1ec2]{color:var(--text-muted);padding-bottom:.5rem;font-size:1.2rem}.gap-description[data-v-bbeb1ec2]{color:var(--text-secondary);margin:0;font-size:.875rem;font-style:italic}.polyrhythm[data-v-82ee774e]{background:var(--bg-tertiary);border:2px solid #0000;border-radius:8px;flex-direction:column;gap:.75rem;padding:1rem;transition:border-color .2s;display:flex}.poly-header[data-v-82ee774e]{justify-content:space-between;align-items:center;display:flex}.poly-label[data-v-82ee774e]{color:var(--text-primary);font-size:1rem;font-weight:600}.toggle-switch[data-v-82ee774e]{cursor:pointer;width:50px;height:26px;display:inline-block;position:relative}.toggle-switch input[data-v-82ee774e]{opacity:0;width:0;height:0}.toggle-switch input:checked+.toggle-slider[data-v-82ee774e]{background:var(--accent-primary)}.toggle-switch input:checked+.toggle-slider[data-v-82ee774e]:before{transform:translate(24px)}.toggle-slider[data-v-82ee774e]{cursor:pointer;background:var(--beat-normal);border-radius:26px;transition:all .2s;position:absolute;inset:0}.toggle-slider[data-v-82ee774e]:before{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:all .2s;position:absolute;bottom:3px;left:3px}.poly-controls[data-v-82ee774e]{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=640px){.poly-controls[data-v-82ee774e]{grid-template-columns:1fr}}.poly-input-group[data-v-82ee774e]{flex-direction:column;gap:.25rem;display:flex}.poly-input-label[data-v-82ee774e]{color:var(--text-primary);font-size:.875rem;font-weight:600}.poly-input[data-v-82ee774e]{background:var(--bg-secondary);border:2px solid var(--border-color);color:var(--text-primary);text-transform:uppercase;letter-spacing:.1em;border-radius:8px;padding:.75rem;font-family:monospace;font-size:1rem}.poly-input[data-v-82ee774e]:focus{border-color:var(--accent-primary);outline:none}.poly-hint[data-v-82ee774e]{color:var(--text-muted);font-size:.75rem}.poly-description[data-v-82ee774e]{color:var(--text-secondary);margin:0;font-size:.875rem;font-style:italic}.poly-description strong[data-v-82ee774e]{color:var(--text-primary)}.metronome[data-v-3b220b58]{max-width:800px;min-height:100vh;margin:0 auto;padding:1.5rem}.metronome-header[data-v-3b220b58]{text-align:center;margin-bottom:2rem}.metronome-main[data-v-3b220b58]{flex-direction:column;gap:1.5rem;display:flex}.title[data-v-3b220b58]{color:var(--text-primary);margin-bottom:.5rem;font-size:2rem;font-weight:700}.subtitle[data-v-3b220b58]{color:var(--text-secondary);font-size:1rem}.control-section[data-v-3b220b58],.visualizer-section[data-v-3b220b58],.pattern-section[data-v-3b220b58],.presets-section[data-v-3b220b58],.features-section[data-v-3b220b58]{width:100%}.features-section[data-v-3b220b58]{flex-direction:column;gap:1rem;display:flex}.play-section[data-v-3b220b58]{flex-direction:column;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.play-button[data-v-3b220b58]{background:var(--accent-primary);color:#fff;cursor:pointer;text-transform:uppercase;letter-spacing:.1em;border:none;border-radius:12px;width:100%;max-width:300px;padding:1.25rem 3rem;font-size:1.5rem;font-weight:700;transition:all .2s}.play-button[data-v-3b220b58]:hover:not(.is-disabled){background:var(--accent-secondary);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.play-button[data-v-3b220b58]:active:not(.is-disabled){transform:translateY(0)}.play-button.is-playing[data-v-3b220b58]{background:var(--beat-accent)}.play-button.is-playing[data-v-3b220b58]:hover{background:#ff5252}.play-button.is-disabled[data-v-3b220b58]{background:var(--beat-normal);cursor:not-allowed;opacity:.5}.play-hint[data-v-3b220b58]{color:var(--text-muted);font-size:.875rem}@media (width>=768px){.metronome[data-v-3b220b58]{padding:2rem}.title[data-v-3b220b58]{font-size:2.5rem}}
