:root{--bg:#14141a;--panel:#1e1e26;--panel-2:#262630;--border:#33333f;--text:#ececf1;--text-dim:#a6a6b3;--accent:#b06bff;--accent-2:#4da3ff;--ok:#4caf72;--bad:#ff6b6b;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-ui);color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body{background:var(--bg);overscroll-behavior:none;min-height:100vh;margin:0}body{-webkit-tap-highlight-color:transparent}@media (pointer:coarse){.btn,.tab,select,.seg-btn,.tag,.quiz-choice,.lesson-card,.note-item,.track-card,.learn-lesson-row{min-height:44px}button,.note-item,.lesson-card,.track-card{-webkit-touch-callout:none}}h1,h2,h3,h4{margin:0}button{font-family:inherit}.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 14px;font-size:14px;transition:background .12s,border-color .12s}.btn:hover{background:#30303c}.btn.primary{background:var(--accent);border-color:var(--accent);color:#150c25;font-weight:600}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:0 0}.btn.small{padding:5px 10px;font-size:13px}select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-family:inherit;font-size:14px}.app{max-width:1100px;padding:max(20px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 64px max(16px, env(safe-area-inset-left));margin:0 auto}.app-header{flex-direction:column;gap:14px;margin-bottom:18px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand .logo{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#10101a;border-radius:10px;place-items:center;width:42px;height:42px;font-size:22px;display:grid}.brand h1{font-size:20px}.brand p{color:var(--text-dim);margin:2px 0 0;font-size:13px}.header-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.sync-dot{border-radius:50%;flex:none;width:9px;height:9px}.sync-dot.ok{background:#4caf72}.sync-dot.syncing{background:#e0a83e;animation:1s ease-in-out infinite pulse}.sync-dot.offline{background:#d9534f}@keyframes pulse{50%{opacity:.3}}.tabs{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.tab{border:1px solid var(--border);background:var(--panel);min-width:130px;color:var(--text-dim);cursor:pointer;border-radius:10px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:10px 14px;display:flex}.tab b{color:var(--text);font-size:15px}.tab span{font-size:12px}.tab.active{border-color:var(--accent);background:var(--panel-2);box-shadow:0 0 0 1px var(--accent) inset}.app-main{min-height:300px}.tab-loading{text-align:center;color:var(--text-dim);padding:40px 0}@media (width<=760px){.app{padding-bottom:calc(70px + env(safe-area-inset-bottom))}.tabs{z-index:20;background:var(--panel);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));gap:0;margin:0;position:fixed;bottom:0;left:0;right:0}.tab{background:0 0;border:none;border-radius:8px;flex:1;align-items:center;min-width:0;padding:6px 2px}.tab b{font-size:12px;font-weight:600}.tab span{display:none}.tab.active{background:var(--panel-2);box-shadow:none;color:var(--accent)}.tab.active b{color:var(--accent)}}.auth-screen{background:radial-gradient(1200px 600px at 50% -10%, #22223a, var(--bg));place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:320px;padding:32px 24px;display:flex}.auth-logo{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#10101a;border-radius:12px;place-items:center;width:52px;height:52px;font-size:26px;display:grid}.auth-card h1{font-size:20px}.auth-dim{color:var(--text-dim);margin:0;font-size:14px}.auth-input{background:var(--panel-2);border:1px solid var(--border);width:100%;color:var(--text);text-align:center;letter-spacing:.3em;border-radius:10px;margin-top:8px;padding:12px 14px;font-family:inherit;font-size:20px}.auth-error{color:var(--bad);margin:0;font-size:13px}.auth-card .btn{width:100%;margin-top:6px;padding:12px}.midi-status{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 14px}.midi-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.midi-label{color:var(--text-dim);flex:1;min-width:180px;font-size:14px}.dot{border-radius:50%;flex:none;width:10px;height:10px}.dot.ok{background:#4caf72;box-shadow:0 0 8px #4caf72aa}.dot.warn{background:#e0a83e}.dot.off{background:#7a7a7a}.midi-help{border-top:1px solid var(--border);color:var(--text-dim);margin-top:12px;padding-top:10px;font-size:13px;line-height:1.55}.midi-help h4{color:var(--text);margin:0 0 6px}.midi-help ol{margin:0 0 8px;padding-left:20px}.midi-help .note{opacity:.85;margin:6px 0 0;font-size:12px}.check{align-items:center;gap:6px;font-size:13px;display:flex}.kb-toggle{color:var(--text-dim);flex-wrap:wrap;margin-top:10px}.kb-toggle kbd{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace;font-size:11px}
