:root{--bg: #fafaf7;--surface: #ffffff;--ink: #1a1a1a;--ink-muted: #666;--ink-faint: #999;--chord: #b2362d;--chord-strum-once: #7a1f19;--accent: #3a6ea5;--rule: #e5e3dc;--section: #2a2a2a;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Menlo, Consolas, "Liberation Mono", monospace;--line-height-sheet: 1.15}@media (prefers-color-scheme: dark){:root{--bg: #17171a;--surface: #1e1e22;--ink: #ececec;--ink-muted: #aaa;--ink-faint: #777;--chord: #ff8a7a;--chord-strum-once: #ffb4a8;--accent: #7fb3ff;--rule: #2e2e34;--section: #d8d8d8}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app__topbar{display:flex;flex-direction:column;gap:.5rem;padding:.6rem 1rem;border-bottom:1px solid var(--rule);background:var(--surface);position:sticky;top:0;z-index:10}.app__topbar-row{display:flex;align-items:center;gap:.75rem;min-width:0}.app__topbar-row--secondary{flex-wrap:wrap;row-gap:.4rem}.app__brand{font-family:var(--font-mono);font-weight:600;font-size:.95rem;letter-spacing:.02em;color:var(--ink);flex-shrink:0}.app__brand-dot{color:var(--chord)}.app__song-picker{font-family:var(--font-ui);font-size:.85rem;padding:.35rem .6rem;border:1px solid var(--rule);border-radius:.35rem;background:var(--surface);color:var(--ink)}.app__mode{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase}.app__scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--sheet-pad-top, 2rem) 1.25rem var(--sheet-pad-bottom, 6rem);cursor:grab}.app__scroll--dragging{cursor:grabbing;user-select:none;-webkit-user-select:none}.app__scroll button,.app__scroll a,.app__scroll input,.app__scroll select{cursor:pointer}.app__status{max-width:60ch;margin:3rem auto;color:var(--ink-muted);font-size:.95rem}.app__error{border:1px solid var(--chord);background:color-mix(in srgb,var(--chord) 8%,transparent);color:var(--chord);padding:1rem 1.25rem;border-radius:.5rem;font-family:var(--font-mono);font-size:.85rem;white-space:pre-wrap}.app__back-to-top-wrap{display:flex;justify-content:center;margin:2.5rem 0 1rem}.app__back-to-top{font-family:var(--font-ui);font-size:.85rem;font-weight:500;letter-spacing:.01em;padding:.55rem 1.25rem;border:1px solid var(--rule);border-radius:.6rem;background:var(--surface);color:var(--ink);cursor:pointer;transition:border-color .15s,color .15s,background .15s,box-shadow .15s}.app__back-to-top:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}.app__back-to-top:active{transform:translateY(1px)}.app__footer{text-align:center;font-size:.72rem;color:var(--ink-faint);padding:.5rem 0 .25rem;letter-spacing:.02em}.app__asterisk-note{max-width:72ch;margin:0 auto 1.25rem;display:flex;align-items:baseline;gap:.5rem;padding:.5rem .75rem;border:1px solid color-mix(in srgb,var(--ink-muted) 25%,transparent);border-radius:.4rem;background:color-mix(in srgb,var(--ink-muted) 6%,transparent);color:var(--ink-muted);font-size:.85rem;line-height:1.3}.app__asterisk-note code{font-family:var(--font-mono);font-size:.85em;color:var(--chord);background:none;padding:0}.app__asterisk-note-mark{color:var(--chord);font-weight:700;font-size:1.1em;line-height:1}.disambiguation{max-width:44ch;margin:3rem auto}.disambiguation__heading{font-size:1rem;font-weight:600;color:var(--ink);margin:0 0 .25rem}.disambiguation__term{font-family:var(--font-mono);color:var(--chord)}.disambiguation__hint{margin:0 0 1rem;font-size:.85rem;color:var(--ink-muted)}.disambiguation__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.disambiguation__option{display:flex;align-items:baseline;gap:.6rem;width:100%;text-align:left;padding:.6rem .75rem;border:1px solid var(--rule);border-radius:.45rem;background:var(--surface);color:var(--ink);font-family:var(--font-ui);font-size:.9rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}.disambiguation__option:hover,.disambiguation__option:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);outline:none}.disambiguation__title{font-weight:600}.disambiguation__artist{color:var(--ink-muted);font-size:.85em}.disambiguation__key{margin-left:auto;font-family:var(--font-mono);font-size:.75em;color:var(--ink-faint)}.chordlegend__chip-button{display:block;padding:0;margin:0;border:none;background:none;color:inherit;font:inherit;cursor:pointer;border-radius:.3rem}.chordlegend__chip-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chordlegend__chip--picked{border-color:var(--accent)}.voicingstepper{display:inline-flex;align-items:center;gap:.1rem;margin-top:.1rem;font-family:var(--font-ui);font-size:.7rem;line-height:1;color:var(--ink-muted)}.voicingstepper__step,.voicingstepper__clear{min-width:1.35rem;height:1.35rem;padding:0;border:1px solid transparent;border-radius:.3rem;background:none;color:inherit;font:inherit;font-size:.95rem;line-height:1;cursor:pointer}.voicingstepper__step:hover,.voicingstepper__step:focus-visible,.voicingstepper__clear:hover,.voicingstepper__clear:focus-visible{border-color:var(--rule);color:var(--accent);outline:none}.voicingstepper__clear{margin-left:.15rem;font-size:.85rem}.voicingstepper__count{min-width:2.2rem;text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink)}.chordlegend__voicing-label{font-family:var(--font-ui);font-size:.6rem;letter-spacing:.02em;color:var(--ink-faint);white-space:nowrap}.chordlegend__voicing-note{display:block;font-family:var(--font-ui);font-size:.55rem;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);text-align:center;white-space:nowrap}.chord-sheet{max-width:72ch;margin:0 auto}.chord-sheet__header{margin-bottom:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.chord-sheet__title{font-family:var(--font-ui);font-size:1.75rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.01em}.chord-sheet__artist{margin:0;color:var(--ink-muted);font-size:1rem}.credits{display:flex;flex-direction:column;gap:.1rem;margin-top:.15rem}.credits__line{margin:0;font-size:1rem;color:var(--ink-muted);line-height:1.4}.credits__line--composer,.credits__line--lyricist{font-size:.85rem}.credits__role{color:var(--ink-faint);font-size:.72em;letter-spacing:.08em;text-transform:uppercase;margin-right:.45rem}.credits__sep{color:var(--ink-faint);margin:0 .35rem}.credits__name{padding:0;border:none;background:none;font:inherit;color:var(--ink-muted);cursor:pointer;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}button.credits__name:hover,button.credits__name:focus-visible{color:var(--accent);border-bottom-color:color-mix(in srgb,var(--accent) 50%,transparent);outline:none}.chord-sheet__meta{display:flex;gap:1.5rem;margin:.75rem 0 0;padding:0;font-size:.8rem;color:var(--ink-muted)}.chord-sheet__meta-item{display:flex;gap:.35rem;margin:0}.chord-sheet__meta-item dt{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;align-self:center}.chord-sheet__meta-item dd{margin:0;color:var(--ink);font-family:var(--font-mono)}.section{margin-bottom:2rem}.section__name{font-family:var(--font-ui);font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--section);margin:0 0 .75rem;padding-bottom:.3rem;border-bottom:1px dashed var(--rule);text-align:center}.section__lines{overflow-x:visible;padding-left:0;padding-right:1em}.line{margin-bottom:.25rem;font-family:var(--font-mono);font-size:calc(.95rem * var(--lyric-font-scale, 1));line-height:var(--line-height-sheet);color:var(--ink);white-space:pre-wrap;word-break:normal;overflow-wrap:anywhere;overflow:visible}.line--blank{height:1.25rem}.line--focused{background:color-mix(in srgb,var(--accent) 12%,transparent);box-shadow:-.4rem 0 color-mix(in srgb,var(--accent) 12%,transparent),.4rem 0 color-mix(in srgb,var(--accent) 12%,transparent);border-radius:.2rem}.line__gap{white-space:inherit}.stack{display:inline-block;vertical-align:bottom;white-space:nowrap;min-width:calc(var(--chord-len, 0) * 1.18ch * var(--chord-font-scale, 1))}.stack__chord{display:block;line-height:1.25;font-weight:700;letter-spacing:0;color:var(--chord);white-space:nowrap}.stack__word{display:block;font-weight:400}.stack__word--empty{white-space:pre}.stack--chord-in-gap{min-width:calc(var(--chord-len, 0) * 1.18ch * var(--chord-font-scale, 1) + .4ch)}.line:not(.line--with-chords) .stack__chord{display:none}.line--chord-only .stack__word{display:none}.seg{white-space:inherit}.seg--chord{font-size:calc(1.18em * var(--chord-font-scale, 1));font-weight:800;letter-spacing:.01em;display:inline-block;vertical-align:baseline}.seg--chord-strum-once{color:var(--chord-strum-once);font-style:italic}.seg--chord-odd,.seg--chord-picked{position:relative;text-decoration:underline dotted;text-decoration-thickness:1.5px;text-underline-offset:.18em}.seg--chord-picked{text-decoration-style:solid;text-decoration-color:var(--accent)}.seg--chord-pickable{position:relative;cursor:pointer}.seg--chord-odd:focus-visible,.seg--chord-picked:focus-visible,.seg--chord-pickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:.2rem}.seg__odd-shape{display:none;position:absolute;bottom:calc(100% + .3rem);left:50%;transform:translate(-50%);z-index:20;padding:.2rem .3rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);box-shadow:0 4px 14px color-mix(in srgb,var(--ink) 18%,transparent);font-size:1rem;font-style:normal;font-weight:400;text-decoration:none;pointer-events:none}.seg__picker{position:absolute;bottom:calc(100% + .3rem);left:50%;transform:translate(-50%);z-index:30;display:flex;flex-direction:column;align-items:center;padding:.3rem .4rem .35rem;border:1px solid var(--accent);border-radius:.45rem;background:var(--bg);box-shadow:0 6px 18px color-mix(in srgb,var(--ink) 22%,transparent);font-size:1rem;font-style:normal;font-weight:400;cursor:default}.seg__picker--below{bottom:auto;top:calc(100% + .3rem)}.seg__picker-label{margin-top:.1rem;font-family:var(--font-ui);font-size:.6rem;color:var(--ink-faint);white-space:nowrap}.seg--chord-odd:hover .seg__odd-shape,.seg--chord-odd:focus .seg__odd-shape,.seg--chord-picked:hover .seg__odd-shape,.seg--chord-picked:focus .seg__odd-shape{display:block}.seg--ghost{visibility:hidden}.app__search{flex:1;display:flex;align-items:center;position:relative;min-width:0}.app__search-status{font-size:.85rem;color:var(--ink-faint);font-style:italic}.app__search-status--error{color:var(--chord);font-style:normal}.songsearch{width:100%;position:relative}.songsearch__input{width:100%;padding:.5rem .75rem;font:inherit;font-size:.9rem;color:var(--ink);background:var(--bg);border:1px solid var(--rule);border-radius:.4rem;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.songsearch__input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.songsearch__input::placeholder{color:var(--ink-faint)}.songsearch__listbox{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;margin:0;padding:.25rem 0;list-style:none;background:var(--surface);border:1px solid var(--rule);border-radius:.5rem;box-shadow:0 8px 24px #0000001f,0 1px 3px #0000000f;max-height:min(420px,60vh);overflow-y:auto}.songsearch__option{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;cursor:pointer;font-size:.9rem;line-height:1.3}.songsearch__option--active{background:color-mix(in srgb,var(--accent) 14%,transparent)}.songsearch__option--current{border-left:2px solid var(--accent);padding-left:calc(.75rem - 2px)}.songsearch__option-title{color:var(--ink);font-weight:500;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.songsearch__option-artist{color:var(--ink-muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}.songsearch__empty{padding:.6rem .75rem;color:var(--ink-faint);font-size:.85rem;font-style:italic}.line--speed{display:flex;align-items:center;gap:.4rem;padding:.15rem .5rem;margin:.3rem 0;font-family:var(--font-ui);font-size:.75rem;font-style:italic;color:var(--ink-faint);border-left:2px solid color-mix(in srgb,var(--accent) 35%,transparent);background:color-mix(in srgb,var(--accent) 5%,transparent);border-radius:0 .25rem .25rem 0;-webkit-user-select:none;user-select:none}.line__speed-arrow{font-family:var(--font-mono);color:var(--accent);font-style:normal}.line__speed-label{letter-spacing:.02em}.playback{display:flex;align-items:center;gap:.6rem;font-family:var(--font-ui);flex-wrap:wrap;row-gap:.4rem}.playback__button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--rule);border-radius:50%;background:var(--bg);color:var(--ink);cursor:pointer;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease;flex-shrink:0}.playback__button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.playback__button:disabled{opacity:.4;cursor:not-allowed}.playback__button svg{fill:currentColor}.playback__button--playing{background:var(--accent);border-color:var(--accent);color:var(--surface)}.playback__button--playing:hover:not(:disabled){color:var(--surface);background:color-mix(in srgb,var(--accent) 85%,black);border-color:color-mix(in srgb,var(--accent) 85%,black)}.playback__slider{display:inline-flex;align-items:center;gap:.4rem;flex:1;min-width:0}.playback__slider-label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);flex-shrink:0}.playback__slider input[type=range]{flex:1;min-width:80px;max-width:220px;accent-color:var(--accent);cursor:pointer}.playback__slider input[type=range]:disabled{cursor:not-allowed;opacity:.4}.playback__mult-readout{display:inline-flex;align-items:baseline;gap:.05rem;padding:.15rem .35rem;border:1px solid transparent;border-radius:.25rem;background:transparent;color:var(--ink);font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;cursor:pointer;min-width:3rem;justify-content:flex-end;flex-shrink:0}.playback__mult-readout:hover:not(:disabled){border-color:var(--rule)}.playback__mult-readout:disabled{cursor:default;opacity:.5}.playback__mult-x{color:var(--ink-faint);margin-left:.05rem}.playback__readout{display:inline-flex;align-items:baseline;gap:.2rem;padding:.15rem .4rem;border-radius:.25rem;background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink-muted);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums;flex-shrink:0}.playback__readout--marker{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.playback__readout-unit{color:var(--ink-faint);font-size:.7rem}.playback__readout--marker .playback__readout-unit{color:color-mix(in srgb,var(--accent) 70%,var(--ink-faint))}.playback__readout-timer{margin-left:.35rem;padding-left:.35rem;border-left:1px solid color-mix(in srgb,var(--accent) 35%,transparent);font-size:.7rem}.transpose{display:flex;align-items:center;gap:.3rem;font-family:var(--font-ui);flex-shrink:0}.transpose__label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-right:.1rem}.transpose__key{font-family:var(--font-mono);font-size:.8rem;font-weight:600;padding:.15rem .3rem;border:1px solid var(--rule);border-radius:.25rem;background:var(--bg);color:var(--ink);cursor:pointer}.transpose__key:disabled{opacity:.4;cursor:not-allowed}.transpose__key--moved{border-color:var(--accent);color:var(--accent)}.transpose__step{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid var(--rule);border-radius:50%;background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-size:.85rem;line-height:1;cursor:pointer;transition:border-color .12s ease,color .12s ease}.transpose__step:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.transpose__step:disabled{opacity:.35;cursor:not-allowed}.transpose__readout{padding:.15rem .25rem;border:1px solid transparent;border-radius:.25rem;background:transparent;color:var(--ink-faint);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums;min-width:2.1rem;text-align:center;cursor:pointer}.transpose__readout:disabled{cursor:default}.transpose__readout--moved{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.transpose__readout--moved:hover{border-color:var(--accent)}.app__playhead{position:fixed;left:0;right:0;top:var(--playhead-top, 33vh);height:0;border-top:1px dashed color-mix(in srgb,var(--accent) 50%,transparent);pointer-events:none;z-index:5;opacity:0;transition:opacity .2s ease}.app__playhead--visible{opacity:1}@media (max-width: 640px){.app__topbar{padding:.5rem .75rem;gap:.4rem}.app__scroll{padding:1.25rem .75rem 5rem}.line{font-size:calc(.85rem * var(--lyric-font-scale, 1))}.chord-sheet__title{font-size:1.4rem}.playback__readout{font-size:.7rem}}.chordlegend{background:var(--surface);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:9;flex-shrink:0}.chordlegend__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-right:.5rem}.chordlegend__toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem 1rem;flex:1 1 auto;background:transparent;border:none;color:var(--ink-faint);font-family:var(--font-ui);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;text-align:left}.chordlegend__toggle:hover{color:var(--ink)}.chordlegend__sort{position:relative;flex:0 0 auto}.chordlegend__clear-picks{margin-left:auto;margin-right:.5rem;padding:.15rem .5rem;border:1px solid var(--rule);border-radius:.3rem;background:none;color:var(--ink-muted);font:inherit;font-size:.7rem;cursor:pointer}.chordlegend__clear-picks:hover,.chordlegend__clear-picks:focus-visible{color:var(--accent);border-color:var(--accent)}.chordlegend__sort-button{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .55rem;background:transparent;border:1px solid transparent;border-radius:.35rem;color:var(--ink-faint);font-family:var(--font-ui);font-size:.65rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.chordlegend__sort-button:hover,.chordlegend__sort-button[aria-expanded=true]{color:var(--ink);border-color:var(--rule)}.chordlegend__sort-icon{display:block;flex:0 0 auto}.chordlegend__sort-label{white-space:nowrap}.chordlegend__sort-menu{position:absolute;top:calc(100% + 4px);right:0;margin:0;padding:.25rem;list-style:none;background:var(--surface);border:1px solid var(--rule);border-radius:.4rem;box-shadow:0 6px 18px #00000040;z-index:20;min-width:200px}.chordlegend__sort-item{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;padding:.4rem .55rem;background:transparent;border:none;border-radius:.3rem;color:var(--ink);font-family:var(--font-ui);text-align:left;cursor:pointer}.chordlegend__sort-item:hover,.chordlegend__sort-item--active{background:var(--bg)}.chordlegend__sort-item-label{font-size:.78rem;font-weight:600}.chordlegend__sort-item--active .chordlegend__sort-item-label:before{content:"✓";display:inline-block;width:1em;margin-right:.25rem;color:var(--ink)}.chordlegend__sort-item:not(.chordlegend__sort-item--active) .chordlegend__sort-item-label{padding-left:calc(1em + .25rem)}.chordlegend__sort-item-hint{font-size:.65rem;color:var(--ink-faint);padding-left:calc(1em + .25rem)}.chordlegend__chevron{display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;transition:transform .15s ease}.chordlegend__chevron--open{transform:rotate(90deg)}.chordlegend__label{display:inline-flex;align-items:baseline;gap:.3rem}.chordlegend__count{color:var(--ink-faint);font-variant-numeric:tabular-nums}.chordlegend__strip{display:flex;gap:.4rem;align-items:flex-start;padding:0 1rem .6rem;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;flex:1 1 auto;min-width:0}.chordlegend__strip::-webkit-scrollbar{height:6px}.chordlegend__strip::-webkit-scrollbar-track{background:transparent}.chordlegend__strip::-webkit-scrollbar-thumb{background:var(--rule);border-radius:3px}.chordlegend__chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.25rem .4rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink)}.chordlegend__chip--dim{opacity:.42;filter:saturate(.7)}.chordlegend__divider{flex:0 0 auto;align-self:stretch;width:1px;margin:.25rem .4rem;background:var(--rule);border:0}.chorddiagram{display:block;color:var(--ink)}.chorddiagram__name{fill:var(--chord-name-color, var(--ink))}@media (max-width: 640px){.chordlegend__toggle{padding:.3rem .75rem}.chordlegend__strip{width:100%}}.app__shuffle{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink-muted);cursor:pointer;flex-shrink:0;transition:color .12s ease,border-color .12s ease,background .12s ease,transform .12s ease}.app__shuffle:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.app__shuffle:active:not(:disabled){transform:scale(.94)}.app__shuffle:disabled{opacity:.4;cursor:not-allowed}.app__edit,.app__copy,.app__ticker,.app__audio{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 .65rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink-muted);font:inherit;font-size:.78rem;font-weight:600;letter-spacing:.02em;cursor:pointer;flex-shrink:0;white-space:nowrap;transition:color .12s ease,border-color .12s ease,background .12s ease,transform .12s ease}.app__edit:hover:not(:disabled),.app__copy:hover:not(:disabled),.app__ticker:hover:not(:disabled),.app__audio:hover{color:var(--accent);border-color:var(--accent)}.app__audio input{display:none}.app__audio--loaded{color:var(--accent);border-color:var(--accent)}.app__audio-name{max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app__edit:active:not(:disabled),.app__copy:active:not(:disabled),.app__ticker:active:not(:disabled){transform:scale(.97)}.app__edit:disabled,.app__copy:disabled,.app__ticker:disabled{opacity:.4;cursor:not-allowed}.app__edit--active,.app__ticker--active{color:var(--bg);background:var(--accent);border-color:var(--accent)}.app__edit--active:hover:not(:disabled),.app__ticker--active:hover:not(:disabled){color:var(--bg);background:var(--accent);border-color:var(--accent);filter:brightness(1.05)}.app__copy--ok{color:var(--bg);background:#2e7d32;border-color:#2e7d32}.app__copy--err{color:var(--bg);background:#c62828;border-color:#c62828}.chord-sheet--editing{outline:1px dashed var(--rule);outline-offset:6px;border-radius:4px}.seg--chord-editable{cursor:grab;touch-action:none;position:relative}.seg--chord-editable:after{content:"";position:absolute;top:-2px;right:-1px;bottom:-2px;left:-1px;border:1px dashed transparent;border-radius:3px;pointer-events:none;transition:border-color .12s ease,background .12s ease}.seg--chord-editable:hover:after{border-color:var(--rule);background:#7f7f7f0f}.seg--chord-dragging{cursor:grabbing}.seg--chord-dragging:after{border-color:var(--accent);background:#7f7f7f1a}.app--editing .stack__chord,.app--editing .seg--chord{user-select:none;-webkit-user-select:none}.app__settings{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink-muted);cursor:pointer;flex-shrink:0;transition:color .12s ease,border-color .12s ease,transform .12s ease}.app__settings:hover{color:var(--accent);border-color:var(--accent)}.app__settings:active{transform:scale(.95) rotate(20deg)}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem;animation:settings-fade-in .14s ease-out}@keyframes settings-fade-in{0%{opacity:0}to{opacity:1}}.settings-panel{width:min(420px,100%);max-height:calc(100dvh - 2rem);overflow-y:auto;background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:.6rem;box-shadow:0 20px 60px #00000059;padding:1rem 1.1rem 1.1rem;outline:none;animation:settings-slide-in .18s ease-out}@keyframes settings-slide-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.settings-panel__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}.settings-panel__title{margin:0;font-size:1rem;font-weight:700;letter-spacing:.01em}.settings-panel__close{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;background:transparent;border:1px solid transparent;border-radius:.35rem;color:var(--ink-muted);cursor:pointer;transition:color .12s ease,border-color .12s ease}.settings-panel__close:hover{color:var(--accent);border-color:var(--rule)}.settings-section{padding:.7rem 0;border-top:1px solid var(--rule)}.settings-section:first-of-type{border-top:none;padding-top:.2rem}.settings-section__title{margin:0 0 .55rem;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.settings-row{display:grid;grid-template-columns:4.2rem 1fr 2.4rem;align-items:center;gap:.65rem;padding:.3rem 0;font-size:.85rem}.settings-row__label{color:var(--ink);font-weight:500}.settings-row__slider{width:100%;accent-color:var(--accent);cursor:pointer}.settings-row__value{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-muted);text-align:right;font-variant-numeric:tabular-nums}.settings-palettes{display:grid;grid-template-columns:1fr;gap:.4rem}.settings-palette{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.7rem;padding:.45rem .55rem;border:1px solid var(--rule);border-radius:.45rem;background:var(--bg);color:inherit;font:inherit;cursor:pointer;text-align:left;transition:border-color .12s ease,background .12s ease}.settings-palette:hover{border-color:var(--accent)}.settings-palette--selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg))}.settings-voicing{grid-template-columns:1fr}.settings-voicing__desc{font-size:.72rem;color:var(--ink-muted)}.settings-palette__swatches{display:inline-flex;align-items:center;gap:0;border-radius:.3rem;overflow:hidden;border:1px solid var(--rule)}.settings-palette__chip{display:inline-block;width:14px;height:22px}.settings-palette__meta{display:flex;flex-direction:column;min-width:0}.settings-palette__name{font-size:.85rem;font-weight:600;color:var(--ink)}.settings-palette__desc{font-size:.72rem;color:var(--ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-panel__footer{display:flex;justify-content:flex-end;margin-top:.4rem;padding-top:.7rem;border-top:1px solid var(--rule)}.settings-panel__reset{display:inline-flex;align-items:center;height:28px;padding:0 .7rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink-muted);font:inherit;font-size:.78rem;font-weight:600;cursor:pointer;transition:color .12s ease,border-color .12s ease}.settings-panel__reset:hover{color:var(--accent);border-color:var(--accent)}.app__wheel{float:right;width:180px;max-width:180px;margin:0 0 .75rem 1rem}.chord-wheel{width:100%;height:auto;display:block;user-select:none;-webkit-user-select:none}.chord-wheel__seg{fill:var(--bg);stroke:var(--rule);stroke-width:1;transition:fill .2s ease}.chord-wheel__seg--minor{fill:color-mix(in srgb,var(--bg) 70%,var(--rule))}.chord-wheel__seg--active{stroke:var(--surface);stroke-width:1.2}.chord-wheel__label{font-family:var(--font-ui);font-weight:700;fill:var(--ink-muted);pointer-events:none}.chord-wheel__label--major{font-size:11px}.chord-wheel__label--minor{font-size:9px}.chord-wheel__label--on-fill{fill:#1a1a1a}.chord-wheel__extrusion{stroke:var(--surface);stroke-width:1}.chord-wheel__hub{fill:var(--surface);stroke:var(--rule);stroke-width:1}@media (max-width: 640px){.app__wheel{width:130px;max-width:130px;margin:0 0 .5rem .5rem}}.app__wheel-button{display:block;width:100%;padding:0;margin:0;background:transparent;border:none;border-radius:.4rem;color:inherit;cursor:pointer;outline:none}.app__wheel-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app__wheel-button:hover .chord-wheel,.app__wheel-button:focus-visible .chord-wheel{filter:drop-shadow(0 1px 6px color-mix(in srgb,var(--accent) 35%,transparent))}.wheel-modal__panel{width:min(560px,100%);max-width:100%}.wheel-modal__body{display:flex;align-items:center;justify-content:center;padding:.25rem 0 .5rem;cursor:pointer}.wheel-modal__body .chord-wheel{width:100%;height:auto}.ticker{flex:0 0 auto;height:0;overflow:hidden;background:var(--surface);border-top:1px solid var(--rule);transition:height .18s ease}.ticker--active{height:6rem}.app__length{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0;font-size:.78rem;color:var(--ink-muted)}.app__length-label{font-weight:600;letter-spacing:.02em}.app__length input{width:7ch;height:28px;padding:0 .4rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-size:.78rem}.app__length input:focus-visible{outline:none;border-color:var(--accent)}.app__length button{height:28px;padding:0 .5rem;border:1px solid var(--rule);border-radius:.4rem;background:var(--bg);color:var(--ink-muted);font:inherit;font-size:.72rem;cursor:pointer;white-space:nowrap}.app__length button:hover{color:var(--accent);border-color:var(--accent)}.ticker--active.ticker--editing{height:8.5rem}.ticker__marks{position:absolute;inset:0 0 auto 0;height:1.6rem;pointer-events:none}.mark{position:absolute;top:0;height:.3rem;border-left:1px solid color-mix(in srgb,var(--ink-faint) 35%,transparent)}.mark--major{height:.62rem;border-left-color:color-mix(in srgb,var(--ink-muted) 60%,transparent)}.mark__label{position:absolute;left:.25rem;top:-.1rem;font-family:var(--font-mono);font-size:.62rem;color:var(--ink-faint);white-space:nowrap}.ticker--editing .tick{cursor:ew-resize}.tick--dragging{transform:translate(var(--drag, 0px));z-index:3}.tick--dragging .tick__word,.tick--dragging .tick__chord{color:var(--accent)}.ticker__ruler{position:absolute;visibility:hidden;pointer-events:none;white-space:pre;font-family:var(--font-mono);font-size:.95rem}.ticker__viewport{position:relative;height:100%;overflow:hidden;cursor:grab}.ticker__viewport--dragging{cursor:grabbing;user-select:none;-webkit-user-select:none}.ticker__strip{position:absolute;inset:0 auto 0 0;will-change:transform}.ticker__sections{position:absolute;inset:0 0 auto 0;height:1.15rem}.ticker__section{position:absolute;top:.2rem;font-family:var(--font-ui);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;padding-left:.3rem;border-left:1px solid var(--rule);line-height:1}.ticker__cells{position:absolute;top:1.15rem;right:0;bottom:0;left:0}.ticker__rests{position:absolute;top:1.15rem;right:0;bottom:0;left:0;pointer-events:none}.ticker__rest{position:absolute;bottom:1.35rem;height:0;border-top:2px dotted color-mix(in srgb,var(--ink-faint) 55%,transparent)}.tick__hold{position:absolute;bottom:1.35rem;height:0;border-top:2px solid color-mix(in srgb,var(--ink-muted) 45%,transparent);pointer-events:none}.tick{position:absolute;top:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;font-family:var(--font-mono);white-space:pre;line-height:1.25}.tick__chord{font-size:.8rem;font-weight:600;margin-bottom:.1rem}.tick__chord--once{text-decoration:underline;text-underline-offset:.15em}.tick__word{font-size:.95rem;color:var(--ink-muted);padding-bottom:.9rem;transition:color .12s ease}.tick--now .tick__word{color:var(--ink);text-shadow:0 0 .6rem color-mix(in srgb,var(--accent) 45%,transparent)}.ticker__played{position:absolute;inset:0 auto 0 0;width:30%;pointer-events:none;background:linear-gradient(to right,var(--surface),color-mix(in srgb,var(--surface) 72%,transparent) 60%,transparent)}.ticker__focus{position:absolute;top:0;bottom:0;left:30%;width:0;pointer-events:none;border-left:2px solid color-mix(in srgb,var(--accent) 70%,transparent)}.ticker__clock{position:absolute;left:.6rem;bottom:.3rem;display:flex;gap:.35rem;font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint);pointer-events:none}.ticker__clock-total:before{content:"/ "}@media (max-width: 640px){.ticker--active{height:5.25rem}.ticker__ruler,.tick__word{font-size:.85rem}}
