@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@600;700&display=swap);:root{--bg-primary:#f5f3ed;--bg-secondary:#f5f3ed;--bg-card:#fff;--bg-card-hover:#fafaf8;--text-primary:#2c3e50;--text-secondary:#5a6c7d;--text-muted:#95a5a6;--accent-orange:#ff9f43;--accent-yellow:#ffd93d;--accent-green:#6bcf7f;--accent-blue:#4a90e2;--accent-purple:#a29bfe;--border-radius-sm:8px;--border-radius-md:12px;--border-radius-lg:16px;--border-radius-xl:24px;--shadow-sm:0 2px 4px #0000000d;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001f;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-xxl:48px}body{background:#f5f3ed;background:var(--bg-primary);color:#2c3e50;margin:0;overflow-x:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}button{transition:all .2s ease}button:active{transform:scale(.98)}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}@media (max-width:768px){a,button,input,select,textarea{min-height:44px}input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{font-size:16px!important}}.login-container{background:var(--bg-primary);display:grid;grid-template-columns:1fr 2fr;min-height:100vh;overflow:hidden}.login-image-side{display:none;overflow:hidden;position:relative}@media (min-width:1024px){.login-image-side{display:flex}}.login-image{height:100%;object-fit:cover;object-position:center;width:100%}.login-image-overlay{background:linear-gradient(135deg,#4a90e2b3,#a29bfeb3);bottom:0;color:#fff;display:flex;flex-direction:column;justify-content:space-between;left:0;padding:48px;position:absolute;right:0;top:0;z-index:2}.login-logo-section{align-items:center;display:flex;gap:12px}.login-logo-section h2{color:#fff;font-size:28px;font-weight:700;margin:0}.login-logo-section svg{filter:brightness(0) invert(1)}.login-quote{font-size:20px;font-style:italic;font-weight:500;line-height:1.6;margin:0}.login-quote p{color:#fff;margin:0 0 16px}.login-quote footer{color:#ffffffe6;font-size:14px;font-style:normal;font-weight:400;margin:0}.login-form-side{align-items:center;background:var(--bg-card);display:flex;justify-content:center;max-height:100vh;overflow-y:auto;padding:24px 32px}@media (max-width:1023px){.login-form-side{grid-column:1/-1}}.login-form-container{max-width:380px;width:100%}.login-header{margin-bottom:28px;text-align:center}.login-header-logo{display:flex;justify-content:center;margin-bottom:12px}.login-header h1{color:var(--text-primary);font-size:28px;font-weight:700;margin:0 0 6px}.login-subtitle{color:var(--text-secondary);font-size:13px;margin:0}.login-error-message{background:#fee;border-left:4px solid #e74c3c;border-radius:8px;color:#e74c3c;font-size:14px;margin-bottom:20px;padding:12px 16px;text-align:center}.login-form{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.form-group label{color:var(--text-primary);font-size:13px;letter-spacing:.5px;text-transform:uppercase}.form-input{background:var(--bg-card);border:2px solid #e0e0e0;border-radius:8px;color:var(--text-primary);font-family:inherit;font-size:15px;padding:12px 16px;transition:all .3s ease}.form-input::placeholder{color:var(--text-muted)}.form-input:focus{background:var(--bg-card);border-color:var(--accent-blue);box-shadow:0 0 0 3px #4a90e21a;outline:none}.form-options{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.remember-me-label{align-items:center;color:var(--text-secondary);cursor:pointer;display:flex;font-size:14px;gap:8px;-webkit-user-select:none;user-select:none}.remember-me-checkbox{accent-color:var(--accent-blue);cursor:pointer;height:18px;width:18px}.forgot-password-link{color:var(--accent-blue);font-size:14px;font-weight:500;text-decoration:none;transition:color .3s ease}.forgot-password-link:hover{color:var(--accent-purple);text-decoration:underline}.login-submit-btn{background:linear-gradient(135deg,var(--accent-blue) 0,var(--accent-purple) 100%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:8px;padding:14px 24px;transition:all .3s ease}.login-submit-btn:hover:not(:disabled){box-shadow:0 8px 24px #4a90e24d;transform:translateY(-2px)}.login-submit-btn:active:not(:disabled){transform:translateY(0)}.login-submit-btn:disabled{cursor:not-allowed;opacity:.6}.install-app-btn{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:var(--border-radius-md);box-shadow:0 4px 12px #10b98133;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 24px;transition:all .3s ease;width:100%}.install-app-btn:hover{box-shadow:0 8px 24px #10b9814d;transform:translateY(-2px)}.install-app-btn:active{transform:translateY(0)}.login-divider{align-items:center;color:var(--text-secondary);display:flex;font-size:12px;font-weight:600;gap:16px;margin:18px 0}.login-divider:after,.login-divider:before{background:#e0e0e0;content:"";flex:1 1;height:1px}.login-footer{color:var(--text-secondary);font-size:14px;margin:0;text-align:center}.login-footer a{color:var(--accent-blue);font-weight:600;text-decoration:none;transition:color .3s ease}.login-footer a:hover{color:var(--accent-purple);text-decoration:underline}@media (max-width:768px){.login-container{grid-template-columns:1fr}.login-form-side{padding:32px 20px}.login-form-container{max-width:100%}.login-header h1{font-size:28px}.form-options{align-items:flex-start;flex-direction:column}.forgot-password-link{align-self:flex-end}}@media (max-width:480px){.login-form-side{padding:24px 16px}.login-header{margin-bottom:24px}.login-header h1{font-size:24px}.login-subtitle{font-size:13px}.login-form{gap:16px}.form-input{font-size:14px;padding:11px 14px}.login-submit-btn{font-size:15px;padding:12px 20px}}.auth-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:450px;padding:48px;width:100%}.auth-card h1{font-size:42px}.auth-card h1,.auth-card h2{margin-bottom:8px;text-align:center}.auth-card h2{color:#2c3e50;font-size:28px}.subtitle{color:#7f8c8d;margin-bottom:32px}.error-message,.subtitle{font-size:14px;text-align:center}.error-message{background:#fee;border-radius:8px;color:#e74c3c;margin-bottom:20px;padding:12px}.auth-form{gap:20px}.auth-form,.form-group{display:flex;flex-direction:column}.form-group{gap:8px}.form-group input{border:2px solid #ecf0f1;border-radius:8px;font-size:15px;padding:12px 16px;transition:border-color .3s}.form-group input:focus{border-color:#3498db;outline:none}.submit-btn{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;color:#fff;font-size:16px;font-weight:600;margin-top:8px;padding:14px}.submit-btn:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.auth-footer{color:#7f8c8d;font-size:14px;margin-top:24px;text-align:center}.auth-footer a{color:#3498db;font-weight:600;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.auth-logo-section{display:flex;justify-content:center;margin-bottom:16px}@media (max-width:768px){.auth-container{padding:16px}.auth-card{padding:32px 24px}.auth-card h1{font-size:28px}.auth-card h2{font-size:22px}.form-group input{font-size:16px}}@media (max-width:480px){.auth-container{padding:12px}.auth-card{padding:24px 20px}.auth-card h1{font-size:24px}.auth-card h2{font-size:20px}.subtitle{font-size:13px;margin-bottom:24px}.submit-btn{font-size:15px;padding:12px}}.layout{background:var(--bg-primary);display:flex;min-height:100vh}.sidebar-overlay{animation:fadeIn .3s ease;background:#00000080;right:0;z-index:99}.sidebar,.sidebar-overlay{bottom:0;left:0;position:fixed;top:0}.sidebar{background:var(--bg-card);border-radius:0 var(--border-radius-xl) var(--border-radius-xl) 0;box-shadow:var(--shadow-md);display:flex;flex-direction:column;padding:var(--spacing-lg);transition:transform .3s ease;width:240px;z-index:100}.sidebar.closed{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-header{margin-bottom:var(--spacing-xl)}.logo{align-items:center;display:flex;gap:var(--spacing-sm);padding:var(--spacing-md)}.logo-text{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#ff9f43,#ff6b6b);-webkit-background-clip:text;background-clip:text;font-family:Poppins,sans-serif;font-size:16px;font-weight:700;letter-spacing:-.5px}.sidebar-nav{flex:1 1;flex-direction:column}.nav-items-top,.sidebar-nav{display:flex;gap:var(--spacing-sm)}.nav-items-top{flex-direction:column}.nav-item{align-items:center;background:#0000;border:none;border-radius:var(--border-radius-md);color:var(--text-secondary);cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:var(--spacing-md);padding:var(--spacing-md);text-align:left;transition:all .2s ease}.nav-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}.nav-item.active{background:var(--bg-secondary);color:var(--text-primary);font-weight:600}.nav-item.logout-btn{color:var(--accent-orange);margin-top:auto}.nav-item.logout-btn:hover{background:#ff9f431a;color:var(--accent-orange)}.nav-icon{align-items:center;display:flex;font-size:20px;justify-content:center;width:24px}.nav-text{flex:1 1}.main-content{display:flex;flex:1 1;flex-direction:column;margin-left:240px;min-height:100vh;transition:margin-left .3s ease}.main-content.sidebar-closed{margin-left:0}.main-content.sidebar-open{margin-left:240px}.top-header{background:#0000;flex-wrap:wrap;justify-content:space-between;padding:var(--spacing-lg) var(--spacing-xl)}.header-left,.header-right,.top-header{align-items:center;display:flex;gap:var(--spacing-md)}.hamburger-btn{align-items:center;background:var(--bg-card);border:none;border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm);cursor:pointer;display:flex;height:40px;justify-content:center;transition:all .2s ease;width:40px}.hamburger-btn:hover{background:var(--bg-card-hover);transform:scale(1.05)}.hamburger-icon{color:var(--text-primary);font-size:20px;line-height:1}.greeting h1{color:var(--text-primary);font-size:28px;font-weight:600;margin:0}.header-actions{align-items:center;display:flex;gap:var(--spacing-md)}.icon-btn{background:#0000;border:none;border-radius:var(--border-radius-sm);cursor:pointer;font-size:20px;padding:var(--spacing-sm);transition:background .2s ease}.icon-btn:hover{background:#fff3}.user-menu{align-items:center;background:var(--bg-card);border-radius:var(--border-radius-xl);box-shadow:var(--shadow-sm);display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.user-name{color:var(--text-primary);font-size:14px;font-weight:500}.user-avatar{align-items:center;background:#0000;border:none;border-radius:50%;cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:transform .2s ease;width:32px}.user-avatar:hover{transform:scale(1.1)}.page-content{flex:1 1;padding:0 var(--spacing-xl) var(--spacing-xl);width:100%}@media (max-width:1024px){.sidebar{width:200px}.main-content{margin-left:200px}}.logo-image{border-radius:var(--border-radius-md);height:40px;object-fit:contain;width:40px}@media (max-width:768px){.sidebar{padding:var(--spacing-lg);width:240px}.sidebar.closed{transform:translateX(-100%)}.main-content.sidebar-closed,.main-content.sidebar-open{margin-left:0}.top-header{padding:var(--spacing-md)}.greeting h1{font-size:20px}.user-name{display:none}.page-content{padding:0 var(--spacing-md) var(--spacing-md)}}@media (max-width:480px){.sidebar{width:240px}.top-header{padding:var(--spacing-sm) var(--spacing-md)}.greeting h1{font-size:16px}.hamburger-btn{height:36px;width:36px}.hamburger-icon,.icon-btn{font-size:18px}.icon-btn{padding:var(--spacing-xs)}.user-avatar{font-size:14px;height:28px;width:28px}.page-content{padding:0 var(--spacing-sm) var(--spacing-sm)}}.loading-spinner-fullpage{align-items:center;background:var(--bg-primary);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.loading-spinner-container{text-align:center}.loading-spinner-inline{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:200px;padding:var(--spacing-xl)}.loading-spinner{height:80px;margin:0 auto;position:relative;width:80px}.spinner-ring{animation:spin 1.5s cubic-bezier(.5,0,.5,1) infinite;border:4px solid #0000;border-radius:50%;border-top:4px solid var(--accent-orange);height:100%;position:absolute;width:100%}.spinner-ring:first-child{animation-delay:-.45s;border-top-color:var(--accent-orange)}.spinner-ring:nth-child(2){animation-delay:-.3s;border-top-color:var(--accent-yellow)}.spinner-ring:nth-child(3){animation-delay:-.15s;border-top-color:var(--accent-green)}.loading-message{color:var(--text-secondary);font-size:18px;font-weight:500;margin-top:var(--spacing-lg)}.skeleton-paragraph{height:12px}.dashboard{background:var(--bg-secondary);min-height:100vh;padding:var(--spacing-lg);width:100%}.dashboard-container{margin:0 auto}.dashboard-header{margin-bottom:var(--spacing-xxl)}.dashboard-header h1{color:var(--text-primary);font-size:32px;font-weight:700;margin:0 0 var(--spacing-sm) 0}.subtitle{color:var(--text-secondary);font-size:16px;margin:0}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-lg)}.section-header h2{color:var(--text-primary);font-size:22px;font-weight:600;margin:0}.dashboard-grid{grid-gap:var(--spacing-xl);display:grid;gap:var(--spacing-xl);grid-template-columns:1fr 380px}.left-column{display:flex;flex-direction:column;gap:var(--spacing-xl)}.recent-section{background:var(--bg-card);border-radius:var(--border-radius-xl);box-shadow:var(--shadow-md);padding:var(--spacing-lg)}.recent-exercises{display:flex;flex-direction:column;gap:var(--spacing-md)}.recent-card{background:var(--bg-secondary);border-left:4px solid var(--accent-blue);border-radius:var(--border-radius-lg);cursor:pointer;padding:var(--spacing-md);transition:all .2s ease}.recent-card:hover{background:var(--bg-card);box-shadow:var(--shadow-md);transform:translateX(4px)}.exercise-type-badge{color:var(--text-secondary);display:inline-block;font-size:12px;font-weight:600;margin-bottom:var(--spacing-sm)}.recent-info{margin:0}.recent-title{color:var(--text-primary);font-size:14px;font-weight:600;line-height:1.4;margin:0 0 var(--spacing-xs) 0}.recent-preview{color:var(--text-secondary);display:none;font-size:13px;line-height:1.4;margin:0}.topics-section{background:var(--bg-card);border-radius:var(--border-radius-xl);box-shadow:var(--shadow-md);padding:var(--spacing-lg)}.topics-grid{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:repeat(2,1fr)}.topic-card{align-items:center;background-position:50%;background-size:cover;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);color:#fff;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-height:200px;overflow:hidden;padding:var(--spacing-lg);position:relative;text-align:center;transition:all .3s ease}.topic-overlay{background:#0006;bottom:0;content:"";left:0;position:absolute;right:0;top:0;transition:background .3s ease;z-index:1}.topic-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-8px)}.topic-card:hover .topic-overlay{background:#00000080}.topic-emoji{display:block;font-size:48px;margin-bottom:var(--spacing-md);position:relative;z-index:2}.topic-card h3{font-size:18px;font-weight:700;margin:0 0 var(--spacing-sm) 0;position:relative;z-index:2}.topic-card p{font-size:13px;margin:0;opacity:.95;position:relative;z-index:2}.right-column{display:flex;flex-direction:column;gap:var(--spacing-lg)}.progress-widget,.streak-widget{background:var(--bg-card);border-radius:var(--border-radius-xl);box-shadow:var(--shadow-md);padding:var(--spacing-lg)}.progress-widget h3,.streak-widget h3{color:var(--text-primary);font-size:18px;font-weight:600;margin:0 0 var(--spacing-lg) 0}.metric-item{border-bottom:1px solid var(--bg-secondary);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.metric-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.metric-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-sm)}.metric-label{color:var(--text-secondary);font-size:13px;font-weight:600}.metric-value{color:var(--accent-blue);font-size:20px;font-weight:700}.progress-bar{background:var(--bg-secondary);border-radius:4px;height:8px;margin-bottom:var(--spacing-sm);width:100%}.progress-fill{background:linear-gradient(90deg,var(--accent-blue) 0,var(--accent-purple) 100%);border-radius:4px;height:100%;transition:width .3s ease}.metric-detail{color:var(--text-secondary);font-size:12px;margin:0}.streak-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-lg)}.streak-count{color:var(--accent-orange);font-size:28px;font-weight:700}.streak-calendar{grid-gap:6px;display:grid;gap:6px;grid-template-columns:repeat(6,1fr);margin-bottom:var(--spacing-lg)}.streak-day{align-items:center;aspect-ratio:1;background:var(--bg-secondary);border-radius:var(--border-radius-sm);color:var(--text-secondary);cursor:default;display:flex;font-size:11px;font-weight:600;justify-content:center;transition:all .2s ease}.streak-day.active{background:var(--accent-orange);box-shadow:var(--shadow-md);color:#fff}.streak-info{color:var(--text-secondary);font-size:13px;font-style:italic;margin:0;text-align:center}@media (max-width:1200px){.dashboard-grid{grid-template-columns:1fr}.topics-grid{grid-template-columns:repeat(2,1fr)}.right-column{order:-1}}@media (max-width:768px){.dashboard{padding:var(--spacing-sm)}.dashboard-header{margin-bottom:var(--spacing-lg)}.dashboard-header h1{font-size:22px}.topics-grid{gap:var(--spacing-sm);grid-template-columns:1fr}.topic-card{min-height:160px;padding:var(--spacing-md)}.topic-card h3{font-size:16px}.topic-card p{font-size:12px}.streak-calendar{gap:4px;grid-template-columns:repeat(5,1fr)}.streak-day{font-size:10px}.progress-widget,.recent-section,.streak-widget,.topics-section{padding:var(--spacing-md)}.metric-value,.section-header h2{font-size:18px}.streak-count{font-size:24px}}@media (max-width:480px){.dashboard{padding:var(--spacing-xs)}.dashboard-header h1{font-size:20px}.recent-card,.topic-card{padding:var(--spacing-sm)}.topic-card{min-height:140px}.topic-emoji{font-size:36px;margin-bottom:var(--spacing-sm)}.streak-calendar{grid-template-columns:repeat(6,1fr)}}.exercise-container{margin:0 auto;max-width:900px}.exercise-header{gap:16px;margin-bottom:24px}.exercise-header h1{color:var(--text-primary);font-size:28px}.skeleton-loading{padding:var(--spacing-lg)}.skeleton-loader{animation:loading 1.5s ease-in-out infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;border-radius:var(--border-radius-md)}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{height:16px;margin-bottom:var(--spacing-sm)}.skeleton-title{height:24px;margin-bottom:var(--spacing-md);width:60%}.skeleton-paragraph{height:14px;margin-bottom:var(--spacing-sm)}.skeleton-paragraph:last-child{width:80%}.card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.topic-badge{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:20px;color:#fff;font-size:13px;font-weight:600;padding:6px 16px}.passage-content{font-size:16px;line-height:1.8;margin-bottom:24px}.passage-content p{margin-bottom:16px}.vocab-highlight{background:#fff3cd;border-radius:3px;font-weight:600;padding:2px 4px}.vocabulary-section{border-top:2px solid #ecf0f1;margin-top:20px;padding-top:20px}.vocabulary-section h3{color:#2c3e50;font-size:18px;margin-bottom:12px}.vocab-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.vocab-chip{background:#ecf0f1;border-radius:16px;color:#2c3e50;font-size:14px;font-weight:500;padding:6px 12px;position:relative;transition:all .3s ease}.vocab-chip.used{box-shadow:0 0 8px #54ae5466}.vocab-chip.success,.vocab-chip.used{background:#d4edda;color:#155724}.vocab-count{background:#54ae54;border-radius:10px;color:#fff;display:inline-block;font-size:11px;font-weight:700;margin-left:6px;padding:1px 6px}.vocab-hint{color:#7f8c8d;font-size:13px;font-style:italic}.instructions{color:#7f8c8d;font-size:15px}.instructions,.question-group{margin-bottom:24px}.question-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.question-label{color:#2c3e50;flex:1 1;font-size:15px;font-weight:600;line-height:1.5}.ai-answer-btn{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:all .3s;white-space:nowrap}.ai-answer-btn:hover:not(:disabled){box-shadow:0 4px 12px #f5576c66;transform:translateY(-2px)}.ai-answer-btn:disabled{cursor:not-allowed;opacity:.6}.answer-input,.writing-textarea{border:2px solid #ecf0f1;border-radius:8px;font-family:inherit;font-size:15px;padding:12px;resize:vertical;transition:border-color .3s;width:100%}.answer-input:focus,.writing-textarea:focus{border-color:#3498db;outline:none}.dashboard-btn,.next-btn,.submit-btn{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;color:#fff;display:block;font-size:16px;font-weight:600;margin-top:16px;padding:14px 32px;width:100%}.dashboard-btn:hover,.next-btn:hover,.submit-btn:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.prompt-content{background:#f8f9fa;border-radius:8px;margin:16px 0;padding:24px}.prompt-text{color:#2c3e50;font-size:18px;font-weight:500;line-height:1.6}.writing-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.writing-header-actions{align-items:center;display:flex;gap:12px}.word-count{background:#ecf0f1;border-radius:16px;color:#7f8c8d;font-size:13px;padding:6px 12px}.writing-textarea{min-height:300px}.writing-tips{background:#e8f5e9;border-radius:8px;margin:16px 0;padding:16px}.writing-tips p{color:#2c3e50;font-weight:600;margin-bottom:8px}.writing-tips ul{color:#546e7a;margin-left:20px}.writing-tips li{font-size:14px;margin-bottom:4px}.feedback-section{margin:0 auto;max-width:700px}.feedback-header{margin-bottom:24px;text-align:center}.feedback-header h2{color:#2c3e50;margin-bottom:16px}.score-badge{background:linear-gradient(135deg,#56ab2f,#a8e063);border-radius:24px;color:#fff;display:inline-block;font-size:18px;font-weight:700;padding:8px 24px}.feedback-content{margin-bottom:32px;text-align:center}.feedback-icon{font-size:80px;margin-bottom:16px}.feedback-text{color:#2c3e50;font-size:16px;line-height:1.6}.corrections-section,.vocab-used-section{background:#f8f9fa;border-radius:8px;margin:24px 0;padding:20px}.corrections-section h3,.vocab-used-section h3{color:#2c3e50;margin-bottom:16px}.corrections-section ul{margin-left:20px}.corrections-section li{color:#546e7a;line-height:1.5;margin-bottom:8px}.review-section{background:#f8f9fa;border-radius:8px;margin:24px 0;padding:20px}.review-section h3{color:#2c3e50;margin-bottom:16px}.review-item{border-bottom:1px solid #ecf0f1;margin-bottom:20px;padding-bottom:20px}.review-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.review-question{margin-bottom:12px}.review-question strong{color:#2c3e50;font-size:15px}.review-answer{background:#fff;border-left:3px solid #667eea;border-radius:6px;padding:12px}.review-answer p{color:#546e7a;line-height:1.6;margin:0 0 8px}.review-answer p:first-child{color:#2c3e50;font-weight:600;margin-bottom:8px}.review-answer p:last-child{margin-bottom:0}.action-buttons{display:flex;gap:12px;margin-top:24px}.dashboard-btn,.next-btn{flex:1 1;margin-top:0}.dashboard-btn{background:#95a5a6}.dashboard-btn:hover{background:#7f8c8d;box-shadow:0 4px 12px #7f8c8d66}.header-buttons{display:flex;gap:12px;margin-left:auto}.new-assignment-btn{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s}.new-assignment-btn:hover{box-shadow:0 4px 12px #f5576c66;transform:translateY(-2px)}.library-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s}.library-btn:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.new-passage-btn{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:all .3s;white-space:nowrap}.new-passage-btn:hover{box-shadow:0 4px 12px #f5576c66;transform:translateY(-2px)}.library-view{animation:fadeIn .3s ease-in}.exercise-list{display:flex;flex-direction:column;gap:12px;margin:20px 0}.exercise-item{align-items:center;background:#f8f9fa;border-left:4px solid #667eea;border-radius:8px;display:flex;justify-content:space-between;padding:16px;transition:all .2s}.exercise-item:hover{background:#f0f1f5;box-shadow:0 2px 8px #0000001a}.exercise-info{flex:1 1}.exercise-info h3{color:#2c3e50;font-size:16px;margin:0 0 8px}.exercise-date{color:#7f8c8d;font-size:13px;margin:0 0 8px}.completed-badge{background:#d4edda;color:#155724}.completed-badge,.incomplete-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.incomplete-badge{background:#fff3cd;color:#856404}.select-btn{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;margin-left:16px;padding:8px 16px;transition:all .2s}.select-btn:hover{background:#5568d3;transform:translateY(-1px)}.back-btn{background:#95a5a6;border:none;color:#fff;cursor:pointer;font-weight:600;margin-top:16px;padding:10px 20px;transition:all .2s}.back-btn:hover{background:#7f8c8d}.empty-message{color:#7f8c8d;font-size:16px;padding:40px 20px;text-align:center}.exercise-header{align-items:center;display:flex;justify-content:space-between}@media (max-width:768px){.exercise-container{padding:0}.exercise-header{align-items:flex-start;flex-direction:column;gap:var(--spacing-sm)}.exercise-header h1{font-size:22px}.header-buttons{flex-direction:column;margin-top:0}.header-buttons,.library-btn,.new-assignment-btn{margin-left:0;width:100%}.passage-content{font-size:15px;line-height:1.7}.question-header{align-items:flex-start;flex-direction:column;gap:var(--spacing-sm)}.ai-answer-btn{width:100%}.answer-input,.writing-textarea{font-size:16px}.writing-textarea{min-height:250px}.action-buttons{flex-direction:column}.dashboard-btn,.next-btn,.submit-btn{font-size:15px;padding:12px 24px}.exercise-item{align-items:flex-start;flex-direction:column;padding:var(--spacing-sm)}.exercise-info h3{font-size:15px}.select-btn{margin-left:0;margin-top:12px;width:100%}.vocab-chips{gap:6px}.vocab-chip{font-size:13px;padding:5px 10px}}@media (max-width:480px){.exercise-header h1{font-size:20px}.card-header{align-items:flex-start;flex-direction:column;gap:var(--spacing-sm)}.topic-badge{font-size:12px;padding:5px 12px}.passage-content,.question-label{font-size:14px}.writing-textarea{min-height:200px}.feedback-icon{font-size:60px}.score-badge{font-size:16px;padding:6px 20px}}.vocabulary-container{margin:0 auto;max-width:1000px}.vocabulary-header{align-items:center;display:flex;gap:16px;margin-bottom:24px}.vocabulary-header h1{color:#2c3e50;font-size:28px}.vocab-stats-cards{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:32px}.vocab-stats-cards .stat-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px;text-align:center}.vocab-stats-cards .stat-card h3{font-size:36px;margin-bottom:8px}.vocab-stats-cards .stat-card p{color:#7f8c8d;font-size:14px;letter-spacing:1px;text-transform:uppercase}.vocab-stats-cards .stat-card.introduced h3{color:#3498db}.vocab-stats-cards .stat-card.practicing h3{color:#f39c12}.vocab-stats-cards .stat-card.mastered h3{color:#27ae60}.vocab-stats-cards .stat-card.total h3{color:#9b59b6}.filter-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;margin-bottom:24px;padding:24px}.filter-section h2{color:#2c3e50;margin-bottom:16px}.filter-buttons{display:flex;flex-wrap:wrap;gap:12px}.filter-buttons button{background:#fff;border:2px solid #ecf0f1;border-radius:8px;color:#7f8c8d;font-size:14px;font-weight:600;padding:10px 20px;transition:all .3s}.filter-buttons button:hover{border-color:#3498db;color:#3498db}.filter-buttons button.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;color:#fff}.filter-buttons button.introduced.active{background:#3498db}.filter-buttons button.practicing.active{background:#f39c12}.filter-buttons button.mastered.active{background:#27ae60}.vocabulary-list{display:flex;flex-direction:column;gap:16px}.vocab-item{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:20px;transition:transform .2s,box-shadow .2s}.vocab-item:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.vocab-item-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.vocab-word{color:#2c3e50;font-size:24px;font-weight:700}.mastery-badge{border-radius:20px;color:#fff;font-size:12px;font-weight:600;letter-spacing:1px;padding:6px 16px;text-transform:uppercase}.vocab-translation{color:#546e7a;font-size:16px;margin-bottom:8px}.vocab-context{background:#f8f9fa;border-radius:8px;color:#546e7a;font-style:italic;line-height:1.5;margin-bottom:12px;padding:12px}.vocab-stats{color:#7f8c8d;display:flex;flex-wrap:wrap;font-size:13px;gap:16px}.vocab-stats span{background:#f8f9fa;border-radius:12px;padding:4px 12px}.empty-state{background:#fff;border-radius:12px;padding:60px 20px;text-align:center}.empty-state p{color:#7f8c8d;font-size:16px;margin-bottom:20px}.start-btn{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;color:#fff;font-size:15px;font-weight:600;padding:12px 32px}.start-btn:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}@media (max-width:768px){.vocabulary-container{padding:0}.vocabulary-header h1{font-size:22px}.vocab-stats-cards{gap:var(--spacing-sm);grid-template-columns:repeat(2,1fr)}.vocab-stats-cards .stat-card{padding:var(--spacing-md)}.vocab-stats-cards .stat-card h3{font-size:28px}.vocab-stats-cards .stat-card p{font-size:12px}.filter-section{padding:var(--spacing-md)}.filter-section h2{font-size:18px}.filter-buttons button{font-size:13px;padding:8px 16px}.vocab-item{padding:var(--spacing-md)}.vocab-word{font-size:20px}.vocab-translation{font-size:15px}.vocab-stats{flex-direction:column;gap:8px}}@media (max-width:480px){.vocabulary-header h1{font-size:20px}.vocab-stats-cards{grid-template-columns:1fr 1fr}.vocab-stats-cards .stat-card{padding:var(--spacing-sm)}.vocab-stats-cards .stat-card h3{font-size:24px}.vocab-word{font-size:18px}.mastery-badge{font-size:11px;padding:4px 12px}.vocab-item-header{align-items:flex-start;flex-direction:column;gap:var(--spacing-xs)}}.progress-container{margin:0 auto;max-width:1000px}.progress-header{align-items:center;display:flex;gap:16px;margin-bottom:24px}.progress-header h1{color:#2c3e50;font-size:28px}.level-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;margin-bottom:32px}.level-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.level-header h2{color:#fff;font-size:32px;margin:0}.level-header p{color:#ffffffe6;margin-top:4px}.level-icon{font-size:64px}.level-progress{background:#fff3;border-radius:8px;padding:20px}.progress-bar-section{margin-bottom:0}.progress-label{color:#ffffffe6;display:flex;font-size:14px;justify-content:space-between;margin-bottom:12px}.progress-bar{background:#ffffff4d;border-radius:5px;height:10px;overflow:hidden}.progress-bar .progress-fill{background:#fff}.progress-stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:32px}.progress-stats-grid .stat-card{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:16px;padding:24px}.advancement-card h2{margin-bottom:24px}.advancement-info,.advancement-not-ready,.advancement-ready{align-items:flex-start;display:flex;gap:20px}.info-icon,.ready-icon{flex-shrink:0;font-size:48px}.info-content,.ready-content{flex:1 1}.info-content h3,.ready-content h3{color:#2c3e50;font-size:20px;margin-bottom:12px}.info-content p,.ready-content p{color:#546e7a;line-height:1.6;margin-bottom:16px}.eligibility-stats{background:#f8f9fa;border-radius:8px;display:flex;gap:32px;margin:20px 0;padding:16px}.eligibility-stats .stat{display:flex;flex-direction:column;gap:8px}.stat-label{font-size:13px;letter-spacing:1px}.stat-value{font-size:24px}.stat-value.success{color:#27ae60}.stat-value.warning{color:#f39c12}.advance-btn{background:linear-gradient(135deg,#56ab2f,#a8e063);border-radius:8px;color:#fff;font-size:16px;font-weight:600;margin-top:8px;padding:14px 32px}.advance-btn:hover:not(:disabled){box-shadow:0 4px 12px #56ab2f66;transform:translateY(-2px)}.help-text{background:#fff3cd;border-radius:8px;color:#f39c12;font-size:14px;margin-top:12px;padding:12px}.milestones-card h2{margin-bottom:24px}.milestones-list{display:flex;flex-direction:column;gap:16px}.milestone{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:16px;opacity:.5;padding:16px;transition:all .3s}.milestone.completed{background:#e8f5e9;opacity:1}.milestone-icon{font-size:32px}.milestone-content h3{color:#2c3e50;font-size:16px;margin-bottom:4px}.milestone-content p{color:#7f8c8d;font-size:13px}@media (max-width:768px){.progress-container{padding:0}.level-header{flex-direction:column;padding:var(--spacing-md);text-align:center}.level-icon{font-size:48px}.level-header h1{font-size:22px}.progress-stats-grid{gap:var(--spacing-sm);grid-template-columns:repeat(2,1fr)}.progress-stats-grid .stat-card{padding:var(--spacing-md)}.eligibility-stats{flex-direction:column;gap:16px}.advancement-info,.advancement-not-ready,.advancement-ready{align-items:center;flex-direction:column;text-align:center}.advancement-card{padding:var(--spacing-md)}.milestone{padding:var(--spacing-sm)}}@media (max-width:480px){.level-header h1{font-size:20px}.progress-stats-grid{grid-template-columns:1fr}.info-icon,.ready-icon{font-size:36px}.milestone-icon{font-size:24px}}.settings-container{margin:0 auto;max-width:700px}.settings-header{align-items:center;display:flex;gap:16px;margin-bottom:24px}.settings-header h1{color:#2c3e50;font-size:28px}.settings-card{padding:32px}.tabs-navigation{border-bottom:2px solid #ecf0f1;display:flex;gap:8px;margin-bottom:32px}.tab-button{background:#0000;border:none;border-bottom:3px solid #0000;color:#7f8c8d;cursor:pointer;font-size:15px;font-weight:600;padding:12px 20px;transition:all .3s}.tab-button:hover{color:#2c3e50}.tab-button.active{border-bottom-color:#667eea;color:#667eea}.tabs-content{animation:fadeIn .2s ease-in}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.settings-section{border-bottom:2px solid #ecf0f1;margin-bottom:32px;padding-bottom:32px}.settings-section:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.settings-section h2{color:#2c3e50;font-size:20px;margin-bottom:8px}.section-description{color:#7f8c8d;font-size:14px;line-height:1.5;margin-bottom:20px}.form-group{margin-bottom:20px}.form-group label{color:#2c3e50;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-input,.form-select{border:2px solid #ecf0f1;border-radius:8px;font-family:inherit;font-size:15px;padding:12px;transition:border-color .3s;width:100%}.form-input:focus,.form-select:focus{border-color:#3498db;outline:none}.form-select{background-color:#fff;cursor:pointer}.form-hint{color:#7f8c8d;font-size:12px;font-style:italic;margin-top:6px}.warning-box{background:#fff3cd;border:2px solid #ffc107;border-radius:8px;color:#856404;font-size:14px;line-height:1.5;margin-top:12px;padding:12px 16px}.message{border-radius:8px;font-weight:500;margin-bottom:24px;padding:16px;text-align:center}.message.success{background:#d4edda;border:2px solid #c3e6cb;color:#155724}.message.error{background:#f8d7da;border:2px solid #f5c6cb;color:#721c24}.settings-actions{display:flex;gap:12px;margin-top:24px}.cancel-btn,.save-btn{border:none;border-radius:8px;cursor:pointer;flex:1 1;font-size:16px;font-weight:600;padding:14px 32px;transition:all .3s}.save-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.save-btn:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.save-btn:disabled{cursor:not-allowed;opacity:.6}.cancel-btn{background:#ecf0f1;color:#2c3e50}.cancel-btn:hover{background:#bdc3c7}.danger-zone{border-top:2px solid #e74c3c;margin-top:32px;padding-top:24px}.danger-zone h2{color:#e74c3c}.logout-btn{background:#e74c3c;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:all .3s}.logout-btn:hover{background:#c0392b;box-shadow:0 4px 12px #e74c3c66;transform:translateY(-2px)}.progress-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));margin-top:16px}.progress-card{background:#f8f9fa;border:2px solid #ecf0f1;border-radius:12px;padding:16px;transition:all .3s}.progress-card.active{background:linear-gradient(135deg,#667eea15,#764ba215);border-color:#667eea}.progress-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.progress-lang{color:#2c3e50;font-size:16px;font-weight:600}.current-badge{background:#667eea;border-radius:12px;color:#fff;font-size:11px;font-weight:600;padding:4px 8px}.progress-stats{display:flex;gap:12px}.stat{flex:1 1;text-align:center}.stat-label{color:#7f8c8d;display:block;font-size:11px;font-weight:600;margin-bottom:4px;text-transform:uppercase}.stat-value{color:#2c3e50;display:block;font-size:18px;font-weight:700}@media (max-width:768px){.settings-container{padding:0}.settings-card{padding:var(--spacing-md)}.settings-card h1{font-size:22px}.settings-card h2{font-size:18px}.tab-navigation{gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.tab-btn{font-size:13px;padding:10px 16px}.settings-actions{flex-direction:column;gap:var(--spacing-sm)}.settings-actions button{width:100%}.progress-grid{grid-template-columns:1fr}.form-group input,.form-group select{font-size:16px}}@media (max-width:480px){.settings-card{padding:var(--spacing-sm)}.settings-card h1{font-size:20px}.tab-navigation{flex-direction:column;width:100%}.tab-btn{padding:12px;width:100%}.language-grid{grid-template-columns:1fr}}.notification-status{background:var(--bg-secondary);border-radius:var(--border-radius-md);margin-bottom:24px;padding:20px}.status-indicator{align-items:center;display:flex;gap:12px}.status-dot{border-radius:50%;display:inline-block;height:12px;width:12px}.status-dot.enabled{animation:pulse 2s infinite;background:#10b981;box-shadow:0 0 10px #10b98180}.status-dot.disabled{background:#6b7280}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.status-text{color:var(--text-primary);font-size:16px;font-weight:600}.notification-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:32px}.enable-notification-btn,.test-notification-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:var(--border-radius-md);color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:all .3s}.enable-notification-btn:hover,.test-notification-btn:hover{box-shadow:0 8px 20px #667eea66;transform:translateY(-2px)}.enable-notification-btn:disabled,.test-notification-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.disable-notification-btn{background:#6b7280;border:none;border-radius:var(--border-radius-md);color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:all .3s}.disable-notification-btn:hover{background:#4b5563}.disable-notification-btn:disabled{cursor:not-allowed;opacity:.6}.notification-info{background:var(--bg-secondary);border-left:4px solid #667eea;border-radius:var(--border-radius-md);padding:24px}.notification-info h3{color:var(--text-primary);font-size:18px;margin-bottom:16px;margin-top:0}.notification-info ul{list-style:none;margin:0 0 20px;padding:0}.notification-info li{color:var(--text-secondary);font-size:15px;padding:8px 0}.info-note{background:#667eea1a;border-radius:var(--border-radius-sm);color:var(--text-secondary);font-size:14px;line-height:1.6;margin-top:16px;padding:12px}.info-note strong{color:var(--text-primary)}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.App{background:var(--bg-primary);min-height:100vh}.loading{align-items:center;color:#7f8c8d;display:flex;flex-direction:column;font-size:18px;justify-content:center;min-height:60vh}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;height:50px;margin-bottom:20px;width:50px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error{background-color:#e74c3c;border-radius:8px;color:#fff;margin:20px;padding:20px;text-align:center}.card{background:var(--bg-card);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg);padding:var(--spacing-lg)}.card h2{color:var(--text-primary);font-size:24px;margin-bottom:var(--spacing-md)}button{border:none;cursor:pointer;font-family:inherit;outline:none;transition:all .3s ease}button:disabled{cursor:not-allowed;opacity:.6}.back-btn{align-items:center;background:#0000;border-radius:6px;color:#3498db;display:flex;font-size:14px;gap:4px;padding:8px 16px}.back-btn:hover{background:#ecf0f1}
/*# sourceMappingURL=main.eb2e4917.css.map*/