*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #3b82f6;--color-primary-dark: #2563eb;--color-bg: #f8fafc;--color-surface: #ffffff;--color-text: #1e293b;--color-text-muted: #64748b;--color-border: #e2e8f0;--color-accent: #f59e0b;--color-playing: #3b82f6;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--max-width: 1200px}html{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--color-text);background:var(--color-bg);line-height:1.6}body{min-height:100vh}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.75rem 1.5rem;display:flex;align-items:center;gap:2rem;box-shadow:var(--shadow);position:sticky;top:0;z-index:100}.app-title{text-decoration:none;color:var(--color-text)}.app-title h1{font-size:1.25rem;font-weight:700;white-space:nowrap}.app-nav ul{display:flex;list-style:none;gap:.5rem}.nav-link{text-decoration:none;color:var(--color-text-muted);padding:.375rem .75rem;border-radius:var(--radius);font-size:.875rem;font-weight:500;transition:background .15s,color .15s}.nav-link:hover{background:var(--color-bg);color:var(--color-text)}.nav-link.active{background:var(--color-primary);color:#fff}.app-main{flex:1;padding:1.5rem;max-width:var(--max-width);width:100%;margin:0 auto}.exercise-menu h2{font-size:1.5rem;margin-bottom:1rem}.exercise-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.exercise-card{display:block;text-decoration:none;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;transition:box-shadow .15s,border-color .15s}.exercise-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.exercise-card h3{font-size:1.125rem;margin-bottom:.5rem}.exercise-card p{color:var(--color-text-muted);font-size:.875rem}.exercise-view{display:flex;flex-direction:column;gap:1rem}.exercise-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.notation-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;overflow-x:auto}.playback-controls{display:flex;gap:.5rem;align-items:center}.playback-controls button{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.playback-controls button:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-primary)}.playback-controls button:disabled{opacity:.5;cursor:not-allowed}.playback-controls button.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.playback-controls button.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.abcjs-note.abcjs-playing,.abcjs-note.abcjs-playing *{fill:var(--color-playing)!important}.settings-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem}.settings-panel h3{font-size:1rem;margin-bottom:1rem}.setting-group{margin-bottom:1rem}.setting-group label{display:block;font-size:.8125rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.05em}.setting-group input[type=number],.setting-group input[type=range],.setting-group select{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem}.setting-group input[type=number]{max-width:120px}.btn{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.btn:hover{background:var(--color-bg)}.btn-icon{padding:.5rem}.loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--color-text-muted);font-size:1rem}.settings-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.settings-header h3{font-size:1.1rem;color:var(--color-text)}.btn-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-muted);padding:.25rem .5rem;line-height:1}.btn-close:hover{color:var(--color-text)}.settings-body{display:grid;gap:.75rem}.settings-field{display:flex;flex-direction:column;gap:.25rem}.settings-field label{font-size:.85rem;color:var(--color-text-muted)}.settings-field input[type=number]{padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:4px;font-size:.9rem;width:6rem;background:var(--color-bg);color:var(--color-text)}.settings-clef-group{border:1px solid var(--color-border);border-radius:6px;padding:.75rem;margin:0}.settings-clef-group legend{padding:0 .5rem;font-size:.9rem;font-weight:600;color:var(--color-text)}.settings-toggle{flex-direction:row;align-items:center;gap:.5rem}.settings-toggle input[type=checkbox]{width:1rem;height:1rem}.settings-range{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.settings-range label{font-size:.8rem;color:var(--color-text-muted);display:flex;align-items:center;gap:.5rem}.settings-range input[type=range]{flex:1}@media(min-width:768px){.app-header{padding:.75rem 2rem}.app-content{padding:1.5rem 2rem}.exercise-toolbar{flex-wrap:nowrap}.settings-body{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.settings-clef-group{grid-column:span 1}.notation-container{max-width:100%;overflow-x:auto}.exercise-menu{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}}@media(min-width:1024px){.app-header{padding:.75rem 3rem}.app-content{padding:2rem 3rem;max-width:1200px;margin:0 auto}.settings-panel{max-width:800px}.settings-body{grid-template-columns:1fr 1fr 1fr}.notation-container svg{max-width:100%}}
