:root{--bg-primary: #0f0f1a;--bg-secondary: #1a1a2e;--bg-card: #252542;--bg-elevated: #2d2d4a;--bg-input: #1e1e36;--text-primary: #f0f0f5;--text-secondary: #a0a0b8;--text-muted: #6a6a80;--accent-primary: #6366f1;--accent-primary-hover: #818cf8;--accent-secondary: #22d3ee;--accent-success: #10b981;--accent-warning: #f59e0b;--accent-error: #ef4444;--accent-gold: #d4af37;--border-color: rgba(255, 255, 255, .08);--border-color-strong: rgba(255, 255, 255, .15);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5);--shadow-glow: 0 0 30px rgba(99, 102, 241, .3);--modal-overlay: rgba(0, 0, 0, .75);--gradient-primary: linear-gradient(135deg, var(--accent-primary), #4f46e5);--gradient-success: linear-gradient(135deg, var(--accent-success), #059669);--gradient-gold: linear-gradient(135deg, #d4af37, #b8960c);--gradient-xp: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary))}body{--action: var(--accent-primary);--action-strong: var(--accent-primary-hover);--on-action: #ffffff;--brand: var(--accent-gold);--bg: var(--bg-primary);--surface: var(--bg-card);--surface-2: var(--bg-elevated);--heading: var(--text-primary);--body: var(--text-secondary);--muted: var(--text-muted);--faint: #4d4d60;--line: var(--border-color);--line-accent: rgba(212, 175, 55, .3);--streak: var(--accent-warning);--streak-deep: #f97316;--on-streak: #000000;--success: var(--accent-success)}body.theme-ocean{--bg-primary: #0a1628;--bg-secondary: #0f2744;--bg-card: #163354;--bg-elevated: #1c4066;--bg-input: #0d1f38;--accent-primary: #0ea5e9;--accent-primary-hover: #38bdf8;--gradient-primary: linear-gradient(135deg, #0ea5e9, #0284c7);--shadow-glow: 0 0 30px rgba(14, 165, 233, .3)}body.theme-forest{--bg-primary: #0f1a14;--bg-secondary: #162b20;--bg-card: #1e3a2c;--bg-elevated: #264a38;--bg-input: #122318;--accent-primary: #22c55e;--accent-primary-hover: #4ade80;--gradient-primary: linear-gradient(135deg, #22c55e, #16a34a);--shadow-glow: 0 0 30px rgba(34, 197, 94, .3)}body.theme-sunset{--bg-primary: #1a0f14;--bg-secondary: #2d1620;--bg-card: #3d1f2c;--bg-elevated: #4d2838;--bg-input: #241218;--accent-primary: #f43f5e;--accent-primary-hover: #fb7185;--gradient-primary: linear-gradient(135deg, #f43f5e, #e11d48);--shadow-glow: 0 0 30px rgba(244, 63, 94, .3)}body.theme-royal{--bg-primary: #110f1a;--bg-secondary: #1e1a2e;--bg-card: #2a2542;--bg-elevated: #363054;--bg-input: #1a1628;--accent-primary: #a855f7;--accent-primary-hover: #c084fc;--gradient-primary: linear-gradient(135deg, #a855f7, #9333ea);--shadow-glow: 0 0 30px rgba(168, 85, 247, .3)}body.theme-amber{--bg-primary: #1a150a;--bg-secondary: #2e2510;--bg-card: #423518;--bg-elevated: #54441e;--bg-input: #241e0d;--accent-primary: #f59e0b;--accent-primary-hover: #fbbf24;--gradient-primary: linear-gradient(135deg, #f59e0b, #d97706);--shadow-glow: 0 0 30px rgba(245, 158, 11, .3)}body.theme-virtuosic{--bg-primary: #0f1a14;--bg-secondary: #162b20;--bg-card: #1e3a2c;--bg-elevated: #264a38;--bg-input: #122318;--accent-primary: #d4af37;--accent-primary-hover: #e6c555;--accent-gold: #d4af37;--gradient-primary: linear-gradient(135deg, #d4af37, #b8960c);--shadow-glow: 0 0 30px rgba(212, 175, 55, .3)}body.light-mode{--bg-primary: #f5f5f8;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-elevated: #f0f0f5;--bg-input: #f5f5f8;--text-primary: #1a1a2e;--text-secondary: #4a4a60;--text-muted: #8a8aa0;--border-color: rgba(0, 0, 0, .08);--border-color-strong: rgba(0, 0, 0, .12);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .08);--shadow-md: 0 4px 20px rgba(0, 0, 0, .1);--modal-overlay: rgba(0, 0, 0, .5)}body.theme-ocean{--on-action: #04283a}body.theme-forest{--on-action: #04210f}body.theme-amber{--on-action: #2a1c05}body.theme-virtuosic{--on-action: #1a2e0d}body.ds2{--streak: #e0a32e;--streak-deep: #c2772a;--on-streak: #2a1c05}body.ds2 .nav-item.active{background:color-mix(in srgb,var(--action) 14%,transparent)}.vx-icon{display:inline-block;vertical-align:middle;flex-shrink:0}.vx-ti{display:inline-flex;align-items:center;vertical-align:middle;margin-right:7px}body.ds2 .card-title .vx-icon,body.ds2 .challenge-icon .vx-icon,body.ds2 .focus-icon .vx-icon{color:var(--action)}body.ds2 .premium-pill:before{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23d4af37' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E")}body.ds2 .note-card.teaser-locked:after{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%23d4af37' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E")}body.ds2 .app-logo span{font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:1.35rem;letter-spacing:0}body.ds2 .overlay-title{font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:1.4rem;letter-spacing:0}body.ds2 .modal-title{font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:1.3rem;letter-spacing:0}body.ds2 .tempo-marking{font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:1.2rem;color:var(--body)}body.ds2 .card.premium-gated{border:1px dashed var(--line-accent);border-left:3px solid var(--brand)}body.ds2 .card.premium-gated .premium-pill{flex-wrap:nowrap}body.ds2 .card.premium-gated .premium-pill:after{content:none}.nav-more,body.iav2 .nav-item[data-tab=learnTab],body.iav2 .nav-item[data-tab=studioTab],body.iav2 .nav-item[data-tab=accountTab]{display:none}.nav-item[data-tab=etudeTab]{display:none!important}body.iav2 .nav-more{display:flex}body.iav2 .nav-item[data-tab=homeTab]{order:1}body.iav2 .nav-item[data-tab=tunerTab]{order:2}body.iav2 .nav-item[data-tab=metronomeTab]{order:3}body.iav2 .nav-item[data-tab=practiceTab]{order:4}body.iav2 .nav-more{order:5}.more-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:4px 0}.more-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:18px 16px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:16px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.more-tile:hover{border-color:var(--accent-gold);background:var(--bg-elevated)}.more-tile-icon{font-size:1.5rem;line-height:1}body.ds2 .more-tile-icon .vx-icon{color:var(--action);width:24px;height:24px}.more-tile-label{font-size:1rem;font-weight:700;color:var(--text-primary)}.more-tile-sub{font-size:.75rem;color:var(--text-muted);line-height:1.3}.etude-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.etude-field .form-label{font-size:.75rem;margin-bottom:4px}.etude-score{background:#fdfdf8;border-radius:12px;padding:8px 4px;overflow-x:auto}.etude-score svg{display:block;margin:0 auto}.etude-lib-chip.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}#etudePrintRoot{position:fixed;left:-10000px;top:0;width:720px;background:#fff;color:#000}.blog-search-row{margin-bottom:14px}.blog-list{display:flex;flex-direction:column;gap:12px}.blog-card{text-align:left;width:100%;background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;padding:16px;cursor:pointer;transition:border-color .15s ease}.blog-card:hover{border-color:var(--accent-gold)}.blog-card-title{font-size:1rem;font-weight:700;color:var(--text-primary);margin-bottom:4px}.blog-card-meta{font-size:.72rem;color:var(--text-muted);margin-bottom:6px}.blog-card-excerpt{font-size:.85rem;color:var(--text-secondary);line-height:1.4}.blog-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.blog-tag{font-size:.68rem;padding:2px 8px;border-radius:10px;background:var(--bg-elevated);color:var(--text-muted)}.blog-post-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:6px;line-height:1.25}body.ds2 .blog-post-title{font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:1.9rem}.blog-post-meta{font-size:.75rem;color:var(--text-muted);margin-bottom:16px}.blog-post-body{color:var(--text-secondary);line-height:1.7;font-size:.95rem}.blog-post-body h1,.blog-post-body h2,.blog-post-body h3{color:var(--text-primary);margin:20px 0 8px;line-height:1.3}.blog-post-body h1{font-size:1.3rem}.blog-post-body h2{font-size:1.15rem}.blog-post-body h3{font-size:1rem}.blog-post-body p{margin:10px 0}.blog-post-body ul,.blog-post-body ol{margin:10px 0;padding-left:22px}.blog-post-body li{margin:4px 0}.blog-post-body a{color:var(--accent-primary);text-decoration:underline}.blog-post-body code{background:var(--bg-elevated);padding:1px 5px;border-radius:4px;font-family:JetBrains Mono,monospace;font-size:.85em}.blog-post-body pre{background:var(--bg-elevated);padding:12px;border-radius:8px;overflow-x:auto;margin:12px 0}.blog-post-body pre code{background:none;padding:0}.blog-post-body blockquote{border-left:3px solid var(--accent-gold);padding-left:12px;margin:12px 0;color:var(--text-muted)}.blog-post-body img{max-width:100%;border-radius:8px}.blog-post-body strong{color:var(--text-primary)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;touch-action:manipulation}html{font-size:16px;-webkit-text-size-adjust:100%;background:var(--bg-primary);overflow:hidden;height:100%}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;overflow:hidden;height:100%;transition:background .3s ease,color .3s ease}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.app-container{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.app-header{flex-shrink:0;height:calc(60px + env(safe-area-inset-top,0px));background:var(--bg-secondary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top,0px) 16px 0;z-index:100;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.app-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.1rem;color:var(--text-primary);letter-spacing:-.5px}.app-logo-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a2f23,#0f1a14);box-shadow:0 2px 8px #0000004d;overflow:hidden}.logo-svg{width:32px;height:32px}.header-actions{display:flex;align-items:center;gap:8px}.header-btn{width:44px;height:44px;border-radius:50%;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;font-size:16px}.header-btn:hover{background:var(--bg-elevated);color:var(--text-primary)}.xp-bar-mini{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-card);border-radius:16px;border:1px solid var(--border-color)}.xp-level{font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:600;color:var(--accent-gold)}.xp-progress-mini{width:50px;height:5px;background:var(--bg-input);border-radius:3px;overflow:hidden}.xp-progress-fill{height:100%;background:var(--gradient-xp);border-radius:3px;transition:width .5s ease}.app-main{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:16px 0;width:100%}.tab-content{display:none;animation:fadeIn .3s ease;max-width:600px;margin:0 auto;padding:0 16px}.tab-content.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.bottom-nav{flex-shrink:0;position:relative;z-index:100;background:var(--bg-secondary);border-top:1px solid var(--border-color);display:flex;align-items:stretch;padding-bottom:max(6px,calc(env(safe-area-inset-bottom,0px) - 8px));-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 4px 6px;min-height:52px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;position:relative}.nav-item:hover{color:var(--text-secondary);background:var(--bg-card)}.nav-item:active{background:var(--bg-elevated)}.nav-item.active{color:var(--accent-primary);background:#6366f11a}.nav-icon{font-size:20px;pointer-events:none}.nav-label{font-size:11px;font-weight:600;pointer-events:none}.premium-badge{font-size:8px;position:absolute;top:4px;right:8px;opacity:.7}.notif-badge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;box-sizing:border-box;border-radius:8px;background:var(--accent-error);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}.notif-list{display:flex;flex-direction:column}.notif-empty{text-align:center;color:var(--text-muted);padding:48px 16px}.notif-empty-icon{font-size:2.4rem;margin-bottom:10px;opacity:.7}.notif-item{display:flex;gap:12px;align-items:flex-start;padding:14px 4px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background .15s ease}.notif-item:hover{background:var(--bg-card)}.notif-item.unread{background:color-mix(in srgb,var(--accent-primary) 9%,transparent)}.notif-item-icon{font-size:1.25rem;line-height:1.4;flex-shrink:0;width:26px;text-align:center}.notif-item-body{flex:1;min-width:0}.notif-item-title{font-weight:600;color:var(--text-primary);font-size:.9rem}.notif-item-text{color:var(--text-secondary);font-size:.82rem;margin-top:2px;word-wrap:break-word}.notif-item-time{color:var(--text-muted);font-size:.72rem;margin-top:4px}.notif-item-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--accent-primary);margin-top:6px}.notif-markall{background:none;border:none;color:var(--accent-primary);font-weight:600;font-size:.85rem;cursor:pointer;padding:4px 8px}.notif-markall:disabled{color:var(--text-muted);cursor:default}body.ds2 .notif-item-icon{display:flex;align-items:center;justify-content:center}body.ds2 .notif-item-icon .vx-icon{color:var(--action)}.tuner-active-dot{display:none;width:6px;height:6px;border-radius:50%;background:var(--accent-success);position:absolute;top:6px;right:12px;animation:pulse-dot 1.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:16px;padding:20px;margin-bottom:16px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-title{font-size:.85rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;border-left:3px solid var(--accent-primary);padding-left:8px}.card.premium-gated{border-left:3px solid var(--accent-gold);border-color:#d4af3733;border-left-color:var(--accent-gold);opacity:.8;transition:opacity .2s ease;position:relative;cursor:pointer}.card.premium-gated:hover{opacity:.95}.card.premium-gated.premium-unlocked{border-left:none;border-color:var(--border-color);opacity:1;cursor:default}.card.premium-gated.premium-unlocked .premium-pill{display:none}.premium-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;min-height:24px;background:#d4af3726;border:1px solid rgba(212,175,55,.4);border-radius:20px;color:var(--accent-gold);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;cursor:pointer;transition:background .15s ease;white-space:nowrap}.premium-pill:before{content:"🔒";font-size:.6rem}.premium-pill:hover{background:#d4af3740}.card.premium-gated .premium-pill{flex-wrap:wrap;justify-content:center;row-gap:1px;padding:3px 12px;border-radius:14px;line-height:1.3}.card.premium-gated .premium-pill:after{content:"tap to unlock";flex-basis:100%;text-align:center;font-size:.58rem;font-weight:500;text-transform:none;letter-spacing:.2px;opacity:.85}.section-divider{display:flex;align-items:center;gap:10px;margin:20px 0 12px}.section-divider:before,.section-divider:after{content:"";flex:1;height:1px;background:#d4af374d}.section-divider-label{font-size:.7rem;font-weight:600;color:var(--accent-gold);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.collapsible-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--bg-card);border:1px solid rgba(212,175,55,.2);border-radius:12px;cursor:pointer;margin-bottom:0;transition:margin-bottom .3s ease;-webkit-user-select:none;user-select:none}.collapsible-header.open{margin-bottom:8px}.collapsible-header-left{display:flex;align-items:center;gap:8px}.collapsible-header-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.collapsible-chevron{font-size:.7rem;color:var(--text-muted);transition:transform .3s ease}.collapsible-header.open .collapsible-chevron{transform:rotate(180deg)}.collapsible-body{max-height:0;overflow:hidden;transition:max-height .4s ease}.collapsible-body.open{max-height:2000px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:10px;font-family:inherit;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .15s ease;border:none;outline:none;min-height:44px;position:relative}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-glow)}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--bg-card);border-color:var(--border-color-strong)}.btn-success{background:var(--accent-success);color:#fff}.btn-danger{background:var(--accent-error);color:#fff}.btn-gold{background:var(--gradient-gold);color:#000}.btn-lg{padding:14px 28px;font-size:1rem;border-radius:14px}.btn-sm{padding:6px 12px;font-size:.8rem;min-height:36px}.btn-sm:after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;transform:translateY(-50%)}.form-group{margin-bottom:16px}.form-label{display:block;font-size:.85rem;font-weight:500;color:var(--text-primary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.form-input,.form-select,.form-textarea{width:100%;padding:10px 14px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:10px;color:var(--text-primary);font-family:inherit;font-size:16px;transition:all .15s ease}input,select,textarea{font-size:max(16px,1em)!important}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #6366f133}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23a0a0b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.form-textarea{min-height:100px;resize:vertical}.range-container{display:flex;align-items:center;gap:12px}.range-slider{flex:1;-webkit-appearance:none;height:6px;background:var(--bg-input);border-radius:3px;outline:none}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;background:var(--accent-primary);border-radius:50%;cursor:pointer}.range-value{min-width:40px;text-align:center;font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:500}.toggle{position:relative;width:46px;height:26px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--bg-input);border-radius:26px;transition:.15s ease}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.15s ease}.toggle input:checked+.toggle-slider{background:var(--accent-primary)}.toggle input:checked+.toggle-slider:before{transform:translate(20px)}.etude-gs-toggle .toggle-slider{background:var(--bg-card);border:1.5px solid var(--border-color-strong)}.etude-gs-toggle .toggle-slider:before{left:2px;bottom:2px;background:var(--text-muted)}.etude-gs-toggle input:checked+.toggle-slider{background:var(--accent-primary);border-color:var(--accent-primary)}.etude-gs-toggle input:checked+.toggle-slider:before{background:#fff}.streak-banner{background:linear-gradient(135deg,var(--streak),var(--streak-deep));border-radius:16px;padding:14px 18px;margin-bottom:16px;display:flex;align-items:center;gap:14px;color:var(--on-streak)}.streak-fire{font-size:2rem;animation:flicker 1s infinite alternate}@keyframes flicker{0%{transform:scale(1)}to{transform:scale(1.1)}}.streak-info{flex:1}.streak-count{font-size:1.6rem;font-weight:700;line-height:1}.streak-label{font-size:.8rem;opacity:.8}.streak-banner.streak-at-risk{background:linear-gradient(135deg,#ef4444,#dc2626);animation:streakPulse 2s ease-in-out infinite}@keyframes streakPulse{0%,to{box-shadow:0 0 #ef444466}50%{box-shadow:0 0 0 8px #ef444400}}@keyframes bpmFlash{0%{color:inherit;transform:scale(1)}30%{color:var(--accent-warning, #f59e0b);transform:scale(1.18)}to{color:inherit;transform:scale(1)}}.bpm-flash{animation:bpmFlash .5s ease forwards}.notes-tag-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 0 10px;align-items:center}.tag-chips-label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-right:2px;white-space:nowrap}.tag-chip{font-size:.72rem;padding:3px 10px;border-radius:20px;border:1px solid;cursor:pointer;transition:opacity .15s,transform .15s;font-weight:500;background:none}.tag-chip:hover{opacity:.8}.tag-chip-active{box-shadow:0 0 0 2px #ffffff59;transform:scale(1.06)}.note-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.note-tag-pill{font-size:.65rem;padding:2px 7px;border-radius:10px;border:1px solid;font-weight:500}.xp-card{background:linear-gradient(135deg,var(--bg-card),var(--bg-elevated));border:1px solid var(--border-color);border-radius:16px;padding:18px;margin-bottom:16px}.xp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.xp-level-display{display:flex;align-items:center;gap:12px}.xp-level-badge{width:44px;height:44px;border-radius:50%;background:var(--gradient-gold);display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:1.1rem;font-weight:700;color:#000;box-shadow:0 0 15px #d4af3766}.xp-level-info h3{font-size:1rem;font-weight:600}.xp-level-info p{font-size:.8rem;color:var(--text-secondary)}.xp-progress-bar{height:10px;background:var(--bg-input);border-radius:5px;overflow:hidden;margin-bottom:6px}.xp-progress-fill-main{height:100%;background:var(--gradient-xp);border-radius:5px;transition:width .5s ease}.xp-progress-text{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted)}.challenge-card{background:var(--bg-card);border:2px solid var(--accent-primary);border-radius:14px;padding:14px;margin-bottom:10px;position:relative}.challenge-card.completed{border-color:var(--accent-success);background:#10b9811a}.challenge-header{display:flex;align-items:center;gap:10px;margin-bottom:6px}.challenge-icon{font-size:1.3rem}.challenge-title{font-weight:600;flex:1;font-size:.95rem}.challenge-xp{background:var(--accent-primary);color:#fff;padding:3px 8px;border-radius:10px;font-size:.75rem;font-weight:600}.challenge-desc{font-size:.85rem;color:var(--text-secondary);margin-bottom:10px}.challenge-progress{height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden}.challenge-progress-fill{height:100%;background:var(--accent-primary);border-radius:3px;transition:width .3s ease}.challenge-progress-text{font-size:.75rem;color:var(--text-muted);margin-top:4px;text-align:right}.achievements-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.achievement-item{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:12px 8px;text-align:center;cursor:pointer;transition:all .2s ease}.achievement-item:hover{transform:translateY(-2px);border-color:var(--accent-primary)}.achievement-item.locked{opacity:.4;filter:grayscale(1)}.achievement-item.locked.premium-locked{opacity:.6;filter:none;cursor:pointer}.achievement-item.locked.premium-locked:hover{border-color:var(--accent-secondary);background:var(--bg-elevated)}.achievement-item.earned{border-color:var(--accent-gold);background:#d4af371a}.achievement-banner{position:fixed;top:70px;left:50%;transform:translate(-50%) translateY(-140px);background:linear-gradient(135deg,var(--bg-elevated),var(--bg-card));border:2px solid var(--accent-gold);border-radius:16px;padding:14px 20px;display:flex;align-items:center;gap:14px;z-index:500;box-shadow:0 8px 32px #d4af3759;transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .3s ease;max-width:calc(100vw - 32px);pointer-events:none;opacity:0}.achievement-banner.visible{transform:translate(-50%) translateY(0);opacity:1}.achievement-banner-icon{font-size:2.2rem;flex-shrink:0}.achievement-banner-label{font-size:.65rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent-gold);margin-bottom:2px}.achievement-banner-name{font-size:1rem;font-weight:700;color:var(--text-primary)}.achievement-icon{font-size:1.8rem;margin-bottom:6px}.achievement-name{font-size:.7rem;font-weight:600}.share-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:20px;font-size:.8rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.share-btn:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.metronome-display{text-align:center;padding:24px 0}.bpm-display{font-family:JetBrains Mono,monospace;font-size:4.5rem;font-weight:700;color:var(--text-primary);line-height:1;margin-bottom:4px}.bpm-display.playing{color:var(--accent-primary)}.bpm-label{font-size:.85rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:2px}.tempo-marking{font-size:.95rem;color:var(--accent-secondary);margin-top:6px;font-style:italic}.swing-indicator{font-size:.8rem;color:var(--accent-gold);margin-top:4px}.beat-indicators{display:flex;justify-content:center;gap:8px;margin:28px 0;flex-wrap:wrap}.beat-dot{width:14px;height:14px;border-radius:50%;background:var(--bg-elevated);border:2px solid var(--border-color-strong);transition:all .1s ease}.beat-dot.active{background:var(--accent-primary);border-color:var(--accent-primary);transform:scale(1.4);box-shadow:0 0 12px #6366f199}.beat-dot.medium{border-color:#f59e0b8c}.beat-dot.medium.active{background:#f59e0bb3;border-color:#f59e0bd9;box-shadow:0 0 10px #f59e0b59}.beat-dot.accent{border-color:var(--accent-warning)}.beat-dot.accent.active{background:var(--accent-warning);border-color:var(--accent-warning);box-shadow:0 0 12px #f59e0b99}.metronome-controls{display:flex;justify-content:center;gap:16px;margin-bottom:28px}.play-btn{width:76px;height:76px;border-radius:50%;background:var(--gradient-primary);border:none;color:#fff;font-size:28px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center}.play-btn:hover{transform:scale(1.05);box-shadow:var(--shadow-glow)}.play-btn.playing{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-glow)}.play-btn.playing:hover{transform:scale(1.05);box-shadow:var(--shadow-glow)}.tap-btn{width:54px;height:54px;border-radius:50%;background:var(--bg-card);border:2px solid var(--border-color-strong);color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}.tap-btn:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.bpm-adjust-row{display:flex;align-items:center;justify-content:center;gap:16px}.bpm-adjust-btn{width:44px;height:44px;border-radius:50%;background:var(--bg-elevated);border:2px solid var(--border-color-strong);color:var(--text-secondary);font-size:1.4rem;font-weight:700;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;line-height:1;user-select:none;-webkit-user-select:none}.bpm-adjust-btn:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.bpm-adjust-btn:active{transform:scale(.92)}.bpm-multiply-row{display:flex;justify-content:center;gap:10px;margin-top:8px}.bpm-multiply-btn{padding:4px 14px;border-radius:16px;background:var(--bg-elevated);border:1.5px solid var(--border-color-strong);color:var(--text-secondary);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s ease;font-family:JetBrains Mono,monospace}.bpm-multiply-btn:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.bpm-multiply-btn:active{transform:scale(.94)}@keyframes bpmPulse{0%{transform:scale(1)}50%{transform:scale(1.025)}to{transform:scale(1)}}.bpm-display.beat-pulse{animation:bpmPulse .12s ease-out}.accent-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;padding:8px 0;grid-column:1 / -1}.accent-grid-dot{width:38px;height:38px;border-radius:50%;background:var(--bg-elevated);border:2.5px solid var(--border-color-strong);color:var(--text-muted);font-size:.82rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;user-select:none;-webkit-user-select:none;position:relative}.accent-grid-dot:hover{border-color:var(--accent-warning)}.accent-grid-dot.accented{background:var(--accent-warning);border-color:var(--accent-warning);color:#fff;box-shadow:0 0 10px #f59e0b66}.accent-grid-dot.level-mute{background:transparent;border-color:var(--border-color);color:var(--text-muted);opacity:.45}.accent-grid-dot.level-mute:after{content:"—";position:absolute;font-weight:400;font-size:1.1em}.accent-grid-dot.level-mute>.beat-num{opacity:0}.accent-grid-dot.level-soft{background:#6366f11a;border-color:#6366f159;color:var(--text-secondary)}.accent-grid-dot.level-normal{background:var(--bg-elevated);border-color:var(--text-muted);color:var(--text-primary)}.accent-grid-dot.level-medium{background:#f59e0b59;border-color:#f59e0bb3;color:#fff;box-shadow:0 0 6px #f59e0b40}.accent-grid-dot.level-accent{background:var(--accent-warning);border-color:var(--accent-warning);color:#fff;box-shadow:0 0 10px #f59e0b66}.accent-grid-dot.off-pulse{opacity:.35}.accent-grid-dot.off-pulse:hover{opacity:.6}.accent-grid-dot .beat-sound-marker{position:absolute;bottom:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--accent-primary);border:2px solid var(--bg-primary);box-shadow:0 1px 2px #0000004d}.practice-modes-grid{display:flex;flex-direction:column;gap:14px}.count-in-indicator{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:12px;background:var(--accent-warning);color:#fff;font-weight:700;font-size:.85rem;animation:countInPulse .5s ease infinite}@keyframes countInPulse{0%,to{opacity:1}50%{opacity:.6}}.dropout-display{font-size:.82rem;color:var(--text-muted);margin-top:4px}.pendulum-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;margin:16px 0;position:relative;overflow:hidden}.pendulum-arm{width:14px;height:120px;background:var(--accent-primary);position:absolute;top:0;transform-origin:top center;transition:transform .3s ease-in-out;clip-path:polygon(43% 0%,57% 0%,65% 88%,50% 100%,35% 88%);filter:drop-shadow(0 0 8px rgba(99,102,241,.45))}.pendulum-bob{display:none}.pendulum-base{width:40px;height:4px;border-radius:2px;background:var(--border-color-strong);position:absolute;top:0;z-index:2}.pendulum-tick{position:absolute;width:5px;height:22px;background:var(--border-color-strong);border-radius:2.5px;top:93px;opacity:.3;transition:opacity .25s ease-out,background .25s ease-out,box-shadow .25s ease-out;pointer-events:none}.pendulum-tick.left{left:calc(50% - 62.5px)}.pendulum-tick.right{left:calc(50% + 57.5px)}.pendulum-tick.lit{opacity:1;background:var(--accent-primary);box-shadow:0 0 14px #6366f1b3;transition:opacity .04s ease-out,background .04s ease-out,box-shadow .04s ease-out}.pendulum-tick.lit.accent{background:var(--accent-warning);box-shadow:0 0 14px #f59e0bb3}.circle-visualizer{display:flex;justify-content:center;align-items:center;margin:16px 0}.circle-visualizer svg{width:180px;height:180px}.circle-beat{fill:var(--bg-elevated);stroke:var(--border-color-strong);stroke-width:2;transition:all .1s ease;cursor:default}.circle-beat.active{fill:var(--accent-primary);stroke:var(--accent-primary);filter:drop-shadow(0 0 6px rgba(99,102,241,.6))}.circle-beat.accent{stroke:var(--accent-warning);stroke-width:2.5}.circle-beat.accent.active{fill:var(--accent-warning);stroke:var(--accent-warning);filter:drop-shadow(0 0 6px rgba(245,158,11,.6))}.circle-hand{stroke:var(--accent-primary);stroke-width:2;stroke-linecap:round;transition:all .08s ease}.visual-mode-chips{display:flex;justify-content:center;gap:8px;margin:10px 0 4px}.polyrhythm-config{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:10px}.polyrhythm-ratio{font-family:JetBrains Mono,monospace;font-size:1.3rem;font-weight:700;color:var(--accent-primary);text-align:center;margin:8px 0}.setlist-section{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--bg-elevated);border:1.5px solid var(--border-color);margin-bottom:6px;transition:all .15s ease}.setlist-section.active-section{border-color:var(--accent-primary);background:#6366f114}.setlist-section .section-name{flex:1;font-weight:600;font-size:.88rem;color:var(--text-primary)}.setlist-section .section-info{font-size:.78rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.setlist-section .section-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:2px 6px;border-radius:4px}.setlist-section .section-remove:hover{color:var(--accent-error)}.setlist-progress{display:flex;justify-content:center;gap:6px;margin:10px 0;flex-wrap:wrap}.setlist-progress-dot{width:10px;height:10px;border-radius:50%;background:var(--bg-elevated);border:2px solid var(--border-color-strong);transition:all .15s ease}.setlist-progress-dot.completed{background:var(--accent-primary);border-color:var(--accent-primary)}.setlist-progress-dot.current{background:var(--accent-warning);border-color:var(--accent-warning);box-shadow:0 0 8px #f59e0b80}.setlist-add-row{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}.setlist-add-row input,.setlist-add-row select{font-size:.82rem}.tuner-display{text-align:center;padding:24px 0}.note-display{font-family:JetBrains Mono,monospace;font-size:clamp(2.4rem,8vw,3.2rem);font-weight:700;color:var(--text-primary);line-height:1;letter-spacing:-.02em;min-height:3.2rem;display:flex;align-items:center;justify-content:center;gap:2px}.note-display .octave{font-size:.45em;vertical-align:super;color:var(--text-secondary);align-self:flex-start;padding-top:.15em}.frequency-display{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text-muted);margin-top:4px}.cents-display{font-family:JetBrains Mono,monospace;font-size:1.3rem;font-weight:600;color:var(--text-secondary);margin-top:4px}.cents-display.sharp{color:var(--accent-error)}.cents-display.flat{color:var(--accent-warning)}.cents-display.in-tune{color:var(--accent-success)}.cents-display.focus-muted{font-size:.85rem;opacity:.6}.note-display.low-confidence,.frequency-display.low-confidence{opacity:.55;font-style:italic;transition:opacity .2s ease,font-style 0ms}.tuner-review-card{background:var(--bg-elevated);border:1px solid var(--border-color);border-left:3px solid var(--accent-primary);border-radius:12px;padding:12px 14px;margin:12px 0;animation:tunerReviewFadeIn .22s ease-out}.tuner-review-header{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}.tuner-review-note{font-size:1.4rem;font-weight:700;color:var(--text-primary);line-height:1}.tuner-review-verdict{font-size:.95rem;font-weight:600}.tuner-review-verdict.in-tune{color:var(--accent-success)}.tuner-review-verdict.sharp{color:var(--accent-error)}.tuner-review-verdict.flat{color:var(--accent-warning)}.tuner-review-stats{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;color:var(--text-secondary)}.tuner-review-stats span{white-space:nowrap}.tuner-review-tip{margin-top:10px;padding:8px 10px;background:var(--bg-card);border-radius:8px;border-left:2px solid var(--accent-primary);font-size:.82rem;color:var(--text-secondary);line-height:1.4}.tuner-review-tip .review-tip-line{display:block}.tuner-review-tip .review-tip-line+.review-tip-line{margin-top:6px}.tuner-review-tip .review-tip-env--notable{color:var(--accent-color, #e76f51);font-weight:600}.tuner-review-tip .review-tip-caveat{color:var(--text-muted);font-style:italic;font-size:.78rem}@keyframes tunerReviewFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tuner-meter{position:relative;width:100%;height:60px;margin-bottom:4px;overflow:hidden;border-radius:30px}.meter-track{position:absolute;inset:0;background:linear-gradient(to right,#ef444438,#f973162e 20%,#eab30826,#10b98133,#eab30826,#f973162e 80%,#ef444438);border:1px solid rgba(255,255,255,.07);pointer-events:none}.meter-target-zone{position:absolute;inset:0 42%;background:#10b98121;border-left:1px solid rgba(16,185,129,.35);border-right:1px solid rgba(16,185,129,.35);pointer-events:none}.meter-center{position:absolute;left:50%;top:18%;bottom:18%;width:2px;transform:translate(-50%);background:#ffffff73;border-radius:1px;pointer-events:none}.meter-scale{display:flex;align-items:center;justify-content:space-between;padding:5px 8px 0;font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--text-muted);margin-bottom:16px}.tuner-strobe{position:relative;width:100%;height:16px;margin:2px 0 14px;border-radius:4px;overflow:hidden;background-image:repeating-linear-gradient(90deg,#ffffffd9 0 6px,#ffffff1a 6px 12px);background-size:24px 100%;border:1px solid rgba(255,255,255,.08)}.tuner-strobe.hidden{display:none}.tuner-strobe.in-tune{background-image:repeating-linear-gradient(90deg,#10b981d9 0 6px,#10b98126 6px 12px)}.tuner-history-graph{display:block;width:100%;height:80px;margin-bottom:14px;border-radius:8px;background:#0000002e;border:1px solid rgba(255,255,255,.06)}.tuner-history-graph.hidden{display:none}.meter-indicator{position:absolute;top:50%;left:50%;width:38px;height:38px;border-radius:50%;transform:translate(-50%,-50%);will-change:transform;transition:background-color .15s ease;background:var(--accent-primary);box-shadow:0 0 10px #6366f180;pointer-events:none}.meter-indicator.pitch-near{background:#eab308;box-shadow:0 0 12px #eab308b3,0 0 24px #eab3084d}.meter-indicator.pitch-mid{background:#f97316;box-shadow:0 0 12px #f97316b3,0 0 24px #f973164d}.meter-indicator.pitch-far{background:#ef4444;box-shadow:0 0 12px #ef4444b3,0 0 24px #ef44444d}.meter-indicator.in-tune{background:#10b981;box-shadow:0 0 12px #10b981b3,0 0 24px #10b98159}.meter-indicator.in-tune:after{content:"";position:absolute;inset:-6px;border-radius:50%;background:#10b98166;animation:pitch-pulse 1.1s ease-in-out infinite;pointer-events:none}@keyframes pitch-pulse{0%,to{opacity:.7;transform:scale(.9)}50%{opacity:0;transform:scale(1.6)}}.tuner-advice{font-size:1rem;color:var(--text-secondary);min-height:24px}.tuner-advice.sharp{color:var(--accent-error)}.tuner-advice.flat{color:var(--accent-warning)}.tuner-advice.in-tune{color:var(--accent-success)}.tuner-controls{display:flex;justify-content:center;gap:14px;margin:24px 0;position:relative;flex-wrap:wrap;align-items:center}.warmup-pill{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:20px;border:1.5px solid var(--border-color);background:var(--bg-elevated);color:var(--text-secondary);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.warmup-pill.active{border-color:#f59e0b;background:#f59e0b1f;color:#f59e0b;box-shadow:0 0 12px #f59e0b40}.tuner-option-pill{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:20px;border:1.5px solid var(--border-color);background:var(--bg-elevated);color:var(--text-secondary);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .2s ease;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.tuner-option-pill .tuner-option-icon{font-size:.9rem;filter:grayscale(1) opacity(.5);transition:filter .2s ease}.tuner-option-pill.active{border-color:var(--accent-primary);background:rgba(var(--accent-primary-rgb, 34, 197, 94),.12);color:var(--accent-primary)}.tuner-option-pill.active .tuner-option-icon{filter:none}.warmup-tooltip{position:absolute;top:calc(100% + 10px);left:0;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;padding:10px 14px;font-size:.78rem;color:var(--text-secondary);line-height:1.4;width:260px;max-width:min(260px,78vw);box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:100}.warmup-tooltip.visible{opacity:1;pointer-events:auto}.warmup-tooltip:after{content:"";position:absolute;bottom:100%;left:22px;border:6px solid transparent;border-bottom-color:var(--border-color)}.warmup-tooltip:before{content:"";position:absolute;bottom:100%;left:22px;border:5px solid transparent;border-bottom-color:var(--bg-card);z-index:1;margin-bottom:-1px}.env-band-control{position:relative;display:inline-flex}.env-band-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border-radius:20px;border:1.5px solid var(--border-color);background:var(--bg-elevated);color:var(--text-secondary);font-size:1.05rem;line-height:1;cursor:pointer;transition:border-color .2s ease,background .2s ease;-webkit-tap-highlight-color:transparent}.env-band-control.open .env-band-btn{border-color:var(--accent-color, #e76f51);background:#e76f511a}.env-band-tray{position:absolute;top:calc(100% + 8px);left:0;display:none;gap:4px;padding:6px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;box-shadow:var(--shadow-md);z-index:100;white-space:nowrap}.env-band-control.open .env-band-tray{display:inline-flex}.env-band-opt{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:10px;border:1.5px solid transparent;background:var(--bg-elevated);font-size:1rem;line-height:1;cursor:pointer;transition:border-color .15s ease,background .15s ease}.env-band-opt:hover,.env-band-opt.active{border-color:var(--accent-color, #e76f51);background:#e76f511f}.ji-controls{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 14px;flex-wrap:wrap}.ji-chip-group{display:inline-flex;border-radius:10px;overflow:hidden;border:1px solid var(--border-color)}.ji-chip{padding:6px 14px;font-size:.78rem;font-weight:600;background:var(--bg-elevated);color:var(--text-secondary);border:none;cursor:pointer;transition:background .15s,color .15s;position:relative;white-space:nowrap}.ji-chip+.ji-chip{border-left:1px solid var(--border-color)}.ji-chip.active{background:var(--accent-primary);color:#fff}.ji-chip .premium-pill{font-size:.6rem;margin-left:4px;vertical-align:middle;padding:1px 5px}.ji-key-select{padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-elevated);color:var(--text-primary);font-size:.8rem;font-weight:600;font-family:inherit}.ji-key-label{font-size:.75rem;color:var(--text-muted);font-weight:600}.ji-cents-display{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text-muted);margin-top:2px;transition:color .15s}.ji-cents-display.in-tune{color:var(--accent-success)}.ji-cents-display.sharp{color:var(--accent-error)}.ji-cents-display.flat{color:var(--accent-warning)}.interval-display{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-top:1px;min-height:16px}.ji-target-marker{position:absolute;top:-2px;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:10px solid var(--accent-primary);transform:translate(-50%);pointer-events:none;z-index:3;transition:left .15s ease;display:none}.ji-target-label{position:absolute;top:-16px;left:50%;transform:translate(-50%);font-size:.55rem;font-weight:700;color:var(--accent-primary);letter-spacing:.05em;white-space:nowrap}.stability-ring-wrap{position:relative;width:200px;height:200px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center}.stability-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.stability-ring circle{stroke-linecap:round}.stability-ring .ring-bg{fill:#0000008c;stroke:none}.stability-ring .ring-track{fill:none;stroke:var(--border-color-strong);stroke-width:6;opacity:.5}.stability-ring .ring-progress{fill:none;stroke:var(--accent-primary);stroke-width:6;filter:drop-shadow(0 0 8px rgba(99,102,241,.6));transition:stroke-dashoffset .1s linear,opacity .1s linear;opacity:.25}body.theme-forest .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(34,197,94,.6))}body.theme-ocean .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(14,165,233,.6))}body.theme-sunset .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(244,63,94,.6))}body.theme-royal .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(168,85,247,.6))}body.theme-amber .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(245,158,11,.6))}body.theme-virtuosic .stability-ring .ring-progress{filter:drop-shadow(0 0 8px rgba(212,175,55,.6))}.pitch-info{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.stability-ring-wrap.active .stability-ring .ring-progress{opacity:1}.stability-ring-wrap.recorded{animation:ringPulse .5s cubic-bezier(.22,1,.36,1)}.stability-ring-wrap.recorded .stability-ring .ring-progress{stroke:var(--accent-success);filter:drop-shadow(0 0 14px var(--accent-success));transition:stroke 0ms,filter 0ms}@keyframes ringPulse{0%{transform:scale(1)}30%{transform:scale(1.08)}to{transform:scale(1)}}.stability-ring-label{text-align:center;font-size:.78rem;color:var(--text-muted);min-height:18px}.stability-ring-label strong{color:var(--text-secondary);font-weight:600}.tuner-noise-arc{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.tuner-noise-arc .arc-track{fill:#80808029;stroke:#80808052;stroke-width:.3}.tuner-noise-arc .arc-fill{fill:var(--accent-success);fill-opacity:.78;transition:fill-opacity .12s linear}.tuner-noise-arc.below-gate .arc-fill{fill:var(--text-muted);fill-opacity:.55}.tuner-noise-arc .arc-threshold{fill:var(--accent-error);fill-opacity:.92;stroke:none}.tuner-noise-arc .arc-knob{fill:var(--accent-error);stroke:#ffffffbf;stroke-width:.6;pointer-events:none;visibility:hidden}.tuner-noise-arc .arc-hit{fill:transparent;stroke:none;pointer-events:all;cursor:grab;touch-action:none}.tuner-noise-arc.dragging .arc-hit{cursor:grabbing}.tuner-noise-arc .arc-knob.pulse{animation:noiseKnobPulse 1.4s ease-in-out 4}@keyframes noiseKnobPulse{0%,to{stroke-width:.6;fill-opacity:1}50%{stroke-width:1.6;fill-opacity:.55}}.tuner-resonance-arc{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.tuner-resonance-arc .arc-track{fill:#80808029;stroke:#80808052;stroke-width:.3}.tuner-resonance-arc .arc-fill{fill:var(--text-muted);fill-opacity:.55;transition:fill-opacity .12s linear}.tuner-resonance-arc.tier-mid .arc-fill{fill:#e9c46a;fill-opacity:.8}.tuner-resonance-arc.tier-high .arc-fill{fill:var(--accent-success);fill-opacity:.9;filter:drop-shadow(0 0 3px var(--accent-success))}.tuner-noise-control .tuner-noise-control-legacy{display:none}@media(max-width:380px){.stability-ring-wrap{width:170px;height:170px}.note-display{font-size:2.4rem}.note-display .octave,.cents-display{font-size:1.1rem}}.conflict-summary{font-size:.9rem;color:var(--text-secondary);margin-bottom:12px}.conflict-list{display:flex;flex-direction:column;gap:10px}.conflict-item{background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;padding:12px}.conflict-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.conflict-title{font-weight:700;font-size:.95rem}.conflict-meta{font-size:.75rem;color:var(--text-muted);margin-top:2px}.conflict-preview{display:flex;flex-direction:column;gap:4px;margin-top:8px;padding:8px 10px;background:var(--bg-elevated);border-radius:10px}.conflict-preview-side{display:flex;gap:8px;align-items:baseline}.conflict-preview-label{flex-shrink:0;width:42px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted)}.conflict-preview-text{font-size:.8rem;color:var(--text-secondary);line-height:1.35;overflow-wrap:anywhere}.conflict-choices{display:flex;gap:10px;margin-top:10px}.choice-pill{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-elevated);cursor:pointer;flex:1}.choice-pill input{accent-color:var(--accent-primary)}.choice-pill span{font-size:.85rem;color:var(--text-secondary)}.choice-pill.selected{border-color:var(--accent-primary);box-shadow:0 0 0 3px #6366f12e}.tuner-btn{padding:14px 28px;border-radius:14px;font-size:.95rem;font-weight:600;border:none;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.tuner-btn.start{background:var(--gradient-success);color:#fff}.tuner-btn.stop{background:linear-gradient(135deg,var(--accent-error),#dc2626);color:#fff}.feedback-panel{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:14px;padding:14px;margin-top:14px;margin-bottom:16px}.feedback-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.feedback-highlight{display:inline-block;padding:2px 6px;background:#6366f133;border-radius:4px;color:var(--accent-primary);font-weight:500}.feedback-tip{padding:10px;background:var(--bg-card);border-radius:8px;border-left:3px solid var(--accent-primary);margin-top:10px}.feedback-tip--context{border-left-color:var(--text-muted);opacity:.92}.feedback-tip--context .feedback-tip-label{color:var(--text-muted)}.feedback-tip-label{font-size:.7rem;font-weight:600;color:var(--accent-primary);text-transform:uppercase;margin-bottom:3px}.feedback-tip-text{font-size:.85rem;color:var(--text-secondary)}.history-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--bg-elevated);border-radius:8px;margin-bottom:6px}.history-item-note{font-family:JetBrains Mono,monospace;font-weight:600;font-size:.9rem}.history-item-cents{font-family:JetBrains Mono,monospace;font-size:.85rem}.history-item-cents.sharp{color:var(--accent-error)}.history-item-cents.flat{color:var(--accent-warning)}.history-item-cents.in-tune{color:var(--accent-success)}.tendency-table{width:100%;border-collapse:collapse;font-size:.8rem;margin-top:8px}.tendency-table th{text-align:left;color:var(--text-muted);font-weight:500;padding:4px 6px;border-bottom:1px solid var(--border-color);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.tendency-table td{padding:5px 6px;border-bottom:1px solid var(--border-color);font-family:JetBrains Mono,monospace}.tendency-table tr.drill-target td:first-child{color:var(--accent-primary);font-weight:700}.tendency-sharp{color:var(--accent-error)}.tendency-flat{color:var(--accent-secondary)}.tendency-good{color:var(--accent-success)}.diff-badge{display:inline-block;padding:1px 5px;border-radius:4px;font-size:.7rem;font-weight:600}.diff-sharp{background:#ef44441f;color:var(--accent-error)}.diff-flat{background:#22d3ee1f;color:var(--accent-secondary)}.diff-ok{background:#10b9811f;color:var(--accent-success)}.report-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:10px 0}.report-stat{background:var(--bg-elevated);border-radius:10px;padding:10px 12px;text-align:center}.report-stat-val{font-family:JetBrains Mono,monospace;font-size:1.25rem;font-weight:700;color:var(--accent-primary)}.report-stat-lbl{font-size:.7rem;color:var(--text-muted);margin-top:2px;text-transform:uppercase;letter-spacing:.04em}.note-bar{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border-color);font-size:.8rem}.note-bar:last-child{border-bottom:none}.note-bar-name{font-family:JetBrains Mono,monospace;width:34px;font-weight:600;flex-shrink:0}.note-bar-track{flex:1;height:5px;background:var(--bg-elevated);border-radius:3px;overflow:hidden}.note-bar-fill{height:100%;border-radius:3px}.report-card-wrap{background:linear-gradient(135deg,var(--bg-secondary),var(--bg-elevated));border:1px solid var(--border-color-strong);border-radius:14px;padding:14px;margin:10px 0}.notes-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.notes-title{font-size:1.4rem;font-weight:600}.notes-search{margin-bottom:16px}.notes-filters{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}.filter-chip{padding:6px 14px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;font-size:.8rem;color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease}.filter-chip:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.filter-chip.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.notes-list{display:flex;flex-direction:column;gap:12px}.note-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;padding:14px;cursor:pointer;transition:all .15s ease}.note-card:hover{border-color:var(--accent-primary);transform:translateY(-2px)}.note-card.from-instructor{border-left:3px solid var(--accent-gold)}.note-card.blurred{filter:blur(4px);opacity:.6;pointer-events:none;-webkit-user-select:none;user-select:none}.note-card.teaser-locked{cursor:pointer;position:relative}.note-card.teaser-locked:after{content:"🔒";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;filter:none}.notes-upgrade-banner{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border-radius:14px;padding:16px;margin-bottom:16px;text-align:center;color:#fff}.notes-upgrade-banner h3{margin:0 0 6px;font-size:1rem}.notes-upgrade-banner p{margin:0 0 12px;font-size:.85rem;opacity:.9}.notes-upgrade-banner button{background:#fff;color:var(--accent-primary);border:none;padding:8px 20px;border-radius:8px;font-weight:600;cursor:pointer}.notes-upgrade-banner button:hover{opacity:.9}.note-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:6px}.note-card-title{font-weight:600;font-size:.95rem}.note-card-category{font-size:.7rem;padding:2px 8px;background:var(--bg-elevated);border-radius:10px;color:var(--text-muted);text-transform:capitalize}.note-card-preview{font-size:.85rem;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:6px}.note-card-meta{font-size:.75rem;color:var(--text-muted);display:flex;gap:8px}.notes-empty{text-align:center;padding:40px;color:var(--text-muted)}.notes-empty-icon{font-size:2.5rem;margin-bottom:12px}.studio-header{text-align:center;padding:20px 0}.studio-code{font-family:JetBrains Mono,monospace;font-size:2rem;font-weight:700;letter-spacing:4px;color:var(--accent-gold);background:var(--bg-input);padding:12px 24px;border-radius:12px;display:inline-block;margin:12px 0}.studio-switcher{display:none;padding:4px 0 12px;position:relative}.studio-pill{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:10px 14px;border-radius:999px;background:var(--bg-elevated);border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;font-size:.95rem;font-weight:500;transition:background .15s ease}.studio-pill:hover{background:var(--bg-card)}.studio-pill-label{display:flex;align-items:center;gap:6px;min-width:0}.studio-pill-label .role-tag{font-size:.7rem;padding:2px 6px;border-radius:4px;background:var(--accent-primary);color:#fff;font-weight:600;flex-shrink:0}.studio-pill-label .role-tag.member{background:var(--accent-gold);color:#000}.studio-pill-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studio-pill-caret{color:var(--text-muted);font-size:.8rem;flex-shrink:0}.studio-pill-menu{position:absolute;top:100%;left:0;right:0;z-index:50;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-md);margin-top:4px;max-height:60vh;overflow-y:auto}.studio-pill-section-label{padding:10px 14px 4px;font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.studio-pill-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;cursor:pointer;transition:background .12s ease}.studio-pill-item:hover{background:var(--bg-elevated)}.studio-pill-item.active{background:var(--bg-elevated);font-weight:600}.studio-pill-item-info{min-width:0;flex:1}.studio-pill-item-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studio-pill-item-meta{font-size:.75rem;color:var(--text-muted)}.studio-pill-empty{padding:10px 14px;color:var(--text-muted);font-style:italic;font-size:.85rem}.studio-pill-item.pending{cursor:default}.studio-pill-item.pending:hover{background:transparent}.studio-pill-item .pending-badge{font-size:.7rem;font-weight:700;padding:2px 6px;border-radius:10px;background:var(--accent-gold);color:#000;text-transform:uppercase;letter-spacing:.4px;flex-shrink:0}.studio-pill-item .pending-badge.declined{background:var(--bg-elevated);color:var(--text-muted)}.studio-pill-item .pending-dismiss{background:transparent;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;line-height:1;flex-shrink:0}.studio-pill-item .pending-dismiss:hover{color:var(--text-primary)}.studio-pill-actions{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--border-color)}.studio-pill-actions .btn{flex:1}.leaderboard-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;background:var(--bg-input);margin-bottom:8px;transition:transform .15s ease,box-shadow .15s ease}.leaderboard-item:hover{transform:translate(4px);box-shadow:var(--shadow-sm)}.leaderboard-item.self{border:1px solid var(--accent-primary);background:#6366f11a}.leaderboard-rank{font-family:JetBrains Mono;font-weight:700;font-size:1.1rem;min-width:28px;text-align:center}.leaderboard-rank.gold{color:gold}.leaderboard-rank.silver{color:silver}.leaderboard-rank.bronze{color:#cd7f32}.leaderboard-info{flex:1;min-width:0}.leaderboard-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaderboard-stats{font-size:.8rem;color:var(--text-muted)}.leaderboard-xp{font-family:JetBrains Mono;font-weight:600;color:var(--accent-primary);white-space:nowrap}.studio-students{margin-top:16px}.leaderboard-item.clickable{cursor:pointer}.leaderboard-item.clickable:hover{transform:translate(4px);box-shadow:var(--shadow-sm);background:var(--bg-elevated)}.lesson-note-card{padding:12px;border-radius:10px;background:var(--bg-input);margin-bottom:8px}.lesson-note-card .ln-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.lesson-note-card .ln-title{font-weight:600;font-size:.95rem;flex:1}.lesson-note-card .ln-category{font-size:.7rem;padding:2px 8px;border-radius:20px;background:var(--bg-elevated);color:var(--text-muted);white-space:nowrap}.lesson-note-card .ln-content{font-size:.85rem;color:var(--text-secondary);margin-top:6px;white-space:pre-wrap;word-break:break-word}.lesson-note-card .ln-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.lesson-note-card .ln-date{font-size:.75rem;color:var(--text-muted)}.lesson-note-card .ln-actions{display:flex;gap:6px}.lesson-note-card .ln-actions button{font-size:.75rem;padding:2px 8px}.student-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background:var(--bg-elevated);border-radius:10px;margin-bottom:8px}.student-info{display:flex;align-items:center;gap:10px}.student-avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-size:14px}.student-name{font-weight:500}.student-level{font-size:.8rem;color:var(--text-muted)}.msg-bubble{padding:10px 14px;border-radius:16px;max-width:80%;margin-bottom:6px;word-break:break-word;font-size:.9rem;line-height:1.4}.msg-bubble.sent{background:var(--accent-primary);color:#fff;margin-left:auto;border-bottom-right-radius:4px}.msg-bubble.received{background:var(--bg-elevated);color:var(--text-primary);margin-right:auto;border-bottom-left-radius:4px}.msg-bubble.flagged{border:1px solid var(--accent-warning);opacity:.7}.msg-bubble .msg-time{font-size:.7rem;opacity:.7;margin-top:4px}.msg-bubble.blocked-msg{opacity:.4;font-style:italic;font-size:.8rem;background:var(--bg-secondary);color:var(--text-muted);cursor:default;border:1px dashed var(--border-color)}.msg-context-menu{position:fixed;z-index:1100;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);padding:4px 0;min-width:180px;animation:fadeIn .15s ease}.msg-context-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:10px 16px;background:none;border:none;color:var(--text-primary);font-size:.88rem;cursor:pointer;text-align:left}.msg-context-menu button:hover{background:var(--bg-elevated)}.msg-context-menu button.danger{color:var(--accent-error)}.msg-context-menu button.danger:hover{background:#ff3b301a}.msg-input-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border-color);background:var(--bg-secondary)}.msg-input-row input{flex:1}.msg-list{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:2px}.msg-unread-badge{background:var(--accent-error);color:#fff;font-size:.65rem;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;margin-left:6px}.modal-overlay{display:none;position:fixed;inset:0;background:var(--modal-overlay);z-index:1000;align-items:center;justify-content:center;padding:16px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-overlay.visible{display:flex;animation:fadeIn .2s ease}body:has(.modal-overlay.visible){overflow:hidden;touch-action:none}.modal-overlay.visible .modal{animation:modalSlideIn .25s ease}@keyframes modalSlideIn{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal{background:var(--bg-secondary);border-radius:20px;width:100%;max-width:480px;max-height:90vh;max-height:90dvh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);position:relative}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:1.05rem;font-weight:600}.modal-close{width:44px;height:44px;border-radius:50%;background:var(--bg-card);border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px}.modal-close:hover{background:var(--bg-elevated);color:var(--text-primary)}#upgradeModal .modal-close{position:absolute;top:12px;right:12px;background:#0000004d;color:#fff;z-index:10}#upgradeModal .modal-close:hover{background:#00000080;color:#fff}.modal-body{flex:1;padding:20px;overflow-y:auto}.modal-footer{display:flex;gap:8px;padding:14px 20px;border-top:1px solid var(--border-color)}.modal-footer .btn{flex:1}.overlay{display:none;position:fixed;inset:0;background:var(--bg-primary);z-index:200;flex-direction:column}.overlay.visible{display:flex;animation:slideInRight .3s ease}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.overlay-header{display:flex;align-items:center;gap:14px;height:calc(60px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 16px 0;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0}.overlay-title{font-size:1.1rem;font-weight:600}.overlay-content{flex:1;overflow-y:auto;padding:16px}.settings-section{margin-bottom:28px}.settings-section-title{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px}.settings-item{display:flex;align-items:center;justify-content:space-between;padding:14px;background:var(--bg-card);border-radius:10px;margin-bottom:8px}.settings-item-info{flex:1}.settings-item-label{font-weight:500;font-size:.9rem}.settings-item-desc{font-size:.8rem;color:var(--text-muted);margin-top:2px}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}.theme-option{display:flex;flex-direction:column;align-items:center;padding:10px;background:var(--bg-card);border:2px solid var(--border-color);border-radius:10px;cursor:pointer;transition:all .15s ease}.theme-option:hover{border-color:var(--accent-primary)}.theme-option.active{border-color:var(--accent-primary);background:#6366f11a}.theme-preview{width:36px;height:36px;border-radius:50%;margin-bottom:6px}.theme-name{font-size:.75rem;font-weight:500;color:var(--text-secondary)}.compendium-instrument-nav{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--border-color)}.instrument-nav-btn{padding:6px 14px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;font-size:.8rem;color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease}.instrument-nav-btn:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.instrument-nav-btn.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.compendium-section{margin-bottom:20px}.compendium-section h3{font-size:1.1rem;margin-bottom:10px}.compendium-section h4{font-size:.95rem;margin:14px 0 8px;color:var(--accent-secondary)}.compendium-section p{color:var(--text-secondary);margin-bottom:10px;line-height:1.6;font-size:.9rem}.compendium-section ul{margin-left:18px;margin-bottom:10px}.compendium-section li{color:var(--text-secondary);margin-bottom:5px;font-size:.9rem}.fingering-chart{background:var(--bg-card);border-radius:12px;padding:14px;margin:14px 0;overflow-x:auto}.fingering-chart-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.fingering-table{width:100%;border-collapse:collapse;font-family:JetBrains Mono,monospace;font-size:.8rem}.fingering-table th,.fingering-table td{padding:6px 10px;text-align:center;border-bottom:1px solid var(--border-color)}.fingering-table th{color:var(--text-muted);font-weight:500;font-size:.7rem;text-transform:uppercase}.fingering-alternates{font-size:.7rem;color:var(--text-secondary);margin-top:2px;font-style:italic;line-height:1.3}.register-note{padding:6px 0;font-size:.82rem;line-height:1.5;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.register-note:last-child{border-bottom:none}.register-label{font-weight:600;color:var(--accent-primary);margin-right:4px}.equipment-subsection{margin-bottom:12px}.equipment-subsection-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;border-bottom:1px solid var(--border-color);padding-bottom:2px}.equipment-subsection ul{margin:0;padding-left:16px}.equipment-subsection li{font-size:.78rem;color:var(--text-primary);line-height:1.5;margin-bottom:2px}.general-topic-nav{display:flex;gap:6px;overflow-x:auto;padding:8px 0 14px;margin-bottom:14px;flex-wrap:wrap}.general-topic-chip{padding:6px 12px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:16px;font-size:.78rem;color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease;text-decoration:none;display:inline-block}.general-topic-chip:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.general-section{scroll-margin-top:80px;margin-bottom:28px;padding-top:8px;border-top:1px solid var(--border-color)}.general-section:first-of-type{border-top:none;padding-top:0}.general-section h3{font-size:1.05rem;margin-bottom:12px;color:var(--accent-primary)}.mnemonic-card{background:var(--bg-elevated);border-left:3px solid var(--accent-primary);padding:10px 14px;margin:10px 0;border-radius:6px}.mnemonic-card .mnemonic-letters{font-family:JetBrains Mono,monospace;font-weight:700;color:var(--accent-warning);font-size:.95rem;letter-spacing:.1em;margin-bottom:4px}.mnemonic-card .mnemonic-phrase{font-style:italic;color:var(--text-primary);font-size:.92rem}.mnemonic-card .mnemonic-alt{font-size:.78rem;color:var(--text-muted);margin-top:2px}.term-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:10px 0;font-size:.85rem}.term-grid dt{font-weight:700;color:var(--accent-secondary);font-family:JetBrains Mono,monospace}.term-grid dd{color:var(--text-secondary);margin:0}.note-value-row{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:.88rem}.note-value-row .nv-glyph{font-size:1.4rem;min-width:28px;text-align:center;color:var(--text-primary)}.note-value-row .nv-name{font-weight:600;color:var(--text-primary);min-width:100px}.note-value-row .nv-beats{color:var(--text-secondary)}.tendency-badge{display:inline-block;padding:2px 6px;border-radius:4px;font-size:.7rem;font-weight:500}.tendency-badge.sharp{background:#ef444433;color:var(--accent-error)}.tendency-badge.flat{background:#f59e0b33;color:var(--accent-warning)}.tendency-badge.neutral{background:#10b98133;color:var(--accent-success)}.loading-state{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 12px;color:var(--text-muted);font-size:.85rem;text-align:center}.skeleton-line{width:100%;max-width:260px;height:10px;border-radius:6px;background:linear-gradient(90deg,var(--bg-elevated) 25%,var(--bg-card) 50%,var(--bg-elevated) 75%);background-size:200% 100%;animation:skeletonShimmer 1.2s ease-in-out infinite}.skeleton-line+.skeleton-line{max-width:180px}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 12px;text-align:center}.empty-state-icon{font-size:1.6rem;opacity:.75}.empty-state-title{font-size:.9rem;font-weight:600;color:var(--text-secondary)}.empty-state-hint{font-size:.8rem;color:var(--text-muted);line-height:1.4;max-width:320px}.toast{position:fixed;bottom:calc(85px + env(safe-area-inset-bottom,0));left:50%;transform:translate(-50%) translateY(100px);background:var(--bg-card);color:var(--text-primary);padding:14px 20px;border-radius:14px;box-shadow:var(--shadow-lg);z-index:2000;opacity:0;transition:all .25s ease;border:1px solid var(--border-color);pointer-events:none}.toast.visible{transform:translate(-50%) translateY(0);opacity:1}.mission-chip{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom,0));right:16px;transform:translateY(20px);opacity:0;transition:opacity .25s ease,transform .25s ease;z-index:1500;background:var(--bg-card);border:1px solid var(--accent-primary);border-radius:22px;padding:8px 8px 8px 14px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-lg);pointer-events:none;max-width:calc(100vw - 32px)}.mission-chip.visible{transform:translateY(0);opacity:1;pointer-events:auto}.mission-chip-label{font-size:.78rem;color:var(--text-primary);font-weight:600;white-space:nowrap}.mission-chip-count{font-size:.78rem;color:var(--accent-primary);font-weight:700;font-variant-numeric:tabular-nums}.mission-chip-progress{width:60px;height:4px;background:var(--bg-elevated);border-radius:2px;overflow:hidden;flex-shrink:0}.mission-chip-progress-bar{height:100%;background:var(--accent-primary);border-radius:2px;transition:width .3s cubic-bezier(.22,1,.36,1);width:0%}.mission-chip-dismiss{background:transparent;border:none;color:var(--text-muted);padding:4px 8px;cursor:pointer;font-size:1rem;line-height:1;border-radius:12px;transition:color .15s,background .15s}.mission-chip-dismiss:hover{color:var(--text-primary);background:var(--bg-elevated)}.toast.success{border-color:var(--accent-success);background:#10b98126}.toast.error{border-color:var(--accent-error);background:#ef444426}.toast.xp{border-color:var(--accent-gold);background:#d4af3726;color:var(--accent-gold);font-weight:600}.xp-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--gradient-gold);color:#000;padding:16px 32px;border-radius:16px;font-size:1.3rem;font-weight:700;z-index:3000;animation:xpPopup 1.5s ease-out forwards;pointer-events:none}@keyframes xpPopup{0%{transform:translate(-50%,-50%) scale(0);opacity:0}20%{transform:translate(-50%,-50%) scale(1.2);opacity:1}40%{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-50%,-100%) scale(.8);opacity:0}}@media(max-width:380px){.bpm-display{font-size:3.5rem}.achievements-grid,.theme-grid{grid-template-columns:repeat(2,1fr)}.settings-grid{grid-template-columns:1fr}}.onboarding-overlay{position:fixed;inset:0;background:var(--bg-primary);z-index:5000;display:flex;flex-direction:column}.onboarding-slide{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.onboarding-icon{font-size:4rem;margin-bottom:24px}.onboarding-title{font-size:1.5rem;font-weight:700;margin-bottom:12px;color:var(--text-primary)}.onboarding-desc{font-size:1rem;color:var(--text-secondary);max-width:300px;line-height:1.6}.onboarding-dots{display:flex;gap:8px;justify-content:center;margin:24px 0}.onboarding-dot{width:8px;height:8px;border-radius:50%;background:var(--border-color);transition:all .2s}.onboarding-dot.active{background:var(--accent-primary);width:24px;border-radius:4px}.onboarding-actions{padding:24px;display:flex;gap:12px}.onboarding-actions .btn{flex:1}.onboarding-form{width:100%;max-width:320px;margin-top:16px;text-align:left}.onboarding-form select,.onboarding-form input{width:100%;padding:12px 14px;border-radius:12px;border:1.5px solid var(--border-color);background:var(--bg-elevated);color:var(--text-primary);font-size:1rem;margin-top:6px;appearance:auto}.onboarding-form label{display:block;font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-top:12px}.onboarding-form label:first-child{margin-top:0}.onboarding-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;justify-content:center}.onboarding-chip{padding:10px 14px;border-radius:999px;border:1.5px solid var(--border-color);background:var(--bg-elevated);color:var(--text-primary);font-size:.92rem;font-weight:600;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.onboarding-chip:hover{border-color:var(--accent-primary)}.onboarding-chip.selected{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.onboarding-chip-hint{font-size:.78rem;color:var(--text-muted);margin-top:12px;text-align:center}@keyframes learnToolPulse{0%{outline-color:var(--accent-primary);outline-offset:0}50%{outline-color:var(--accent-primary);outline-offset:6px}to{outline-color:transparent;outline-offset:0}}.learn-tool-highlight{animation:learnToolPulse 1.2s ease-out 2;outline:2px solid var(--accent-primary);outline-offset:0;border-color:var(--accent-primary)!important}.learn-rec-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--border-color);cursor:pointer;transition:all .15s}.learn-rec-row:hover{border-color:var(--accent-primary);transform:translate(2px)}.learn-rec-row .learn-rec-area{font-size:.72rem;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);font-weight:700}.learn-rec-row .learn-rec-tool{font-size:.98rem;color:var(--text-primary);font-weight:600;margin-top:2px}.learn-rec-row .learn-rec-chevron{margin-left:auto;color:var(--text-muted);font-size:1.1rem}.timer-display{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px;background:var(--bg-elevated);border-radius:12px;margin-bottom:12px}.timer-time{font-family:JetBrains Mono,monospace;font-size:2rem;font-weight:600;color:var(--text-primary)}.timer-controls{display:flex;gap:8px}.timer-controls .btn{padding:8px 12px}.timer-presets{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.timer-running .timer-time{color:var(--accent-success)}.timer-paused .timer-time{color:var(--accent-warning)}.presets-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.preset-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:12px;cursor:pointer;transition:all .15s}.preset-card:hover{border-color:var(--accent-primary)}.preset-card.active{border-color:var(--accent-primary);background:#6366f11a}.preset-name{font-weight:600;font-size:.9rem;margin-bottom:4px}.preset-details{font-size:.75rem;color:var(--text-muted)}.preset-actions{display:flex;gap:4px;margin-top:8px}.drone-control{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg-elevated);border-radius:10px}.drone-control.active{background:#6366f126;border:1px solid var(--accent-primary)}.drone-note{font-family:JetBrains Mono,monospace;font-size:1.2rem;font-weight:600}.drone-waveform{display:flex;gap:6px}.drone-waveform .filter-chip{padding:4px 10px;font-size:.75rem}.drone-mode-toggle{display:flex;gap:4px;background:var(--bg-elevated);border-radius:8px;padding:3px;margin-bottom:10px}.drone-mode-btn{flex:1;padding:6px 12px;border:none;border-radius:6px;font-size:.8rem;font-weight:600;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.drone-mode-btn.active{background:var(--accent-primary);color:#fff}.chord-builder{display:none;margin-top:12px}.chord-builder.visible{display:block}.chord-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.chord-preset-btn{padding:5px 12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-elevated);color:var(--text-secondary);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s ease}.chord-preset-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.chord-preset-btn:hover{border-color:var(--accent-primary);color:var(--text-primary)}.note-ring-container{position:relative;width:240px;height:240px;margin:16px auto}.note-ring-svg{width:100%;height:100%}.note-ring-btn{cursor:pointer;transition:all .15s ease}.note-ring-btn circle{fill:var(--bg-elevated);stroke:var(--border-color);stroke-width:1.5;transition:all .15s ease}.note-ring-btn text{fill:var(--text-secondary);font-size:11px;font-weight:600;font-family:Inter,-apple-system,sans-serif;pointer-events:none;transition:fill .15s ease}.note-ring-btn.active circle{fill:var(--accent-primary);stroke:var(--accent-primary)}.note-ring-btn.active text{fill:#fff}.note-ring-btn.root circle{fill:var(--accent-gold);stroke:var(--accent-gold)}.note-ring-btn.root text{fill:#1a1a2e}.chord-interval-line{stroke:var(--accent-primary);stroke-width:1.5;opacity:.4;transition:all .2s ease}.chord-name-label{fill:var(--text-primary);font-size:14px;font-weight:700;font-family:Inter,-apple-system,sans-serif}.chord-quality-label{fill:var(--text-secondary);font-size:10px;font-weight:500;font-family:Inter,-apple-system,sans-serif}.chord-controls-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.chord-controls-row .form-select{flex:1;min-width:80px}.chord-tuning-toggle{display:flex;gap:4px;background:var(--bg-elevated);border-radius:6px;padding:2px}.chord-tuning-btn{padding:4px 10px;border:none;border-radius:4px;font-size:.7rem;font-weight:600;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.chord-tuning-btn.active{background:var(--accent-primary);color:#fff}.chord-voices-display{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;justify-content:center}.chord-voice-pill{padding:3px 10px;border-radius:12px;font-size:.75rem;font-weight:600;font-family:JetBrains Mono,monospace;background:#6366f126;color:var(--accent-primary);border:1px solid rgba(99,102,241,.3)}.chord-voice-pill .voice-cents{font-size:.65rem;color:var(--text-muted);margin-left:4px}.tempo-trainer{background:var(--bg-elevated);border-radius:12px;padding:14px}.tempo-trainer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.tempo-trainer-info{display:flex;gap:16px;font-size:.85rem;color:var(--text-secondary)}.tempo-trainer-info span{display:flex;align-items:center;gap:4px}.tempo-trainer.active{border:1px solid var(--accent-success);background:#10b9811a}.shortcuts-grid{display:grid;gap:8px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--bg-elevated);border-radius:8px}.shortcut-key{font-family:JetBrains Mono,monospace;background:var(--bg-card);padding:4px 10px;border-radius:6px;font-size:.85rem;border:1px solid var(--border-color)}.shortcut-desc{color:var(--text-secondary);font-size:.9rem}.tuning-presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tuning-preset{padding:6px 12px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;font-size:.8rem;cursor:pointer;transition:all .15s}.tuning-preset:hover{border-color:var(--accent-primary)}.tuning-preset.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.offline-banner{position:fixed;top:0;left:0;right:0;background:var(--accent-warning);color:#000;text-align:center;padding:calc(6px + env(safe-area-inset-top,0px)) 6px 6px;font-size:.8rem;font-weight:500;z-index:4000;transform:translateY(-100%);transition:transform .3s}.offline-banner.visible{transform:translateY(0)}.quick-start-card{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border-radius:14px;padding:16px;margin-bottom:16px;color:#fff}.quick-start-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quick-start-title{font-weight:600}.quick-start-details{font-size:.85rem;opacity:.9}.app-version{text-align:center;padding:16px;color:var(--text-muted);font-size:.75rem}.report-header{text-align:center;margin-bottom:16px}.report-header h4{margin:0;font-size:1.1rem}.report-header .report-period{font-size:.85rem;color:var(--text-muted)}.report-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.report-stat{background:var(--bg-input);border-radius:10px;padding:12px;text-align:center}.report-stat .stat-value{font-size:1.3rem;font-weight:700;font-family:JetBrains Mono}.report-stat .stat-label{font-size:.75rem;color:var(--text-muted)}.report-trend{display:flex;align-items:center;justify-content:center;gap:4px;font-size:.85rem;margin-bottom:16px;padding:8px;border-radius:8px;background:var(--bg-input)}.report-table{width:100%;font-size:.85rem}.report-table th{text-align:left;padding:6px 4px;color:var(--text-muted);font-weight:500;border-bottom:1px solid var(--border-color)}.report-table td{padding:6px 4px;border-bottom:1px solid var(--border-color)}.assignment-card{padding:12px;border-radius:10px;background:var(--bg-input);margin-bottom:8px}.assignment-card.overdue{border-left:3px solid var(--accent-error)}.assignment-card .assign-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.assignment-card .assign-title{font-weight:600;font-size:.95rem;flex:1}.assignment-card .assign-badge{font-size:.7rem;padding:2px 8px;border-radius:20px;white-space:nowrap;font-weight:600}.assign-badge.pending{background:#6b728033;color:var(--text-muted)}.assign-badge.in_progress{background:#3b82f633;color:#60a5fa}.assign-badge.completed{background:#22c55e33;color:#4ade80}.assign-badge.overdue{background:#ef444433;color:#f87171}.assignment-card .assign-meta{font-size:.8rem;color:var(--text-muted);margin-top:4px}.assignment-card .assign-desc{font-size:.85rem;color:var(--text-secondary);margin-top:6px}.assignment-card .assign-actions{display:flex;gap:6px;margin-top:8px}.assignment-card .assign-config{font-size:.8rem;color:var(--text-muted);margin-top:4px;background:var(--bg-elevated);padding:6px 8px;border-radius:6px}.assign-notation{margin-top:8px;background:#fff;border-radius:8px;padding:4px;overflow-x:auto}.assign-notation svg{width:100%;height:auto;display:block}.lesson-card{padding:12px;border-radius:10px;background:var(--bg-input);margin-bottom:8px;border-left:3px solid var(--text-muted)}.lesson-card.pending{border-left-color:var(--accent-warning)}.lesson-card.confirmed{border-left-color:var(--accent-success)}.lesson-card.cancelled{border-left-color:var(--accent-error);opacity:.6}.lesson-card .lesson-time{font-weight:600;font-size:.95rem}.lesson-card .lesson-meta{font-size:.8rem;color:var(--text-muted);margin-top:2px}.lesson-card .lesson-actions{display:flex;gap:6px;margin-top:8px}.schedule-day{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--bg-input)}.schedule-day .day-label{width:40px;font-size:.8rem;font-weight:600;color:var(--text-secondary);flex-shrink:0}.schedule-day .exclusion-chips{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-height:28px}.exclusion-chip{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;padding:3px 8px;border-radius:20px;background:#ef444426;color:#f87171;white-space:nowrap}.exclusion-chip .remove-chip{cursor:pointer;font-size:.9rem;opacity:.7}.exclusion-chip .remove-chip:hover{opacity:1}.slot-candidate{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:var(--bg-input);margin-bottom:4px;cursor:pointer;transition:background .15s}.slot-candidate:hover{background:var(--bg-elevated)}.slot-candidate.selected{background:#2d501633;border:1px solid var(--accent-success)}.slot-candidate input[type=checkbox]{accent-color:var(--accent-success);width:16px;height:16px}.slot-candidate .slot-time{font-size:.9rem;font-weight:500;flex:1}.help-summary{color:var(--accent-gold);font-weight:600;font-size:.9rem;cursor:pointer;padding:10px 0;list-style:none;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color)}.help-summary::-webkit-details-marker{display:none}.help-summary:after{content:"▸";font-size:.75rem;transition:transform .2s}details[open]>.help-summary:after{transform:rotate(90deg)}.help-content{padding:8px 0 14px;font-size:.83rem;color:var(--text-secondary);line-height:1.65}.help-content p{margin-bottom:8px}.help-content strong{color:var(--text-primary)}.help-premium-badge{display:inline-block;font-size:.65rem;font-weight:700;background:var(--gradient-gold);color:#1a1a2e;padding:1px 6px;border-radius:4px;margin-left:6px;vertical-align:middle}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin:8px 0}.calendar-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.8rem;border-radius:6px;background:var(--bg-input);cursor:pointer}.calendar-cell.header{background:none;font-weight:600;font-size:.7rem;color:var(--text-muted);cursor:default}.calendar-cell.empty{background:none;cursor:default}.calendar-cell.has-slots{background:#2d501640;color:var(--accent-success);font-weight:600}.calendar-cell.today{outline:2px solid var(--accent-primary)}.booking-request-card{padding:12px;border-radius:10px;background:var(--bg-input);margin-bottom:8px;border-left:3px solid var(--accent-warning)}.booking-request-card .req-header{display:flex;justify-content:space-between;align-items:flex-start}.booking-request-card .req-actions{display:flex;gap:6px;margin-top:8px}.sched-section{margin-bottom:16px}.sched-section h4{font-size:.9rem;margin-bottom:6px;color:var(--text-secondary)}.time-input-row{display:flex;gap:4px;align-items:center;margin-top:4px}.time-input-row input[type=time]{background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;padding:4px 8px;font-size:.85rem}.pitch-journey-card{position:relative}.improvement-notes{display:flex;flex-direction:column;gap:6px}.improvement-note{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:var(--bg-elevated);border-radius:8px;cursor:pointer;transition:background .15s}.improvement-note:active{background:var(--bg-input)}.improvement-note .note-name{font-weight:700;font-family:JetBrains Mono,monospace;font-size:.95rem;min-width:40px}.improvement-note .note-cents{font-family:JetBrains Mono,monospace;font-size:.85rem}.improvement-note .note-arrow{font-weight:700;font-size:.85rem}.sparkline-container{position:relative;margin-top:8px}.milestone-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--bg-elevated);border-radius:20px;font-size:.78rem;border:1px solid var(--border-color)}.milestone-badge.active{border-color:var(--accent-success);background:#10b9811a;color:var(--accent-success)}.comparison-stat{text-align:center;padding:8px;background:var(--bg-input);border-radius:8px}.comparison-stat .value{font-size:1.3rem;font-weight:700;font-family:JetBrains Mono,monospace}.comparison-stat .label{font-size:.72rem;color:var(--text-muted);margin-top:2px}.rhythm-training-section{margin-top:12px}.rhythm-mode-toggle{display:flex;gap:0;border-radius:10px;overflow:hidden;border:1px solid var(--border-color);margin-bottom:12px}.rhythm-mode-btn{flex:1;padding:8px;text-align:center;font-size:.82rem;font-weight:600;background:var(--bg-input);color:var(--text-secondary);border:none;cursor:pointer;transition:all .15s}.rhythm-mode-btn.active{background:var(--accent-primary);color:#fff}.tap-target-btn{width:100%;padding:32px;border-radius:16px;font-size:1.5rem;font-weight:700;background:var(--gradient-primary);color:#fff;border:none;cursor:pointer;transition:transform .08s;user-select:none;-webkit-user-select:none;touch-action:manipulation}.tap-target-btn:active{transform:scale(.96)}.tap-target-btn.listening{background:var(--gradient-success)}.rhythm-score{display:flex;gap:8px;justify-content:center;margin:12px 0}.rhythm-score-item{text-align:center;padding:8px 12px;background:var(--bg-input);border-radius:10px;min-width:70px}.rhythm-score-item .score-value{font-size:1.4rem;font-weight:700;font-family:JetBrains Mono,monospace}.rhythm-score-item .score-label{font-size:.7rem;color:var(--text-muted)}.rhythm-timeline{position:relative;height:60px;background:var(--bg-input);border-radius:10px;overflow:hidden;margin:10px 0}.rhythm-timeline .beat-mark{position:absolute;top:0;bottom:0;width:2px;background:var(--border-color-strong)}.rhythm-timeline .beat-label{position:absolute;top:4px;font-size:.65rem;color:var(--text-muted);transform:translate(-50%)}.rhythm-timeline .tap-dot{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 4px #0003}.rhythm-timeline .tap-dot.perfect{background:var(--accent-success)}.rhythm-timeline .tap-dot.good{background:var(--accent-warning)}.rhythm-timeline .tap-dot.miss{background:var(--accent-error)}.rhythm-timeline .deviation-line{position:absolute;top:50%;height:2px;transform:translateY(-50%);opacity:.5}.rhythm-timeline .deviation-line.perfect{background:var(--accent-success)}.rhythm-timeline .deviation-line.good{background:var(--accent-warning)}.rhythm-timeline .deviation-line.miss{background:var(--accent-error)}.rhythm-exercise-chip{padding:6px 14px;border-radius:20px;font-size:.8rem;font-weight:600;background:var(--bg-input);color:var(--text-secondary);border:1px solid var(--border-color);cursor:pointer;transition:all .15s}.rhythm-exercise-chip.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.rhythm-exercise-chip.locked{opacity:.5;cursor:not-allowed}.calibration-overlay{position:absolute;inset:0;background:var(--bg-card);border-radius:inherit;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;text-align:center}.mini-tuner{position:relative;flex-shrink:0;height:52px;background:#0f0f1aeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:5;display:none;align-items:center;justify-content:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--border-color)}.mini-tuner.visible{display:flex}body.light-mode .mini-tuner{background:#f5f5f8eb}.mini-tuner .mini-note{font-size:1.2rem;font-weight:700;font-family:JetBrains Mono,monospace;min-width:50px;text-align:center}.mini-tuner .mini-cents{font-size:.9rem;font-weight:600;font-family:JetBrains Mono,monospace;min-width:60px;text-align:center}.mini-tuner .mini-meter{width:80px;height:6px;background:var(--bg-elevated);border-radius:3px;overflow:hidden;position:relative}.mini-tuner .mini-meter-fill{position:absolute;top:0;height:100%;width:4px;border-radius:2px;background:var(--accent-success);transition:left .1s}.mini-tuner .mini-dismiss{background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;padding:4px 8px}.mini-tuner .mini-badges{display:flex;gap:6px;font-size:.72rem;color:var(--text-muted)}.mini-tuner .mini-badge{padding:2px 6px;background:var(--bg-elevated);border-radius:4px}.recording-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-bottom:10px}.recording-summary .rec-stat{text-align:center;padding:8px;background:var(--bg-input);border-radius:8px}.recording-summary .rec-stat .value{font-size:1.1rem;font-weight:700;font-family:JetBrains Mono,monospace}.recording-summary .rec-stat .label{font-size:.7rem;color:var(--text-muted)}.ab-compare-container{display:flex;flex-direction:column;gap:8px}.ab-compare-container canvas{width:100%;border-radius:6px}.ab-compare-summary{padding:8px;background:var(--bg-elevated);border-radius:8px;font-size:.82rem}.scale-practice-display{text-align:center;padding:12px 0}.scale-note-circles{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:12px 0}.scale-note-circle{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;font-family:JetBrains Mono,monospace;background:var(--bg-input);border:2px solid var(--border-color);transition:all .2s}.scale-note-circle.current{border-color:var(--accent-primary);background:var(--accent-primary);color:#fff;transform:scale(1.15);box-shadow:0 0 12px #6366f166}.scale-note-circle.completed{border-color:var(--accent-success);background:#10b98126;color:var(--accent-success)}.scale-note-circle.upcoming{opacity:.5}.scale-practice-info{font-size:.82rem;color:var(--text-secondary);margin-top:6px;padding:8px;background:var(--bg-elevated);border-radius:8px}.scale-results{padding:12px;background:var(--bg-elevated);border-radius:10px}.scale-results .result-note{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:.85rem}.ear-training-section{padding:4px 0}.interval-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}.interval-btn{padding:12px;border-radius:10px;font-size:.9rem;font-weight:600;background:var(--bg-input);color:var(--text-primary);border:2px solid var(--border-color);cursor:pointer;transition:all .15s}.interval-btn:active{transform:scale(.97)}.interval-btn:disabled{opacity:.45;cursor:default}.interval-btn.correct{border-color:var(--accent-success);background:#10b98126}.interval-btn.wrong{border-color:var(--accent-error);background:#ef444426}.piano-key{padding:14px 8px;min-width:32px;border-radius:6px;font-size:.78rem;font-weight:600;background:var(--bg-input);color:var(--text-primary);border:2px solid var(--border-color);cursor:pointer;transition:all .1s;font-family:JetBrains Mono,monospace}.piano-key.black{background:var(--bg-elevated);color:var(--text-muted)}.piano-key:active{transform:scale(.94);background:var(--accent-primary);color:var(--bg-primary)}.piano-key:disabled{opacity:.5;cursor:not-allowed}.pitch-match-display{text-align:center;padding:16px}.pitch-match-target{font-size:2rem;font-weight:700;margin-bottom:8px}.pitch-match-result{font-size:1.2rem;font-weight:600;padding:8px 16px;border-radius:10px;display:inline-block}.ear-session-summary{margin-top:12px}.ear-session-summary .interval-row{display:flex;justify-content:space-between;padding:4px 0;font-size:.85rem;border-bottom:1px solid var(--border-color)}.todays-focus{padding:4px 0}.focus-item{display:flex;align-items:flex-start;gap:10px;padding:8px;background:var(--bg-elevated);border-radius:8px;margin-bottom:6px;transition:background .15s,transform .1s}.focus-item[onclick]{cursor:pointer}.focus-item[onclick]:hover{background:var(--bg-input)}.focus-item[onclick]:active{transform:scale(.98)}.session-recap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.session-recap-item{padding:8px;background:var(--bg-elevated);border-radius:8px;text-align:center}.session-recap-item .recap-value{font-size:1.1rem;font-weight:700;color:var(--accent-primary);font-family:JetBrains Mono,monospace}.session-recap-item .recap-label{font-size:.75rem;color:var(--text-muted);margin-top:2px}.focus-item .focus-icon{font-size:1.2rem;flex-shrink:0}.focus-item .focus-text{font-size:.85rem;color:var(--text-secondary);line-height:1.4}.focus-item .focus-text strong{color:var(--text-primary)}.time-slider-container{margin:12px 0}.time-chips{display:flex;gap:6px;flex-wrap:wrap}.time-chip{padding:6px 14px;border-radius:20px;font-size:.82rem;font-weight:600;background:var(--bg-input);color:var(--text-secondary);border:1px solid var(--border-color);cursor:pointer;transition:all .15s}.time-chip.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{body{background:#fff!important;color:#000!important}.app-container,.bottom-nav,.overlay,.modal-overlay{display:none!important}#reportModal{display:flex!important;position:static!important;background:none!important}#reportModal .modal{max-width:100%!important;box-shadow:none!important;background:#fff!important;color:#000!important}#reportModal .modal-footer{display:none!important}.report-stat{border:1px solid #ddd}body.printing-etude #reportModal{display:none!important}body.printing-etude #etudePrintRoot{position:static!important;left:0!important;width:100%!important}}
