:root{--bg-color:#0f111a;--bg-panel:#191c2999;--text-main:#f8f8f2;--text-muted:#8c92ac;--accent-primary:#ff5e62;--accent-secondary:#f96;--accent-glow:#ff5e6266;--border-color:#ffffff14;color:var(--text-main);background-color:var(--bg-color);box-sizing:border-box;background-image:radial-gradient(circle at 15%,#ff5e6214,#0000 25%),radial-gradient(circle at 85% 30%,#ff996614,#0000 25%);background-attachment:fixed;min-height:100vh;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}*,:before,:after{box-sizing:inherit}body{margin:0;padding:0}.glass-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:16px;padding:24px;box-shadow:0 8px 32px #0000004d}.app-container{flex-direction:column;gap:30px;max-width:1200px;margin:0 auto;padding:40px 20px;display:flex}.header{text-align:center;margin-bottom:20px}.header h1{background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));-webkit-text-fill-color:transparent;letter-spacing:-1px;-webkit-background-clip:text;margin:0 0 10px;font-size:3rem;font-weight:800}.header p{color:var(--text-muted);margin:0;font-size:1.1rem}.input-form{gap:12px;max-width:600px;margin:0 auto;display:flex}.input-form input{border:1px solid var(--border-color);color:var(--text-main);background:#0003;border-radius:12px;outline:none;flex:1;padding:14px 20px;font-size:1rem;transition:all .3s}.input-form input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #ff5e6233}.btn-primary{background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));color:#fff;cursor:pointer;border:none;border-radius:12px;align-items:center;gap:8px;padding:14px 28px;font-size:1rem;font-weight:600;transition:all .3s;display:flex}.btn-primary:hover:not(:disabled){box-shadow:0 8px 20px var(--accent-glow);transform:translateY(-2px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{border:1px solid var(--border-color);color:var(--text-main);cursor:pointer;background:#ffffff0a;border-radius:10px;align-items:center;gap:8px;padding:12px 20px;font-size:.95rem;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.btn-secondary:hover:not(:disabled){background:#ffffff14;border-color:#ffffff26}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.upload-row{justify-content:center;align-items:center;gap:12px;margin-top:16px;display:flex}.upload-divider{color:var(--text-muted);font-size:.9rem}.error-banner{color:var(--accent-primary);text-align:center;margin-top:16px}.error-banner p{margin:0 0 8px}.error-hint{font-size:.9rem;color:var(--text-muted)!important}.loader-container{flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:40px;display:flex}.spinner{border:4px solid #ffffff1a;border-left-color:var(--accent-primary);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.audio-player{flex-direction:column;gap:16px;padding:20px 24px;display:flex}.player-top{align-items:center;gap:16px;display:flex}.song-art{flex-shrink:0}.song-art-img,.song-art-placeholder{object-fit:cover;border-radius:10px;width:72px;height:72px;box-shadow:0 6px 20px #00000059}.song-art-placeholder{color:var(--text-muted);border:1px solid var(--border-color);background:#ffffff0f;justify-content:center;align-items:center;display:flex}.song-meta{flex:1;min-width:0}.song-title{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin:0 0 4px;font-size:1.2rem;font-weight:700;overflow:hidden}.song-artist{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin:0 0 8px;font-size:.95rem;overflow:hidden}.song-key{color:var(--accent-secondary);background:#ff5e621f;border:1px solid #ff5e6240;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;display:inline-flex}.song-key strong{color:var(--text-main);font-weight:700}.analysis-meta{color:var(--text-muted);letter-spacing:.02em;margin:4px 0 0;font-size:.75rem}.play-btn{background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:50px;height:50px;transition:transform .2s,box-shadow .2s;display:flex}.play-btn:hover:not(:disabled){box-shadow:0 0 15px var(--accent-glow);transform:scale(1.05)}.play-btn:disabled{opacity:.5;cursor:not-allowed}.progress-container{align-items:center;gap:12px;width:100%;display:flex}.reanalyze-row{justify-content:flex-end;margin-top:-8px;display:flex}.time{font-variant-numeric:tabular-nums;color:var(--text-muted);width:45px;font-size:.9rem}.progress-bar{cursor:pointer;background:#ffffff1a;border-radius:3px;flex:1;height:6px;position:relative;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));pointer-events:none;border-radius:3px;height:100%;position:absolute;top:0;left:0}.playback-main{grid-template-columns:1fr;gap:20px;display:grid}@media (width>=900px){.playback-main:has(.lyrics-glass){grid-template-columns:minmax(0,1.4fr) minmax(280px,.9fr);align-items:start}}.chord-panel{padding:8px 0 16px;overflow:hidden}.lyrics-glass{max-height:420px;padding:0;overflow:hidden}.chord-sequence-wrap{padding:0 24px}.chord-container{overscroll-behavior-x:contain;scrollbar-width:none;gap:16px;padding:20px 0;display:flex;overflow:auto hidden}.chord-container::-webkit-scrollbar{display:none}.chord-card{text-align:center;background:#ffffff08;border:2px solid #0000;border-radius:12px;flex:none;width:140px;padding:12px 10px;transition:all .2s;position:relative;overflow:hidden}.lyrics-panel-wrap{flex-direction:column;height:100%;min-height:280px;max-height:420px;display:flex}.lyrics-panel-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:16px 20px 8px;display:flex}.lyrics-panel-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:.85rem;font-weight:700}.lyrics-panel-badge{letter-spacing:.06em;text-transform:uppercase;color:var(--accent-secondary);font-size:.68rem;font-weight:600}.lyrics-panel-badge.muted{color:var(--text-muted)}.lyrics-panel{flex:1;overflow:hidden;-webkit-mask-image:linear-gradient(#0000 0%,#000 12% 88%,#0000 100%);mask-image:linear-gradient(#0000 0%,#000 12% 88%,#0000 100%)}.lyrics-panel-scroll{overscroll-behavior:contain;scrollbar-width:none;height:100%;max-height:360px;padding:24px 20px 32px;overflow:hidden auto}.lyrics-panel-scroll::-webkit-scrollbar{display:none}.lyrics-line{color:var(--text-muted);opacity:.45;transform-origin:0;margin:0 0 18px;font-size:1.35rem;font-weight:600;line-height:1.45;transition:color .25s,opacity .25s,transform .25s;transform:scale(.98)}.lyrics-line.active{color:var(--text-main);opacity:1;transform:scale(1)}.lyrics-line.past{opacity:.35}.lyrics-line.upcoming{opacity:.5}.lyrics-line.plain{opacity:.85;font-size:1rem;font-weight:500;transform:none}.chord-card.active{border-color:var(--accent-primary);z-index:2;background:#ff5e621a;transform:scale(1.05);box-shadow:0 0 20px #ff5e6233}.chord-name{justify-content:center;align-items:center;gap:6px;margin-bottom:12px;font-size:1.5rem;font-weight:700;display:flex}.chord-card.low-confidence,.chord-card.confidence-low{opacity:.55;border-color:#ffffff0f}.chord-card.confidence-medium{opacity:.78;border-style:dashed}.chord-card.low-confidence.active,.chord-card.confidence-low.active{opacity:.85}.chord-card.display-adjusted{border-color:#64b4ff40}.chord-card.user-corrected{border-color:#78dc8c59}.medium-confidence{color:var(--text-muted);font-size:.75rem}.user-corrected-badge{color:#8fd9a0;font-size:.75rem}.chord-edit-input{text-align:center;border:1px solid var(--accent-secondary);width:100%;color:inherit;background:#00000040;border-radius:6px;margin-bottom:8px;padding:4px 8px;font-size:1.25rem;font-weight:700}.chord-edit-hint{color:var(--text-muted);text-align:center;margin-top:8px;font-size:.8rem}.presentation-row{flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0 4px;display:flex}.presentation-label{color:var(--text-muted);font-size:.9rem}.presentation-btn.active{border-color:var(--accent-secondary);color:var(--accent-secondary)}.song-capo{color:var(--text-muted);align-items:center;gap:6px;margin-top:4px;font-size:.9rem;display:flex}.low-confidence{color:var(--text-muted);cursor:help;background:#ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.8rem;display:flex}.strumming{color:var(--text-muted);letter-spacing:1px;margin-top:12px;font-size:.8rem;font-weight:500}.chord-diagram{max-width:100%;height:auto;margin:0 auto;display:block;overflow:visible}.chord-card svg{flex-shrink:0}.fretboard-host.solo-only .fretboard-wrapper:not(.improv-active){opacity:.45;filter:grayscale(.35)}.fretboard-host.improv-on .fretboard-wrapper{opacity:1;filter:none}.app-nav{justify-content:center;gap:10px;margin-top:20px;display:flex}.app-nav-btn{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:#ffffff0a;border-radius:999px;align-items:center;gap:8px;padding:10px 18px;font-size:.92rem;font-weight:600;transition:all .2s;display:inline-flex}.app-nav-btn:hover{color:var(--text-main);border-color:#ffffff29}.app-nav-btn.active{color:var(--text-main);background:#ff5e621f;border-color:#ff5e6273}.scale-practice-panel{padding:24px}.scale-practice-header{margin-bottom:20px}.scale-practice-title{margin:0 0 6px;font-size:1.35rem}.scale-practice-subtitle{color:var(--text-muted);margin:0;font-size:.95rem}.scale-practice-controls{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.scale-control{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);flex-direction:column;gap:6px;font-size:.78rem;font-weight:600;display:flex}.scale-control select{border:1px solid var(--border-color);min-width:160px;color:var(--text-main);text-transform:none;letter-spacing:normal;background:#00000040;border-radius:10px;padding:10px 12px;font-size:.95rem;font-weight:500}.scale-practice-meta{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.scale-practice-key{color:var(--accent-secondary);font-size:.95rem;font-weight:600}.scale-practice-count{color:var(--text-muted);font-size:.88rem}.pent-legend-below{justify-content:center;margin-top:12px}.fretboard-panel{padding:20px 24px 24px;position:relative}.fretboard-section{flex-direction:column;gap:12px;display:flex}.fretboard-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.fretboard-header-text{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.fretboard-title{color:var(--text-main);margin:0;font-size:1rem;font-weight:600}.fretboard-key-hint{color:var(--accent-secondary);font-size:.85rem;font-weight:500}.pent-legend{color:var(--text-muted);align-items:center;gap:14px;font-size:.78rem;display:flex}.pent-legend-item{align-items:center;gap:6px;display:flex}.pent-legend-swatch{border:1.5px solid #ffffffd9;border-radius:50%;flex-shrink:0;width:10px;height:10px}.pent-legend-root{background:#fbbf24}.pent-legend-active{background:0 0;border-color:#fbbf24;box-shadow:inset 0 0 0 1px #fbbf24}.improv-toggle{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:.9rem;display:flex}.improv-toggle input{width:16px;height:16px;accent-color:var(--accent-primary);cursor:pointer}.improv-toggle input:disabled{cursor:not-allowed;opacity:.5}.fretboard-hint{color:var(--text-muted);margin:0;font-size:.85rem}.fretboard-scroll{-webkit-overflow-scrolling:touch;width:100%;max-width:100%;padding-bottom:4px;overflow:auto hidden}.fretboard-scroll.improv-active .fretboard-wrapper{min-width:720px}.fretboard-wrapper{width:100%;min-width:640px;height:268px;transition:opacity .4s;position:relative}.fretboard-wrapper.inactive{opacity:.3;pointer-events:none}.fretboard-wrapper.improv-active{opacity:1;pointer-events:auto}.fretboard-overlay-text{color:var(--text-main);text-shadow:0 2px 10px #00000080;z-index:10;pointer-events:none;font-size:1.5rem;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fretboard-svg{background:#1a1512;border-radius:8px;width:100%;min-width:640px;height:100%;display:block}.fret-wire{stroke:#4a4a4a;stroke-width:2px}.fret-wire.nut-wire{stroke:#fff;stroke-width:6px}.open-string-label{fill:#ffffff8c;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:12px;font-weight:700}.string{stroke:#b8b8b8}.fret-marker{fill:#ffffff1f}.fret-number-label{fill:#ffffff73;text-anchor:middle;pointer-events:none;font-size:10px;font-weight:600}.scale-region-outline{fill:#ffffff08;stroke:#ffffff29;stroke-width:1.5px;rx:8;ry:8;pointer-events:none;transition:stroke .15s,fill .15s}.scale-region-group.active-region .scale-region-outline,.caged-box-group.active-chord-box .caged-box-outline{fill:#ff99661a;stroke:#ff99668c;stroke-width:2px}.scale-region-number,.caged-box-number{fill:#ffffff59;pointer-events:none;font-size:11px;font-weight:700}.scale-dot-group{cursor:default;transition:opacity .15s}.scale-dot-group.dimmed{opacity:.18}.scale-dot-group:not(.dimmed):hover .scale-tone-dot{filter:brightness(1.15)}.scale-tone-dot,.pent-scale-dot{fill:#38bdf8;stroke:#ffffff59;stroke-width:1.5px;transition:filter .12s}.scale-root-ring{fill:none;stroke:var(--accent-secondary);stroke-width:2.5px;opacity:.9}.scale-root-dot .scale-tone-dot,.pent-root-dot .pent-scale-dot{fill:var(--accent-primary);stroke:var(--accent-secondary);stroke-width:2.5px}.scale-dot-label,.pent-dot-label{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:9px;font-weight:700}.scale-root-dot .scale-dot-label,.pent-root-dot .pent-dot-label{fill:#fff;font-weight:800}.pent-legend-scale{background:#38bdf8}.pent-legend-root{background:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-secondary)}.pent-legend-active{border-color:var(--accent-secondary);box-shadow:inset 0 0 0 1px var(--accent-secondary);background:0 0}.caged-box-outline{fill:#ffffff08;stroke:#ffffff2e;stroke-width:1.5px;rx:8;ry:8;pointer-events:none;transition:stroke .15s,fill .15s}.caged-box-group.active-chord-box .caged-box-outline{fill:#fbbf2414;stroke:#fbbf248c;stroke-width:2px}.caged-box-number{fill:#ffffff59;pointer-events:none;font-size:11px;font-weight:700}.caged-box-group.active-chord-box .caged-box-number{fill:#fbbf24}.pent-box-highlight{fill:#fbbf241a;stroke:#fbbf24;stroke-width:2.5px;rx:8;ry:8;pointer-events:none;transition:opacity .15s}.pent-chord-label{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;paint-order:stroke;stroke:#000000d9;stroke-width:4px;stroke-linejoin:round;font-size:18px;font-weight:700}.pent-dot-group{pointer-events:none;transition:opacity .12s linear}.pent-scale-dot{fill:#14b8a6;stroke:#fff;stroke-width:2px}.pent-dot-label{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:9px;font-weight:800}.pent-root-dot .pent-scale-dot{fill:#f59e0b;stroke:#fffbeb;stroke-width:2.5px}.pent-root-dot .pent-dot-label{fill:#1a1512;font-size:9px}.pentatonic-layer.has-active-chord .pent-dot-group:not(.in-chord-box){opacity:.28}.pent-dot-group.in-chord-box{opacity:1}.pent-dot-group.in-chord-box .pent-scale-dot{fill:#2dd4bf;stroke:#fff;stroke-width:2.5px}.pent-root-dot.in-chord-box .pent-scale-dot{fill:#fbbf24;stroke:#fff;stroke-width:3px}.pent-root-dot.in-chord-box .pent-dot-label{fill:#1a1512;font-weight:900}.note-dot{transition:opacity .1s linear,r .1s linear}.note-text{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:10px;font-weight:700}.site-footer{text-align:center;color:var(--text-muted);margin-top:auto;padding:24px 20px 32px;font-size:.875rem}.site-footer-nav{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-bottom:8px;display:flex}.site-footer-nav a{color:var(--text-muted);text-decoration:none;transition:color .2s}.site-footer-nav a:hover{color:var(--accent-secondary)}.site-footer-sep{opacity:.4}.site-footer-copy{opacity:.7;margin:0;font-size:.8rem}.cookie-consent-banner{z-index:1000;-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border-color);background:#0f111af2;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px 24px;padding:16px 24px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 32px #0006}.cookie-consent-text{max-width:560px;color:var(--text-muted);margin:0;font-size:.875rem;line-height:1.5}.cookie-consent-text a{color:var(--accent-secondary);text-decoration:none}.cookie-consent-text a:hover{text-decoration:underline}.cookie-consent-actions{flex-shrink:0;gap:10px;display:flex}.cookie-consent-actions .btn-primary,.cookie-consent-actions .btn-secondary{padding:10px 20px;font-size:.875rem}.static-page{padding-bottom:80px}.static-page-content{max-width:720px;margin:0 auto}.static-page-content section{margin-bottom:28px}.static-page-content h2{color:var(--text-main);margin:0 0 12px;font-size:1.25rem}.static-page-content h3{color:var(--accent-secondary);margin:16px 0 8px;font-size:1rem}.static-page-content p,.static-page-content li,.static-page-content dd{color:var(--text-muted);margin:0 0 12px;line-height:1.65}.static-page-content ul{margin:0 0 12px;padding-left:1.25rem}.static-page-content code{color:var(--accent-secondary);background:#0000004d;border-radius:4px;padding:2px 6px;font-size:.85em}.static-page-content a{color:var(--accent-secondary)}.static-page-meta{opacity:.8;font-size:.85rem;margin-bottom:24px!important}.static-page-back{border-top:1px solid var(--border-color);padding-top:16px;margin-top:32px!important}.static-page-back a{font-weight:600;text-decoration:none}.static-page-back a:hover{text-decoration:underline}.how-it-works-steps{flex-direction:column;gap:20px;margin:0;padding:0;list-style:none;display:flex}.how-it-works-steps li{align-items:flex-start;gap:16px;display:flex}.step-icon{width:44px;height:44px;color:var(--accent-secondary);background:#ff5e621f;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.how-it-works-steps strong{color:var(--text-main);margin-bottom:4px;display:block}.how-it-works-steps p{margin:0;font-size:.95rem}.faq-list{margin:0}.faq-list>div{border-bottom:1px solid var(--border-color);margin-bottom:20px;padding-bottom:20px}.faq-list>div:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.faq-list dt{color:var(--text-main);margin-bottom:8px;font-weight:600}.faq-list dd{margin:0}
