*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0a0a;--bg-surface: #141414;--bg-elevated: #1e1e1e;--bg-hover: #252525;--text: #f0f0f0;--text-secondary: #a0a0a0;--text-muted: #666;--border: #2a2a2a;--border-hover: #444;--accent: #8B5CF6;--accent-dim: #7c3aed;--accent-glow: rgba(139, 92, 246, .15);--correct: #a0a0a0;--incorrect: #ef4444;--current: #8B5CF6;--overlay: rgba(0, 0, 0, .7);--font-mono: "IBM Plex Mono", "JetBrains Mono", monospace;--font-sans: "DM Sans", system-ui, sans-serif;--key-active: #8B5CF6;--key-active-text: #fff;--key-rest: #141414;--key-rest-text: #a0a0a0;--key-hold: #333;--key-hold-text: #f0f0f0;--key-stroke: #333;color-scheme:dark}[data-theme=light]{--bg: #fafafa;--bg-surface: #ffffff;--bg-elevated: #f0f0f0;--bg-hover: #e8e8e8;--text: #111111;--text-secondary: #555555;--text-muted: #999;--border: #e0e0e0;--border-hover: #bbb;--accent: #7c3aed;--accent-dim: #6d28d9;--accent-glow: rgba(124, 58, 237, .1);--correct: #666;--incorrect: #dc2626;--current: #7c3aed;--overlay: rgba(0, 0, 0, .4);--key-active: #7c3aed;--key-active-text: #fff;--key-rest: #fff;--key-rest-text: #555;--key-hold: #e0e0e0;--key-hold-text: #111;--key-stroke: #d0d0d0;color-scheme:light}html,body{height:100%}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.6;transition:background .25s ease,color .25s ease;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100%;display:flex;flex-direction:column}.app{max-width:1200px;margin:0 auto;padding:1.5rem 2rem;width:100%}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border)}.app-header h1{font-family:var(--font-mono);font-size:1.1rem;font-weight:600;letter-spacing:-.02em;color:var(--text)}.app-header h1 .accent-dot{color:var(--accent)}.header-controls{display:flex;align-items:center;gap:.75rem}.theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-size:1rem;transition:all .15s ease;flex-shrink:0}.theme-toggle:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-hover)}.layout-switcher{display:flex;gap:.35rem;align-items:center}.layout-switcher button{padding:.4rem .75rem;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:-.01em;transition:all .15s ease}.layout-switcher button:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-hover)}.layout-switcher button.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 12px var(--accent-glow)}.layout-switcher select{padding:.4rem .5rem;background:var(--bg-surface);color:var(--text-secondary);border:1px solid var(--border);border-radius:6px;font-family:var(--font-mono);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s ease}.layout-switcher select:hover{border-color:var(--border-hover)}.stats-bar{display:flex;gap:2rem;padding:.75rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;margin-bottom:1.25rem}.stat{display:flex;align-items:baseline;gap:.5rem}.stat-value{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;color:var(--accent);letter-spacing:-.02em}.stat-label{font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.practice-layout{display:flex}.practice-main{flex:1;min-width:0}.practice-hint{display:flex;justify-content:center;margin-top:1.25rem}.typing-area{position:relative;padding:1.75rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;cursor:text;min-height:220px;transition:border-color .15s ease}.typing-area:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.typing-input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.typing-text{font-family:var(--font-mono);font-size:1.2rem;line-height:2.2;word-wrap:break-word;letter-spacing:.01em}.char{transition:color .1s ease;border-radius:2px}.typing-prompt{position:absolute;bottom:.75rem;right:1.25rem;color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.02em}.keyboard-hint{display:flex;flex-direction:column;align-items:center;gap:.5rem}.keyboard-hint-header{display:flex;align-items:center;gap:.75rem}.hint-toggle{padding:.3rem .6rem;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-mono);font-size:.7rem;font-weight:500;transition:all .15s ease}.hint-toggle:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-hover)}.chord-label{display:flex;align-items:center}.chord-key{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--accent);background:#8b5cf61a;border:1px solid rgba(139,92,246,.25);border-radius:4px;padding:.15rem .4rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;text-align:center}.chord-plus{color:#ffffff4d;font-size:.7rem;margin:0 .35rem;display:inline-flex;align-items:center;vertical-align:middle}.keyboard-svg{display:block}.session-summary{text-align:center;padding:2.5rem 2rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px}.session-summary h2{margin-bottom:1.75rem;font-family:var(--font-mono);font-size:1.1rem;font-weight:600;color:var(--accent);letter-spacing:-.02em}.summary-stats{display:flex;flex-wrap:wrap;gap:2rem;justify-content:center;margin-bottom:2rem}.summary-stat{display:flex;flex-direction:column;align-items:center;gap:.3rem}.summary-value{font-family:var(--font-mono);font-size:1.75rem;font-weight:700;color:var(--accent);letter-spacing:-.03em}.summary-label{font-size:.65rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.summary-actions{display:flex;gap:.75rem;justify-content:center}.summary-actions button,.back-btn{padding:.5rem 1.25rem;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-mono);font-size:.8rem;font-weight:500;transition:all .15s ease}.summary-actions button:hover,.back-btn:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-hover)}.top-actions{display:flex;gap:.75rem;margin-bottom:1.25rem}.lesson-picker{max-width:600px}.lesson-picker h2{margin-bottom:1.25rem;font-family:var(--font-mono);font-size:1rem;font-weight:600;letter-spacing:-.02em}.lesson-list{display:flex;flex-direction:column;gap:.4rem}.lesson-item{display:flex;flex-direction:column;align-items:flex-start;padding:.8rem 1rem;border:1px solid var(--border);background:var(--bg-surface);color:var(--text);border-radius:8px;cursor:pointer;font-family:var(--font-sans);text-align:left;width:100%;transition:all .15s ease}.lesson-item:hover{border-color:var(--accent);background:var(--bg-hover);box-shadow:0 0 0 3px var(--accent-glow)}.lesson-name{font-family:var(--font-mono);font-weight:600;font-size:.85rem;letter-spacing:-.01em}.lesson-desc{font-size:.75rem;color:var(--text-muted);margin-top:.15rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-surface);border:1px solid var(--border);padding:1.75rem;border-radius:10px;width:90%;max-width:500px;box-shadow:0 20px 60px #0000004d}.modal h3{margin-bottom:1rem;font-family:var(--font-mono);font-size:.95rem;font-weight:600}.custom-text-input{width:100%;padding:.75rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;font-family:var(--font-mono);font-size:.85rem;resize:vertical;transition:border-color .15s ease}.custom-text-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.modal-actions button{padding:.45rem 1rem;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-mono);font-size:.8rem;font-weight:500;transition:all .15s ease}.modal-actions button:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-hover)}.modal-actions button:disabled{opacity:.4;cursor:not-allowed}.settings{max-width:600px}.settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.settings-header h2{font-family:var(--font-mono);font-size:1rem;font-weight:600;letter-spacing:-.02em}.settings-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:1.25rem}.settings-section h3{font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem}.settings-toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer}.settings-toggle-text{display:flex;flex-direction:column;gap:.2rem}.settings-toggle-label{font-family:var(--font-mono);font-size:.85rem;font-weight:500;color:var(--text)}.settings-toggle-desc{font-size:.75rem;color:var(--text-muted);line-height:1.4}.toggle-switch{position:relative;width:40px;height:22px;border:1px solid var(--border);background:var(--bg-elevated);border-radius:11px;cursor:pointer;flex-shrink:0;padding:0;transition:all .2s ease}.toggle-switch:hover{border-color:var(--border-hover)}.toggle-switch.active{background:var(--accent);border-color:var(--accent)}.toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-secondary);border-radius:50%;transition:all .2s ease}.toggle-switch.active .toggle-knob{left:20px;background:#fff}@media(max-width:768px){.app-header{flex-direction:column;align-items:flex-start;gap:.75rem}.header-controls{width:100%;flex-wrap:wrap}.stats-bar{gap:1rem}}
