@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--bg-primary:#0d1117;--bg-surface:#161b22;--bg-elevated:#1c2128;--bg-display:#010409;--text-primary:#e6edf3;--text-secondary:#8b949e;--text-muted:#484f58;--accent-orp:#f0b429;--accent-progress:#238636;--accent-button:#1f6feb;--error:#f85149;--warning:#d29922;--border:#30363d;--border-focus:#58a6ff;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Source Code Pro", "Fira Code", monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 32px #00000080;--transition:.2s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}#root{height:100%}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-shrink:0;align-items:center;gap:16px;height:56px;padding:0 24px;display:flex}.app-logo{align-items:center;gap:10px;display:flex}.logo-icon-svg{object-fit:contain;filter:drop-shadow(0 0 8px #1f6feb66);width:28px;height:28px;margin-right:-4px}.logo-text{letter-spacing:-.5px;background:linear-gradient(135deg, var(--accent-button), var(--accent-orp));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.loading-badge{color:var(--text-muted);background:var(--bg-elevated);border-radius:12px;padding:2px 8px;font-size:11px;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.mode-nav{background:var(--bg-elevated);border-radius:var(--radius-md);gap:4px;margin-left:auto;padding:3px;display:flex}.mode-btn{color:var(--text-secondary);font-family:var(--font-body);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;align-items:center;gap:6px;padding:6px 16px;font-size:13px;font-weight:500;display:flex}.mode-btn:hover{color:var(--text-primary);background:#ffffff0f}.mode-btn-active{color:var(--text-primary);background:var(--accent-button);box-shadow:0 2px 8px #1f6feb4d}.mode-icon{font-size:14px}.app-body{flex:1;display:flex;overflow:hidden}.app-main{flex:1;padding:24px;overflow-y:auto}.app-sidebar{border-left:1px solid var(--border);background:var(--bg-surface);flex-shrink:0;width:360px;overflow-y:auto}.settings-toggle{margin-left:8px;font-size:18px}.control-btn{border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);font-family:var(--font-body);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;display:inline-flex}.control-btn:hover{background:var(--bg-elevated);border-color:var(--border-focus)}.control-btn:disabled{opacity:.4;cursor:not-allowed}.control-btn.icon-btn{border-radius:var(--radius-sm);background:0 0;border:none;padding:6px 10px;font-size:16px}.control-btn.icon-btn:hover{background:var(--bg-elevated)}.control-btn.primary-btn{background:var(--accent-button);border-color:var(--accent-button);color:#fff}.control-btn.primary-btn:hover{background:#3d85f0;box-shadow:0 2px 12px #1f6feb66}.correct-btn{background:var(--accent-progress)!important;border-color:var(--accent-progress)!important;color:#fff!important}.incorrect-btn{background:var(--error)!important;border-color:var(--error)!important;color:#fff!important}.glyph-canvas{border-radius:var(--radius-md);background:var(--bg-display);display:block}.overlap-canvas{background:0 0!important}.show-mode{max-width:1100px;margin:0 auto}.show-layout{align-items:flex-start;gap:32px;display:flex}.show-input-panel{flex-direction:column;flex:0 0 320px;gap:20px;display:flex}.show-glyph-panel{flex-direction:column;flex:1;align-items:center;gap:16px;display:flex}.chord-input{flex-direction:column;gap:8px;display:flex}.chord-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);font-size:12px;font-weight:600}.chord-field{width:100%;font-family:var(--font-mono);letter-spacing:2px;text-align:center;background:var(--bg-display);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition);outline:none;padding:12px 16px;font-size:24px;font-weight:600}.chord-field:focus{border-color:var(--accent-button);box-shadow:0 0 0 3px #1f6feb26}.chord-hint{color:var(--text-muted);font-size:12px}.parsed-keys-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px}.parsed-keys-panel h4{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin-bottom:10px;font-size:12px}.key-chips{flex-wrap:wrap;gap:6px;display:flex}.key-chip{font-family:var(--font-mono);border:1px solid;border-radius:20px;align-items:center;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.key-chip-left{color:#58a6ff;background:#1f6feb26;border-color:#1f6feb4d}.key-chip-right{color:#56d364;background:#23863626;border-color:#2386364d}.key-chip-vowel{color:var(--accent-orp);background:#f0b42926;border-color:#f0b4294d}.key-chip-special{color:var(--error);background:#f8514926;border-color:#f851494d}.key-count{color:var(--text-muted);margin-top:8px;font-size:12px}.quick-examples h4{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin-bottom:10px;font-size:12px}.example-chips{flex-wrap:wrap;gap:6px;display:flex}.example-chip{font-family:var(--font-mono);background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:500}.example-chip:hover{color:var(--text-primary);border-color:var(--border-focus);background:#58a6ff1a}.read-mode{max-width:900px;margin:0 auto}.read-input-view{max-width:640px;margin:40px auto 0}.text-input-container{flex-direction:column;gap:12px;display:flex}.text-input-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);font-size:12px;font-weight:600}.text-area{width:100%;font-family:var(--font-body);background:var(--bg-display);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);resize:vertical;transition:border-color var(--transition);outline:none;padding:16px;font-size:15px;line-height:1.6}.text-area:focus{border-color:var(--accent-button);box-shadow:0 0 0 3px #1f6feb26}.text-area::placeholder{color:var(--text-muted)}.read-btn{align-self:flex-end;padding:10px 24px;font-size:14px}.dict-loading,.dict-error{text-align:center;color:var(--text-muted);padding:16px;font-size:14px}.read-playback-view{flex-direction:column;align-items:center;gap:20px;display:flex}.read-glyph-container{background:var(--bg-display);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);justify-content:center;padding:24px;display:flex}.subtitle-bar{text-align:center;flex-direction:column;align-items:center;gap:6px;min-height:60px;padding:12px 24px;display:flex}.subtitle-context{font-family:var(--font-mono);color:var(--text-muted);font-size:18px;line-height:1.8}.subtitle-word{transition:color var(--transition)}.subtitle-word-active{color:var(--text-primary);font-weight:600}.subtitle-solo{font-family:var(--font-mono);letter-spacing:2px;font-size:28px;font-weight:600}.orp-char{color:var(--accent-orp);text-underline-offset:4px;text-decoration:underline}.subtitle-outline{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:1px;font-size:14px}.playback-controls{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;max-width:700px;box-shadow:var(--shadow-sm);padding:16px 20px}.controls-top{align-items:center;gap:12px;margin-bottom:12px;display:flex}.transport-buttons{gap:4px;display:flex}.play-btn{width:44px;height:36px;font-size:18px;background:var(--accent-button)!important;border-color:var(--accent-button)!important;color:#fff!important}.speed-controls{align-items:center;gap:8px;margin-left:12px;display:flex}.speed-label{color:var(--text-secondary);font-size:12px}.speed-slider{width:120px;accent-color:var(--accent-button)}.speed-btn{width:28px;height:28px;padding:0;font-size:16px;font-weight:700}.speed-value{font-family:var(--font-mono);color:var(--text-secondary);text-align:right;min-width:65px;font-size:12px}.time-remaining{font-family:var(--font-mono);color:var(--text-secondary);margin-left:auto;font-size:13px}.progress-row{align-items:center;gap:12px;display:flex}.progress-bar-container{background:var(--bg-elevated);cursor:pointer;border-radius:3px;flex:1;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent-button);border-radius:3px;height:100%;transition:width .1s linear}.position-label{font-family:var(--font-mono);color:var(--text-muted);text-align:right;min-width:70px;font-size:11px}.settings-panel{flex-direction:column;gap:20px;padding:20px;display:flex}.settings-header{color:var(--text-primary);border-bottom:1px solid var(--border);padding-bottom:12px;font-size:15px;font-weight:600}.settings-group{flex-direction:column;gap:10px;display:flex}.settings-group-title{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-size:11px;font-weight:600}.settings-row{align-items:center;gap:10px;display:flex}.settings-row label{color:var(--text-secondary);min-width:100px;font-size:13px}.settings-row input[type=number],.settings-row select{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-body);outline:none;flex:1;padding:6px 10px;font-size:13px}.settings-row input[type=number]:focus,.settings-row select:focus{border-color:var(--border-focus)}.settings-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-button)}.settings-row input[type=range]{accent-color:var(--accent-button);flex:1}.settings-unit{color:var(--text-muted);min-width:30px;font-size:12px}.learn-mode{max-width:900px;margin:0 auto}.lesson-list{flex-direction:column;gap:24px;display:flex}.lesson-list-title{margin-bottom:8px;font-size:20px;font-weight:700}.lesson-level{flex-direction:column;gap:12px;display:flex}.level-title{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.level-number{background:var(--accent-button);color:#fff;border-radius:12px;padding:2px 10px;font-size:11px;font-weight:700}.level-name{color:var(--text-primary)}.level-desc{color:var(--text-muted);font-size:13px}.lesson-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.lesson-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:all var(--transition);font-family:var(--font-body);color:var(--text-primary);padding:16px;position:relative}.lesson-card:hover{border-color:var(--border-focus);box-shadow:var(--shadow-md);transform:translateY(-2px)}.lesson-card-active{border-color:var(--accent-button);box-shadow:0 0 0 2px #1f6feb33}.lesson-card-completed{border-color:var(--accent-progress)}.lesson-card-title{margin-bottom:4px;font-size:14px;font-weight:600}.lesson-card-desc{color:var(--text-secondary);margin-bottom:8px;font-size:12px}.lesson-card-count{color:var(--text-muted);font-size:11px;font-family:var(--font-mono)}.lesson-card-check{color:var(--accent-progress);font-size:18px;font-weight:700;position:absolute;top:12px;right:12px}.learn-practice-view{flex-direction:column;gap:20px;display:flex}.learn-header{align-items:center;gap:12px;display:flex}.learn-title{font-size:18px;font-weight:600}.learn-progress{max-width:400px}.lesson-card-display{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;align-items:center;gap:16px;padding:24px;display:flex}.card-counter{font-family:var(--font-mono);color:var(--text-muted);font-size:12px}.card-glyph{background:var(--bg-display);border-radius:var(--radius-md);padding:16px}.card-word{letter-spacing:1px;font-size:32px;font-weight:700}.card-hint{color:var(--text-secondary);font-size:14px;font-style:italic}.card-answer{flex-direction:column;align-items:center;gap:12px;display:flex}.card-outline{font-family:var(--font-mono);color:var(--accent-orp);font-size:24px;font-weight:600}.card-keys{font-family:var(--font-mono);color:var(--text-secondary);font-size:13px}.card-buttons{gap:12px;margin-top:8px;display:flex}.card-nav{justify-content:center;gap:16px;display:flex}.progress-indicator{align-items:center;gap:10px;display:flex}.progress-label{color:var(--text-secondary);min-width:55px;font-size:12px;font-weight:500}.progress-track{background:var(--bg-elevated);border-radius:4px;flex:1;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent-button), var(--accent-progress));border-radius:4px;height:100%;transition:width .3s}.progress-value{font-family:var(--font-mono);color:var(--text-muted);text-align:right;min-width:35px;font-size:12px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width:768px){.show-layout{flex-direction:column}.show-input-panel{flex:none;width:100%}.app-sidebar{z-index:100;box-shadow:var(--shadow-lg);position:fixed;top:56px;bottom:0;right:0}.controls-top{flex-wrap:wrap}}.settings-section{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.settings-section+.settings-section{margin-top:8px}.settings-section-title{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);cursor:pointer;background:var(--bg-elevated);-webkit-user-select:none;user-select:none;padding:8px 12px;font-size:11px;font-weight:600;list-style:none}.settings-section-title::-webkit-details-marker{display:none}.settings-section-title:before{content:"▸ "}.settings-section[open]>.settings-section-title:before{content:"▾ "}.settings-section[open]>.settings-section-title{border-bottom:1px solid var(--border)}.settings-section-body{flex-direction:column;gap:8px;padding:8px 12px;display:flex}.show-tabs{background:var(--bg-elevated);border-radius:var(--radius-md);gap:4px;margin-bottom:16px;padding:3px;display:flex}.show-tab{color:var(--text-secondary);font-family:var(--font-body);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;flex:1;padding:6px 12px;font-size:13px;font-weight:500}.show-tab:hover{color:var(--text-primary);background:#ffffff0f}.show-tab-active{color:var(--text-primary);background:var(--accent-button);box-shadow:0 2px 8px #1f6feb4d}.show-translation{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:10px 14px;display:flex}.translation-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.translation-word{color:var(--accent-orp);font-size:16px;font-weight:600}.splash-screen{background:var(--bg-primary);flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100vh;display:flex}.splash-logo{width:80px;height:80px;animation:2s ease-in-out infinite splash-pulse}.splash-title{background:linear-gradient(135deg, var(--accent-button), var(--accent-orp));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:28px;font-weight:700}.splash-dots{gap:8px;display:flex}.splash-dots .dot{background:var(--accent-button);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite splash-bounce}.splash-dots .dot:nth-child(2){animation-delay:.2s}.splash-dots .dot:nth-child(3){animation-delay:.4s}@keyframes splash-bounce{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}@keyframes splash-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.splash-text{color:var(--text-muted);font-size:14px}.settings-row input[type=color]{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);cursor:pointer;width:36px;height:28px;padding:2px}
