:root{--color-bg: #0f0f1a;--color-bg-secondary: #1a1a2e;--color-bg-card: #252542;--color-primary: #6366f1;--color-primary-hover: #818cf8;--color-accent: #f59e0b;--color-text: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-border: #334155;--color-success: #22c55e;--color-error: #ef4444;--color-chord: #fbbf24;--color-chord-diagram-bg: #1e293b;--color-chord-string: #475569;--color-chord-fret: #475569;--color-chord-dot: #fbbf24;--color-grid-bar: #6366f1;--color-grid-beat: #334155;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-full: 9999px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--transition-fast: .15s ease;--transition-normal: .25s ease}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea{font-family:inherit;font-size:inherit}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.page{min-height:100vh;padding:var(--spacing-md)}.card{background:var(--color-bg-card);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-weight:500;transition:all var(--transition-fast)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-bg-card);color:var(--color-text)}.btn-icon{width:2.5rem;height:2.5rem;padding:0;border-radius:var(--radius-full)}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.header-title{font-size:1.25rem;font-weight:600;display:flex;align-items:center;gap:var(--spacing-sm)}.header-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.song-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-sm) var(--spacing-md);font-size:.875rem;color:var(--color-text-secondary)}.song-meta-item{display:flex;align-items:center;gap:var(--spacing-xs)}.song-meta-label{color:var(--color-text-muted)}.chord{color:var(--color-chord);font-weight:600;font-family:var(--font-mono)}.lyrics-line{margin-bottom:var(--spacing-md)}.lyrics-chord-row{color:var(--color-chord);font-weight:600;font-family:var(--font-mono);font-size:.875rem;height:1.2em;white-space:pre}.lyrics-text-row{white-space:pre-wrap}.chord-grid{font-family:var(--font-mono);background:var(--color-bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md);overflow-x:auto}.grid-label{color:var(--color-text-muted);font-size:.75rem;margin-bottom:var(--spacing-sm);font-family:var(--font-sans)}.grid-row{display:flex;align-items:center;margin-bottom:var(--spacing-xs)}.grid-bar{color:var(--color-grid-bar)}.grid-cell{min-width:3rem;text-align:center;padding:var(--spacing-xs)}.grid-cell .chord{font-size:.875rem}.speed-control{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--radius-full)}.speed-btn{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:.75rem;color:var(--color-text-secondary)}.speed-btn.active{background:var(--color-primary);color:#fff}.progress-bar{width:100%;height:4px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-primary);transition:width var(--transition-fast)}@media(min-width:768px){.page{padding:var(--spacing-lg)}.grid-cell{min-width:4rem}}@media(min-width:1024px){.page{padding:var(--spacing-xl)}}
