.control-panel{background:var(--bg-secondary);border-radius:12px;padding:1.5rem;margin-bottom:2rem;border:1px solid var(--border-color)}.control-group{margin-bottom:1rem}.control-group label{display:block;margin-bottom:.5rem;color:var(--text-secondary);font-size:.9rem;font-weight:500}.progression-group input{width:100%;padding:.75rem 1rem;font-size:1.1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);transition:border-color .2s}.progression-group input:focus{outline:none;border-color:var(--accent-primary)}.progression-group small{display:block;margin-top:.5rem;color:var(--text-secondary);font-size:.8rem}.controls-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-top:1.5rem}.controls-grid select{width:100%;padding:.6rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:.95rem;cursor:pointer}.controls-grid select:focus{outline:none;border-color:var(--accent-primary)}.controls-grid input[type=range]{width:calc(100% - 40px);accent-color:var(--accent-primary)}.range-value{display:inline-block;width:30px;text-align:right;color:var(--accent-primary);font-weight:700}.checkbox-group{display:flex;align-items:center}.checkbox-group label{display:flex;align-items:center;gap:.5rem;cursor:pointer;margin-bottom:0}.checkbox-group input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-primary)}.generate-button{width:100%;padding:1rem;margin-top:1.5rem;font-size:1.2rem;font-weight:700;background:linear-gradient(135deg,#ff4757,#ff6b81);border:none;border-radius:8px;color:#fff;transition:transform .2s,box-shadow .2s}.generate-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 20px #ff475766}.generate-button:disabled{opacity:.6;cursor:not-allowed}.fretboard-viewer{background:var(--bg-secondary);border-radius:12px;padding:1rem;border:1px solid var(--border-color)}.fretboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.fretboard-header h3{color:var(--text-primary)}.current-chord{background:var(--accent-secondary);padding:.25rem .75rem;border-radius:4px;font-weight:700;font-size:1.1rem}.fretboard-container{overflow-x:auto;padding:.5rem 0}.fretboard-container canvas{display:block;margin:0 auto}.legend{display:flex;justify-content:center;gap:2rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.legend-item{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary);font-size:.9rem}.legend-dot{width:16px;height:16px;border-radius:50%;border:2px solid white}.legend-dot.chord-tone{background:#2ed573}.legend-dot.scale-tone{background:#3498db}.legend-dot.current{background:#ff4757}.tab-display{background:var(--bg-secondary);border-radius:12px;padding:1rem;border:1px solid var(--border-color)}.tab-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tab-header h3{color:var(--text-primary)}.copy-btn{padding:.4rem .8rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-secondary);font-size:.85rem;transition:background .2s,color .2s}.copy-btn:hover{background:var(--accent-primary);color:var(--bg-primary)}.tab-content{background:var(--bg-primary);padding:1rem;border-radius:8px;overflow-x:auto;font-family:Courier New,Courier,monospace;font-size:.9rem;line-height:1.4;color:var(--text-primary);white-space:pre}.playback-controls{background:var(--bg-secondary);border-radius:12px;padding:1rem;border:1px solid var(--border-color);display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem}.control-buttons{display:flex;gap:.5rem}.control-buttons button{padding:.6rem 1.2rem;border:none;border-radius:6px;font-size:.95rem;font-weight:500;transition:transform .1s,background .2s}.control-buttons button:hover:not(:disabled){transform:scale(1.05)}.control-buttons button:disabled{opacity:.5;cursor:not-allowed}.play-btn{background:var(--success);color:#fff}.pause-btn{background:var(--warning);color:#fff}.stop-btn{background:var(--error);color:#fff}.progress-container{flex:1;display:flex;align-items:center;gap:1rem;min-width:200px}.progress-bar{flex:1;height:8px;background:var(--bg-primary);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-primary),var(--accent-secondary));transition:width .1s ease-out}.progress-text{color:var(--text-secondary);font-size:.9rem;min-width:60px;text-align:right}.paywall-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.paywall-modal{background:linear-gradient(135deg,#1a1a2e,#16213e);border-radius:20px;padding:2rem;max-width:450px;width:90%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #00000080;border:1px solid rgba(255,255,255,.1)}.paywall-close{position:absolute;top:1rem;right:1rem;background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}.paywall-close:hover{background:#ffffff1a;color:#fff}.paywall-header{text-align:center;margin-bottom:1.5rem}.paywall-header h2{color:#fff;font-size:1.75rem;margin:0 0 .5rem}.paywall-header p{color:#aaa;margin:0}.paywall-features{background:#ffffff0d;border-radius:12px;padding:1.25rem;margin-bottom:1.5rem}.paywall-features h3{color:#fff;margin:0 0 .75rem;font-size:1rem}.paywall-features ul{list-style:none;padding:0;margin:0}.paywall-features li{color:#ccc;padding:.4rem 0;font-size:.95rem}.paywall-packages{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.paywall-package{background:linear-gradient(135deg,#ff4757,#ff6b81);border:none;border-radius:12px;padding:1.25rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.25rem;transition:transform .2s,box-shadow .2s;position:relative}.paywall-package:hover{transform:translateY(-2px);box-shadow:0 8px 25px #ff475766}.paywall-package:active{transform:translateY(0)}.package-name{color:#fff;font-weight:600;font-size:1.1rem}.package-price{color:#ffffffe6;font-size:1.5rem;font-weight:700}.package-badge{position:absolute;top:-8px;right:-8px;background:#f39c12;color:#000;font-size:.7rem;font-weight:700;padding:.25rem .5rem;border-radius:20px;text-transform:uppercase}.paywall-loading,.paywall-error,.paywall-no-packages{text-align:center;padding:2rem;color:#aaa}.paywall-error p{color:#e74c3c;margin-bottom:1rem}.paywall-success{text-align:center;padding:2rem 0}.paywall-success h2{color:#2ecc71;margin-bottom:.5rem}.paywall-success p{color:#aaa;margin-bottom:1.5rem}.paywall-button{padding:.75rem 2rem;border-radius:8px;border:none;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s}.paywall-button.primary{background:linear-gradient(135deg,#ff4757,#ff6b81);color:#fff}.paywall-button.primary:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ff475766}.paywall-button.secondary{background:#ffffff1a;color:#fff}.paywall-button.secondary:hover{background:#fff3}.paywall-footer{text-align:center;border-top:1px solid rgba(255,255,255,.1);padding-top:1rem}.paywall-footer p{color:#666;font-size:.85rem;margin:0 0 .5rem}.paywall-link{background:none;border:none;color:#ff4757;cursor:pointer;font-size:.9rem;text-decoration:underline}.paywall-link:hover{color:#ff6b81}.paywall-note{font-size:.85rem;color:#888;margin-top:.5rem}.auth-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1001;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-modal{background:linear-gradient(135deg,#1a1a1a,#141414);border-radius:16px;padding:2rem;max-width:420px;width:90%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #00000080;border:1px solid #2a2a2a}.auth-close{position:absolute;top:1rem;right:1rem;background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}.auth-close:hover{background:#ffffff1a;color:#fff}.auth-header{text-align:center;margin-bottom:1.5rem}.auth-header h2{color:#fff;font-size:1.5rem;margin:0}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-field{display:flex;flex-direction:column;gap:.5rem}.auth-field label{color:#aaa;font-size:.9rem;font-weight:500}.auth-field input{padding:.75rem;background:#0a0a0a;border:1px solid #2a2a2a;border-radius:8px;color:#fff;font-size:1rem;transition:border-color .2s}.auth-field input:focus{outline:none;border-color:#ff4757}.auth-error{background:#ff47571a;border:1px solid #ff4757;color:#ff4757;padding:.75rem;border-radius:8px;font-size:.9rem}.auth-success{text-align:center;padding:1rem 0}.auth-success p{color:#aaa;margin:.5rem 0}.auth-success p:first-child{color:#2ed573;font-weight:600;font-size:1.1rem}.auth-button{padding:.75rem 1.5rem;border-radius:8px;border:none;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.auth-button.primary{background:linear-gradient(135deg,#ff4757,#ff6b81);color:#fff;width:100%}.auth-button.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 15px #ff475766}.auth-button.google{background:#fff;color:#333;width:100%}.auth-button.google:hover:not(:disabled){background:#f5f5f5;transform:translateY(-2px);box-shadow:0 4px 15px #0000001a}.auth-button:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:1rem;margin:1rem 0;color:#666;font-size:.85rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#2a2a2a}.auth-footer{margin-top:1.5rem;text-align:center}.auth-footer p{color:#888;font-size:.9rem;margin:.5rem 0}.auth-link{background:none;border:none;color:#ff4757;cursor:pointer;font-size:.9rem;text-decoration:underline;padding:0}.auth-link:hover{color:#ff6b81}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%);padding:1.5rem 2rem;border-bottom:1px solid var(--border-color)}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto}.header-title{text-align:left}.app-header h1{font-size:2rem;margin-bottom:.25rem;background:linear-gradient(90deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-header p{color:var(--text-secondary);font-size:.95rem;margin:0}.header-actions{display:flex;align-items:center;gap:1rem}.user-info{display:flex;align-items:center;gap:.5rem;color:var(--text-primary)}.user-avatar{width:32px;height:32px;border-radius:50%;border:2px solid var(--accent-primary)}.user-name{font-size:.9rem;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-in-button,.sign-out-button{background:linear-gradient(135deg,#ff4757,#ff6b81);color:#fff;border:none;padding:.6rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.sign-in-button:hover,.sign-out-button:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ff475766}.sign-out-button{background:#ffffff1a;border:1px solid rgba(255,255,255,.2)}.sign-out-button:hover{background:#ffffff26;box-shadow:none}.pro-badge{background:linear-gradient(135deg,#f39c12,#e74c3c);color:#fff;padding:.5rem 1rem;border-radius:20px;font-weight:700;font-size:.9rem}.generation-counter{color:var(--text-secondary);font-size:.9rem}.upgrade-button{background:linear-gradient(135deg,#ff4757,#ff6b81);color:#fff;border:none;padding:.6rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.upgrade-button:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ff475766}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem}.loading-spinner{font-size:3rem;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-main{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.error-message{background:#f443361a;border:1px solid var(--error);color:var(--error);padding:1rem;border-radius:8px;margin-bottom:1.5rem}.results-section{display:flex;flex-direction:column;gap:1.5rem}.key-info{display:flex;align-items:center;gap:.5rem;padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.key-label{color:var(--text-secondary)}.key-value{font-weight:700;font-size:1.2rem;color:var(--accent-primary)}.app-footer{padding:1rem;text-align:center;background:var(--bg-secondary);border-top:1px solid var(--border-color);color:var(--text-secondary)}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #0a0a0a;--bg-secondary: #141414;--bg-tertiary: #1a1a1a;--text-primary: #ffffff;--text-secondary: #888888;--accent-primary: #ff4757;--accent-secondary: #ff6b81;--accent-glow: rgba(255, 71, 87, .4);--success: #2ed573;--warning: #ffa502;--error: #ff4757;--border-color: #2a2a2a;--wood-light: #d4a574;--wood-dark: #8b6914;--wood-grain: #c4956a;--note-chord: #2ed573;--note-scale: #3498db;--note-current: #ff4757}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit}
