.fretboard-container{display:inline-block;position:relative;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fretboard-background{border-radius:4px;box-shadow:0 2px 8px #0000001a}.string{border-radius:1px;box-shadow:0 1px 2px #0003}.nut{border-radius:2px;box-shadow:0 1px 3px #0000004d}.fret{border-radius:1px;box-shadow:0 0 1px #0000004d}.end-cap{border-radius:1px;box-shadow:0 0 2px #0006}.fret-marker{opacity:.6;box-shadow:inset 0 1px 2px #0003}.fret-marker-12{opacity:.8}.fret-number{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none}.dot{cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #0000004d}.dot:hover{transform:scale(1.1);box-shadow:0 3px 10px #0006}.dot.open-string{box-shadow:0 0 0 2px currentColor,0 2px 6px #0003}.dot.open-string:hover{transform:scale(1.1);box-shadow:0 0 0 2px currentColor,0 3px 10px #0000004d}.fretboard-dot{cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #0000004d}.fretboard-dot:hover{transform:scale(1.1);box-shadow:0 3px 10px #0006}.fretboard-dot.user-dot{cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #0006}.fretboard-dot.user-dot:hover{transform:scale(1.1);box-shadow:0 3px 12px #00000080}.fret-click-target{position:absolute;cursor:pointer;z-index:5;background:transparent;border:none;pointer-events:auto;border-radius:50%;transition:background-color .1s ease}.fret-click-target:hover{background:#3498db1a}.fretboard-dot.playing{z-index:20!important}.scale-dot{pointer-events:none;opacity:.7;transition:opacity .3s ease}.fretboard-container:hover .scale-dot{opacity:.4}@media(max-width:768px){.fretboard-container{max-width:100%;max-height:100vh}.dot{transform:scale(.9)}.dot:hover{transform:scale(1)}.fretboard-dot{transform:scale(.9)}.fretboard-dot:hover{transform:scale(1)}}.dot-appear{animation:dotAppear .3s ease-out}@keyframes dotAppear{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.dot-pulse{animation:dotPulse 1s ease-in-out infinite alternate}@keyframes dotPulse{0%{opacity:.7;transform:scale(.95)}to{opacity:1;transform:scale(1.05)}}.fretboard-dark .fretboard-background{background:#2d2d2d!important}.fretboard-dark .string{background:#666!important}.fretboard-dark .fret,.fretboard-dark .end-cap{background:#999!important}.fretboard-dark .nut{background:#111!important}.fretboard-dark .fret-number{color:#ccc!important}.fretboard-dark .fret-marker{background:#fff3!important}.fretboard-high-contrast .fretboard-background{background:#000!important}.fretboard-high-contrast .string,.fretboard-high-contrast .fret,.fretboard-high-contrast .end-cap,.fretboard-high-contrast .nut{background:#fff!important}.fretboard-high-contrast .fret-number{color:#fff!important;font-weight:700}.fretboard-high-contrast .dot,.fretboard-high-contrast .fretboard-dot{background:#ff0!important;color:#000!important;border:2px solid #000!important}@media print{.fretboard-container{break-inside:avoid;page-break-inside:avoid}.dot,.fretboard-dot{box-shadow:none;border:1px solid #000}.fret-marker{opacity:1}}.audio-controls{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0;align-items:center}.play-button{background:#27ae60;color:#fff;border:none;padding:12px 20px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:700;transition:all .2s ease;display:flex;align-items:center;gap:8px}.play-button:hover{background:#229954;transform:translateY(-1px);box-shadow:0 4px 12px #27ae604d}.play-button:active{transform:translateY(0)}.play-button.playing{background:#e74c3c}.play-button.playing:hover{background:#c0392b}.play-button:disabled{background:#95a5a6;cursor:not-allowed;transform:none;box-shadow:none}.play-button .icon{font-size:16px}.stop-button{background:#e74c3c;color:#fff;border:none;padding:12px 20px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:700;transition:all .2s ease}.stop-button:hover{background:#c0392b;transform:translateY(-1px);box-shadow:0 4px 12px #e74c3c4d}.stop-button:active{transform:translateY(0)}.audio-mode-selector{display:flex;gap:5px;margin-left:20px}.mode-button{background:#34495e;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:12px;transition:all .2s ease}.mode-button:hover{background:#2c3e50}.mode-button.active{background:#3498db}.mode-button.active:hover{background:#2980b9}.tempo-control{display:flex;align-items:center;gap:10px;margin-left:20px;color:#2c3e50;font-size:14px}.tempo-control label{font-weight:700}.tempo-control input{width:80px;padding:5px 8px;border:2px solid #ddd;border-radius:4px;font-size:12px}.tempo-control input:focus{outline:none;border-color:#3498db}.audio-status{margin-left:20px;padding:8px 12px;background:#ecf0f1;border-radius:4px;font-size:12px;color:#2c3e50}.audio-status.loading{background:#f39c12;color:#fff}.audio-status.ready{background:#27ae60;color:#fff}.audio-status.error{background:#e74c3c;color:#fff}@media(max-width:768px){.audio-controls{flex-direction:column;align-items:stretch}.audio-mode-selector,.tempo-control{margin-left:0;justify-content:center}.audio-status{margin-left:0;text-align:center}}:root{--ink: #142124;--ink-soft: #3a4b4d;--muted: #829092;--line: #dfe7e3;--paper: #f7f8f5;--canvas: #e9eeea;--rail: #f2f5f1;--accent: #e1ae51;--accent-deep: #b77d25;--teal: #1c4b51;--shadow: 0 24px 70px rgba(23, 43, 41, .13);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--canvas)}button,input,select{font:inherit}button{color:inherit}.app-shell{min-height:100vh;background:var(--canvas)}.topbar{height:76px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;background:var(--ink);color:#edf2ee}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;letter-spacing:.04em}.brand strong,.brand small{display:block;line-height:1}.brand strong{font-size:13px;letter-spacing:.14em}.brand small{margin-top:5px;color:#9eaeaa;font-size:8px;letter-spacing:.28em}.brand-mark{width:22px;height:28px;display:flex;align-items:center;justify-content:space-between;transform:skewY(-16deg)}.brand-mark i{display:block;width:2px;height:100%;background:var(--accent);border-radius:2px}.brand-mark i:nth-child(2){height:82%;opacity:.88}.brand-mark i:nth-child(3){height:64%;opacity:.7}.brand-mark i:nth-child(4){height:46%;opacity:.5}.topbar-actions{display:flex;align-items:center;gap:12px}.save-state{display:inline-flex;align-items:center;gap:7px;margin-right:12px;color:#aebcb8;font-size:11px}.save-state b{width:7px;height:7px;display:inline-block;border-radius:50%;background:#6dbb91;box-shadow:0 0 0 4px #6dbb911f}.save-state.changed b{background:var(--accent)}.save-state.changed{color:#d4c198}.button{border:1px solid transparent;border-radius:5px;padding:11px 15px;cursor:pointer;font-weight:700;font-size:11px;letter-spacing:.02em;transition:transform .16s ease,background .16s ease,border-color .16s ease}.help-button{text-decoration:none}.button:hover{transform:translateY(-1px)}.button.quiet{color:#cad4d0;background:transparent;border-color:#455556}.button.quiet:hover{background:#ffffff0f}.button.primary{color:#1a2727;background:var(--accent);border-color:var(--accent)}.button.primary:hover{background:#efc56f;border-color:#efc56f}.button span{padding-left:7px;font-size:16px;line-height:0}.workspace{display:grid;grid-template-columns:332px minmax(0,1fr);min-height:calc(100vh - 76px)}.control-rail{padding:31px 25px 24px;background:var(--rail);border-right:1px solid #d9e2dd}.rail-intro{margin:0 4px 28px}.eyebrow{display:block;color:var(--accent-deep);font-size:9px;font-weight:800;letter-spacing:.2em;text-transform:uppercase}.rail-intro h1{max-width:230px;margin:9px 0 8px;font-size:26px;line-height:1.03;letter-spacing:-.04em;font-weight:780}.rail-intro p{max-width:255px;margin:0;color:var(--muted);font-size:12px;line-height:1.55}.control-section{margin-bottom:15px;padding:18px 16px 16px;background:#ffffffa8;border:1px solid #e0e7e2;border-radius:8px}.section-heading{display:flex;align-items:center;gap:9px;margin-bottom:17px}.section-number{color:var(--accent-deep);font:800 9px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}.section-heading h2{margin:0;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.field-label{display:block;margin-bottom:7px;color:#758583;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.text-input,.select-input{width:100%;height:38px;padding:0 10px;border:1px solid #d4dfda;border-radius:4px;outline:0;background:#fff;color:var(--ink);font-size:12px;transition:border .16s ease,box-shadow .16s ease}.text-input:focus,.select-input:focus{border-color:#99b8b5;box-shadow:0 0 0 3px #397b771a}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:14px}.field-row>div{min-width:0}.choice-line{margin-top:15px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;background:#e5ece7;border-radius:5px}.segment{border:0;border-radius:3px;padding:8px 4px;background:transparent;color:#71817f;cursor:pointer;font-size:10px;font-weight:750}.segment.active{background:#fff;color:var(--teal);box-shadow:0 1px 3px #15393617}.color-grid{display:grid;grid-template-columns:1fr;gap:9px;margin-top:17px}.color-field{display:flex;align-items:center;justify-content:space-between;color:var(--ink-soft);font-size:11px}.color-field span{display:inline-flex;align-items:center;gap:7px}.swatch{width:11px;height:11px;display:inline-block;border-radius:50%;background:currentColor;border:2px solid rgba(0,0,0,.12)}.root-swatch{color:var(--accent)}.dot-swatch{color:var(--teal)}.ghost-swatch{color:#8c9aa0}.color-field input{width:29px;height:22px;padding:0;border:0;border-radius:3px;background:transparent;cursor:pointer}.range-field{display:block;margin-top:16px;color:var(--ink-soft);font-size:10px}.range-field>span{display:flex;justify-content:space-between;margin-bottom:6px}.range-field output{color:var(--muted);font-variant-numeric:tabular-nums}.range-field input{width:100%;accent-color:var(--teal)}.compact-section{padding-bottom:13px}.check-line{position:relative;display:flex;align-items:center;gap:9px;margin:11px 0;color:var(--ink-soft);font-size:11px;cursor:pointer}.check-line input{position:absolute;opacity:0}.check-box{width:15px;height:15px;display:inline-block;border:1px solid #bdccc5;border-radius:3px;background:#fff}.check-line input:checked+.check-box{border-color:var(--teal);background:var(--teal);box-shadow:inset 0 0 0 3px #fff}.mode-section{padding-bottom:15px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px}.mode-button{min-height:72px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid #dbe4df;border-radius:5px;background:#fff;color:#71817f;cursor:pointer}.mode-button.active{border-color:var(--teal);background:#edf5f1;color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}.mode-button span{font-size:10px;font-weight:800}.mode-button small{font-size:9px;color:#8c9995}.mode-dot{width:16px;height:16px;display:block;border-radius:50%;background:var(--teal);border:2px solid #102e32}.mode-dot.ghost{background:#9ba8ac;border-color:#6f7d80;opacity:.72}.mode-help{margin:11px 2px 0;color:var(--muted);font-size:10px;line-height:1.4;text-align:center}.rail-footer{margin:20px 4px 0;color:#7d8d89;font-size:10px;line-height:1.5}.rail-footer span{margin-right:5px;color:var(--accent-deep);font-weight:800;letter-spacing:.1em;text-transform:uppercase}.preview-area{display:flex;min-width:0;flex-direction:column;background:var(--canvas)}.preview-toolbar{min-height:83px;padding:22px 39px 18px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid #d7e0da}.preview-toolbar strong{display:block;margin-top:7px;color:var(--ink-soft);font-size:11px;letter-spacing:.09em}.toolbar-stats{display:flex;gap:18px;color:#7f8e8a;font-size:10px}.toolbar-stats b{color:var(--teal);font-size:16px;font-variant-numeric:tabular-nums}.preview-scroll{flex:1;overflow:auto;padding:38px}.chart-sheet{min-width:560px;width:min(100%,760px);min-height:760px;margin:0 auto;padding:38px 44px 28px;display:flex;flex-direction:column;background:var(--paper);box-shadow:var(--shadow)}.chart-heading{text-align:center}.chart-kicker{color:var(--accent-deep);font-size:9px;font-weight:800;letter-spacing:.2em;text-transform:uppercase}.chart-kicker.is-hidden{display:none}.chart-heading h2{margin:11px auto 13px;max-width:90%;overflow-wrap:anywhere;color:var(--ink);font-size:25px;line-height:1.06;letter-spacing:-.04em;font-weight:780}.chart-rule{height:6px;display:flex;align-items:center;justify-content:center}.chart-rule:before,.chart-rule:after{width:44px;height:1px;display:block;background:#c8d3cd;content:""}.chart-rule span{width:5px;height:5px;margin:0 8px;display:block;border-radius:50%;background:var(--accent)}.chart-body{flex:1;min-height:590px;padding:28px 0 26px;display:flex;align-items:center;justify-content:center;overflow:auto}.fretboard-container{display:inline-block;position:relative;padding:0;background:transparent;border:0;line-height:1;user-select:none}.chart-footer{display:flex;justify-content:space-between;padding-top:16px;border-top:1px solid #d8e0db;color:#869490;font:800 8px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase}.preview-hint{padding:12px 39px 17px;color:#8c9a96;font-size:10px;text-align:center}.hint-key{color:#6c807b;font:800 9px ui-monospace,monospace;letter-spacing:.1em}.hint-divider{width:4px;height:4px;margin:0 10px;display:inline-block;border-radius:50%;background:#b7c4bd;vertical-align:middle}.piano-container{--white-key-width: 42px;--white-key-height: 235px;position:relative;display:flex;width:max-content;height:var(--white-key-height);margin:0 auto;user-select:none;filter:drop-shadow(0 10px 9px rgba(37,44,37,.13))}.piano-container[hidden],.fretboard-container[hidden],#fretboard-layout-fields[hidden],.fretboard-display-only[hidden]{display:none}.piano-key{position:relative;flex:0 0 var(--white-key-width);width:var(--white-key-width);height:var(--white-key-height);border:1px solid #9da9a6;border-radius:0 0 6px 6px;background:#fbfcf9;cursor:pointer}.piano-key:hover{background:#f0f4ef}.piano-key.black{position:absolute;top:0;z-index:3;width:25px;height:145px;border-color:#0d1719;border-radius:0 0 5px 5px;background:#172326;transform:translate(-50%)}.piano-key.black:hover{background:#25383b}.piano-key.is-regular{background:var(--piano-dot-color, #234249);box-shadow:inset 0 -9px #ffffff21}.piano-key.black.is-regular{background:var(--piano-dot-color, #234249);box-shadow:inset 0 -7px #ffffff29}.piano-key.is-ghost{background:color-mix(in srgb,var(--piano-ghost-color, #8c9aa0) var(--piano-ghost-opacity, 72%),#fbfcf9)}.piano-key.black.is-ghost{background:color-mix(in srgb,var(--piano-ghost-color, #8c9aa0) var(--piano-ghost-opacity, 72%),#172326)}.piano-key.is-root{box-shadow:inset 0 0 0 4px var(--piano-root-color, #e6b85c)}.piano-key-label{position:absolute;bottom:11px;left:50%;z-index:4;min-width:25px;padding:3px 4px;transform:translate(-50%);border-radius:4px;background:#f7f8f5ed;color:#152326;font-size:10px;font-weight:850;line-height:1;text-align:center;pointer-events:none}.piano-key.black .piano-key-label{bottom:8px;font-size:9px}.piano-key:not(.is-regular):not(.is-ghost) .piano-key-label,.piano-key.is-ghost.hide-ghost-label .piano-key-label{display:none}.chart-sheet.is-piano{width:min(100%,980px)}.chart-sheet.is-piano .chart-body{min-height:480px;justify-content:flex-start}#fretboard-display{filter:drop-shadow(0 9px 8px rgba(37,44,37,.12))}.fretboard-dot{transition:transform .16s ease,filter .16s ease}.fretboard-dot:hover{filter:brightness(1.08)}.fret-click-target:hover{background:#1d4b511f}.export-dialog{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#0d1b1c8c;backdrop-filter:blur(5px)}.export-dialog[hidden]{display:none}.dialog-card{position:relative;width:min(100%,380px);padding:28px;border-radius:9px;background:#f8faf7;box-shadow:0 24px 80px #00000047}.dialog-close{position:absolute;top:15px;right:17px;border:0;background:transparent;color:#91a09b;cursor:pointer;font-size:24px;line-height:1}.dialog-card h2{margin:8px 0 7px;font-size:23px;letter-spacing:-.04em}.dialog-card p{margin:0 0 21px;color:var(--muted);font-size:12px}.export-options{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px}.export-option{padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:3px;border:1px solid #d6e1db;border-radius:5px;background:#fff;cursor:pointer}.export-option.active{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);background:#edf5f1}.export-option strong{color:var(--teal);font-size:21px}.export-option span{color:var(--ink-soft);font-size:11px;font-weight:750}.export-option small{color:var(--muted);font-size:9px}.full-button{width:100%}@media(max-width:980px){.workspace{grid-template-columns:285px minmax(0,1fr)}.control-rail{padding-left:18px;padding-right:18px}.preview-scroll{padding:28px 20px}.chart-sheet{min-width:520px;padding-left:32px;padding-right:32px}}@media(max-width:720px){.topbar{height:65px;padding:0 17px}.save-state,.topbar-actions .button.quiet:not(.help-button){display:none}.workspace{display:block}.control-rail{border-right:0;border-bottom:1px solid #d9e2dd}.rail-intro{display:none}.control-section{display:inline-block;width:calc(50% - 9px);margin-right:10px;vertical-align:top}.control-section:nth-of-type(2n){margin-right:0}.mode-section,.rail-footer{display:block;width:100%}.preview-toolbar{padding:18px}.preview-scroll{padding:20px 10px}.chart-sheet{min-width:470px;min-height:700px;padding:27px 23px 21px}.chart-body{min-height:530px}.preview-hint{padding-left:12px;padding-right:12px}.piano-container{--white-key-width: 35px;--white-key-height: 205px}.piano-key.black{width:22px;height:126px}}@media(max-width:480px){.control-section{display:block;width:100%;margin-right:0}.topbar-actions .button.primary{padding:9px 10px}.chart-sheet{min-width:430px}.toolbar-stats{gap:8px}.preview-toolbar strong{font-size:9px}}
