@import "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap";.public-navbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:50;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 2rem;display:flex;position:sticky;top:0}.public-navbar-logo{flex-shrink:0;text-decoration:none}.public-navbar-actions{align-items:center;gap:.75rem;display:flex}.public-navbar-login{font-size:.875rem}@media (width<=480px){.public-navbar{padding:.75rem 1rem}.public-navbar-actions{gap:.4rem}.public-navbar-login{padding:.5rem}.public-navbar-register{padding:.55rem .85rem;font-size:.8rem}}.sidebar{width:var(--sidebar-width);background:var(--color-secondary);z-index:100;flex-direction:column;flex-shrink:0;height:100vh;min-height:100vh;transition:width .2s;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-header{border-bottom:1px solid #ffffff14;padding:1.25rem 1rem}.sidebar-nav{flex-direction:column;flex:1;gap:.25rem;padding:1rem .75rem;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:#ffffffa6;white-space:nowrap;align-items:center;gap:.75rem;padding:.65rem .75rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.sidebar-link:hover{color:#ffffffe6;background:#ffffff14}.sidebar-link.active{background:var(--color-primary);color:#fff}.sidebar-link-icon{flex-shrink:0;width:20px;height:20px}.sidebar-footer{border-top:1px solid #ffffff14;align-items:center;gap:.75rem;padding:1rem;display:flex}.sidebar-avatar{background:var(--color-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:.8rem;font-weight:700;display:flex}.sidebar-user-name{color:#ffffffd9;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600;overflow:hidden}.sidebar-user-sub{color:#fff6;font-size:.72rem}.sidebar-theme-btn{cursor:pointer;color:#ffffff80;background:0 0;border:1px solid #ffffff26;border-radius:6px;align-items:center;margin-left:auto;padding:.3rem;transition:color .15s,border-color .15s;display:flex}.sidebar-theme-btn:hover{color:#fff;border-color:#ffffff59}.sidebar-overlay{z-index:99;background:#00000080;display:none;position:fixed;inset:0}.sidebar-mobile-bar{background:var(--color-secondary);z-index:98;justify-content:space-between;align-items:center;width:100%;padding:.75rem 1rem;display:none;position:sticky;top:0}.sidebar-hamburger{color:#fff;cursor:pointer;background:0 0;border:none;align-items:center;padding:.25rem;display:flex}@media (width<=768px){.auth-shell{flex-direction:column}.sidebar{height:100vh;transition:left .25s;position:fixed;top:0;left:-100%}.sidebar.open{left:0}.sidebar-overlay{display:block}.sidebar-overlay.hidden{display:none}.sidebar-mobile-bar{flex-shrink:0;display:flex}.auth-shell-content{padding-top:0}}@media (width>=769px) and (width<=1024px){.sidebar{width:var(--sidebar-collapsed)}.sidebar-link span,.sidebar-user-name,.sidebar-user-sub{display:none}.sidebar-link{justify-content:center;padding:.65rem}.sidebar-footer{justify-content:center}.sidebar-theme-btn{margin-left:0}}.landing{max-width:1100px;margin:0 auto;padding:0 2rem 4rem}.landing-hero{grid-template-columns:1fr 1fr;align-items:center;gap:4rem;padding:5rem 0 4rem;display:grid}.landing-hero-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary);background:var(--color-success-bg);border-radius:var(--radius-pill);margin-bottom:1.25rem;padding:.25rem .75rem;font-size:.8rem;font-weight:700;display:inline-block}.landing-hero h1{color:var(--color-text);margin-bottom:1.25rem;font-size:3rem;font-weight:700;line-height:1.1}.landing-hero h1 em{color:var(--color-accent);font-style:normal}.landing-hero p{color:var(--color-text-muted);max-width:460px;margin-bottom:2rem;font-size:1.05rem;line-height:1.7}.landing-hero-actions{flex-wrap:wrap;gap:.75rem;display:flex}.landing-mock{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);overflow:hidden}.landing-mock-topbar{background:var(--color-secondary);align-items:center;gap:.4rem;padding:.6rem 1rem;display:flex}.landing-mock-dot{background:#ffffff40;border-radius:50%;width:9px;height:9px}.landing-mock-body{flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.landing-mock-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;font-weight:600}.landing-mock-question{color:var(--color-text);font-size:1rem;font-weight:600}.landing-mock-options{flex-direction:column;gap:.5rem;display:flex}.landing-mock-opt{border-radius:var(--radius-sm);border:1.5px solid var(--color-border);color:var(--color-text);cursor:default;padding:.6rem .9rem;font-size:.9rem}.landing-mock-opt-correct{border-color:var(--color-primary);background:var(--color-success-bg);color:var(--color-primary);font-weight:600}.landing-mock-progress{flex-direction:column;gap:.4rem;display:flex}.landing-mock-progress-label{color:var(--color-text-muted);justify-content:space-between;font-size:.78rem;display:flex}.landing-langs{text-align:center;padding:2.5rem 0}.landing-langs p{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:1.5rem;font-size:.85rem;font-weight:600}.landing-langs-row{flex-wrap:wrap;justify-content:center;gap:2rem;display:flex}.landing-lang-chip{color:var(--color-text);align-items:center;gap:.5rem;font-size:1rem;font-weight:600;display:flex}.landing-lang-flag{font-size:1.75rem;line-height:1}.landing-features{padding:4rem 0}.landing-features h2{text-align:center;margin-bottom:.75rem;font-size:2rem;font-weight:700}.landing-features-sub{text-align:center;color:var(--color-text-muted);margin-bottom:3rem;font-size:1rem}.landing-features-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem;display:grid}.landing-feature-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:1.5rem;display:flex}.landing-feature-icon{border-radius:var(--radius-sm);background:var(--color-success-bg);width:44px;height:44px;color:var(--color-primary);justify-content:center;align-items:center;display:flex}.landing-feature-card h3{color:var(--color-text);font-size:.95rem;font-weight:700}.landing-feature-card p{color:var(--color-text-muted);margin:0;font-size:.875rem;line-height:1.6}.landing-how{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);margin:2rem 0;padding:3rem}.landing-how h2{text-align:center;margin-bottom:2.5rem;font-size:2rem;font-weight:700}.landing-steps{grid-template-columns:repeat(3,1fr);gap:2rem;display:grid}.landing-step{text-align:center;flex-direction:column;align-items:center;gap:.75rem;display:flex}.landing-step-num{background:var(--color-secondary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.2rem;font-weight:700;display:flex}.landing-step h3{color:var(--color-text);font-size:.95rem;font-weight:700}.landing-step p{color:var(--color-text-muted);margin:0;font-size:.85rem;line-height:1.6}.landing-cta{background:var(--color-secondary);border-radius:var(--radius);text-align:center;margin:2rem 0;padding:3.5rem 2rem}.landing-cta h2{color:#fff;margin-bottom:.75rem;font-size:2rem;font-weight:700}.landing-cta p{color:#ffffffb3;margin-bottom:2rem;font-size:1rem}.landing-footer{border-top:1px solid var(--color-border);color:var(--color-text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:1.5rem 0;font-size:.85rem;display:flex}.landing-footer a{color:var(--color-text-muted);text-decoration:none}.landing-footer a:hover{color:var(--color-primary)}@media (width<=768px){.landing-hero{grid-template-columns:1fr;gap:2.5rem;padding:3rem 0 2rem}.landing-hero h1{font-size:2.2rem}.landing-steps{grid-template-columns:1fr}.landing-how{padding:2rem 1.5rem}}.auth-page{grid-template-columns:1fr 1fr;min-height:calc(100vh - 65px);display:grid}.auth-panel{background:var(--color-secondary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;padding:3rem 2.5rem;display:flex}.auth-panel-quote{color:#fff;max-width:320px;font-size:1.5rem;font-weight:700;line-height:1.3}.auth-panel-sub{color:#ffffff8c;font-size:.9rem}.auth-form-wrap{background:var(--color-bg);justify-content:center;align-items:center;padding:3rem 2rem;display:flex}.auth-form-box{flex-direction:column;gap:1.5rem;width:100%;max-width:400px;display:flex}.auth-form-box h1{color:var(--color-text);font-size:1.6rem;font-weight:700}.auth-form-box p{color:var(--color-text-muted);margin:.35rem 0 0;font-size:.9rem;line-height:1.55}.auth-field{flex-direction:column;gap:.4rem;display:flex}.auth-field label{color:var(--color-text);font-size:.85rem;font-weight:600}.auth-field input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);outline:none;padding:.65rem .9rem;font-size:.925rem;transition:border-color .15s}.auth-field input:focus{border-color:var(--color-primary)}.auth-error{background:var(--color-error-bg);color:var(--color-accent);border-radius:var(--radius-sm);padding:.65rem .9rem;font-size:.875rem}.auth-link{text-align:center;color:var(--color-text-muted);font-size:.875rem}.auth-link a{color:var(--color-primary);font-weight:600;text-decoration:none}.auth-link a:hover{text-decoration:underline}@media (width<=768px){.auth-page{grid-template-columns:1fr}.auth-panel{display:none}}.learn-page{flex-direction:column;gap:1.5rem;max-width:860px;display:flex}.lesson-list{flex-direction:column;gap:.75rem;display:flex}.lesson-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);align-items:center;gap:1rem;padding:1rem 1.25rem;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex}.lesson-item:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.lesson-item-num{background:var(--color-success-bg);width:36px;height:36px;color:var(--color-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.lesson-item-num.done{background:var(--color-primary);color:#fff}.lesson-item-title{font-size:.95rem;font-weight:600}.lesson-item-sub{color:var(--color-text-muted);margin-top:.15rem;font-size:.8rem}.study-page{flex-direction:column;gap:1.5rem;max-width:860px;display:flex}.page-header{flex-direction:column;gap:.35rem;display:flex}.page-header h1{font-size:1.5rem;font-weight:700}.page-header p{color:var(--color-text-muted);font-size:.9rem}.lang-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.lang-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);flex-direction:column;gap:.75rem;padding:1.5rem;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.lang-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.lang-card-flag{font-size:2.5rem;line-height:1}.lang-card-name{font-size:1.1rem;font-weight:700}.lang-card-sub{color:var(--color-text-muted);font-size:.82rem}.level-trail{flex-direction:column;gap:1rem;display:flex}.level-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.level-card-header{cursor:default;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.level-badge{background:var(--color-secondary);color:#fff;border-radius:var(--radius-pill);padding:.2rem .65rem;font-size:.78rem;font-weight:700}.level-card-title{flex:1;font-size:.95rem;font-weight:700}.level-card-pct{color:var(--color-primary);font-size:.82rem;font-weight:600}.level-card-body{border-top:1px solid var(--color-border);grid-template-columns:1fr 1fr;gap:.75rem;padding:1rem 1.25rem;display:grid}.skill-link{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);align-items:center;gap:.5rem;padding:.65rem .9rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.skill-link:hover{border-color:var(--color-primary);background:var(--color-success-bg);color:var(--color-primary)}@media (width<=480px){.level-card-body{grid-template-columns:1fr}}.lesson-page{flex-direction:column;gap:1.5rem;max-width:760px;margin:0 auto;padding:2rem 1.5rem 4rem;display:flex}.lesson-back{color:var(--color-text-muted);align-items:center;gap:.4rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.lesson-back:hover{color:var(--color-primary)}.lesson-title{color:var(--color-secondary);margin:0;font-size:1.6rem;font-weight:700}.lesson-exam-badge{background:var(--color-warm);color:var(--color-warning-text);border-radius:999px;align-items:center;gap:.35rem;width:fit-content;padding:.25rem .75rem;font-size:.78rem;font-weight:600;display:inline-flex}.lesson-study-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem}.lesson-study-card h3{color:var(--color-secondary);align-items:center;gap:.5rem;margin:0 0 .75rem;font-size:1rem;font-weight:600;display:flex}.lesson-study-card p{color:var(--color-text);margin:0;font-size:.95rem;line-height:1.65}.lesson-video-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem}.lesson-video-card h3{color:var(--color-secondary);align-items:center;gap:.5rem;margin:0 0 1rem;font-size:1rem;font-weight:600;display:flex}.lesson-video-embed{background:#000;border-radius:8px;height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.lesson-video-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.exercise-progress-bar{color:var(--color-text-muted);align-items:center;gap:1rem;font-size:.85rem;font-weight:500;display:flex}.exercise-progress-track{background:var(--color-border);border-radius:999px;flex:1;height:6px;overflow:hidden}.exercise-progress-fill{background:var(--color-primary);border-radius:999px;height:100%;transition:width .3s}.exercise{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.exercise-prompt{color:var(--color-text);margin:0;font-size:1.05rem;font-weight:600;line-height:1.5}.options-list{flex-direction:column;gap:.6rem;display:flex}.option{text-align:left;border:1.5px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);cursor:pointer;border-radius:8px;padding:.75rem 1rem;font-family:inherit;font-size:.95rem;transition:border-color .15s,background .15s}.option:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-selected-bg)}.option-selected{border-color:var(--color-primary);background:var(--color-selected-bg);font-weight:500}.option-correct{border-color:var(--color-success);background:var(--color-success-bg);color:var(--color-success);font-weight:600}.option-incorrect{border-color:var(--color-error);background:var(--color-error-bg);color:var(--color-error)}.exercise-feedback{border-radius:8px;padding:.875rem 1rem;font-size:.95rem;font-weight:600}.feedback-correct{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success)}.feedback-incorrect{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error)}.exercise-explanation{opacity:.9;margin:.5rem 0 0;font-size:.9rem;font-weight:400}.fill-blank-text{margin:0;font-size:1rem;line-height:2}.blank-input{border:1.5px solid var(--color-primary);background:var(--color-surface);width:120px;color:var(--color-text);text-align:center;border-radius:6px;margin:0 .25rem;padding:.2rem .5rem;font-family:inherit;font-size:.95rem;display:inline-block}.blank-correct{border-color:var(--color-success);background:var(--color-success-bg)}.blank-incorrect{border-color:var(--color-error);background:var(--color-error-bg)}.answer-key{opacity:.9;margin:.5rem 0 0;padding-left:1.2rem;font-size:.88rem;font-weight:400}.matching-list{flex-direction:column;gap:.5rem;display:flex}.matching-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;display:grid}.matching-left{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:.6rem .85rem;font-size:.9rem}.form-error{color:var(--color-error);margin:0;font-size:.85rem}.listening-question{color:var(--color-text-muted);margin:0;font-size:.95rem}.listening-controls{align-items:center;gap:.75rem;display:flex}.listening-transcript{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:.75rem;font-size:.9rem;font-style:italic}.speaking-task{color:var(--color-text-muted);margin:0;font-size:.95rem}.speaking-recorder{align-items:center;gap:.75rem;display:flex}.writing-task{color:var(--color-text);margin:0;font-size:.95rem;font-style:italic}.writing-hint{color:var(--color-text-muted);margin:0;font-size:.85rem}.writing-textarea{border:1.5px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);resize:vertical;box-sizing:border-box;border-radius:8px;padding:.875rem 1rem;font-family:inherit;font-size:.95rem;line-height:1.6;transition:border-color .15s}.writing-textarea:focus{border-color:var(--color-primary);outline:none}.word-count{color:var(--color-text-muted);text-align:right;margin:0;font-size:.82rem}.checklist{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:.875rem 1rem}.checklist h4{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .5rem;font-size:.88rem;font-weight:600}.checklist ul{flex-direction:column;gap:.3rem;margin:0;padding-left:1.2rem;font-size:.9rem;display:flex}.checklist-item{font-size:.9rem}.self-rating{color:var(--color-text-muted);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.star{cursor:pointer;color:var(--color-border);background:0 0;border:none;padding:0;font-size:1.4rem;line-height:1;transition:color .1s}.star:hover,.star-active{color:var(--color-warm)}.model-answer{flex-direction:column;gap:.5rem;font-size:.9rem;display:flex}.btn-link{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.88rem;font-weight:500;text-decoration:underline}.lesson-summary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow-md);padding:2rem 1.5rem}.lesson-summary h2{color:var(--color-secondary);margin:0 0 .5rem;font-size:1.5rem;font-weight:700}.lesson-summary p{color:var(--color-text-muted);margin:0 0 1.5rem}.lesson-summary-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.lesson-score{color:var(--color-primary);margin:.5rem 0 1rem;font-size:2.5rem;font-weight:700}.exercise-next-row{justify-content:flex-end;display:flex}@media (width<=600px){.lesson-page{padding:1rem 1rem 3rem}.lesson-title{font-size:1.3rem}.matching-row{grid-template-columns:1fr}}.dashboard{flex-direction:column;gap:2rem;max-width:960px;display:flex}.dashboard-greeting h1{color:var(--color-text);font-size:1.6rem;font-weight:700}.dashboard-greeting p{color:var(--color-text-muted);margin-top:.25rem;font-size:.9rem}.dashboard-stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.4rem;padding:1.25rem;display:flex}.stat-card-label{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);font-size:.78rem;font-weight:600}.stat-card-value{color:var(--color-text);font-size:2rem;font-weight:700;line-height:1}.stat-card-sub{color:var(--color-text-muted);font-size:.8rem}.stat-card-warm .stat-card-value{color:var(--color-warm)}.stat-card-teal .stat-card-value{color:var(--color-primary)}.dashboard-section-title{color:var(--color-text);margin-bottom:.75rem;font-size:1rem;font-weight:700}.dashboard-lesson-card{background:var(--color-secondary);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.5rem;display:flex}.dashboard-lesson-info{flex-direction:column;gap:.4rem;display:flex}.dashboard-lesson-label{text-transform:uppercase;letter-spacing:.07em;color:#ffffff80;font-size:.78rem;font-weight:600}.dashboard-lesson-title{color:#fff;font-size:1.15rem;font-weight:700}.dashboard-lesson-sub{color:#fff9;font-size:.85rem}.dashboard-progress-list{flex-direction:column;gap:1rem;display:flex}.dashboard-progress-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.6rem;padding:1.1rem 1.25rem;display:flex}.dashboard-progress-header{justify-content:space-between;align-items:center;display:flex}.dashboard-progress-lang{align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.dashboard-progress-pct{color:var(--color-primary);font-size:.8rem;font-weight:600}.dashboard-shortcuts{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem;display:grid}.dashboard-shortcut{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);text-align:center;flex-direction:column;align-items:center;gap:.6rem;padding:1.1rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex}.dashboard-shortcut:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);color:var(--color-primary)}.dashboard-shortcut-icon{border-radius:var(--radius-sm);background:var(--color-success-bg);width:40px;height:40px;color:var(--color-primary);justify-content:center;align-items:center;display:flex}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.chart-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem 1.25rem .75rem;overflow:hidden}.chart-card-animated{transition:box-shadow .2s}.chart-card-animated:hover{box-shadow:var(--shadow-md)}.chart-card-header{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.chart-card-icon{background:color-mix(in srgb, var(--icon-color,var(--color-primary)) 12%, transparent);width:36px;height:36px;color:var(--icon-color,var(--color-primary));border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chart-card-header h3{color:var(--color-text);margin:0;font-size:.9rem;font-weight:600;line-height:1.3}.chart-card-subtitle{color:var(--color-text-muted);font-size:.78rem}.chart-tooltip{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md);border-radius:8px;flex-direction:column;gap:.2rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.chart-tooltip strong{color:var(--color-text)}.chart-tooltip span{color:var(--color-text-muted)}.chart-empty{text-align:center;color:var(--color-text-muted);padding:2rem 0;font-size:.875rem}.overview-cards{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.overview-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow-sm);flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 1.25rem;display:flex}.overview-icon{color:var(--color-primary)}.icon-flame{color:var(--color-warm)!important}.overview-value{color:var(--color-text);font-size:2rem;font-weight:700;line-height:1}.overview-label{color:var(--color-text-muted);font-size:.8rem;font-weight:500}.overview-card-ring{position:relative}.progress-ring{justify-content:center;align-items:center;width:80px;height:80px;display:flex;position:relative}.progress-ring svg{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.progress-ring-bg{fill:none;stroke:var(--color-border);stroke-width:3px}.progress-ring-fill{fill:none;stroke:var(--color-primary);stroke-width:3px;stroke-linecap:round;stroke-dasharray:100 100;stroke-dashoffset:var(--ring-offset,0);transition:stroke-dashoffset .8s}.progress-ring-value{color:var(--color-primary);z-index:1;font-size:1rem;font-weight:700}.streak-grid{grid-template-columns:repeat(14,1fr);gap:3px;padding:.25rem 0 .5rem;display:grid}.streak-cell{aspect-ratio:1;background:var(--color-border);border-radius:2px;animation:.3s both fadeIn}.streak-active{background:var(--color-primary)}@keyframes fadeIn{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.chart-card-icon svg{width:16px;height:16px}.exams-page{flex-direction:column;gap:2rem;max-width:900px;display:flex}.exams-page h2{color:var(--color-secondary);margin:0 0 .75rem;font-size:1.1rem;font-weight:700}.exams-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.875rem;display:grid}.exam-card{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);flex-direction:column;gap:.6rem;padding:1.25rem 1.25rem 1rem;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;position:relative}a.exam-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.exam-card-top{justify-content:space-between;align-items:center;display:flex}.exam-card-flag{font-size:1.5rem;line-height:1}.exam-card-title{color:var(--color-text);font-size:.95rem;font-weight:700;line-height:1.3}.exam-card-meta{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.exam-card-score{margin-top:.25rem}.exam-card-score-label{color:var(--color-text-muted);justify-content:space-between;margin-bottom:.3rem;font-size:.75rem;font-weight:500;display:flex}.exam-card-score-label strong{color:var(--color-primary)}.exam-card-score-track{background:var(--color-border);border-radius:999px;height:5px;overflow:hidden}.exam-card-score-fill{background:var(--color-primary);border-radius:999px;height:100%}.exam-card-done-dot{background:var(--color-success);border-radius:50%;width:8px;height:8px;position:absolute;top:10px;right:10px}.exam-card-locked{opacity:.45;pointer-events:none}.exam-card-locked-label{color:var(--color-text-muted);font-size:.75rem;font-style:italic}.rooms-page{flex-direction:column;gap:1.5rem;max-width:860px;display:flex}.rooms-list{flex-direction:column;gap:.75rem;display:flex}.room-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.room-card-info{flex-direction:column;gap:.25rem;display:flex}.room-card-title{font-size:.95rem;font-weight:700}.room-card-meta{color:var(--color-text-muted);font-size:.8rem}.chat-page{flex-direction:column;max-width:760px;height:calc(100vh - 120px);display:flex}.chat-messages{flex-direction:column;flex:1;gap:.75rem;padding:1rem 0;display:flex;overflow-y:auto}.chat-bubble{border-radius:var(--radius);max-width:70%;padding:.65rem 1rem;font-size:.9rem;line-height:1.5}.chat-bubble-them{background:var(--color-surface);border:1px solid var(--color-border);align-self:flex-start}.chat-bubble-me{background:var(--color-primary);color:#fff;align-self:flex-end}.chat-input-bar{border-top:1px solid var(--color-border);gap:.75rem;padding:1rem 0 0;display:flex}.chat-input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);outline:none;flex:1;padding:.65rem .9rem;font-size:.9rem}.chat-input:focus{border-color:var(--color-primary)}.dora-panel{flex-direction:column;gap:1.25rem;max-width:720px;display:flex}.dora-panel-header{background:var(--color-secondary);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 1.5rem;display:flex}.dora-panel-identity{align-items:center;gap:.875rem;display:flex}.dora-panel-identity strong{color:#fff;font-size:1.05rem;font-weight:700;display:block}.dora-panel-identity p{color:#fff9;margin:0;font-size:.8rem}.dora-panel-filters{flex-wrap:wrap;gap:.75rem;display:flex}.dora-select{border:1.5px solid var(--color-border);background:var(--color-surface);min-width:120px;color:var(--color-text);cursor:pointer;border-radius:8px;flex:1;padding:.55rem .875rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:border-color .15s}.dora-select:focus{border-color:var(--color-primary);outline:none}.dora-panel-body{flex-direction:column;gap:1rem;display:flex}.dora-bubble{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);box-shadow:var(--shadow-sm);border-radius:12px 12px 12px 2px;margin:0;padding:.875rem 1.1rem;font-size:.95rem;line-height:1.6}.dora-skill-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.dora-skill-card{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);cursor:pointer;text-align:left;box-shadow:var(--shadow-sm);align-items:center;gap:.75rem;padding:1rem 1.1rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.dora-skill-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);color:var(--color-primary);transform:translateY(-1px)}.dora-back{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:.35rem;padding:0;font-family:inherit;font-size:.85rem;font-weight:500;transition:color .15s;display:inline-flex}.dora-back:hover{color:var(--color-primary)}.dora-mode{flex-direction:column;gap:1rem;display:flex}.dora-question{color:var(--color-text-muted);margin:0;font-size:.95rem}.dora-textarea{border:1.5px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);resize:vertical;box-sizing:border-box;border-radius:8px;padding:.875rem 1rem;font-family:inherit;font-size:.95rem;line-height:1.6;transition:border-color .15s}.dora-textarea:focus{border-color:var(--color-primary);outline:none}.dora-feedback{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:.75rem;padding:1rem 1.25rem;display:flex}.dora-score{color:var(--color-primary);font-size:1.25rem;font-weight:700}.dora-tip-list{color:var(--color-text);flex-direction:column;gap:.35rem;margin:0;padding-left:1.25rem;font-size:.9rem;display:flex}.dora-language-warning{color:var(--color-accent);margin:0;font-size:.88rem;font-style:italic}.dora-explanation{color:var(--color-text-muted);margin:0;font-size:.88rem}.dora-note{color:var(--color-text-muted);margin:0;font-size:.82rem;font-style:italic}.dora-bubble.dora-reading-text{font-size:.92rem;line-height:1.75}.dora-options{flex-direction:column;gap:.5rem;display:flex}.dora-controls{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.dora-transcript{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;margin:0;padding:.75rem 1rem;font-size:.88rem;font-style:italic}.dora-target-phrase{color:var(--color-secondary);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;margin:0;padding:.75rem 1rem;font-size:1rem;font-weight:600}.dora-btn{align-self:flex-start}@media (width<=600px){.dora-skill-grid{grid-template-columns:1fr}.dora-panel-header{flex-direction:column;align-items:flex-start}}.admin-page{flex-direction:column;gap:1.5rem;display:flex}.admin-table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.admin-table th{text-align:left;background:var(--color-bg);color:var(--color-text-muted);white-space:nowrap;padding:.75rem 1rem;font-size:.8rem;font-weight:600}.admin-table td{border-top:1px solid var(--color-border);vertical-align:middle;padding:.75rem 1rem}.admin-badge{border-radius:var(--radius-sm);background:var(--color-secondary);color:#fff;margin-right:.25rem;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.admin-badge-admin{background:var(--color-accent-yellow);color:var(--color-text)}.admin-delete-btn{background:var(--color-error-bg);color:var(--color-accent);border-radius:var(--radius-sm);cursor:pointer;border:none;align-items:center;gap:.3rem;padding:.4rem .7rem;font-size:.8rem;font-weight:600;display:inline-flex}.admin-delete-btn:hover{opacity:.85}.admin-delete-btn:disabled{opacity:.5;cursor:not-allowed}:root{--color-primary:#2a9d8f;--color-primary-dark:#1f7d72;--color-secondary:#264653;--color-secondary-dark:#1a3340;--color-accent:#e76f51;--color-accent-dark:#c85a3e;--color-warm:#e9c46a;--color-bg:#f4f9f9;--color-surface:#fff;--color-text:#1a2e35;--color-text-muted:#5f7a82;--color-border:#2646531a;--color-success:#2a9d8f;--color-error:#e76f51;--color-warning:#e9c46a;--color-warning-text:#a07800;--color-success-bg:#2a9d8f1a;--color-error-bg:#e76f511a;--color-warning-bg:#e9c46a26;--color-selected-bg:#2a9d8f1a;--color-muted-surface:#eef4f4;--color-star:#d0dede;--color-star-active:#e9c46a;--font-sans:"Outfit", system-ui, -apple-system, sans-serif;--font-display:"Outfit", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--radius:12px;--radius-sm:8px;--radius-pill:999px;--shadow-sm:0 1px 4px #26465314;--shadow-md:0 4px 16px #2646531a;--shadow-lg:0 12px 32px #26465324;--sidebar-width:240px;--sidebar-collapsed:64px;--gradient-brand:linear-gradient(135deg, #2a9d8f 0%, #264653 100%);--body-bg:#f4f9f9}[data-theme=dark]{--color-primary:#2ec4b3;--color-primary-dark:#2a9d8f;--color-secondary:#c8d8df;--color-accent:#f08060;--color-warm:#f0d080;--color-bg:#0f1e24;--color-surface:#182830;--color-text:#e8f2f5;--color-text-muted:#a8c4cc;--color-border:#ffffff14;--color-success:#2ec4b3;--color-error:#f08060;--color-warning-text:#d4a020;--color-success-bg:#2ec4b31f;--color-error-bg:#f080601f;--color-warning-bg:#f0d0801f;--color-selected-bg:#2ec4b31f;--color-muted-surface:#ffffff0a;--color-star:#ffffff26;--shadow-sm:0 1px 4px #0000004d;--shadow-md:0 4px 16px #00000059;--shadow-lg:0 12px 32px #00000073;--body-bg:#0f1e24}*{box-sizing:border-box}body{font-family:var(--font-sans);background:var(--body-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;transition:background .2s,color .2s}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0}.public-shell{flex-direction:column;min-height:100vh;display:flex}.public-shell-main{flex:1}.auth-shell{min-height:100vh;display:flex}.auth-shell-content{flex:1;min-width:0;padding:2rem 2.5rem;overflow-y:auto}@media (width<=768px){.auth-shell-content{padding:1.25rem 1rem}}.btn{border-radius:var(--radius-sm);font-family:var(--font-sans);cursor:pointer;white-space:nowrap;border:none;align-items:center;gap:.5rem;padding:.6rem 1.25rem;font-size:.9rem;font-weight:600;text-decoration:none;transition:background .15s,transform .1s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:var(--color-accent-dark)}.btn-secondary{color:var(--color-text);border:1.5px solid var(--color-border);background:0 0}.btn-secondary:hover{background:var(--color-muted-surface)}.btn-teal{background:var(--color-primary);color:#fff}.btn-teal:hover{background:var(--color-primary-dark)}.btn-ghost{color:var(--color-text-muted);background:0 0;border:none;padding:.5rem .75rem}.btn-ghost:hover{color:var(--color-text);background:var(--color-muted-surface)}.card{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.page-loading{min-height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:1rem;display:flex}.icon{flex-shrink:0}.theme-toggle{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted);background:0 0;justify-content:center;align-items:center;padding:.4rem;transition:color .15s,border-color .15s;display:flex}.theme-toggle:hover{color:var(--color-text);border-color:var(--color-primary)}.back-link,.back-link-button{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;font-family:inherit;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.back-link:hover,.back-link-button:hover{color:var(--color-primary)}.progress-bar{background:var(--color-border);border-radius:var(--radius-pill);height:8px;overflow:hidden}.progress-bar-fill{background:var(--color-primary);border-radius:var(--radius-pill);height:100%;transition:width .4s}.badge{border-radius:var(--radius-pill);align-items:center;gap:.25rem;padding:.2rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-teal{background:var(--color-success-bg);color:var(--color-primary)}.badge-warm{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-accent{background:var(--color-error-bg);color:var(--color-accent)}.chat-error{color:var(--color-error);margin:0 0 .5rem;font-size:.85rem}
