.visual-container{background:var(--bg-primary);border:2px solid var(--primary-color);border-radius:12px;padding:1.5rem;box-shadow:var(--shadow-md);margin:1rem 0;animation:slideUp .4s ease-out;transition:background .3s ease,border-color .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.visual-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:2px solid #e0e0e0}.visual-icon{font-size:1.5rem}.visual-header h3{margin:0;font-size:1.3rem;color:var(--primary-color);font-weight:700;transition:color .3s ease}.fraction-visual{display:flex;flex-direction:column;align-items:center;gap:1rem}.fraction-svg{background:#f8f9fa;border-radius:8px;padding:1rem}.fraction-label{text-align:center}.fraction-text{font-size:2rem;font-weight:700;color:var(--primary-color);margin:.5rem 0;transition:color .3s ease}.fraction-explanation{font-size:1rem;color:#666;margin:0}.molecule-visual{display:flex;flex-direction:column;align-items:center;gap:1rem}.molecule-svg{background:#f8f9fa;border-radius:8px;padding:1rem}.molecule-label{text-align:center}.molecule-formula{font-size:1.5rem;font-weight:700;color:var(--primary-color);margin:.5rem 0;font-family:Courier New,monospace;transition:color .3s ease}.molecule-explanation{font-size:1rem;color:#666;margin:0}.atom-label{pointer-events:none;-webkit-user-select:none;user-select:none}.force-visual{display:flex;flex-direction:column;align-items:center;gap:1rem}.force-svg{background:#f8f9fa;border-radius:8px;padding:1rem}.force-legend{text-align:center}.force-summary{font-size:1rem;color:#666;margin:0}.force-label{pointer-events:none;-webkit-user-select:none;user-select:none}.circuit-visual{display:flex;flex-direction:column;align-items:center;gap:1rem}.circuit-svg{background:#f8f9fa;border-radius:8px;padding:1rem}.circuit-label{text-align:center}.circuit-explanation{font-size:1rem;color:#666;margin:0}.wave-visual{display:flex;flex-direction:column;align-items:center;gap:1rem}.wave-svg{background:#f8f9fa;border-radius:8px;padding:1rem}.wave-label{text-align:center}.wave-explanation{font-size:1rem;color:#666;margin:0}.math-graph-visual{width:100%;padding:1rem;background:#f8f9fa;border-radius:8px}@media(max-width:768px){.visual-container{padding:1rem}.visual-header h3{font-size:1.1rem}.fraction-text{font-size:1.5rem}.molecule-formula{font-size:1.2rem}.circuit-svg,.wave-svg{width:100%;height:auto}}.message-bubble{display:flex;flex-direction:column;max-width:75%;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-bubble.user{align-self:flex-end}.message-bubble.assistant{align-self:flex-start}.message-content{padding:1rem 1.25rem;border-radius:16px;position:relative;word-wrap:break-word;line-height:1.6}.message-bubble.user .message-content{background:var(--user-message-bg);color:var(--user-message-text);border-bottom-right-radius:4px;border:none;box-shadow:var(--shadow-sm);transition:background .3s ease,color .3s ease;border:1px solid rgba(77,171,247,.2)}[data-theme=dark] .message-bubble.user .message-content{border-color:#74c0fc4d}.message-bubble.assistant .message-content{background:var(--assistant-message-bg);color:var(--assistant-message-text);border:1px solid var(--border-light);border-bottom-left-radius:4px;box-shadow:var(--shadow-sm);transition:background .3s ease,color .3s ease,border-color .3s ease}.message-bubble.encouraging .message-content{background:linear-gradient(135deg,#fff5e6,#ffe0b2);border-color:#ffb74d;animation:celebrate .6s ease-out}[data-theme=dark] .message-bubble.encouraging .message-content{background:linear-gradient(135deg,#3d2f1f,#4a3a2a);border-color:#ffb74d}@keyframes celebrate{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.message-text{font-size:1.1rem;margin-bottom:.5rem}.message-text p{margin:.5rem 0}.message-text p:first-child{margin-top:0}.message-text p:last-child{margin-bottom:0}.concept-highlight{transition:all .2s ease;cursor:help;position:relative}.concept-highlight:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a;z-index:1}.message-actions{display:flex;gap:.75rem;margin-top:1rem;flex-wrap:wrap}.hint-button,.stuck-help-button{padding:.5rem 1rem;font-size:.95rem;border:2px solid var(--primary-color);border-radius:8px;background:var(--bg-primary);color:var(--primary-color);cursor:pointer;font-weight:600;transition:all .2s}.hint-button:hover,.stuck-help-button:hover{background:var(--primary-color);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-md)}.stuck-help-button{border-color:var(--error-color);color:var(--error-color)}.stuck-help-button:hover{background:var(--error-color);color:#fff;box-shadow:var(--shadow-md)}.hint-box{margin-top:1rem;padding:1rem;background:var(--user-message-bg);border-left:4px solid var(--info-color);border-radius:8px;font-size:1rem;animation:fadeIn .3s ease-out;transition:background .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.hint-box p{margin:0;color:var(--user-message-text);transition:color .3s ease}.message-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem;padding:0 .5rem;font-size:.85rem;color:var(--text-secondary);transition:color .3s ease}.message-bubble.user .message-footer{justify-content:flex-end}.message-time{opacity:.7}.celebration{color:var(--error-color);font-weight:600;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@media(max-width:768px){.message-bubble{max-width:85%}.message-content{padding:1rem 1.25rem}.message-text{font-size:1rem}.hint-button,.stuck-help-button{padding:.4rem .8rem;font-size:.9rem}}.chat-container{display:flex;flex-direction:column;height:calc(100vh - 200px);max-height:900px;width:100%;max-width:1200px;background:var(--bg-primary);border-radius:24px;box-shadow:var(--shadow-lg);overflow:hidden;transition:background .3s ease,box-shadow .3s ease}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:var(--bg-primary);border-bottom:1px solid var(--border-color);transition:background .3s ease,border-color .3s ease}.chat-header-right{display:flex;align-items:center;gap:.5rem}.chat-header-left{display:flex;align-items:center;gap:.75rem}.back-button{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s;display:flex;align-items:center;justify-content:center;min-width:40px;height:40px;color:var(--text-primary);transition:all .2s}.back-button:hover{background:var(--bg-tertiary);transform:translate(-2px)}.tutor-avatar{width:48px;height:48px;border-radius:50%;background:var(--primary-gradient);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0;transition:background .3s ease;box-shadow:var(--shadow-sm)}.tutor-info{display:flex;flex-direction:column;gap:.125rem}.tutor-name{font-size:1.1rem;font-weight:700;color:var(--text-primary);line-height:1.2;transition:color .3s ease}.tutor-subject{font-size:.9rem;color:var(--text-secondary);line-height:1.2;transition:color .3s ease}.theme-toggle-button{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s,transform .2s;opacity:.8;display:flex;align-items:center;justify-content:center;min-width:40px;height:40px}.theme-toggle-button:hover{background:var(--bg-tertiary);opacity:1;transform:scale(1.1)}.settings-button{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s;opacity:.7}.settings-button:hover{background:var(--bg-tertiary);opacity:1}.chat-messages{flex:1;overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:1rem;background:var(--bg-secondary);transition:background .3s ease}.chat-messages::-webkit-scrollbar{width:10px}.chat-messages::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:10px}.chat-messages::-webkit-scrollbar-thumb{background:var(--primary-color);border-radius:10px;transition:background .3s ease}.chat-messages::-webkit-scrollbar-thumb:hover{background:var(--primary-hover)}[data-theme=dark] .chat-messages::-webkit-scrollbar-thumb{background:var(--primary-color)}[data-theme=dark] .chat-messages::-webkit-scrollbar-thumb:hover{background:var(--primary-hover)}.welcome-message{text-align:center;padding:2.5rem 2rem;background:var(--primary-gradient);color:#fff;border-radius:20px;margin:1rem 0;box-shadow:var(--shadow-md);transition:background .3s ease,box-shadow .3s ease;border:2px solid var(--primary-light)}[data-theme=dark] .welcome-message{border-color:#74c0fc33}.welcome-message h2{font-size:2.5rem;margin-bottom:1rem}.welcome-message p{font-size:1.25rem;margin:1rem 0;line-height:1.8}.welcome-instructions{text-align:left;margin:1.5rem 0;background:#ffffff26;padding:1.5rem;border-radius:12px}.welcome-instructions ul{list-style:none;padding:0;margin:1rem 0 0}.welcome-instructions li{font-size:1rem;margin:.75rem 0;padding:.5rem 0 .5rem 1.5rem;position:relative}.welcome-instructions li:before{content:"✓";position:absolute;left:0;color:#ffffffe6;font-weight:700}.welcome-note{margin-top:1.5rem;font-size:1rem;opacity:.95}.chat-input-container{border-top:1px solid var(--border-color);background:var(--bg-primary);padding:1rem 1.5rem;transition:background .3s ease,border-color .3s ease}.chat-actions{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap;align-items:center}.action-button{padding:.5rem 1rem;font-size:.9rem;border:1px solid var(--border-light);border-radius:12px;background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;font-weight:500;transition:all .2s}.action-button:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--border-color);transform:translateY(-1px)}.action-button:disabled{opacity:.5;cursor:not-allowed}.stuck-button{border-color:var(--error-color);color:var(--error-color)}.stuck-button:hover:not(:disabled){background:var(--error-color);color:#fff}.export-button{border-color:var(--success-color);color:var(--success-color)}.export-button:hover:not(:disabled){background:var(--success-color);color:#fff}.voice-mode-button{border-color:var(--info-color);color:var(--info-color);position:relative}.voice-mode-button:hover:not(:disabled){background:var(--info-color);color:#fff}.voice-mode-button.listening{background:var(--error-color);color:#fff;border-color:var(--error-color);animation:pulse 1.5s ease-in-out infinite}.voice-mode-button.listening:hover{background:var(--error-color);filter:brightness(.9)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.voice-output-button{border-color:var(--success-color);color:var(--success-color)}.voice-output-button.enabled{background:var(--success-color);color:#fff;border-color:var(--success-color)}.voice-output-button:hover:not(:disabled){background:var(--success-color);color:#fff}.voice-output-button:not(.enabled):hover{background:var(--success-color);color:#fff}.speed-control{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;background:var(--bg-tertiary);border-radius:12px;border:none;transition:background .3s ease}.speed-label{font-size:.85rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;transition:color .3s ease}.speed-slider{flex:1;min-width:100px;height:6px;border-radius:3px;background:var(--border-light);outline:none;-webkit-appearance:none;appearance:none;transition:background .3s ease}.speed-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--primary-color);cursor:pointer;transition:all .2s;box-shadow:0 2px 4px #4dabf74d}.speed-slider::-webkit-slider-thumb:hover{background:var(--primary-hover);transform:scale(1.2);box-shadow:0 3px 6px #4dabf766}.speed-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--primary-color);cursor:pointer;border:none;transition:all .2s;box-shadow:0 2px 4px #4dabf74d}.speed-slider::-moz-range-thumb:hover{background:var(--primary-hover);transform:scale(1.2);box-shadow:0 3px 6px #4dabf766}.speed-value{font-size:.85rem;font-weight:500;color:var(--text-secondary);min-width:35px;text-align:right;transition:color .3s ease}.input-wrapper{display:flex;gap:.5rem;align-items:center;background:var(--bg-input-wrapper);border-radius:16px;padding:.5rem;transition:background .3s ease}.input-mic-button{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:12px;transition:all .2s;display:flex;align-items:center;justify-content:center;min-width:44px;height:44px;flex-shrink:0}.input-mic-button:hover:not(:disabled){background:#667eea26}.input-mic-button.listening{background:#ff6b6b33;animation:pulse 1.5s ease-in-out infinite}.input-mic-button:disabled{opacity:.5;cursor:not-allowed}.chat-input{flex:1;padding:.875rem 1rem;font-size:1rem;border:none;border-radius:12px;resize:none;font-family:inherit;line-height:1.5;background:var(--bg-input);color:var(--text-primary);min-height:44px;max-height:120px;transition:background .3s ease,color .3s ease}.chat-input::placeholder{color:var(--text-tertiary)}.chat-input:focus{outline:none}.chat-input:disabled{background:var(--bg-tertiary);cursor:not-allowed;opacity:.6}.send-button{padding:.5rem;font-size:1.5rem;border:none;border-radius:12px;background:var(--primary-gradient);color:#fff;cursor:pointer;font-weight:700;transition:all .2s;min-width:44px;height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.send-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);filter:brightness(1.05)}.send-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.thinking-indicator{display:flex;align-items:center;gap:.75rem;padding:1rem}.thinking-text{font-size:1.1rem;color:var(--text-secondary);font-style:italic;transition:color .3s ease}.thinking-dots{display:flex;gap:.25rem}.thinking-dots span{width:8px;height:8px;border-radius:50%;background:var(--primary-color);animation:bounce 1.4s infinite ease-in-out both;transition:background .3s ease;box-shadow:0 0 4px #4dabf766}.thinking-dots span:nth-child(1){animation-delay:-.32s}.thinking-dots span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@media(max-width:768px){.chat-container{height:calc(100vh - 150px);border-radius:15px}.chat-messages{padding:1.5rem;gap:1rem}.welcome-message{padding:2rem 1.5rem}.welcome-message h2{font-size:2rem}.welcome-message p{font-size:1.1rem}.chat-input{font-size:1rem;padding:.875rem 1rem}.send-button{padding:.875rem 1.25rem;font-size:1.25rem;min-width:60px;height:55px}.action-button{padding:.5rem 1rem;font-size:.9rem}}.tutor-selection-container{max-width:1200px;width:100%;margin:0 auto;padding:2rem;background:var(--bg-primary);border-radius:24px;box-shadow:var(--shadow-lg);transition:background .3s ease}.tutor-selection-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.home-button{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s;display:flex;align-items:center;justify-content:center;min-width:44px;height:44px}.home-button:hover{background:var(--bg-tertiary)}.tutor-selection-header h1{font-size:1.75rem;color:var(--text-primary);margin:0;font-weight:700;transition:color .3s ease}.tutors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.tutor-card{background:var(--bg-primary);border:2px solid var(--border-color);border-radius:20px;padding:2rem;text-align:center;cursor:pointer;transition:all .3s ease;display:flex;flex-direction:column;align-items:center;gap:1rem}.tutor-card:hover{border-color:var(--tutor-color, var(--primary-color));transform:translateY(-4px);box-shadow:var(--shadow-lg)}.tutor-avatar-large{font-size:4rem;line-height:1;margin-bottom:.5rem}.tutor-name{font-size:1.5rem;font-weight:700;color:var(--text-primary);transition:color .3s ease}.tutor-subject-badge{padding:.5rem 1rem;border-radius:20px;color:#fff;font-size:.9rem;font-weight:600;margin:.25rem 0}.tutor-tagline{font-size:1rem;color:var(--text-secondary);font-style:italic;margin-top:.5rem;transition:color .3s ease}@media(max-width:768px){.tutor-selection-container{padding:1.5rem}.tutor-selection-header h1{font-size:1.5rem}.tutors-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.tutor-card{padding:1.5rem}.tutor-avatar-large{font-size:3rem}.tutor-name{font-size:1.25rem}}@media(max-width:480px){.tutors-grid{grid-template-columns:1fr}}.tutor-list-container{max-width:1200px;width:100%;margin:0 auto;padding:2rem 1rem 6rem;background:var(--bg-primary)}.tutor-list-container h1{color:var(--text-primary);margin-bottom:2rem;font-size:1.75rem}.tutor-list{display:flex;flex-direction:column;gap:1rem}.tutor-list-item{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:16px;padding:1.5rem;display:flex;align-items:center;gap:1.5rem;cursor:pointer;transition:all .3s ease}.tutor-list-item:hover{border-color:var(--tutor-color, var(--primary-color));transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.tutor-list-avatar{font-size:3rem;line-height:1;flex-shrink:0}.tutor-list-info{flex:1;display:flex;flex-direction:column;gap:.5rem}.tutor-list-name{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.tutor-list-subject{display:inline-block;padding:.25rem .75rem;border-radius:12px;color:#fff;font-size:.9rem;font-weight:600;width:fit-content}.tutor-list-tagline{font-size:1rem;color:var(--text-secondary);font-style:italic}.tutor-list-arrow{font-size:1.5rem;color:var(--text-secondary);flex-shrink:0}.loading-indicator,.error-message{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.error-message button{margin-top:1rem;padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.error-message button:hover{background:var(--primary-hover);transform:translateY(-2px)}.child-selector{margin-bottom:2rem}.child-selector-label{display:block;font-weight:600;color:var(--text-primary);margin-bottom:.75rem;font-size:.9rem}.child-tabs{display:flex;gap:.75rem;flex-wrap:wrap}.child-tab{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-secondary);border:2px solid transparent;border-radius:.75rem;cursor:pointer;transition:all .2s;min-width:150px}.child-tab:hover{background:var(--bg-primary);border-color:var(--border-color)}.child-tab.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.child-tab.active .child-name,.child-tab.active .child-grade{color:#fff}.child-avatar{width:2.5rem;height:2.5rem;border-radius:50%;background:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1.1rem;flex-shrink:0}.child-tab.active .child-avatar{background:#ffffff4d}.child-info{flex:1;text-align:left}.child-name{font-weight:600;color:var(--text-primary);margin-bottom:.25rem;font-size:.9rem}.child-grade{font-size:.8rem;color:var(--text-secondary)}@media(max-width:768px){.child-tabs{flex-direction:column}.child-tab{width:100%}}.progress-dashboard{max-width:1200px;width:100%;margin:0 auto;padding:2rem 1rem 6rem;background:var(--bg-primary)}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.month-selector{display:flex;align-items:center;gap:1rem}.month-selector h2{margin:0;font-size:1.5rem;color:var(--text-primary);min-width:180px;text-align:center}.month-nav{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:.5rem 1rem;cursor:pointer;color:var(--text-primary);font-size:1.2rem;transition:all .2s}.month-nav:hover{background:var(--bg-tertiary);border-color:var(--primary-color)}.avatar-placeholder{width:48px;height:48px;border-radius:50%;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;font-size:1.5rem}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2rem}.stat-badge{background:var(--bg-secondary);border-radius:16px;padding:1.5rem;text-align:center;border:2px solid var(--border-color);transition:all .2s}.stat-badge:hover{border-color:var(--primary-color);transform:translateY(-2px)}.stat-icon{font-size:2rem;margin-bottom:.5rem}.stat-value{font-size:2rem;font-weight:700;color:var(--primary-color);margin-bottom:.25rem}.stat-label{font-size:.9rem;color:var(--text-secondary)}.subject-progress-section{margin-bottom:2rem}.subject-progress-section h3{color:var(--text-primary);margin-bottom:1rem;font-size:1.25rem}.subject-card{background:var(--bg-secondary);border-radius:12px;padding:1.5rem;margin-bottom:1rem;border:1px solid var(--border-color)}.subject-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.subject-icon{font-size:2rem}.subject-name{flex:1;font-weight:700;color:var(--text-primary);font-size:1.1rem}.subject-percentage{font-weight:700;color:var(--primary-color);font-size:1.1rem}.progress-bar-container{width:100%;height:8px;background:var(--bg-tertiary);border-radius:4px;overflow:hidden;margin-bottom:1rem}.progress-bar{height:100%;transition:width .3s ease;border-radius:4px}.subject-detail{font-size:.9rem;color:var(--text-secondary);margin-top:.5rem;line-height:1.5}.insights-section{background:var(--bg-secondary);border-radius:12px;padding:1.5rem;border:1px solid var(--border-color)}.insights-section h3{display:flex;align-items:center;gap:.5rem;color:var(--text-primary);margin-bottom:1rem;font-size:1.25rem}.insight-icon{font-size:1.5rem}.insight-item{display:flex;gap:1rem;padding:1rem;margin-bottom:1rem;border-radius:8px;background:var(--bg-primary)}.insight-item.strength{border-left:4px solid #22C55E}.insight-item.improvement{border-left:4px solid #F59E0B}.insight-marker{font-size:1.5rem;flex-shrink:0}.insight-content{flex:1}.insight-title{font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.insight-description{color:var(--text-secondary);font-size:.9rem;line-height:1.5}.loading-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.spinner{width:48px;height:48px;border:4px solid var(--border-light);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.progress-dashboard{padding:1rem .5rem 6rem}.stats-row{grid-template-columns:1fr;gap:.75rem}.month-selector h2{font-size:1.25rem;min-width:150px}}.auth-button{padding:.5rem 1rem;border:none;border-radius:.375rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem;background:var(--primary-color);color:#fff;box-shadow:0 1px 3px #0000001a;white-space:nowrap;height:32px}.auth-button:hover{background:var(--primary-color);opacity:.9;transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.auth-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.sign-in-button{background:var(--primary-color);color:#fff}.user-button{background:var(--bg-primary);color:var(--text-primary);border:2px solid var(--border-color);box-shadow:0 1px 3px #00000014}.user-button:hover{background:var(--bg-secondary);border-color:var(--primary-color);box-shadow:0 2px 6px #0000001f}.user-avatar{width:1.5rem;height:1.5rem;border-radius:50%;background:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.75rem}.user-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow{font-size:.7rem;opacity:.7}.auth-button-container{position:relative}.auth-menu{position:absolute;top:calc(100% + .5rem);right:0;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:.5rem;box-shadow:0 4px 12px #0000001a;min-width:150px;z-index:1000;overflow:hidden}.auth-menu-item{width:100%;padding:.75rem 1rem;border:none;background:transparent;color:var(--text-primary);text-align:left;cursor:pointer;transition:background .2s;font-size:.9rem}.auth-menu-item:hover{background:var(--bg-secondary)}[data-theme=dark] .auth-menu{box-shadow:0 4px 12px #0000004d}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--bg-primary);border-top:1px solid var(--border-color);display:flex;justify-content:space-around;align-items:center;padding:.5rem 0;z-index:1000;box-shadow:0 -2px 10px #0000001a}.sidebar-header{display:none}.nav-items{display:flex;width:100%;justify-content:space-around}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;background:none;border:none;cursor:pointer;color:var(--text-secondary);transition:all .2s;min-width:60px}.nav-item:hover,.nav-item.active{color:var(--primary-color)}.nav-icon{font-size:1.5rem;line-height:1}.nav-label{font-size:.75rem;font-weight:500}@media(min-width:768px){.bottom-nav{position:fixed;inset:0 auto 0 0;width:240px;flex-direction:column;justify-content:flex-start;padding:0;border-top:none;border-right:1px solid var(--border-color);box-shadow:2px 0 10px #0000000d}.sidebar-header{display:flex;flex-direction:column;padding:1.5rem 1rem;border-bottom:1px solid var(--border-color);gap:1rem}.sidebar-title h1{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem;line-height:1.2}.sidebar-title p{font-size:.75rem;color:var(--text-secondary);margin:0;line-height:1.4}.sidebar-actions{display:flex;flex-direction:column;gap:.75rem}.language-selector{display:flex;gap:.5rem}.lang-button{flex:1;padding:.5rem;font-size:.75rem;font-weight:600;border:1.5px solid var(--border-color);border-radius:.375rem;background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all .2s ease;height:32px}.lang-button:hover{background:var(--bg-secondary);border-color:var(--primary-color)}.lang-button.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.sidebar-auth{width:100%}.sidebar-auth .auth-button{width:100%;justify-content:center}.nav-items{flex-direction:column;width:100%;padding:1rem 0;gap:.5rem}.nav-item{width:100%;padding:1rem;flex-direction:row;justify-content:flex-start;gap:.75rem;border-radius:.5rem;margin:0 .5rem}.nav-item:hover{background:var(--bg-secondary)}.nav-item.active{background:var(--primary-light);color:var(--primary-color)}.nav-icon{font-size:1.25rem}.nav-label{font-size:.875rem;font-weight:500}}.sign-in-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);padding:2rem}.sign-in-container{background:var(--bg-primary);border-radius:24px;padding:3rem;max-width:500px;width:100%;box-shadow:var(--shadow-lg);position:relative;border:2px solid var(--border-color);transition:all .3s ease}.sign-in-header{text-align:center;margin-bottom:2.5rem}.sign-in-logo{font-size:4rem;margin-bottom:.5rem;line-height:1}.sign-in-header h1{font-size:2.5rem;color:var(--text-primary);margin-bottom:.75rem;font-weight:700;transition:color .3s ease}.sign-in-header p{color:var(--text-secondary);font-size:1.1rem;transition:color .3s ease}.sign-in-form{margin-bottom:1.5rem}.sign-in-form :global([data-clerk-element]){width:100%}.sign-in-form :global(.cl-card){background:transparent!important;box-shadow:none!important;border:none!important;padding:0!important}.sign-in-form :global(.cl-headerTitle),.sign-in-form :global(.cl-headerSubtitle){display:none!important}.sign-in-form :global(.cl-socialButtonsBlockButton),.sign-in-form :global(.cl-formButtonPrimary){background:var(--primary-color)!important;border-radius:12px!important;padding:.875rem 1.5rem!important;font-weight:600!important;font-size:1rem!important;transition:all .2s!important;border:none!important;color:#fff!important}.sign-in-form :global(.cl-socialButtonsBlockButton):hover,.sign-in-form :global(.cl-formButtonPrimary):hover{background:var(--primary-hover)!important;transform:translateY(-2px)!important;box-shadow:var(--shadow-md)!important}.sign-in-form :global(.cl-formFieldInput){background:var(--bg-input)!important;border:2px solid var(--border-color)!important;border-radius:12px!important;padding:.875rem 1rem!important;color:var(--text-primary)!important;font-size:1rem!important;transition:all .2s!important}.sign-in-form :global(.cl-formFieldInput):focus{border-color:var(--primary-color)!important;outline:none!important;box-shadow:0 0 0 3px var(--primary-light)!important}.sign-in-form :global(.cl-footerActionLink){color:var(--primary-color)!important;font-weight:600!important;transition:color .2s!important}.sign-in-form :global(.cl-footerActionLink):hover{color:var(--primary-hover)!important}[data-theme=dark] .sign-in-container{box-shadow:var(--shadow-lg);border-color:var(--border-color)}@media(max-width:768px){.sign-in-container{padding:2rem 1.5rem;border-radius:20px}.sign-in-header h1{font-size:2rem}.sign-in-logo{font-size:3rem}.mascot-card{min-width:70px;padding:.75rem}.mascot{font-size:2rem}}.sign-up-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);padding:2rem}.sign-up-container{background:var(--bg-primary);border-radius:24px;padding:3rem;max-width:500px;width:100%;box-shadow:var(--shadow-lg);position:relative;border:2px solid var(--border-color);transition:all .3s ease}.sign-up-header{text-align:center;margin-bottom:2.5rem}.sign-up-logo{font-size:4rem;margin-bottom:.5rem;line-height:1}.sign-up-header h1{font-size:2.5rem;color:var(--text-primary);margin-bottom:.75rem;font-weight:700;transition:color .3s ease}.sign-up-header p{color:var(--text-secondary);font-size:1.1rem;transition:color .3s ease}.tutor-mascots{display:flex;justify-content:center;gap:1rem;margin-bottom:2.5rem;flex-wrap:wrap}.mascot-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;border-radius:16px;background:var(--bg-secondary);border:2px solid var(--border-color);transition:all .3s ease;min-width:80px}.mascot-card:hover{border-color:var(--tutor-color, var(--primary-color));transform:translateY(-4px);box-shadow:var(--shadow-md)}.mascot{font-size:2.5rem;line-height:1;animation:float 3s ease-in-out infinite}.mascot-label{font-size:.85rem;color:var(--text-secondary);font-weight:600;transition:color .3s ease}.mascot-card:nth-child(1) .mascot{animation-delay:0s}.mascot-card:nth-child(2) .mascot{animation-delay:.5s}.mascot-card:nth-child(3) .mascot{animation-delay:1s}.mascot-card:nth-child(4) .mascot{animation-delay:1.5s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.sign-up-form{margin-bottom:1.5rem}.sign-up-form :global([data-clerk-element]){width:100%}.sign-up-form :global(.cl-card){background:transparent!important;box-shadow:none!important;border:none!important;padding:0!important}.sign-up-form :global(.cl-headerTitle),.sign-up-form :global(.cl-headerSubtitle){display:none!important}.sign-up-form :global(.cl-socialButtonsBlockButton),.sign-up-form :global(.cl-formButtonPrimary){background:var(--primary-color)!important;border-radius:12px!important;padding:.875rem 1.5rem!important;font-weight:600!important;font-size:1rem!important;transition:all .2s!important;border:none!important;color:#fff!important}.sign-up-form :global(.cl-socialButtonsBlockButton):hover,.sign-up-form :global(.cl-formButtonPrimary):hover{background:var(--primary-hover)!important;transform:translateY(-2px)!important;box-shadow:var(--shadow-md)!important}.sign-up-form :global(.cl-formFieldInput){background:var(--bg-input)!important;border:2px solid var(--border-color)!important;border-radius:12px!important;padding:.875rem 1rem!important;color:var(--text-primary)!important;font-size:1rem!important;transition:all .2s!important}.sign-up-form :global(.cl-formFieldInput):focus{border-color:var(--primary-color)!important;outline:none!important;box-shadow:0 0 0 3px var(--primary-light)!important}.sign-up-form :global(.cl-footerActionLink){color:var(--primary-color)!important;font-weight:600!important;transition:color .2s!important}.sign-up-form :global(.cl-footerActionLink):hover{color:var(--primary-hover)!important}.continue-anonymous{width:100%;padding:.875rem 1.5rem;background:transparent;border:2px solid var(--border-color);border-radius:12px;color:var(--text-primary);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:1rem}.continue-anonymous:hover{background:var(--bg-secondary);border-color:var(--primary-color);transform:translateY(-2px)}[data-theme=dark] .sign-up-container{box-shadow:var(--shadow-lg);border-color:var(--border-color)}@media(max-width:768px){.sign-up-container{padding:2rem 1.5rem;border-radius:20px}.sign-up-header h1{font-size:2rem}.sign-up-logo{font-size:3rem}.mascot-card{min-width:70px;padding:.75rem}.mascot{font-size:2rem}}.data-migration-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;padding:1rem}.data-migration-modal{background:var(--bg-primary);border-radius:1rem;padding:2rem;max-width:400px;width:100%;text-align:center;box-shadow:0 8px 24px #0003}.migration-icon{font-size:3rem;margin-bottom:1rem}.data-migration-modal h2{color:var(--text-primary);margin-bottom:1rem;font-size:1.5rem}.data-migration-modal p{color:var(--text-secondary);margin-bottom:2rem;line-height:1.6}.migration-actions{display:flex;flex-direction:column;gap:.75rem}.migration-button{padding:.75rem 1.5rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.migration-button:disabled{opacity:.6;cursor:not-allowed}.migration-button.primary{background:var(--primary-color);color:#fff}.migration-button.primary:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.migration-button.secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border-color)}.migration-button.secondary:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--primary-color)}[data-theme=dark] .data-migration-modal{box-shadow:0 8px 24px #0006}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--bg-secondary);transition:background .3s ease}.controls{display:flex;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap}.controls .control-select{min-width:200px}.control-select{padding:.75rem 1.5rem;font-size:1.1rem;border:2px solid var(--primary-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-weight:500;min-width:150px;transition:all .3s ease}.control-select:hover{background:var(--bg-tertiary)}.control-select:focus{outline:none;border-color:var(--primary-hover);box-shadow:0 0 0 3px var(--primary-light)}.app-main{flex:1;display:flex;justify-content:center;align-items:center;padding:2rem 2rem 6rem;width:100%;max-width:1400px;margin:0 auto}@media(max-width:768px){.app-main{padding:1rem 1rem 6rem}}@media(min-width:768px){.app-main{padding-left:240px;padding:2rem}}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #f1f3f5;--bg-input: #ffffff;--bg-input-wrapper: #f1f3f5;--text-primary: #212529;--text-secondary: #495057;--text-tertiary: #6c757d;--border-color: #dee2e6;--border-light: #e9ecef;--user-message-bg: #e7f5ff;--user-message-text: #1971c2;--assistant-message-bg: #ffffff;--assistant-message-text: #212529;--primary-gradient: linear-gradient(135deg, #4dabf7 0%, #339af0 100%);--primary-color: #4dabf7;--primary-hover: #339af0;--primary-light: #e7f5ff;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .1);--success-color: #51cf66;--error-color: #ff8787;--info-color: #74c0fc;--warning-color: #ffd43b}[data-theme=dark]{--bg-primary: #1c1c1e;--bg-secondary: #2c2c2e;--bg-tertiary: #3a3a3c;--bg-input: #2c2c2e;--bg-input-wrapper: #3a3a3c;--text-primary: #f2f2f7;--text-secondary: #e5e5ea;--text-tertiary: #98989d;--border-color: #38383a;--border-light: #48484a;--user-message-bg: #1e3a5f;--user-message-text: #74c0fc;--assistant-message-bg: #2c2c2e;--assistant-message-text: #f2f2f7;--primary-gradient: linear-gradient(135deg, #5c9ce6 0%, #4dabf7 100%);--primary-color: #5c9ce6;--primary-hover: #4dabf7;--primary-light: #1e3a5f;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--success-color: #6bcf7f;--error-color: #ff8787;--info-color: #74c0fc;--warning-color: #ffd43b}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-secondary);min-height:100vh;font-size:16px;line-height:1.6;color:var(--text-primary);transition:background .3s ease,color .3s ease}#root{min-height:100vh;display:flex;flex-direction:column}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
