:root{--chord-hue:270;--chord-fill:#59169c;--chord-fill-bright:#8c36e2;--page-bg:#f7f7f8;--ch:0;--cs:55%;--cl:55%;--text:#4a4255;--text-h:#08060d;--border:#d0ccd6;--surface:#f2f0f5;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Consolas, monospace;font:16px/1.4 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--page-bg);-webkit-font-smoothing:antialiased;transition:background .3s}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#b0aac0;--text-h:#e8e4f0;--border:#5e5b80;--surface:#42406a}.chord-chip{background:hsl(var(--ch) var(--cs) calc(var(--cl) - 7%))}.arp-key{background:hsl(var(--chord-hue) 42% 48%)}}*{box-sizing:border-box}body{margin:0}#splash{z-index:1000;background:var(--page-bg);cursor:pointer;opacity:1;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:fixed;inset:0}#splash.splash--dismissed{opacity:0;pointer-events:none}.splash-text{font-family:var(--sans);color:var(--text-h);text-align:center;padding:32px;font-size:18px;font-weight:600;animation:1.2s ease-in-out infinite alternate splash-pulse}@keyframes splash-pulse{0%{opacity:.5;transform:scale(1)}to{opacity:1;transform:scale(1.04)}}kbd{min-width:24px;font-family:var(--mono);border:1.5px solid var(--border);background:var(--surface);color:var(--text-h);border-radius:4px;justify-content:center;align-items:center;padding:0 6px;font-size:12px;line-height:22px;display:inline-flex}#app{flex-direction:column;align-items:center;min-height:100svh;display:flex}#app,body{background:var(--page-bg);transition:background .35s}.container{flex-direction:column;align-items:center;gap:10px;width:100%;max-width:600px;padding:12px 12px 32px;display:flex}.header{text-align:center;width:100%}.header h1{font-family:var(--sans);color:var(--text-h);letter-spacing:-.2px;margin:0;font-size:18px;font-weight:600}.header p{display:none}.status-bar{color:var(--text);align-items:center;gap:8px;width:100%;font-size:14px;display:flex}.chord-badge{background:var(--chord-fill);color:#fff;width:30px;height:30px;font-family:var(--mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;transition:background .25s;display:inline-flex}.status-item{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.indicator{font-family:var(--mono);letter-spacing:1.2px;color:#fff;border-radius:4px;flex-shrink:0;align-items:center;padding:3px 8px;font-size:10px;font-weight:700;animation:.8s ease-in-out infinite alternate pulse;display:inline-flex}.indicator.hidden{display:none}.indicator--latch{background:var(--chord-fill);transition:background .25s}.indicator--arp{background:#cf8517}@keyframes pulse{0%{opacity:.7}to{opacity:1}}.header-actions{justify-content:center;gap:8px;width:100%;display:flex}.action-btn{border:1.5px solid var(--border);background:var(--surface);color:var(--text-h);font-family:var(--sans);cursor:pointer;border-radius:20px;align-items:center;gap:5px;padding:5px 14px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.action-btn:hover{border-color:var(--text);background:color-mix(in srgb, var(--surface) 85%, var(--text-h))}.song-card{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;flex-direction:column;width:100%;padding:12px;display:flex}.song-card.hidden{display:none}.song-chart{flex-direction:column;gap:10px;display:flex}.sc-header{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.sc-title{font-family:var(--sans);color:var(--text-h);font-size:16px;font-weight:700}.sc-composer{color:var(--text);opacity:.7;font-size:13px}.sc-meta{color:var(--text);font-size:12px;font-family:var(--mono);gap:12px;display:flex}.sc-meta span{background:color-mix(in srgb, var(--surface) 80%, var(--text-h));border-radius:4px;padding:2px 8px}.sc-sections{flex-direction:column;gap:8px;display:flex}.sc-section{flex-direction:column;gap:4px;display:flex}.sc-section-label{font-family:var(--mono);color:var(--text);text-transform:uppercase;letter-spacing:.3px;opacity:.6;font-size:10px;font-weight:700}.sc-chords{flex-wrap:wrap;gap:4px;display:flex}.sc-chord{border:1.5px solid var(--border);background:hsl(var(--chord-hue) 30% 92%);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;flex-direction:column;align-items:center;gap:2px;min-width:44px;padding:6px 8px;transition:border-color .12s,background .12s,transform 80ms;display:flex}.sc-chord:hover{border-color:var(--chord-fill);background:hsl(var(--chord-hue) 35% 88%);transform:translateY(-1px)}.sc-chord:active{transform:translateY(0)}.sc-chord--blank{opacity:.35;cursor:default;pointer-events:none;border-style:dashed}.sc-chord--blank:hover{border-color:var(--border);transform:none}.sc-label--blank{color:var(--text);opacity:.5;font-size:16px}@media (prefers-color-scheme:dark){.sc-chord{background:hsl(var(--chord-hue) 25% 28%);border-color:var(--border)}.sc-chord:hover{background:hsl(var(--chord-hue) 30% 34%);border-color:var(--chord-fill-bright)}}.sc-label{font-family:var(--mono);color:var(--text-h);font-size:14px;font-weight:700;line-height:1.1}.sc-bass{opacity:.65;font-size:10px;font-weight:500}.sc-quality{color:var(--text);opacity:.5;font-size:9px;line-height:1}.sc-keyhint{font-family:var(--mono);color:var(--text);opacity:.4;text-transform:uppercase;font-size:8px;line-height:1}.sc-ireal{border-top:1px solid var(--border);align-items:center;gap:6px;padding-top:6px;font-size:12px;display:flex}.ireal-link{color:var(--chord-fill);font-weight:600;text-decoration:none}.ireal-link:hover{text-decoration:underline}.ireal-fallback{color:var(--text);opacity:.6;font-size:11px}.ireal-fallback a{color:var(--text);text-decoration:underline}.import-section{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:6px;padding-top:10px;display:flex}.import-header{color:var(--text);text-transform:uppercase;letter-spacing:.3px;font-size:12px;font-weight:600}.import-input{border:1.5px solid var(--border);background:var(--surface);width:100%;color:var(--text-h);font-family:var(--mono);resize:vertical;box-sizing:border-box;border-radius:6px;min-height:50px;padding:8px 10px;font-size:11px;line-height:1.4}.import-input:focus{border-color:var(--chord-fill);outline:none}.import-btn{align-self:flex-start}.import-status{border-radius:4px;padding:6px 10px;font-size:12px}.import-status.hidden{display:none}.import-success{background:color-mix(in srgb, #22c55e 15%, var(--surface));color:#22c55e;border:1px solid color-mix(in srgb, #22c55e 30%, var(--border))}.import-error{background:color-mix(in srgb, #ef4444 15%, var(--surface));color:#ef4444;border:1px solid color-mix(in srgb, #ef4444 30%, var(--border))}.covers-card{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;flex-direction:column;width:100%;max-width:460px;display:flex;overflow:hidden}.covers-card.hidden{display:none}.pdf-container{flex-direction:column;align-items:center;width:100%;display:flex}.pdf-viewer{outline:none;flex-direction:column;align-items:center;gap:8px;width:100%;padding:12px;display:flex}.pdf-canvas-wrap{background:#fff;border-radius:6px;justify-content:center;width:100%;display:flex;overflow:hidden;box-shadow:0 1px 4px #0000001a}.pdf-canvas{max-width:100%;height:auto;display:block}.pdf-controls{justify-content:center;align-items:center;gap:12px;width:100%;display:flex}.pdf-btn{border:1.5px solid var(--border);background:var(--surface);color:var(--text-h);font-family:var(--sans);cursor:pointer;border-radius:6px;align-items:center;gap:4px;padding:6px 14px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.pdf-btn:hover:not(:disabled){border-color:var(--chord-fill);background:color-mix(in srgb, var(--surface) 85%, var(--chord-fill))}.pdf-btn:disabled{opacity:.35;cursor:default}.pdf-page-info{font-family:var(--mono);color:var(--text);text-align:center;min-width:60px;font-size:13px}.pdf-error{text-align:center;color:#ef4444;padding:24px;font-size:14px}.contact-card{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;width:100%;padding:12px;display:flex}.contact-card.hidden{display:none}.contact-name{font-family:var(--sans);color:var(--text-h);font-size:15px;font-weight:600}.contact-link{color:var(--text-h);align-items:center;gap:8px;padding:4px 0;font-size:14px;text-decoration:none;display:inline-flex}.contact-link:hover{text-decoration:underline}.contact-icon{flex-shrink:0;display:block}.lightbox{z-index:900;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox.hidden{display:none}.lightbox-backdrop{background:#000c;position:absolute;inset:0}.lightbox-content{justify-content:center;align-items:center;width:min(95vw,800px);max-height:90vh;display:flex;position:relative}.lightbox-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;line-height:1;transition:background .15s;display:flex;position:absolute;top:-36px;right:0}.lightbox-close:hover{background:#ffffff4d}.demo-video{background:#000;border-radius:8px;width:100%;height:auto;max-height:85vh;display:block}.chord-wheel{display:none}.chord-rows{flex-direction:column;gap:6px;width:100%;display:flex}.chord-row{align-items:stretch;gap:6px;display:flex}.row-chips{flex:1;grid-template-columns:repeat(12,1fr);gap:4px;display:grid}.chord-chip{border:1.5px solid var(--border);background:hsl(var(--ch) var(--cs) var(--cl));-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;padding:6px 2px;transition:border-color .12s,background .12s,transform 80ms;display:flex}.chord-chip.active{border-color:var(--ch-hex);background:hsl(var(--ch) 60% 42%);box-shadow:0 3px 10px hsl(var(--ch) 70% 45% / .25);transform:translateY(-1px)}@media (prefers-color-scheme:dark){.chord-chip.active{background:hsl(var(--ch) 55% 50%)}}.row-label{font-family:var(--mono);color:var(--text);text-transform:uppercase;letter-spacing:.3px;flex-shrink:0;justify-content:flex-end;align-items:flex-start;width:24px;padding:6px 0;font-size:10px;font-weight:700;line-height:1;display:flex}.chip-key{font-family:var(--mono);color:var(--text);text-transform:uppercase;opacity:.55;font-size:9px;font-weight:600;line-height:1}.chip-chord{font-family:var(--mono);color:var(--text-h);font-size:12px;font-weight:700;line-height:1.1}.piano-wrap{width:100%;padding:0;overflow-x:auto}.piano{border-radius:4px;height:52px;display:flex;position:relative;overflow:hidden}.piano-key{cursor:default;transition:background .15s;position:relative}.piano-key--white{z-index:1;background:#fff;flex:1 0 20px;height:100%;box-shadow:1px 0 #d4d4d4}.piano-key--white:last-child{box-shadow:none}.piano-key--black{z-index:2;background:#222;border-radius:0 0 3px 3px;width:14px;height:58%;margin:0 0 0 -7px}.piano-key--black+.piano-key--white,.piano-key--white+.piano-key--black{margin-left:-7px}.piano-label{font-family:var(--mono);color:var(--text);opacity:.4;pointer-events:none;font-size:7px;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.piano-key.chord-tone{background:hsl(var(--chord-hue) 55% 62%)}.piano-key--black.chord-tone{background:hsl(var(--chord-hue) 55% 40%)}.piano-key.active{background:hsl(var(--chord-hue) 55% 62%);transition:background}.piano-key--black.active{background:hsl(var(--chord-hue) 55% 40%);transition:background}@media (prefers-color-scheme:dark){.piano-key--white{background:#fff}.piano-key--black{background:#222}.piano-key.chord-tone{background:hsl(var(--chord-hue) 52% 48%)}.piano-key--black.chord-tone{background:hsl(var(--chord-hue) 50% 38%)}.piano-key.active{background:hsl(var(--chord-hue) 52% 48%)}.piano-key--black.active{background:hsl(var(--chord-hue) 50% 38%)}}.arp-board{flex-direction:column;gap:4px;width:100%;display:flex}.arp-row{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.arp-key{border:1.5px solid var(--border);background:hsl(var(--chord-hue) 48% 48%);-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:10px 4px;transition:border-color .12s,background .12s,transform 80ms;display:flex}.arp-key.active{border-color:var(--chord-fill);background:hsl(var(--chord-hue) 55% 42%);box-shadow:0 4px 16px hsl(var(--chord-hue) 70% 45% / .25);animation:.2s ease-out arp-pop;transform:translateY(-3px)}@media (prefers-color-scheme:dark){.arp-key.active{background:hsl(var(--chord-hue) 55% 50%)}}@keyframes arp-pop{0%{transform:translateY(0)}50%{transform:translateY(-4px)}to{transform:translateY(-3px)}}.arp-number{font-family:var(--mono);color:var(--text-h);font-size:14px;font-weight:700;line-height:1}.arp-note{color:var(--text);opacity:.65;align-items:baseline;gap:1px;font-size:11px;line-height:1;display:inline-flex}.arp-octave{opacity:.5;vertical-align:sub;font-size:8px}.controls{grid-template-columns:1fr 1fr;gap:4px;width:100%;display:grid}.control-item{background:var(--surface);color:var(--text-h);border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.control-item kbd{min-width:20px;font-size:11px;line-height:20px}.control-item .ctrl-label{color:var(--text-h);font-weight:500}.extra-panels{width:100%;display:none}.extra-panels.visible{flex-direction:column;align-items:center;gap:10px;display:flex}.panel-toggle{border:1.5px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:background .15s,border-color .15s;display:inline-flex}.panel-toggle:hover{border-color:var(--text);color:var(--text-h)}@media (width>=600px){.container{gap:14px;padding:20px 16px 40px}.header h1{font-size:22px}.status-bar{font-size:15px}.chord-chip{gap:3px;padding:8px 4px}.chip-chord{font-size:14px}.chip-key{font-size:10px}.piano{height:64px}.piano-key--white{flex-basis:24px}.piano-key--black{width:16px;margin:0 0 0 -8px}.piano-key--black+.piano-key--white,.piano-key--white+.piano-key--black{margin-left:-8px}}
