@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";:root{--primary-50: #F9EDE8;--primary-100: #F1D2C5;--primary-200: #E6AA91;--primary-300: #DA8561;--primary-400: #D6764E;--primary-500: #D2673C;--primary-600: #BD5D36;--primary-700: #9C4D2C;--primary-800: #7A3C23;--primary-900: #592C1A;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--success-500: #22c55e;--success-50: #f0fdf4;--success-200: #bbf7d0;--warning-500: #f59e0b;--warning-50: #fffbeb;--error-500: #ef4444;--error-50: #fef2f2;--info-500: #0ea5e9;--info-50: #f0f9ff;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background-color:var(--gray-50);color:var(--gray-800);line-height:1.6;min-height:100vh}#root{min-height:100vh}a{color:var(--primary-600);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-700)}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}img{max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.text-primary{color:var(--primary-600)}.text-muted{color:var(--gray-500)}.text-error{color:var(--error-500)}.text-success{color:var(--success-500)}.toast-container{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast{display:flex;align-items:center;gap:12px;padding:14px 20px;border-radius:12px;background:#fff;box-shadow:0 8px 30px #0000001f;min-width:300px;max-width:450px;animation:slideIn .3s ease-out;pointer-events:auto}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:14px;font-weight:700;flex-shrink:0}.toast-message{flex:1;font-size:.9rem;font-weight:500;color:#1e293b}.toast-close{background:none;border:none;font-size:20px;color:#94a3b8;cursor:pointer;padding:0;line-height:1;transition:color .2s}.toast-close:hover{color:#475569}.toast-success{border-left:4px solid #10b981}.toast-success .toast-icon{background:#d1fae5;color:#059669}.toast-error{border-left:4px solid #ef4444}.toast-error .toast-icon{background:#fee2e2;color:#dc2626}.toast-warning{border-left:4px solid #f59e0b}.toast-warning .toast-icon{background:#fef3c7;color:#d97706}.toast-info{border-left:4px solid #3b82f6}.toast-info .toast-icon{background:#dbeafe;color:#2563eb}.dialog-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10001;animation:fadeIn .2s ease-out}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.dialog-container{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;min-width:360px;max-width:480px;overflow:hidden;animation:scaleIn .2s ease-out}.dialog-header{display:flex;align-items:center;gap:12px;padding:20px 24px;border-bottom:1px solid #e5e7eb}.dialog-header h3{margin:0;font-size:1.1rem;font-weight:600;color:#1e293b}.dialog-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:16px;font-weight:700;flex-shrink:0}.dialog-header-info .dialog-icon{background:#dbeafe;color:#2563eb}.dialog-header-success .dialog-icon{background:#d1fae5;color:#059669}.dialog-header-warning .dialog-icon{background:#fef3c7;color:#d97706}.dialog-header-danger .dialog-icon,.dialog-header-error .dialog-icon{background:#fee2e2;color:#dc2626}.dialog-body{padding:24px}.dialog-body p{margin:0;font-size:.95rem;color:#475569;line-height:1.6}.dialog-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;background:#f8fafc;border-top:1px solid #e5e7eb}.dialog-btn{padding:10px 20px;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;border:none}.dialog-btn-cancel{background:#e5e7eb;color:#475569}.dialog-btn-cancel:hover{background:#d1d5db}.dialog-btn-confirm{color:#fff}.dialog-btn-info{background:linear-gradient(135deg,#3b82f6,#2563eb)}.dialog-btn-info:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.dialog-btn-success{background:linear-gradient(135deg,#10b981,#059669)}.dialog-btn-success:hover{background:linear-gradient(135deg,#059669,#047857)}.dialog-btn-warning{background:linear-gradient(135deg,#f59e0b,#d97706)}.dialog-btn-warning:hover{background:linear-gradient(135deg,#d97706,#b45309)}.dialog-btn-danger,.dialog-btn-error{background:linear-gradient(135deg,#ef4444,#dc2626)}.dialog-btn-danger:hover,.dialog-btn-error:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)}@media(max-width:480px){.toast-container{inset:auto 20px 20px}.toast{min-width:auto;max-width:100%}.dialog-container{min-width:auto;max-width:calc(100% - 40px);margin:0 20px}}.auth-layout{display:flex;min-height:100vh}.auth-hero{flex:0 0 45%;max-width:500px;background:url(/banner.webp) center/cover no-repeat;color:#fff;padding:var(--space-8);display:flex;flex-direction:column;position:relative;overflow:hidden}.auth-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,rgba(37,99,235,.3) 50%,rgba(30,58,138,.5) 100%);pointer-events:none}.auth-hero-logo{display:flex;align-items:center;gap:var(--space-3);position:relative;z-index:1}.auth-hero-logo-icon{width:40px;height:40px;background:#fff;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1.25rem}.auth-hero-logo-text{font-size:1.125rem;font-weight:600}.auth-hero-content{margin-top:auto;position:relative;z-index:1}.auth-hero-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:var(--space-4)}.auth-hero-description{font-size:1rem;opacity:.9;line-height:1.6;margin-bottom:var(--space-6)}.auth-hero-stats{display:flex;align-items:center;gap:var(--space-3)}.auth-hero-avatars{display:flex}.auth-hero-avatar{width:36px;height:36px;border-radius:50%;border:2px solid white;background:var(--primary-400);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;margin-left:-8px}.auth-hero-avatar:first-child{margin-left:0}.auth-hero-avatar-count{background:var(--primary-800);font-size:.7rem}.auth-hero-stats-text{font-size:.875rem;opacity:.9}.auth-form-panel{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-8);background:#fff}.auth-form-container{width:100%;max-width:420px}.auth-form-header{margin-bottom:var(--space-8)}.auth-form-title{font-size:1.75rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.auth-form-subtitle{color:var(--gray-500);font-size:.95rem}.auth-tabs{display:flex;background:var(--gray-100);border-radius:var(--radius-lg);padding:4px;margin-bottom:var(--space-6)}.auth-tab{flex:1;padding:var(--space-3) var(--space-4);border:none;background:transparent;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;color:var(--gray-500);transition:all var(--transition-fast)}.auth-tab:hover{color:var(--gray-700)}.auth-tab.active{background:#fff;color:var(--gray-900);box-shadow:var(--shadow-sm)}.auth-form{display:flex;flex-direction:column;gap:var(--space-5)}.form-label{font-size:.875rem;font-weight:500;color:var(--gray-700)}.form-input-wrapper{position:relative;display:flex;align-items:center}.form-input-icon{position:absolute;left:var(--space-4);color:var(--gray-400);pointer-events:none;display:flex;align-items:center;justify-content:center}.form-input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--gray-200);border-radius:var(--radius-lg);font-size:.95rem;transition:all var(--transition-fast);background:#fff}.form-input:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px #3b82f61a}.form-input::placeholder{color:var(--gray-400)}.form-input.error{border-color:var(--error-500)}.form-input-toggle{position:absolute;right:var(--space-4);background:none;border:none;color:var(--gray-400);padding:0;cursor:pointer;display:flex;align-items:center}.form-input-toggle:hover{color:var(--gray-600)}.form-row{display:flex;justify-content:space-between;align-items:center}.form-checkbox-label{display:flex;align-items:center;gap:var(--space-2);font-size:.875rem;color:var(--gray-600);cursor:pointer}.form-checkbox{width:16px;height:16px;border-radius:var(--radius-sm);border:1px solid var(--gray-300);accent-color:var(--primary-600)}.form-link{font-size:.875rem;color:var(--primary-600);font-weight:500}.form-link:hover{color:var(--primary-700);text-decoration:underline}.btn-submit{width:100%;padding:var(--space-4);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.btn-submit:hover{background:var(--primary-700);transform:translateY(-1px)}.btn-submit:active{transform:translateY(0)}.btn-submit:disabled{background:var(--gray-300);cursor:not-allowed;transform:none}.auth-divider{display:flex;align-items:center;gap:var(--space-4);color:var(--gray-400);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--gray-200)}.btn-social{flex:1;padding:var(--space-3) var(--space-4);border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff;font-size:.9rem;font-weight:500;color:var(--gray-700);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.btn-social:hover{background:var(--gray-50);border-color:var(--gray-300)}.btn-social-icon{width:20px;height:20px}.auth-footer{margin-top:var(--space-6);text-align:center;font-size:.875rem;color:var(--gray-500)}.auth-footer a{color:var(--primary-600);font-weight:500}.auth-footer-links{margin-top:var(--space-4);display:flex;justify-content:center;gap:var(--space-4);font-size:.8rem;color:var(--gray-400)}.auth-footer-links a{color:var(--gray-400)}.auth-footer-links a:hover{color:var(--gray-600)}.form-error{background:var(--error-50);color:var(--error-500);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:.875rem;display:flex;align-items:center;gap:var(--space-2)}.form-success{background:var(--success-50);color:var(--success-500);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:.875rem;display:flex;align-items:center;gap:var(--space-2)}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@media(max-width:900px){.auth-hero{display:none}.auth-form-panel{padding:var(--space-6)}}@media(max-width:480px){.auth-form-panel{padding:var(--space-4)}.auth-form-title{font-size:1.5rem}}.dashboard-layout{display:flex;min-height:100vh;background:var(--gray-100)}@media(max-width:768px){.dashboard-layout{flex-direction:column}}.sidebar{width:240px;background:#fff;border-right:1px solid var(--gray-200);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}@media(max-width:768px){.mobile-nav-overlay{position:fixed;inset:0;background:#00000080;z-index:250;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sidebar{position:fixed;top:60px;left:-100%;width:280px;height:calc(100vh - 60px);flex-direction:column;background:#fff;border-right:1px solid var(--gray-200);z-index:260;transition:left .3s ease-in-out;overflow-y:auto;padding:0}.sidebar.open{left:0}.sidebar-header{padding:var(--space-4);border-bottom:1px solid var(--gray-100);flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;padding:var(--space-3);flex:1}.sidebar-footer{display:block;padding:var(--space-3);border-top:1px solid var(--gray-100)}.mobile-menu-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:var(--gray-100);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast)}.mobile-menu-btn:hover{background:var(--gray-200)}.mobile-menu-btn svg{width:20px;height:20px;color:var(--gray-600)}.mobile-nav-footer{display:block;border-top:1px solid var(--gray-100);padding-top:var(--space-3);margin-top:var(--space-3)}}@media(min-width:769px){.mobile-menu-btn,.mobile-nav-footer{display:none}}.sidebar-header{padding:var(--space-5);border-bottom:1px solid var(--gray-100);display:flex;align-items:center;gap:var(--space-3)}.sidebar-logo{min-width:60px;max-width:60px;display:flex;align-items:center;justify-content:center;font-size:1.25rem}.sidebar-brand{display:flex;flex-direction:column}.sidebar-brand-name{font-weight:600;color:var(--gray-900);font-size:.95rem}.sidebar-brand-tagline{font-size:.75rem;color:var(--gray-400)}.sidebar-nav{flex:1;padding:var(--space-4);overflow-y:auto}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);color:var(--gray-600);font-size:.9rem;font-weight:500;text-decoration:none;margin-bottom:var(--space-1);transition:all var(--transition-fast);border:none;background:none;width:100%;cursor:pointer;text-align:left}.nav-item:hover{background:var(--gray-50);color:var(--gray-900)}.nav-item.active{background:var(--primary-50);color:var(--primary-600)}.nav-item-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.sidebar-footer{padding:var(--space-4);border-top:1px solid var(--gray-100)}.nav-item.logout{color:var(--error-500)}.nav-item.logout:hover{background:var(--error-50);color:var(--error-500)}.main-content{flex:1;margin-left:240px;display:flex;flex-direction:column}@media(max-width:768px){.main-content{margin-left:0;margin-top:60px}}.top-bar{background:#fff;border-bottom:1px solid var(--gray-200);padding:var(--space-4) var(--space-6);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50}.top-bar-left{display:flex;align-items:center;gap:var(--space-3)}.top-bar-left .mobile-menu-btn{display:none}@media(max-width:768px){.top-bar{padding:var(--space-3) var(--space-4);position:fixed;top:0;left:0;right:0;z-index:300}.top-bar-left .mobile-menu-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:var(--gray-100);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast)}.top-bar-left .mobile-menu-btn:hover{background:var(--gray-200)}.top-bar-left .mobile-menu-btn svg{width:20px;height:20px;color:var(--gray-600)}.top-bar-title{white-space:nowrap;flex:1;min-width:0}.top-bar-left{flex:1;min-width:0;gap:var(--space-2)}}@media(max-width:480px){.top-bar-title{font-size:1rem;font-weight:600;color:var(--gray-900)}}.top-bar-title{font-size:1.25rem;font-weight:600;color:var(--gray-900)}.top-bar-actions{display:flex;align-items:center;gap:var(--space-4)}.search-box{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);min-width:240px}@media(max-width:768px){.search-box{min-width:200px;flex:1}}.search-box-icon{color:var(--gray-400)}.search-box-input{border:none;background:none;outline:none;flex:1;font-size:.875rem;color:var(--gray-700)}.search-box-input::placeholder{color:var(--gray-400)}.notification-btn{width:40px;height:40px;border-radius:var(--radius-lg);border:1px solid var(--gray-200);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;color:var(--gray-600);transition:all var(--transition-fast)}.notification-btn:hover{background:var(--gray-50);border-color:var(--gray-300)}.notification-badge{position:absolute;top:-4px;right:-4px;width:18px;height:18px;background:var(--error-500);color:#fff;font-size:.65rem;font-weight:600;border-radius:50%;display:flex;align-items:center;justify-content:center}.user-avatar{width:40px;height:40px;border-radius:50%;background:var(--primary-100);color:var(--primary-600);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem;cursor:pointer;border:2px solid white;box-shadow:var(--shadow-sm);overflow:hidden}.user-avatar img{width:100%;height:100%;object-fit:cover}.page-content{flex:1;padding:var(--space-6)}.page-header{margin-bottom:var(--space-6)}@media(max-width:768px){.page-header{margin-bottom:var(--space-4)}}@media(max-width:480px){.page-header{margin-bottom:var(--space-3)}}.page-header h1{font-size:1.75rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}@media(max-width:768px){.page-header h1{font-size:1.5rem}}@media(max-width:480px){.page-header h1{font-size:1.25rem}}.page-header p{color:var(--gray-500);font-size:.95rem}.card{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);padding:var(--space-6)}@media(max-width:768px){.card{padding:var(--space-5);border-radius:var(--radius-lg)}}@media(max-width:480px){.card{padding:var(--space-4);border-radius:var(--radius-md)}}.card-header{padding:var(--space-5);border-bottom:1px solid var(--gray-100);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:1rem;font-weight:600;color:var(--gray-900);display:flex;align-items:center;gap:var(--space-2)}.card-body{padding:var(--space-5)}.dashboard-grid{display:grid;grid-template-columns:1fr 320px;gap:var(--space-6)}.dashboard-main,.dashboard-sidebar{display:flex;flex-direction:column;gap:var(--space-6)}.course-card{display:flex;gap:var(--space-5);padding:var(--space-5)}.course-image{width:160px;height:120px;border-radius:var(--radius-lg);background:var(--primary-100);overflow:hidden;flex-shrink:0}.course-image img{width:100%;height:100%;object-fit:cover}.course-content{flex:1;display:flex;flex-direction:column}.course-label{font-size:.7rem;font-weight:600;color:var(--primary-600);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1)}.course-title{font-size:1.125rem;font-weight:600;color:var(--gray-900);margin-bottom:var(--space-1)}.course-module{font-size:.85rem;color:var(--gray-500);margin-bottom:var(--space-3)}.course-progress{margin-top:auto}.progress-header{display:flex;justify-content:space-between;font-size:.8rem;color:var(--gray-500);margin-bottom:var(--space-2)}.progress-percentage{color:var(--primary-600);font-weight:600}.progress-bar{height:8px;background:var(--gray-100);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary-500),var(--primary-600));border-radius:var(--radius-full);transition:width var(--transition-slow)}.btn-resume{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);margin-top:var(--space-4)}.btn-resume:hover{background:var(--primary-700)}.quick-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);padding:var(--space-5)}.quick-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--gray-200);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);background:#fff;text-decoration:none}.quick-action:hover{border-color:var(--primary-300);background:var(--primary-50)}.quick-action-icon{width:40px;height:40px;border-radius:var(--radius-lg);background:var(--gray-50);display:flex;align-items:center;justify-content:center;color:var(--primary-600)}.quick-action-label{font-size:.8rem;font-weight:500;color:var(--gray-700)}.grade-list{display:flex;flex-direction:column}.grade-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--gray-100)}.grade-item:last-child{border-bottom:none}.grade-icon{width:40px;height:40px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1rem}.grade-icon.quiz{background:var(--primary-50);color:var(--primary-600)}.grade-icon.essay{background:var(--warning-50);color:var(--warning-500)}.grade-icon.lab{background:var(--success-50);color:var(--success-500)}.grade-info{flex:1}.grade-title{font-size:.9rem;font-weight:500;color:var(--gray-900);margin-bottom:2px}.grade-date{font-size:.75rem;color:var(--gray-400)}.grade-score{text-align:right}.grade-value{font-size:1rem;font-weight:700}.grade-value.excellent{color:var(--success-500)}.grade-value.good{color:var(--primary-600)}.grade-value.solid{color:var(--warning-500)}.grade-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.3px;color:var(--gray-400)}.class-list{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5)}.class-item{padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);border-left:3px solid var(--primary-500)}.class-item.today{background:var(--primary-50);border-left-color:var(--primary-600)}.class-time{font-size:.7rem;font-weight:600;color:var(--primary-600);margin-bottom:var(--space-1)}.class-title{font-size:.9rem;font-weight:600;color:var(--gray-900);margin-bottom:2px}.class-teacher{font-size:.75rem;color:var(--gray-500)}.btn-join{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:500;cursor:pointer;margin-top:var(--space-3);transition:all var(--transition-fast)}.btn-join:hover{background:var(--primary-700)}.feature-alert{background:linear-gradient(135deg,var(--warning-500),#f97316);color:#fff;padding:var(--space-4);border-radius:var(--radius-xl);display:flex;gap:var(--space-3)}.feature-alert-icon{width:40px;height:40px;background:#fff3;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.feature-alert-content h4{font-size:.9rem;font-weight:600;margin-bottom:4px}.feature-alert-content p{font-size:.8rem;opacity:.9;line-height:1.4}@media(max-width:1200px){.dashboard-grid{grid-template-columns:1fr}.dashboard-sidebar{flex-direction:row;flex-wrap:wrap}.dashboard-sidebar>*{flex:1;min-width:280px}}@media(max-width:768px){.sidebar{transform:translate(-100%);transition:transform var(--transition-normal)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.top-bar{padding:var(--space-4)}.search-box{display:none}.page-content{padding:var(--space-4)}.course-card{flex-direction:column}.course-image{width:100%;height:160px}.quick-actions{grid-template-columns:repeat(4,1fr)}}@media(max-width:480px){.quick-actions{grid-template-columns:repeat(2,1fr)}}.test-history-list{display:flex;flex-direction:column}.test-history-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);border-bottom:1px solid var(--gray-100);transition:background var(--transition-fast)}.test-history-item:last-child{border-bottom:none}.test-history-item:hover{background:var(--gray-50)}.test-history-info{display:flex;flex-direction:column;gap:var(--space-1)}.test-history-date{font-weight:600;color:var(--gray-900);font-size:.95rem}.test-history-meta{display:flex;gap:var(--space-3);color:var(--gray-500);font-size:.8rem}.test-history-result{display:flex;align-items:center;gap:var(--space-3)}.test-history-score{font-size:1.1rem;font-weight:700}.test-history-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.test-history-badge.pending{background:var(--warning-50);color:var(--warning-700)}.test-history-badge.level{background:var(--primary-50);color:var(--primary-700)}.settings-page{max-width:800px;padding:var(--space-4)}@media(max-width:768px){.settings-page{padding:var(--space-3)}}@media(max-width:480px){.settings-page{padding:var(--space-2)}}.settings-tabs{display:flex;gap:var(--space-1);background:var(--gray-100);padding:4px;border-radius:var(--radius-lg);margin-bottom:var(--space-6);width:fit-content}@media(max-width:480px){.settings-tabs{width:100%;justify-content:center;flex-wrap:wrap}.settings-tab{flex:1;text-align:center;min-width:0}}.settings-tab{padding:var(--space-2) var(--space-4);border:none;background:transparent;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--gray-500);cursor:pointer;transition:all var(--transition-fast)}.settings-tab:hover{color:var(--gray-700)}.settings-tab.active{background:#fff;color:var(--gray-900);box-shadow:var(--shadow-sm)}.settings-section{margin-bottom:var(--space-6)}.settings-section-title{font-size:1rem;font-weight:600;color:var(--gray-900);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--gray-100)}.profile-header{display:flex;align-items:center;gap:var(--space-6);margin-bottom:var(--space-6)}@media(max-width:768px){.profile-header{flex-direction:column;text-align:center;gap:var(--space-4)}}.profile-avatar-container{position:relative}.profile-avatar{width:100px;height:100px;border-radius:50%;background:var(--primary-100);color:var(--primary-600);display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:600;overflow:hidden}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-avatar-upload{position:absolute;bottom:0;right:0;width:32px;height:32px;border-radius:50%;background:var(--primary-600);color:#fff;border:3px solid white;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.profile-avatar-upload:hover{background:var(--primary-700)}.profile-avatar-upload input{display:none}.profile-info h2{font-size:1.5rem;font-weight:600;color:var(--gray-900);margin-bottom:var(--space-1)}.profile-info p{color:var(--gray-500);font-size:.9rem}.profile-badges{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.badge{padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:.7rem;font-weight:500;text-transform:uppercase}.badge-primary{background:var(--primary-50);color:var(--primary-600)}.badge-success{background:var(--success-50);color:var(--success-500)}.badge-warning{background:var(--warning-50);color:var(--warning-500)}.settings-form{display:flex;flex-direction:column;gap:var(--space-5)}.settings-form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.settings-form-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--gray-100)}.btn-secondary{padding:var(--space-3) var(--space-6);background:#fff;color:var(--gray-700);border:1px solid var(--gray-200);border-radius:var(--radius-lg);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-secondary:hover{background:var(--gray-50);border-color:var(--gray-300)}.btn-primary{padding:var(--space-3) var(--space-6);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-primary:hover{background:var(--primary-700)}.btn-primary:disabled{background:var(--gray-300);cursor:not-allowed}.btn-danger{background:var(--error-500)}.btn-danger:hover{background:#dc2626}.info-box{background:var(--info-50);border:1px solid var(--primary-200);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4)}.info-box-icon{color:var(--primary-600);flex-shrink:0}.info-box-content h4{font-size:.9rem;font-weight:600;color:var(--gray-900);margin-bottom:4px}.info-box-content p{font-size:.85rem;color:var(--gray-600);line-height:1.4}.danger-zone{margin-top:var(--space-8);padding:var(--space-5);background:var(--error-50);border:1px solid #fecaca;border-radius:var(--radius-xl)}.danger-zone h3{font-size:1rem;font-weight:600;color:var(--error-500);margin-bottom:var(--space-3)}.danger-zone p{font-size:.875rem;color:var(--gray-600);margin-bottom:var(--space-4)}.sessions-list{display:flex;flex-direction:column;gap:var(--space-3)}.session-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg)}.session-info{display:flex;align-items:center;gap:var(--space-3)}.session-icon{width:40px;height:40px;border-radius:var(--radius-lg);background:#fff;display:flex;align-items:center;justify-content:center;color:var(--gray-500)}.session-details h4{font-size:.9rem;font-weight:500;color:var(--gray-900);margin-bottom:2px}.session-details p{font-size:.75rem;color:var(--gray-500)}.session-current{font-size:.7rem;padding:var(--space-1) var(--space-2);background:var(--success-50);color:var(--success-500);border-radius:var(--radius-full);font-weight:500}.btn-revoke{padding:var(--space-2) var(--space-3);background:#fff;color:var(--error-500);border:1px solid var(--error-200);border-radius:var(--radius-md);font-size:.8rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-revoke:hover{background:var(--error-50)}.btn-sm{padding:var(--space-2) var(--space-3);font-size:.8rem}@media(max-width:600px){.settings-form-row{grid-template-columns:1fr}.profile-header{flex-direction:column;text-align:center}.settings-tabs{width:100%;overflow-x:auto}}.training-page{max-width:1200px;padding:var(--space-4)}@media(max-width:768px){.training-page{padding:var(--space-3)}}@media(max-width:480px){.training-page{padding:var(--space-2)}}.training-section{margin-bottom:var(--space-8)}.training-section-title{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2)}.training-section-desc{font-size:.95rem;color:var(--gray-500);margin-bottom:var(--space-6)}.in-progress-cards{display:flex;flex-direction:column;gap:var(--space-3)}.in-progress-card{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#f59e0b,#f97316);border-radius:var(--radius-xl);padding:var(--space-5);color:#fff}@media(max-width:768px){.in-progress-card{flex-direction:column;text-align:center;gap:var(--space-3);padding:var(--space-4)}}.in-progress-info h3{font-size:1.1rem;font-weight:600;margin-bottom:var(--space-1)}.in-progress-info p{font-size:.85rem;opacity:.9}.btn-resume-test{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:#fff;color:#f59e0b;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;text-decoration:none;transition:all var(--transition-fast)}.btn-resume-test:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.tests-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-6)}@media(max-width:768px){.tests-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}}@media(max-width:480px){.tests-grid{grid-template-columns:1fr;gap:var(--space-3)}}.test-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);border:1px solid var(--gray-100);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:all var(--transition-fast)}.test-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--gray-200)}.test-card-header{margin-bottom:var(--space-3)}.test-type-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.test-type-badge.academic{background:#dbeafe;color:#1d4ed8}.test-type-badge.general_training{background:#d1fae5;color:#059669}.test-type-badge.general{background:linear-gradient(135deg,#ef4444,#f97316);color:#fff}.general-test-card{border:2px solid #f97316;background:linear-gradient(135deg,#fff7ed,#fff)}.general-test-card:hover{border-color:#ea580c;box-shadow:0 8px 24px #f9731633}.test-card-title{font-size:1.125rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.test-card-description{font-size:.875rem;color:var(--gray-500);line-height:1.5;margin-bottom:var(--space-4);flex:1}.test-card-info{display:flex;align-items:center;gap:var(--space-4);font-size:.8rem;color:var(--gray-500);margin-bottom:var(--space-3)}.test-card-info span{display:flex;align-items:center;gap:var(--space-1)}.test-card-sections{font-size:.8rem;color:var(--gray-400);margin-bottom:var(--space-5)}.btn-start-test{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-4);background:var(--gray-900);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;text-decoration:none;transition:all var(--transition-fast)}.btn-start-test:hover{background:var(--gray-800);transform:translateY(-2px)}.test-card-desc{font-size:.875rem;color:var(--gray-500);line-height:1.5;margin-bottom:var(--space-4);flex:1}.test-card-meta{display:flex;align-items:center;gap:var(--space-4);font-size:.8rem;color:var(--gray-400);margin-bottom:var(--space-4)}.test-card-meta span{display:flex;align-items:center;gap:var(--space-1)}.test-card-sections{display:flex;gap:var(--space-3);margin-bottom:var(--space-5)}.section-badge{width:36px;height:36px;border-radius:var(--radius-md);background:var(--gray-50);display:flex;align-items:center;justify-content:center}.section-badge svg{width:18px;height:18px}.test-card-btn{width:100%;padding:var(--space-3) var(--space-4);background:var(--gray-900);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.test-card-btn:hover:not(:disabled){background:var(--gray-800)}.test-card-btn:disabled{opacity:.7;cursor:not-allowed}.results-table-wrapper{overflow-x:auto}.results-table{width:100%;border-collapse:collapse}.results-table th,.results-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--gray-100)}.results-table th{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;background:var(--gray-50)}.results-table td{font-size:.875rem;color:var(--gray-700)}.results-table tbody tr:hover{background:var(--gray-50)}.test-name-cell{font-weight:500;color:var(--gray-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-cell{font-weight:500;text-align:center!important}.overall-cell{font-weight:700;color:var(--primary-600);text-align:center!important}.status-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600}.status-badge.graded{background:var(--success-50);color:var(--success-600)}.status-badge.submitted{background:var(--warning-50);color:var(--warning-600)}.status-badge.in_progress{background:var(--primary-50);color:var(--primary-600)}.view-results-btn{padding:var(--space-1) var(--space-3);background:var(--primary-50);color:var(--primary-600);border:none;border-radius:var(--radius-md);font-size:.8rem;font-weight:500;text-decoration:none;transition:all var(--transition-fast)}.view-results-btn:hover{background:var(--primary-100)}.training-tips{padding:var(--space-6)}.training-tips .card-title{margin-bottom:var(--space-5)}.tips-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-4)}.tips-list li{display:flex;align-items:flex-start;gap:var(--space-3);font-size:.9rem;color:var(--gray-600);line-height:1.6}.tips-list li svg{color:var(--success-500);flex-shrink:0;margin-top:2px}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}.modal-content{background:#fff;border-radius:var(--radius-xl);padding:var(--space-8);max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow-xl);animation:modalSlideIn .2s ease-out}@media(max-width:768px){.modal-content{padding:var(--space-6);border-radius:var(--radius-lg);margin:var(--space-4)}}@media(max-width:480px){.modal-content{padding:var(--space-4);margin:var(--space-2);max-width:100%}.modal-icon{width:56px;height:56px;font-size:1.5rem}}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-icon{width:72px;height:72px;border-radius:var(--radius-xl);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-5);font-size:2rem}.modal-content h2{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.modal-content>p{font-size:.9rem;color:var(--gray-500);margin-bottom:var(--space-4)}.modal-test-info{background:var(--gray-50);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4)}.modal-test-info .info-row{display:flex;justify-content:space-between;padding:var(--space-2) 0;font-size:.875rem;border-bottom:1px solid var(--gray-100)}.modal-test-info .info-row:last-child{border-bottom:none}.modal-test-info .info-row span:first-child{color:var(--gray-600)}.modal-test-info .info-row span:last-child{font-weight:600;color:var(--gray-900)}.modal-warning{font-size:.8rem;color:var(--warning-600);background:var(--warning-50);padding:var(--space-3);border-radius:var(--radius-md);margin-bottom:var(--space-6)}.modal-actions{display:flex;gap:var(--space-3)}@media(max-width:480px){.modal-actions{flex-direction:column;gap:var(--space-2)}}.modal-actions .btn-secondary{flex:1;padding:var(--space-3) var(--space-4);background:var(--gray-100);color:var(--gray-700);border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.modal-actions .btn-secondary:hover{background:var(--gray-200)}.modal-actions .btn-primary{flex:1;padding:var(--space-3) var(--space-4);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-2);transition:all var(--transition-fast)}.modal-actions .btn-primary:hover{opacity:.9}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16)}.loading-state .spinner{width:40px;height:40px;border:3px solid var(--gray-200);border-top-color:var(--primary-600);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:var(--space-4)}.loading-state p{color:var(--gray-500);font-size:.9rem}.empty-state{padding:var(--space-12);text-align:center;color:var(--gray-500)}@media(max-width:768px){.tests-grid{grid-template-columns:1fr}.in-progress-card{flex-direction:column;text-align:center;gap:var(--space-4)}.results-table th,.results-table td{padding:var(--space-2);font-size:.75rem}}.test-taking-page{min-height:100vh;background:var(--gray-50);padding:var(--space-2)}@media(max-width:768px){.test-taking-page{padding:var(--space-1)}}@media(max-width:480px){.test-taking-page{padding:4px}}.loading-container .spinner{width:48px;height:48px;border:4px solid var(--gray-200);border-top-color:var(--primary-600);border-radius:50%;animation:spin .8s linear infinite}.error-container button{padding:var(--space-3) var(--space-6);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);cursor:pointer}.section-select-container{max-width:95%;margin:0 auto;padding:var(--space-6)}@media(max-width:768px){.section-select-container{max-width:98%;padding:var(--space-4) var(--space-3)}}@media(max-width:480px){.section-select-container{max-width:100%;padding:var(--space-3) var(--space-2)}}.test-header{text-align:center;margin-bottom:var(--space-8)}.test-header h1{font-size:1.75rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.test-type{font-size:.95rem;color:var(--gray-500)}.sections-progress{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-8)}.section-progress-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:#fff;border-radius:var(--radius-xl);border:2px solid var(--gray-200);transition:all var(--transition-fast)}@media(max-width:480px){.section-progress-item{gap:var(--space-3);padding:var(--space-3) var(--space-4)}}.section-progress-item.completed{background:var(--success-50);border-color:var(--success-200)}.section-progress-item.next{border-color:var(--primary-500);box-shadow:0 0 0 3px #2563eb1a}.section-number{width:32px;height:32px;border-radius:50%;background:var(--gray-200);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem;color:var(--gray-600)}.section-progress-item.completed .section-number{background:var(--success-500);color:#fff}.section-progress-item.next .section-number{background:var(--primary-600);color:#fff}.section-info{display:flex;align-items:center;gap:var(--space-3);flex:1}.section-icon{font-size:1.25rem}.section-name{font-weight:600;color:var(--gray-900);text-transform:capitalize}.check-icon{color:var(--success-500);font-size:1.25rem;font-weight:700}.next-section-card,.test-complete-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-8);text-align:center;box-shadow:var(--shadow-md)}.next-section-card h2,.test-complete-card h2{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.next-section-card p,.test-complete-card p{font-size:.95rem;color:var(--gray-500);margin-bottom:var(--space-6)}.start-section-btn,.view-results-btn{padding:var(--space-4) var(--space-8);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.start-section-btn:hover,.view-results-btn:hover{background:var(--primary-700)}.test-complete-card h2{font-size:1.5rem}.test-taking-page.active-test{padding-top:65px;padding-bottom:75px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.content-protection-overlay{position:fixed;inset:0;background:#000000f2;z-index:9999;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.protection-message{text-align:center;color:#fff;padding:var(--space-8);max-width:400px}.protection-icon{font-size:4rem;display:block;margin-bottom:var(--space-4)}.protection-message h2{font-size:1.5rem;font-weight:700;margin-bottom:var(--space-3)}.protection-message p{font-size:1rem;color:#fffc;margin-bottom:var(--space-2)}.protection-warning{font-size:.875rem;color:#f87171;margin-top:var(--space-4)}.content-blurred{filter:blur(20px);pointer-events:none}.test-taking-page.active-test input,.test-taking-page.active-test textarea,.test-taking-page.active-test select,.test-taking-page.active-test option,.test-taking-page.active-test button,.test-taking-page.active-test [contenteditable=true]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.timer-bar{position:fixed;top:0;left:0;right:0;height:60px;background:#fff;border-bottom:1px solid var(--gray-200);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);z-index:100;box-shadow:var(--shadow-sm)}.timer-bar.warning{background:#fef3c7;border-color:#f59e0b}.timer-bar.danger{background:#fee2e2;border-color:#ef4444}.timer-section-info{display:flex;align-items:center;gap:var(--space-3);font-weight:600;color:var(--gray-700)}.timer-section-info .section-icon{font-size:1.5rem}.timer-display{display:flex;align-items:center;gap:var(--space-2);font-size:1.5rem;font-weight:700;font-family:SF Mono,Monaco,monospace}.timer-bar.warning .timer-display{color:#b45309}.timer-bar.danger .timer-display{color:#dc2626}.timer-icon{font-size:1.25rem}.submit-section-btn{padding:var(--space-2) var(--space-5);background:var(--gray-900);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.submit-section-btn:hover:not(:disabled){background:var(--gray-800)}.submit-section-btn:disabled{opacity:.6;cursor:not-allowed}.questions-container{max-width:95%;margin:0 auto;padding:var(--space-4) var(--space-2)}.section-block{background:#fff;border-radius:var(--radius-xl);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.section-title{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--gray-100)}.section-instructions{padding:var(--space-4);background:var(--primary-50);border-radius:var(--radius-lg);color:var(--primary-700);font-size:.9rem;line-height:1.6;margin-bottom:var(--space-6)}.audio-player{margin-bottom:var(--space-6)}.audio-player audio{width:100%;border-radius:var(--radius-lg)}.reading-passage{background:var(--gray-50);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);max-height:400px;overflow-y:auto}.passage-title{font-size:1.1rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-4)}.passage-content{font-size:.95rem;line-height:1.8;color:var(--gray-700);white-space:pre-wrap}.questions-list{display:flex;flex-direction:column;gap:var(--space-6)}.question-item{display:flex;gap:var(--space-3);padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);border:1px solid var(--gray-100)}.question-number{width:40px;height:40px;background:var(--primary-600);color:#fff;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;flex-shrink:0}.question-content{flex:1}.question-text{font-size:1rem;font-weight:500;color:var(--gray-900);margin-bottom:var(--space-3);line-height:1.6}.question-instructions{font-size:.85rem;color:var(--gray-500);font-style:italic;margin-bottom:var(--space-4)}.options-list{display:flex;flex-direction:column;gap:var(--space-2)}.options-list.horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-3)}.option-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#fff;border-radius:var(--radius-md);border:1px solid var(--gray-200);cursor:pointer;transition:all var(--transition-fast)}.option-item:hover{border-color:var(--primary-400);background:var(--primary-50)}.option-item:has(input:checked){border-color:var(--primary-600);background:var(--primary-50)}.option-item input{margin:0}.option-label{width:24px;height:24px;background:var(--gray-100);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;color:var(--gray-600)}.option-item:has(input:checked) .option-label{background:var(--primary-600);color:#fff}.option-text{flex:1;font-size:.9rem;color:var(--gray-700)}.option-item.compact{padding:var(--space-2) var(--space-4)}.option-item.compact .option-text{font-size:.85rem;font-weight:500}.answer-input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:.95rem;transition:border-color var(--transition-fast)}.answer-input:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px #2563eb1a}.essay-container{display:flex;flex-direction:column;gap:var(--space-2)}.essay-input{width:100%;padding:var(--space-4);border:1px solid var(--gray-300);border-radius:var(--radius-lg);font-size:.95rem;line-height:1.7;resize:vertical;min-height:300px;font-family:inherit}.essay-input:focus{outline:none;border-color:var(--primary-500)}.word-count{font-size:.8rem;color:var(--gray-500);text-align:right}.speaking-container{padding:var(--space-4);background:#fff;border-radius:var(--radius-lg);border:1px dashed var(--gray-300)}.speaking-instructions{font-size:.9rem;color:var(--gray-600);margin-bottom:var(--space-4)}.audio-recorder{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.record-btn{padding:var(--space-4) var(--space-8);background:#ef4444;color:#fff;border:none;border-radius:var(--radius-xl);font-size:1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:var(--space-2)}.recording-note{font-size:.8rem;color:var(--gray-400);text-align:center}.speaking-text-fallback{width:100%;padding:var(--space-3);border:1px solid var(--gray-200);border-radius:var(--radius-md);font-size:.9rem;resize:vertical}.bottom-bar{position:fixed;bottom:0;left:0;right:0;height:70px;background:#fff;border-top:1px solid var(--gray-200);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);z-index:100;box-shadow:0 -4px 12px #0000000d}.answered-count{font-size:.9rem;color:var(--gray-600)}.submit-section-btn.large{padding:var(--space-3) var(--space-8);font-size:1rem}.audio-recorder-container{width:100%;padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);border:1px solid var(--gray-200)}.audio-recorder-controls{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.audio-recorder-controls .record-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-6);background:#ef4444;color:#fff;border:none;border-radius:var(--radius-xl);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.audio-recorder-controls .record-btn:hover:not(:disabled){background:#dc2626;transform:scale(1.02)}.audio-recorder-controls .record-btn:disabled{opacity:.6;cursor:not-allowed}.record-icon{font-size:1.25rem}.recording-indicator{display:flex;align-items:center;gap:var(--space-2)}.recording-dot{width:12px;height:12px;background:#ef4444;border-radius:50%;animation:pulse-recording 1s ease-in-out infinite}@keyframes pulse-recording{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.7}}.recording-text{font-size:1rem;font-weight:600;color:#ef4444}.recording-timer{display:flex;align-items:center;gap:var(--space-2);font-family:SF Mono,Monaco,monospace;font-size:1.75rem;font-weight:700;color:var(--gray-800)}.timer-separator{color:var(--gray-400)}.max-time{color:var(--gray-500);font-size:1.25rem}.time-remaining{font-size:.9rem;color:var(--gray-600)}.remaining-value.warning{color:#ef4444;font-weight:600;animation:blink .5s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}.stop-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:var(--gray-800);color:#fff;border:none;border-radius:var(--radius-lg);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.stop-btn:hover{background:var(--gray-700)}.stop-icon{font-size:1rem}.playback-container{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.playback-header{display:flex;align-items:center;gap:var(--space-2);font-size:1rem;font-weight:600;color:var(--success-600)}.playback-icon{font-size:1.25rem}.audio-playback{width:100%;max-width:400px}.audio-playback audio{width:100%;height:48px;border-radius:var(--radius-lg)}.playback-actions{display:flex;gap:var(--space-3)}.re-record-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:#fff;color:var(--gray-700);border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.re-record-btn:hover:not(:disabled){border-color:var(--primary-500);color:var(--primary-600)}.re-record-btn:disabled{opacity:.6;cursor:not-allowed}.recording-hint{font-size:.85rem;color:var(--gray-500);text-align:center;margin-top:var(--space-2)}.permission-error{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6);text-align:center}.permission-error .error-icon{font-size:2rem}.permission-error p{font-size:.95rem;color:var(--gray-700);margin:0}.permission-error .error-hint{font-size:.85rem;color:var(--gray-500)}.retry-btn{padding:var(--space-2) var(--space-4);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.retry-btn:hover{background:var(--primary-700)}.upload-progress-container{width:100%;max-width:300px;margin-top:var(--space-2)}.upload-progress-bar{width:100%;height:4px;background:var(--gray-200);border-radius:2px;overflow:hidden}.upload-progress-fill{height:100%;background:var(--primary-600);transition:width .3s ease}.upload-status{font-size:.8rem;color:var(--gray-600);text-align:center;margin-top:var(--space-1)}.upload-status.error{color:#ef4444}.upload-status.success{color:var(--success-600)}.optional-notes-container{width:100%;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--gray-300)}.optional-notes-label{font-size:.85rem;color:var(--gray-500);margin-bottom:var(--space-2)}.speaking-text-fallback{width:100%;padding:var(--space-3);border:1px solid var(--gray-200);border-radius:var(--radius-md);font-size:.9rem;resize:vertical;min-height:60px}.speaking-text-fallback:focus{outline:none;border-color:var(--primary-500)}@media(max-width:768px){.section-select-container{padding:var(--space-3) var(--space-2)}.timer-bar{padding:0 var(--space-2)}.timer-display{font-size:1.25rem}.questions-container{max-width:98%;padding:var(--space-3) var(--space-1)}.section-block{padding:var(--space-3);margin-bottom:var(--space-3)}.question-item{flex-direction:column;padding:var(--space-3);gap:var(--space-2)}.question-number{margin-bottom:var(--space-2);align-self:flex-start}.reading-passage{padding:var(--space-3)}.options-list.horizontal{flex-direction:column}.bottom-bar{padding:0 var(--space-2)}.recording-timer{font-size:1.5rem}.max-time{font-size:1rem}.audio-playback{max-width:100%}}@media(max-width:480px){.questions-container{max-width:100%;padding:var(--space-2) 4px}.section-block{padding:var(--space-2);border-radius:var(--radius-lg)}.question-item{padding:var(--space-2)}.reading-passage{padding:var(--space-2);margin-bottom:var(--space-3)}.timer-bar{padding:0 8px;height:56px}.timer-display{font-size:1.1rem}.timer-section-info{font-size:.85rem}.submit-section-btn{padding:var(--space-2) var(--space-3);font-size:.8rem}.bottom-bar{padding:0 8px;height:60px}.submit-section-btn.large{padding:var(--space-2) var(--space-4);font-size:.9rem}}.results-page{max-width:1000px}@media(max-width:768px){.results-page{padding:var(--space-6) var(--space-3)}}@media(max-width:480px){.results-page{padding:var(--space-4) var(--space-2)}}.results-container{max-width:800px;margin:0 auto}@media(max-width:768px){.results-container{max-width:100%}}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-4)}.results-header{text-align:center;margin-bottom:var(--space-8)}.back-link{display:inline-block;color:var(--primary-600);text-decoration:none;font-size:.9rem;margin-bottom:var(--space-4);transition:color var(--transition-fast)}.back-link:hover{color:var(--primary-700)}.results-header h1{font-size:1.75rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-2)}.test-meta{font-size:.95rem;color:var(--gray-500)}.status-banner{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-xl);margin-bottom:var(--space-8)}@media(max-width:480px){.status-banner{padding:var(--space-4);gap:var(--space-3)}}.status-banner.pending{background:#fef3c7;border:1px solid #f59e0b}.status-banner.graded{background:#d1fae5;border:1px solid #10b981}.status-icon{font-size:1.5rem}.status-banner h3{font-size:1rem;font-weight:600;margin-bottom:var(--space-4);color:var(--gray-800)}.latest-results{margin-bottom:var(--space-8)}.latest-results h2{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-4);color:var(--gray-800)}.results-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-5)}.result-card{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--gray-100)}.result-card-header{padding:var(--space-4) var(--space-5);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--gray-100)}.test-type-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.test-type-badge.general{background:linear-gradient(135deg,#dbeafe,#e0e7ff);color:#3730a3}.test-type-badge.ielts{background:linear-gradient(135deg,#d1fae5,#dcfce7);color:#047857}.test-type-badge.small{font-size:.65rem;padding:var(--space-1) var(--space-2)}.result-date{font-size:.8rem;color:var(--gray-500)}.result-card-body{padding:var(--space-5)}.result-card-footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--gray-100);background:var(--gray-50)}.score-display{text-align:center;margin-bottom:var(--space-4)}.score-main{font-size:2.5rem;font-weight:700;line-height:1.2}.score-main.band{font-size:2rem}.score-percentage{font-size:1rem;color:var(--gray-500);margin-top:var(--space-1)}.result-level{text-align:center;margin-bottom:var(--space-4)}.level-badge{display:inline-block;padding:var(--space-2) var(--space-4);background:var(--primary-50);color:var(--primary-700);border-radius:var(--radius-lg);font-weight:600;font-size:.9rem}.level-badge.small{padding:var(--space-1) var(--space-2);font-size:.75rem}.result-meta{text-align:center;color:var(--gray-500);font-size:.85rem}.band-breakdown{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);margin-bottom:var(--space-8)}@media(max-width:768px){.section-scores-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}}@media(max-width:480px){.section-scores-grid{grid-template-columns:1fr;gap:var(--space-3)}}.section-score-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-5);text-align:center;box-shadow:var(--shadow-sm)}.section-score-header{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-3)}.section-score-header .section-icon{font-size:1.25rem}.section-score-header .section-name{font-size:.85rem;font-weight:600;color:var(--gray-700)}.section-score-value{font-size:2rem;font-weight:800;margin-bottom:var(--space-1)}.section-score-raw{font-size:.75rem;color:var(--gray-400);margin-bottom:var(--space-2)}.section-score-level{font-size:.8rem;font-weight:600;color:var(--gray-600)}.band-scale-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);margin-bottom:var(--space-8);box-shadow:var(--shadow-sm)}.band-scale-card h3{font-size:1rem;font-weight:600;color:var(--gray-700);margin-bottom:var(--space-5);text-align:center}.band-scale{display:flex;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-4);padding:var(--space-3);background:var(--gray-50);border-radius:var(--radius-lg)}@media(max-width:768px){.band-scale{flex-wrap:wrap;justify-content:center;gap:var(--space-1)}.band-item{min-width:calc(25% - var(--space-1));margin-bottom:var(--space-1)}}@media(max-width:480px){.band-scale{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1)}.band-item{min-width:unset;margin-bottom:0}}.band-item{text-align:center}.band-label{display:block;font-size:.65rem;color:var(--gray-500);margin-bottom:2px;text-transform:uppercase;text-align:center}.band-value{font-size:1.1rem;font-weight:700;color:var(--gray-800)}.results-history{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);padding:var(--space-5)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap;gap:var(--space-3)}.section-header h2{font-size:1.1rem;font-weight:600;color:var(--gray-800);margin:0}.type-filter{display:flex;gap:var(--space-2)}.filter-btn{padding:var(--space-2) var(--space-4);border:1px solid var(--gray-200);background:#fff;border-radius:var(--radius-lg);font-size:.85rem;font-weight:500;color:var(--gray-600);cursor:pointer;transition:all var(--transition-fast)}.filter-btn:hover{border-color:var(--primary-300);color:var(--primary-600)}.filter-btn.active{background:var(--primary-600);border-color:var(--primary-600);color:#fff}.history-list{display:flex;flex-direction:column}.history-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);border-bottom:1px solid var(--gray-100);transition:background var(--transition-fast)}.history-item:last-child{border-bottom:none}.history-item:hover{background:var(--gray-50)}.history-main{display:flex;align-items:center;gap:var(--space-4);flex:1;min-width:0}.history-type{flex-shrink:0}.history-info{flex:1;min-width:0}.history-date{font-weight:600;color:var(--gray-800);font-size:.9rem}.history-meta{font-size:.8rem;color:var(--gray-500);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-details{display:flex;align-items:center;gap:var(--space-4);flex-shrink:0}.history-breakdown{display:flex;gap:var(--space-3);margin-right:var(--space-2)}.breakdown-item{text-align:center;min-width:24px}.breakdown-item .label{display:block;font-size:.6rem;color:var(--gray-400);font-weight:600;margin-bottom:2px}.breakdown-item .value{display:block;font-size:.9rem;font-weight:600;color:var(--gray-700)}.history-score{display:flex;align-items:center;gap:var(--space-3);min-width:80px;justify-content:flex-end}.history-score .score{font-size:1rem;font-weight:700}.history-score .score.band{font-size:.9rem}.view-btn{opacity:0;transform:translate(10px);transition:all var(--transition-fast)}.history-item:hover .view-btn{opacity:1;transform:translate(0)}.no-history{text-align:center;padding:var(--space-6);color:var(--gray-500)}.status-badge{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.status-badge.submitted{background:var(--warning-50);color:var(--warning-700)}.status-badge.graded{background:var(--success-50);color:var(--success-700)}.status-badge.expired{background:var(--gray-100);color:var(--gray-600)}.empty-state{text-align:center;padding:var(--space-10)}.empty-icon{font-size:4rem;margin-bottom:var(--space-4)}.empty-state h3{font-size:1.25rem;color:var(--gray-800);margin-bottom:var(--space-2)}.empty-state p{color:var(--gray-500)}@media(max-width:768px){.history-item{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.history-main{width:100%;border-bottom:1px solid var(--gray-100);padding-bottom:var(--space-3);margin-bottom:-4px}.history-details{width:100%;justify-content:space-between;flex-wrap:wrap}.view-btn{opacity:1;transform:none}.history-breakdown{display:none}}@media(max-width:640px){.results-cards{grid-template-columns:1fr}.band-breakdown{grid-template-columns:repeat(2,1fr)}.section-header{flex-direction:column;align-items:flex-start}}.results-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}.results-nav .back-link{display:flex;align-items:center;gap:var(--space-2);margin-bottom:0}.print-btn{display:flex;align-items:center;gap:var(--space-2)}.status-pill{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.status-pill.graded{background:#d1fae5;color:#047857}.status-pill.pending{background:#fef3c7;color:#d97706}.ielts-results-card{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--gray-100)}.ielts-results-header{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);padding:var(--space-5);background:linear-gradient(135deg,var(--gray-50),white);border-bottom:1px solid var(--gray-100)}.candidate-info,.test-info{display:flex;flex-direction:column;gap:var(--space-2)}.info-row{display:flex;align-items:center;gap:var(--space-2);font-size:.9rem}.info-row svg{color:var(--primary-500);flex-shrink:0}.info-label{color:var(--gray-500);min-width:60px}.info-value{font-weight:600;color:var(--gray-800)}.ielts-test-title{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5);border-bottom:1px solid var(--gray-100)}.ielts-test-title h2{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin:0}.overall-band-section{display:flex;flex-direction:column;align-items:center;padding:var(--space-8) var(--space-5);background:linear-gradient(180deg,var(--primary-50) 0%,white 100%);border-bottom:1px solid var(--gray-100)}.overall-band-display{width:140px;height:140px;border-radius:50%;border:6px solid;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;box-shadow:0 8px 24px #0000001a}.overall-band-display .band-number{font-size:3rem;font-weight:800;line-height:1}.overall-band-display .band-label{font-size:.75rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;margin-top:var(--space-1)}.band-level{margin-top:var(--space-3);font-size:1.1rem;font-weight:600}.section-scores-enhanced{padding:var(--space-5);border-bottom:1px solid var(--gray-100)}.section-title{font-size:1rem;font-weight:600;color:var(--gray-700);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.scores-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3)}.score-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-4);border-radius:var(--radius-lg);background:var(--gray-50);transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.score-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.score-card-icon{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-3)}.score-card.listening .score-card-icon{background:#dbeafe;color:#1d4ed8}.score-card.reading .score-card-icon{background:#dcfce7;color:#16a34a}.score-card.writing .score-card-icon{background:#fef3c7;color:#d97706}.score-card.speaking .score-card-icon{background:#fce7f3;color:#db2777}.score-card-content{text-align:center}.score-card-label{display:block;font-size:.8rem;color:var(--gray-600);margin-bottom:var(--space-1)}.score-card-band{display:block;font-size:1.75rem;font-weight:700;line-height:1.2}.score-card-raw{display:block;font-size:.75rem;color:var(--gray-500);margin-top:var(--space-1)}.answer-stats-section{padding:var(--space-5);border-bottom:1px solid var(--gray-100);background:var(--gray-50)}.answer-stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.answer-stat{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.answer-stat svg{color:var(--primary-500)}.stat-label{flex:1;font-weight:500;color:var(--gray-700)}.stat-value{font-weight:700;font-size:1.1rem}.stat-value .correct{color:var(--success-600)}.stat-value .separator{color:var(--gray-400);margin:0 2px}.stat-value .total{color:var(--gray-600)}.feedback-section{padding:var(--space-5);border-bottom:1px solid var(--gray-100)}.feedback-section .feedback-content{background:var(--gray-50);padding:var(--space-4);border-radius:var(--radius-lg);color:var(--gray-700);line-height:1.7;white-space:pre-wrap}.band-scale-section{padding:var(--space-5);border-bottom:1px solid var(--gray-100)}.band-scale-compact{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center}.band-scale-item{display:flex;flex-direction:column;align-items:center;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--gray-50);min-width:80px;transition:all var(--transition-fast)}.band-scale-item.active{background:var(--primary-100);box-shadow:0 0 0 2px var(--primary-500)}.band-scale-item .band-num{font-size:1.25rem;font-weight:700;color:var(--gray-800)}.band-scale-item .band-desc{font-size:.65rem;color:var(--gray-500);text-align:center}.detailed-answers{padding:var(--space-5);border-bottom:1px solid var(--gray-100)}.detailed-answers summary{cursor:pointer;font-weight:600;color:var(--primary-600);padding:var(--space-2)}.detailed-answers .answers-grid{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.detailed-answers .answer-item{display:flex;flex-direction:column;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);font-size:.75rem;font-weight:600}.detailed-answers .answer-item.correct{background:#d1fae5;color:#047857}.detailed-answers .answer-item.incorrect{background:#fee2e2;color:#dc2626}.detailed-answers .answer-number{font-size:.65rem}.print-header,.print-footer{display:none}.results-actions{display:flex;gap:var(--space-3);justify-content:center;margin-top:var(--space-6)}.results-actions .btn-primary,.results-actions .btn-secondary{display:flex;align-items:center;gap:var(--space-2)}.detailed-answers{margin-top:var(--space-3)}.detailed-answers details{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--card-bg)}.detailed-answers summary{padding:var(--space-4) var(--space-5);cursor:pointer;font-weight:600;font-size:.95rem;color:var(--text-primary);background:var(--background);-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:var(--space-2);transition:background .2s}.detailed-answers summary:hover{background:var(--hover-bg, rgba(0, 0, 0, .03))}.detailed-answers details[open] summary{border-bottom:1px solid var(--border)}.review-section{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.review-section:last-child{border-bottom:none}.review-section-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);color:var(--text-primary)}.review-section-header h4{font-size:1rem;font-weight:600;margin:0;flex:1}.review-section-header svg{color:#4d9ca0}.review-section-stats{font-size:.82rem;font-weight:600;color:#4d9ca0;background:#4d9ca01a;padding:2px 10px;border-radius:20px}.review-questions-list{display:flex;flex-direction:column;gap:var(--space-3)}.review-question{padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--border);background:var(--background);transition:border-color .2s}.review-question.review-correct{border-left:3px solid #059669;background:#05966908}.review-question.review-incorrect{border-left:3px solid #ef4444;background:#ef444408}.review-q-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.review-q-number{font-weight:700;font-size:.82rem;color:var(--text-secondary);background:#0000000d;padding:2px 8px;border-radius:4px}.review-q-status svg{display:block}.review-correct .review-q-status svg{color:#059669}.review-incorrect .review-q-status svg{color:#ef4444}.review-q-text{font-size:.88rem;color:var(--text-primary);line-height:1.5;margin:0 0 var(--space-3) 0}.review-answers-row{display:flex;gap:var(--space-4);flex-wrap:wrap}.review-answer-block{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.review-answer-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary, #999)}.review-answer-value{font-size:.88rem;font-weight:500;padding:4px 10px;border-radius:var(--radius);word-break:break-word}.review-answer-value.answer-correct{background:#0596691a;color:#047857}.review-answer-value.answer-incorrect{background:#ef444414;color:#dc2626}.review-essay-answer{margin-top:var(--space-2)}.review-essay-text{font-size:.85rem;line-height:1.7;color:var(--text-primary);background:#00000005;padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--border);white-space:pre-wrap;margin:var(--space-2) 0 0 0;max-height:200px;overflow-y:auto}.review-audio{width:100%;margin-top:var(--space-2);border-radius:var(--radius)}@media print{.sidebar,.top-bar,.mobile-nav-overlay,.mobile-menu-btn,.no-print,.results-nav,.results-actions,.status-banner,.detailed-answers{display:none!important}@page{size:A4;margin:0}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;box-sizing:border-box}html,body{background:#fff!important;padding:0!important;margin:0!important;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:12px!important;line-height:1.4!important}.dashboard-layout{display:block!important}.main-content{margin-left:0!important;padding:0!important;width:100%!important}.page-content{padding:0!important}.results-page{padding:8mm 10mm!important;max-width:100%!important}.results-container{max-width:100%!important}.print-header{display:flex!important;align-items:center;gap:16px;padding:0 0 8px;border-bottom:2.5px solid #4D9CA0;margin-bottom:8px}.print-logo{display:flex;align-items:center;flex-shrink:0}.print-logo-img{height:40px;width:auto}.print-header-text{flex:1}.print-header-text h1{font-size:1.3rem;font-weight:700;color:#1a1a2e;margin:0;letter-spacing:-.5px}.print-subtitle{font-size:.7rem;color:#4d9ca0;margin:1px 0 0;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.ielts-results-card{box-shadow:none!important;border:1px solid #d0d0d0;border-radius:6px!important;overflow:hidden}.ielts-results-header{display:grid!important;grid-template-columns:1fr 1fr;gap:4px 12px;padding:8px 14px!important;background:#f8fafb!important;border-bottom:1px solid #e0e0e0}.candidate-info,.test-info{gap:2px!important}.info-row{font-size:.72rem!important;gap:4px!important}.info-row svg{color:#4d9ca0!important;width:12px!important;height:12px!important}.info-label{color:#666!important;font-size:.7rem;min-width:48px!important}.info-value{font-weight:600;color:#1a1a2e!important}.ielts-test-title{padding:6px 14px!important;border-bottom:1px solid #e0e0e0}.ielts-test-title h2{font-size:.92rem!important;color:#1a1a2e!important}.status-pill{font-size:.6rem!important;padding:1px 6px!important}.status-pill.graded{background:#d1fae5!important;color:#047857!important}.overall-band-section{padding:10px!important;background:#fff!important;border-bottom:1px solid #e0e0e0}.overall-band-display{width:80px!important;height:80px!important;border-width:4px!important;box-shadow:none!important}.overall-band-display .band-number{font-size:1.75rem!important}.overall-band-display .band-label{font-size:.55rem!important;margin-top:1px!important}.band-level{font-size:.82rem!important;margin-top:4px!important}.section-scores-enhanced{padding:8px 14px!important;border-bottom:1px solid #e0e0e0}.section-title{font-size:.78rem!important;color:#1a1a2e!important;margin-bottom:6px!important}.scores-grid{grid-template-columns:repeat(4,1fr)!important;gap:6px!important}.score-card{padding:6px!important;background:#f8fafb!important;border:1px solid #e8e8e8;border-radius:6px!important;flex-direction:row!important;gap:6px}.score-card:hover{transform:none!important;box-shadow:none!important}.score-card-icon{width:28px!important;height:28px!important;margin-bottom:0!important;flex-shrink:0}.score-card-icon svg{width:14px!important;height:14px!important}.score-card-content{text-align:left!important}.score-card-label{font-size:.62rem!important;margin-bottom:0!important}.score-card-band{font-size:1.1rem!important;line-height:1.1!important}.score-card-raw{font-size:.58rem!important;margin-top:0!important}.answer-stats-section{padding:6px 14px!important;background:#fafafa!important;border-bottom:1px solid #e0e0e0}.answer-stats-grid{gap:6px!important}.answer-stat{padding:6px 8px!important;box-shadow:none!important;border:1px solid #e8e8e8;gap:6px!important}.answer-stat svg{width:14px!important;height:14px!important}.stat-label{font-size:.72rem!important}.stat-value{font-size:.85rem!important}.feedback-section{padding:8px 14px!important;border-bottom:1px solid #e0e0e0}.feedback-section .feedback-content{background:#f8fafb!important;padding:8px 10px!important;font-size:.72rem!important;line-height:1.5!important;border-left:3px solid #4D9CA0}.band-scale-section{padding:6px 14px!important;border-bottom:1px solid #e0e0e0}.band-scale-compact{gap:3px!important}.band-scale-item{min-width:auto!important;flex:1;padding:3px 4px!important;background:#f5f5f5!important;border:1px solid #e8e8e8}.band-scale-item.active{background:#e6f7f8!important;border-color:#4d9ca0!important;box-shadow:0 0 0 1px #4d9ca0!important}.band-scale-item .band-num{font-size:.82rem!important}.band-scale-item .band-desc{font-size:.5rem!important}.print-footer{display:block!important;text-align:center;padding:6px 14px;font-size:.62rem;color:#888;border-top:2px solid #4D9CA0;margin-top:6px}.print-footer p{margin:1px 0}.ielts-results-card{page-break-inside:avoid}}@media(max-width:768px){.ielts-results-header{grid-template-columns:1fr}.scores-grid{grid-template-columns:repeat(2,1fr)}.ielts-test-title{flex-direction:column;gap:var(--space-2);text-align:center}.results-nav{flex-direction:column;gap:var(--space-3)}.overall-band-display{width:120px;height:120px}.overall-band-display .band-number{font-size:2.5rem}}@media(max-width:480px){.scores-grid,.answer-stats-grid{grid-template-columns:1fr}.band-scale-compact{flex-direction:column}.band-scale-item{flex-direction:row;justify-content:center;gap:var(--space-2)}}:root{--color-primary: #D2673C;--color-secondary: #319798;--color-alternate: #7C6EE6}.main-btn,.secondary-btn,.alternate-btn{border:none;border-radius:7px;min-width:70px;display:flex;flex-direction:row;align-items:center;justify-content:center;background-color:var(--color-bg);color:#000;font-size:var(--txt-fs);transition:transform .15s ease}.main-btn,.secondary-btn,.alternate-btn{width:fit-content!important;margin:5px 0;cursor:pointer;transition:transform .15s ease}.main-btn:hover,.secondary-btn:hover,.alternate-btn:hover{transform:scale(1.02)}.main-btn:hover,.secondary-btn:hover,.alternate-btn{background-color:var(--color-secondary)}.secondary-btn:hover,.alternate-btn{color:var(--color-bg)}.main-btn:disabled,.secondary-btn:disabled,.alternate-btn:disabled{opacity:.6;cursor:not-allowed}.main-btn{background-color:var(--color-primary);padding:10px 40px;color:#fff!important}.secondary-btn{border:2px solid var(--color-secondary);color:var(--color-secondary);background:none;padding:8px 40px}.alternate-btn{color:var(--color-bg);background:var(--color-alternate);padding:10px 40px}.corrections-list{margin:2.5rem auto 0;max-width:700px;display:flex;flex-direction:column;gap:2.2rem}.correction-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px #00000008;padding:2rem 2.5rem;display:flex;flex-direction:column;gap:1.2rem;border:1.5px solid #e5e7eb}.correction-question-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:.7rem}.correction-question-number{font-size:1.05rem;font-weight:700;color:var(--color-secondary);background:#e0f2fe;border-radius:8px;padding:4px 14px}.correction-question-text{font-size:1.18rem;font-weight:600;color:#0f172a;margin-bottom:.7rem}.correction-answers{display:flex;flex-direction:column;gap:.7rem}.correction-answer-box{display:flex;align-items:center;gap:1.2rem;border-radius:12px;padding:1.1rem 1.5rem;font-size:1.08rem;font-weight:500;position:relative;border:2px solid #e5e7eb;background:#f8fafc}.correction-answer-incorrect{background:#fef2f2;border-color:#fca5a5}.correction-answer-correct{background:#f0fdf4;border-color:#86efac}.correction-answer-label{font-weight:700;font-size:1.05rem;display:flex;align-items:center;gap:.5em;color:#374151;min-width:110px}.correction-answer-letter{display:inline-block;font-weight:700;font-size:1.1rem;color:#fff;background:#d1d5db;border-radius:6px;padding:2px 10px;margin-right:.5em}.correction-answer-incorrect .correction-answer-letter{background:#ef4444}.correction-answer-correct .correction-answer-letter{background:#22c55e}.correction-answer-text{flex:1;color:#0f172a}.correction-answer-icon{font-size:1.5em;margin-left:.7em;display:flex;align-items:center}.correction-icon-correct{color:#22c55e;font-size:1.3em;font-weight:700}.correction-icon-incorrect{color:#ef4444;font-size:1.3em;font-weight:700}@media(max-width:700px){.correction-card{padding:1rem .7rem}}.test-page{padding:2.5rem 0 3rem;min-height:100vh}.test-title{margin-bottom:8px;text-align:center}.test-desc{margin-bottom:32px;text-align:center}.assessments-row{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;margin-bottom:48px}.test-card{flex:1 1 320px;min-width:280px;max-width:400px;position:relative;box-sizing:border-box;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:1.5rem;flex:1 1 300px;min-width:260px;max-width:350px;height:475px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:.5rem;transition:box-shadow .2s,border .2s}.test-card-placement{border-top:3px solid var(--color-secondary)}.test-card-academic{border-top:3px solid var(--color-alternate)}.test-card-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.test-card-icon-placement{color:var(--color-secondary)}.test-card-icon-academic{color:var(--color-alternate)}.test-badge{font-weight:700;font-size:12px;border-radius:12px;padding:2px 14px;margin-left:8px;letter-spacing:1px;text-transform:uppercase;display:inline-block}.test-badge-placement{background:#e0f2fe;color:var(--color-secondary)}.test-badge-academic{background:#ede9fe;color:var(--color-alternate)}.test-card-title{margin-bottom:8px;text-align:left;width:100%}.test-card-desc{margin-bottom:18px;text-align:left;width:100%}.test-card-meta{display:flex;flex-direction:column;gap:16px;margin-bottom:18px;width:100%}.test-card-meta>*{min-width:100%}.test-card-meta-info{display:flex;flex-direction:row;align-items:center;gap:12px}.test-card-meta .meta-item{display:flex;align-items:center;gap:6px}.test-meta-icon-placement{color:var(--color-secondary)}.test-meta-icon-academic{color:var(--color-alternate)}.test-why-title{margin:0 0 1.5rem;text-align:center}.test-why-row{display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}.test-why-card{align-items:flex-start!important;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:2rem 1.5rem 1.5rem;flex:1 1 300px;min-width:260px;max-width:350px;display:flex;gap:.5rem;flex-direction:column;align-items:flex-start;transition:box-shadow .2s,border .2s}.test-why-icon-placement{color:var(--color-secondary)}.test-why-icon-results{color:#d2673c}.test-why-icon-analytics{color:var(--color-alternate)}.test-why-card-title{font-size:1.1rem;margin-bottom:6px}.test-why-card-desc{text-align:left}.test-general-layout{display:flex;gap:2.5rem;align-items:flex-start;justify-content:center;position:relative}.test-sidebar{width:270px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:2rem 1.2rem 1.2rem;display:flex;flex-direction:column;align-items:stretch;min-height:600px;position:sticky;top:30px;height:fit-content;transition:right .3s,box-shadow .3s;z-index:100}.test-sidebar-mobile-toggle{display:none;position:absolute;top:22px;right:16px;background:var(--color-secondary);color:#fff;border:none;border-radius:8px;padding:8px 12px;z-index:120;cursor:pointer;box-shadow:0 2px 8px #31979814}.test-sidebar-mobile-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0000002e;z-index:99}.test-sidebar-mobile{position:fixed!important;top:60px!important;right:0!important;width:85vw!important;max-width:340px!important;min-width:220px!important;height:calc(100vh - 100px)!important;min-height:unset!important;border-radius:12px 0 0 12px!important;box-shadow:-2px 0 16px #00000021;padding:2rem 1.2rem 1.2rem!important;z-index:120!important;background:#fff!important;transition:right .3s,box-shadow .3s;display:flex;flex-direction:column;align-items:stretch;animation:slideInSidebar .25s cubic-bezier(.4,0,.2,1)}@keyframes slideInSidebar{0%{right:-100vw;opacity:0}to{right:0;opacity:1}}@media(max-width:900px){.test-general-layout{flex-direction:column;gap:.5rem}.test-sidebar{display:none}.test-sidebar-mobile-toggle{display:block}}@media(max-width:900px){.test-main{width:100%}}@media(max-width:900px){.test-navigator-help,.test-mobile-bottom-bar{display:flex;flex-direction:column;align-items:stretch;gap:.7rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:1.1rem 1.2rem;margin:1.2rem 0 0}.test-mobile-bottom-bar-note{font-size:.93rem;color:#6b7280;margin-bottom:.2rem}}.test-sidebar-header{margin-bottom:1.2rem}.test-sidebar-title{font-weight:700;font-size:1.1rem;color:#0f172a}.test-sidebar-section{color:#6b7280;font-size:.98rem}.test-progress-label{font-size:.95rem;color:#6b7280;margin-bottom:.2rem}.test-progress-bar-bg{background:#e5e7eb;border-radius:6px;height:8px;width:100%;margin-bottom:.3rem;position:relative}.test-progress-bar{background:linear-gradient(90deg,#319798,#d2673c);height:100%;border-radius:6px;transition:width .3s}.test-progress-percent{font-size:.95rem;color:var(--color-secondary);font-weight:600;margin-bottom:1.2rem}.test-navigator-label{font-size:.95rem;color:#6b7280;margin-bottom:.2rem;font-weight:600}.test-navigator{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.7rem}.test-nav-btn{width:36px;height:36px;border-radius:8px;border:1.5px solid #e5e7eb;background:#f8fafc;color:#374151;font-weight:600;font-size:1.1rem;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer;transition:border .2s,box-shadow .2s}.test-nav-btn.active{border-color:var(--color-secondary);background:#e0f2fe;color:var(--color-secondary);box-shadow:0 2px 8px #0ea5e914}.test-nav-btn.answered{border-color:#d2673c;background:#fef3c7;color:#d2673c}.test-nav-btn.flagged{border-color:var(--color-alternate);background:#ede9fe;color:var(--color-alternate)}.test-nav-flag{position:absolute;top:2px;right:2px;color:var(--color-alternate)}.test-navigator-help{font-size:.93rem;color:#6b7280;margin-bottom:1.2rem}.test-submit-btn{min-width:100%}.test-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1.5rem}.test-main-header{display:flex;align-items:center;justify-content:space-between;flex-direction:row;gap:1.5rem;background:#fff;border-radius:12px;padding:1.2rem 1.5rem;box-shadow:0 2px 8px #00000008}.test-main-title{font-weight:700;font-size:1.1rem;color:#0f172a}.test-main-section{color:#6b7280;font-size:.98rem}.test-main-timer{display:flex;align-items:center;justify-content:center;gap:8px;font-weight:600;color:var(--color-secondary);font-size:1.1rem}.test-exit-btn{background:#f3f4f6;border:none;color:#374151;border-radius:8px;padding:8px 16px;font-weight:600;max-width:113px;display:flex;align-items:center;gap:6px;cursor:pointer;transition:background .2s}.test-exit-btn:hover{background:#e5e7eb}.test-question-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:2rem 2.5rem;display:flex;flex-direction:column;gap:1.2rem;min-width:250px}.test-question-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.test-question-number{font-weight:700;color:var(--color-primary);font-size:1.05rem}.test-flag-btn{background:#f3f4f6;border:none;color:var(--color-alternate);border-radius:8px;padding:6px 14px;font-weight:600;display:flex;align-items:center;gap:6px;cursor:pointer;transition:background .2s}.test-flag-btn.flagged{background:#ede9fe;color:var(--color-alternate)}.test-question-text{font-size:1.15rem;color:#0f172a;font-weight:500;margin-bottom:.7rem}.test-options{display:flex;flex-direction:column;gap:1rem}.test-option{display:flex;align-items:center;gap:1.2rem;background:#f8fafc;border:1.5px solid #e5e7eb;border-radius:10px;padding:1.1rem 1.5rem;font-size:1.08rem;font-weight:500;cursor:pointer;transition:border .2s,box-shadow .2s;position:relative}.test-option.selected{border-color:var(--color-secondary);background:#e0f2fe;color:var(--color-secondary);box-shadow:0 2px 8px #0ea5e914}.test-option input[type=radio]{accent-color:var(--color-secondary);width:20px;height:20px}.test-option-letter{font-weight:700;font-size:1.1rem;color:var(--color-alternate);min-width:24px;display:inline-block}.test-option-text{flex:1}.test-option-timer{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000000f;color:var(--color-secondary);font-size:.98rem;font-weight:600;display:flex;align-items:center;gap:4px;padding:2px 10px;position:absolute;right:18px;top:50%;transform:translateY(-50%)}.test-main-nav{display:flex;justify-content:flex-end;gap:1.5rem;margin-top:1.5rem}.test-nav-btn-next:disabled{background:#e5e7eb;color:#374151}.test-no-sidebar{justify-content:center}.test-no-sidebar .test-main{max-width:780px;width:100%}.test-inline-progress{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:.8rem 1.5rem;display:flex;flex-direction:column;gap:.4rem}.test-inline-progress-bar-bg{background:#e5e7eb;border-radius:6px;height:6px;width:100%;position:relative}.test-inline-progress-bar{background:linear-gradient(90deg,#319798,#d2673c);height:100%;border-radius:6px;transition:width .3s}.test-inline-progress-text{font-size:.85rem;color:#6b7280;font-weight:500}.test-submit-btn-bottom{width:100%;padding:14px 40px;font-size:1.05rem;gap:8px}.result-card-band{background:#fff;border-radius:16px;box-shadow:0 2px 8px #00000008;padding:2.5rem 2.5rem 2rem;max-width:600px;margin:3rem auto;display:flex;flex-direction:column;align-items:stretch;gap:1.2rem}.result-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem;gap:1.2rem;flex-wrap:wrap}.result-status-badge{font-size:1rem;font-weight:700;border-radius:8px;padding:4px 16px;background:#e0fbe6;color:#22c55e;letter-spacing:1px;text-transform:uppercase;display:inline-block}.result-status-badge.passed{background:#e0fbe6;color:#22c55e}.result-header-title{font-size:2.5rem;font-weight:700;color:#0f172a;line-height:1.2}.result-card-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:2.5rem}.result-band-left{flex:1 1 0;display:flex;flex-direction:column;align-items:flex-start;gap:.7rem;min-width:180px}.result-band-title{font-size:1.5rem;font-weight:700;color:#0f172a;line-height:1.2;margin-bottom:.2rem}.result-band-score{color:var(--color-primary);font-size:2.2rem;font-weight:800;margin-left:.2em}.result-band-remark{font-size:1.1rem;font-weight:700;color:var(--color-secondary);margin-bottom:.2rem;text-transform:capitalize}.result-band-details{font-size:1.05rem;color:#374151;margin-bottom:.7rem}.result-band-actions{display:flex;gap:1rem;margin-top:1.2rem}.result-band-right{display:flex;align-items:center;justify-content:center;min-width:140px}.result-band-right svg{display:block;margin:0 auto}.result-review-btn,.result-retake-btn{width:max-content!important}.loading,.error{font-size:1.2rem;color:var(--color-primary);text-align:center;margin:3rem auto}.test-readiness-screen{min-height:100vh;display:flex;align-items:center;justify-content:center}.test-readiness-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000008;padding:2.5rem 2.5rem 2rem;max-width:700px;width:100%;display:flex;flex-direction:column;align-items:center;gap:1.2rem}.test-readiness-info{font-size:1.05rem;color:#374151;margin-bottom:1.2rem;text-align:left}.test-readiness-info ul{padding-left:1.2rem;margin:0}.test-readiness-info li{margin-bottom:.7rem;line-height:1.6}.test-readiness-btn{min-width:100%}@media screen and (min-width:50px)and (max-width:767px){.test-page{padding:.5rem 0}.test-main-header{flex-direction:column;text-align:left;padding:1rem}.test-main-header>*{width:100%}.test-question-card{padding:1rem}.test-option{gap:.5rem;padding:.5rem}.test-readiness-card{padding:1rem 1.5rem}.result-card-band{padding:1.2rem .5rem;max-width:98vw}.result-card-content{flex-direction:column;gap:1.5rem;align-items:stretch}.result-band-right{min-width:0;justify-content:flex-start}}.admin-page{max-width:1200px;padding:var(--space-4)}@media(max-width:768px){.admin-page{padding:var(--space-3)}}@media(max-width:480px){.admin-page{padding:var(--space-2)}}.page-header-content{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}@media(max-width:768px){.page-header-content{flex-direction:column;align-items:stretch;gap:var(--space-3)}}.btn-create{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.btn-create:hover{background:var(--primary-700);transform:translateY(-1px)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6);padding:var(--space-6) 0}@media(max-width:768px){.stats-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-3);padding:var(--space-4) 0}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr;gap:var(--space-2)}}.stat-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-5);display:flex;align-items:center;gap:var(--space-4);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100)}.stat-content{display:flex;flex-direction:row;gap:var(--space-1)}.stat-icon{width:48px;height:48px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.stat-icon.reading{background:#dbeafe}.stat-icon.writing{background:#d1fae5}.stat-icon.listening{background:#fef3c7}.stat-icon.speaking{background:#fee2e2}.stat-icon.primary{background:var(--primary-50)}.stat-icon.success{background:var(--success-50)}.stat-icon.info{background:#e0e7ff}.stat-icon.warning{background:var(--warning-50)}.stat-info{display:flex;flex-direction:column}.stat-value{font-size:1.5rem;font-weight:700;color:var(--gray-900);line-height:1}.stat-label{font-size:.8rem;color:var(--gray-500);margin-top:var(--space-1)}.admin-filters{padding:var(--space-4);margin-bottom:var(--space-6)}.filters-form{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}@media(max-width:768px){.filters-form{flex-direction:column;align-items:stretch;gap:var(--space-2)}}.filter-group{display:flex;align-items:center;gap:var(--space-2)}.filter-group label{font-size:.85rem;font-weight:500;color:var(--gray-600)}.filter-select{padding:var(--space-2) var(--space-3);border:1px solid var(--gray-200);border-radius:var(--radius-md);background:#fff;font-size:.875rem;color:var(--gray-700);cursor:pointer;transition:all var(--transition-fast)}.filter-select:hover{border-color:var(--gray-300)}.filter-select:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 2px var(--primary-100)}.role-badges-cell{display:flex;flex-wrap:wrap;gap:var(--space-1)}.search-input-wrapper{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);flex:1;min-width:240px}@media(max-width:768px){.search-input-wrapper{min-width:unset;width:100%}}.search-input-wrapper svg{color:var(--gray-400);flex-shrink:0}.search-input{border:none;background:none;outline:none;flex:1;font-size:.9rem;color:var(--gray-700)}.search-input::placeholder{color:var(--gray-400)}.filter-select{padding:var(--space-2) var(--space-4);background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);font-size:.9rem;color:var(--gray-700);min-width:140px;cursor:pointer}.filter-btn{padding:var(--space-2) var(--space-5);background:var(--gray-900);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.filter-btn:hover{background:var(--gray-800)}.admin-table-wrapper{overflow-x:auto}.admin-table-wrapper .card-header{border-bottom:none;padding-bottom:0}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{padding:var(--space-4);text-align:left;border-bottom:1px solid var(--gray-100)}.admin-table th{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;background:var(--gray-50)}.admin-table td{font-size:.9rem;color:var(--gray-700)}.admin-table tbody tr:hover{background:var(--gray-50)}.user-cell{display:flex;align-items:center;gap:var(--space-3)}.user-avatar-small{width:32px;height:32px;border-radius:50%;background:var(--primary-100);color:var(--primary-600);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600;flex-shrink:0}.test-title-cell{font-weight:500;color:var(--gray-900)}.role-badge,.type-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.badge-admin{background:#fee2e2;color:#dc2626}.badge-teacher{background:#dbeafe;color:#2563eb}.badge-student{background:#d1fae5;color:#059669}.badge-reading{background:#dbeafe;color:#2563eb}.badge-writing{background:#d1fae5;color:#059669}.badge-listening{background:#fef3c7;color:#d97706}.badge-speaking{background:#fee2e2;color:#dc2626}.status-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500}.status-badge.active,.status-badge.published{background:var(--success-50);color:var(--success-600)}.status-badge.inactive{background:var(--gray-100);color:var(--gray-500)}.status-badge.draft{background:var(--warning-50);color:var(--warning-600)}.score-badge{display:inline-block;padding:2px 10px;background:var(--primary-50);color:var(--primary-600);border-radius:var(--radius-md);font-size:.85rem;font-weight:600}.score-na{color:var(--gray-400)}.action-buttons{display:flex;gap:var(--space-2)}.action-btn{width:32px;height:32px;border-radius:var(--radius-md);border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.action-btn:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--gray-900)}.action-btn.danger:hover{background:var(--error-50);border-color:var(--error-200);color:var(--error-500)}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-4);border-top:1px solid var(--gray-100)}.pagination button{padding:var(--space-2) var(--space-4);background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);font-size:.85rem;color:var(--gray-700);cursor:pointer;transition:all var(--transition-fast)}.pagination button:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-300)}.pagination button:disabled{opacity:.5;cursor:not-allowed}.pagination span{font-size:.85rem;color:var(--gray-500)}.loading-state,.empty-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);text-align:center}.loading-state .spinner{width:32px;height:32px;border:3px solid var(--gray-200);border-top-color:var(--primary-600);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:var(--space-4)}@keyframes spin{to{transform:rotate(360deg)}}.loading-state p,.empty-state p,.error-state p{color:var(--gray-500);font-size:.9rem}.error-state button{margin-top:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer}.create-modal{max-width:450px}.create-modal h2{margin-bottom:var(--space-3)}.create-modal>p{color:var(--gray-500);font-size:.9rem;line-height:1.6;margin-bottom:var(--space-6)}.create-modal .modal-actions{justify-content:flex-end}@media(max-width:768px){.page-header-content{flex-direction:column}.btn-create{width:100%;justify-content:center}.filters-form{flex-direction:column}.search-input-wrapper,.filter-select,.filter-btn{width:100%}.stats-grid{grid-template-columns:repeat(2,1fr)}.admin-table-wrapper{overflow-x:scroll;-webkit-overflow-scrolling:touch}.admin-table{min-width:600px}.admin-table th,.admin-table td{padding:var(--space-2) var(--space-3);font-size:.8rem}.user-cell{gap:var(--space-2)}.user-avatar-small{width:24px;height:24px;font-size:.6rem}.action-buttons{gap:var(--space-1)}.action-btn{width:28px;height:28px}.pagination{flex-direction:column;gap:var(--space-2)}.pagination button{min-width:120px}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}.admin-table{min-width:500px}.stat-card{padding:var(--space-3);gap:var(--space-3)}.stat-icon{width:36px;height:36px;font-size:1.2rem}.stat-value{font-size:1.2rem}}.test-editor{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.test-editor .page-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-6)}@media(max-width:768px){.test-editor .page-header{flex-direction:column;align-items:stretch;gap:var(--space-3)}.test-editor .header-actions{justify-content:stretch}.test-editor .header-actions button,.test-editor .header-actions .btn-primary,.test-editor .header-actions .btn-secondary{flex:1}}.test-editor .page-header-left{display:flex;flex-direction:column;gap:var(--space-2)}.test-editor .page-title-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.test-editor .page-title-row h1{margin:0}.test-editor .header-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.back-link{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--primary-600);text-decoration:none;font-size:.9rem;font-weight:500;padding:var(--space-2) 0;transition:all var(--transition-fast)}.back-link:hover{color:var(--primary-700);gap:var(--space-3)}.back-link .back-icon{transition:transform var(--transition-fast)}.back-link:hover .back-icon{transform:translate(-3px)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:.8rem;font-weight:600;text-transform:capitalize}.status-badge.draft{background:var(--warning-50);color:var(--warning-700);border:1px solid var(--warning-200)}.status-badge.published{background:var(--success-50);color:var(--success-700);border:1px solid var(--success-200)}.status-badge.archived{background:var(--gray-100);color:var(--gray-600);border:1px solid var(--gray-200)}.btn-success{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 4px #05966933}.btn-success:hover{background:linear-gradient(135deg,#059669,#047857);transform:translateY(-1px);box-shadow:0 4px 8px #0596694d}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:linear-gradient(135deg,var(--primary-500),var(--primary-600));color:#fff;border:none;border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 4px #2563eb33}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-600),var(--primary-700));transform:translateY(-1px);box-shadow:0 4px 8px #2563eb4d}.btn-primary:disabled{opacity:.7;cursor:not-allowed;transform:none}.btn-secondary{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:#fff;color:var(--gray-700);border:1px solid var(--gray-300);border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.btn-secondary:hover{background:var(--gray-50);border-color:var(--gray-400)}.btn-cancel{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:transparent;color:var(--gray-600);border:1px solid var(--gray-300);border-radius:var(--radius-lg);font-size:.9rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-cancel:hover{background:var(--gray-100);color:var(--gray-700)}.settings-card .card-header{margin-bottom:var(--space-5)}.settings-card .card-title-row{display:flex;align-items:center;gap:var(--space-2)}.settings-card .card-icon{font-size:1.25rem}.settings-card .card-subtitle{display:block;font-size:.85rem;color:var(--gray-500);margin-top:var(--space-1)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}@media(max-width:768px){.form-grid{grid-template-columns:1fr;gap:var(--space-3)}}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-group.full-width{grid-column:1 / -1}.form-group label{font-size:.85rem;font-weight:600;color:var(--gray-700)}.form-group input,.form-group select,.form-group textarea{padding:var(--space-3) var(--space-4);border:1px solid var(--gray-300);border-radius:var(--radius-lg);font-size:.9rem;transition:all var(--transition-fast);background:#fff}.form-group input:hover,.form-group select:hover,.form-group textarea:hover{border-color:var(--gray-400)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px #2563eb1a}.form-actions{display:flex;gap:var(--space-3);margin-top:var(--space-5);justify-content:flex-end}@media(max-width:480px){.form-actions{flex-direction:column-reverse;gap:var(--space-2)}.form-actions .btn-secondary,.form-actions .btn-primary{width:100%;justify-content:center}}.form-header{margin-bottom:var(--space-4)}.form-header h3{font-size:1.1rem;font-weight:600;color:var(--gray-800);margin-bottom:var(--space-1)}.form-subtitle{font-size:.85rem;color:var(--gray-500)}.section-tabs-container{margin-bottom:var(--space-5)}.section-tabs{display:flex;gap:var(--space-3);overflow-x:auto;padding:var(--space-2) 0;-webkit-overflow-scrolling:touch}.section-tabs::-webkit-scrollbar{height:4px}.section-tabs::-webkit-scrollbar-track{background:var(--gray-100);border-radius:2px}.section-tabs::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:2px}.section-tab{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-5);background:#fff;border:2px solid var(--gray-200);border-radius:var(--radius-xl);font-size:.85rem;font-weight:500;color:var(--gray-600);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);min-width:140px}@media(max-width:768px){.section-tab{min-width:120px;padding:var(--space-3) var(--space-4);gap:var(--space-1)}.section-tab .tab-icon{font-size:1.2rem}.section-tab .tab-label{font-size:.8rem}}@media(max-width:480px){.section-tab{min-width:100px;padding:var(--space-2) var(--space-3)}}.section-tab:hover{background:var(--gray-50);border-color:var(--gray-300);transform:translateY(-2px)}.section-tab.active{background:linear-gradient(135deg,var(--primary-500),var(--primary-600));color:#fff;border-color:var(--primary-600);box-shadow:0 4px 12px #2563eb4d}.section-tab .tab-icon{font-size:1.5rem}.section-tab .tab-label{font-weight:600;font-size:.9rem}.section-tab .tab-stats{display:flex;gap:var(--space-2)}.section-tab .stat-badge{font-size:.7rem;padding:2px 6px;border-radius:var(--radius-full);background:#0000001a}.section-tab.active .stat-badge{background:#fff3}.sections-card{animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.sections-card .section-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--gray-100);flex-wrap:wrap;gap:var(--space-3)}@media(max-width:768px){.sections-card .section-header{flex-direction:column;align-items:stretch;gap:var(--space-2)}}.sections-card .section-header-left{display:flex;flex-direction:column;gap:var(--space-1)}.sections-card .section-description{font-size:.85rem;color:var(--gray-500);margin:0}.btn-add-section{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:#fff;color:var(--primary-600);border:2px dashed var(--primary-300);border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.btn-add-section:hover{background:var(--primary-50);border-color:var(--primary-500);border-style:solid}.btn-icon-left{font-size:.8rem}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-10) var(--space-6);background:var(--gray-50);border:2px dashed var(--gray-200);border-radius:var(--radius-xl);text-align:center}.empty-state .empty-icon{font-size:3rem;margin-bottom:var(--space-4);opacity:.6}.empty-state h3{font-size:1.1rem;font-weight:600;color:var(--gray-700);margin-bottom:var(--space-2)}.empty-state p{font-size:.9rem;color:var(--gray-500);margin:0}.sections-list{display:flex;flex-direction:column;gap:var(--space-4)}.section-item{background:#fff;border-radius:var(--radius-xl);padding:var(--space-5);border:1px solid var(--gray-200);transition:all var(--transition-fast);box-shadow:0 1px 3px #0000000d}.section-item:hover{border-color:var(--gray-300);box-shadow:0 4px 12px #00000014}.section-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);gap:var(--space-3);flex-wrap:wrap}.section-item-title{display:flex;align-items:center;gap:var(--space-3)}.section-number{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-500),var(--primary-600));color:#fff;border-radius:var(--radius-full);font-size:.85rem;font-weight:700;flex-shrink:0}.section-title-info h3{font-size:1rem;font-weight:600;color:var(--gray-900);margin:0 0 var(--space-1) 0}.question-count-badge{font-size:.75rem;color:var(--gray-500);background:var(--gray-100);padding:2px 8px;border-radius:var(--radius-full)}.section-item-actions{display:flex;gap:var(--space-2)}.btn-action{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);color:var(--gray-600)}.btn-action:hover{background:var(--gray-50);border-color:var(--gray-300)}.btn-action.add{color:var(--primary-600);border-color:var(--primary-200)}.btn-action.add:hover{background:var(--primary-50);border-color:var(--primary-400)}.btn-action.danger:hover{background:#fef2f2;border-color:#fecaca;color:#dc2626}.btn-action-text{display:none}@media(min-width:640px){.btn-action-text{display:inline}}.section-instructions-box{background:var(--gray-50);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);border-left:3px solid var(--primary-400)}.section-instructions-box .instructions-label{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:var(--space-1)}.section-instructions-box p{font-size:.85rem;color:var(--gray-700);margin:0;line-height:1.5}.questions-list{display:flex;flex-direction:column;gap:var(--space-2)}.question-item-compact{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);font-size:.85rem;transition:all var(--transition-fast);border:1px solid transparent}.question-item-compact:hover{background:#fff;border-color:var(--gray-200)}.q-number{font-weight:700;color:var(--primary-600);min-width:36px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--primary-50);border-radius:var(--radius-md);font-size:.8rem}.q-content{flex:1;display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.q-text{color:var(--gray-700);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.q-type{font-size:.7rem;padding:2px 8px;background:var(--gray-200);color:var(--gray-600);border-radius:var(--radius-full);text-transform:capitalize;width:fit-content}.q-actions{display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.question-item-compact:hover .q-actions{opacity:1}.btn-icon-sm{width:28px;height:28px;border:none;background:#fff;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.85rem;transition:all var(--transition-fast);border:1px solid var(--gray-200)}.btn-icon-sm:hover{background:var(--gray-100)}.btn-icon-sm.edit:hover{background:var(--primary-50);border-color:var(--primary-300)}.btn-icon-sm.danger:hover{background:#fef2f2;border-color:#fecaca;color:#dc2626}.no-questions{display:flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:.85rem;color:var(--gray-400);padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg);border:1px dashed var(--gray-200)}.add-section-form{margin-top:var(--space-6);padding:var(--space-5);background:var(--gray-50);border-radius:var(--radius-xl);border:1px solid var(--gray-200)}.btn-icon{width:32px;height:32px;border:none;background:#fff;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all var(--transition-fast)}.btn-icon:hover{background:var(--gray-100)}.btn-icon.danger:hover{background:#fee2e2}.btn-icon.small{width:24px;height:24px;font-size:.9rem}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);animation:fadeIn .2s ease-out}@media(max-width:768px){.modal-overlay{padding:var(--space-3);align-items:flex-start;padding-top:var(--space-8)}}@media(max-width:480px){.modal-overlay{padding:var(--space-2);padding-top:var(--space-6)}}.modal-content{background:#fff;border-radius:var(--radius-2xl);padding:var(--space-6);max-width:500px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out;box-shadow:0 20px 60px #0000004d}@media(max-width:768px){.modal-content{padding:var(--space-5);max-height:95vh;border-radius:var(--radius-xl)}}@media(max-width:480px){.modal-content{padding:var(--space-4);max-width:100%;border-radius:var(--radius-lg);margin:0}}.modal-content.large{max-width:700px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--gray-100)}.modal-header h2{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin:0;display:flex;align-items:center;gap:var(--space-2)}.modal-close-btn{width:36px;height:36px;border:none;background:var(--gray-100);border-radius:var(--radius-full);cursor:pointer;font-size:1.5rem;color:var(--gray-500);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);line-height:1}.modal-close-btn:hover{background:var(--gray-200);color:var(--gray-700)}.modal-content h2:not(.modal-header h2){font-size:1.25rem;font-weight:700;color:var(--gray-900);margin-bottom:var(--space-5)}.modal-actions{display:flex;gap:var(--space-3);margin-top:var(--space-6);justify-content:flex-end;padding-top:var(--space-4);border-top:1px solid var(--gray-100)}@media(max-width:480px){.modal-actions{flex-direction:column-reverse;gap:var(--space-2)}.modal-actions .btn-secondary,.modal-actions .btn-primary{width:100%;justify-content:center}}.grading-page .subtitle{font-size:.95rem;color:var(--gray-500);margin-top:var(--space-1)}.scores-row{display:flex;gap:var(--space-6)}@media(max-width:768px){.scores-row{flex-wrap:wrap;gap:var(--space-4)}.score-item{flex:1;min-width:calc(50% - var(--space-2))}}@media(max-width:480px){.scores-row{flex-direction:column;gap:var(--space-3)}.score-item{min-width:unset}}.score-item{display:flex;flex-direction:column;align-items:center;padding:var(--space-4) var(--space-6);background:var(--gray-50);border-radius:var(--radius-lg)}.score-label{font-size:.85rem;color:var(--gray-600);margin-bottom:var(--space-2)}.score-value{font-size:2rem;font-weight:700;color:var(--gray-900)}.score-raw{font-size:.75rem;color:var(--gray-400);margin-top:var(--space-1)}.answers-list{display:flex;flex-direction:column;gap:var(--space-4)}.answer-block{padding:var(--space-4);background:var(--gray-50);border-radius:var(--radius-lg)}.answer-block h3{font-size:.95rem;font-weight:600;color:var(--gray-800);margin-bottom:var(--space-3)}.answer-content{background:#fff;padding:var(--space-4);border-radius:var(--radius-md);font-size:.9rem;line-height:1.7;color:var(--gray-700);white-space:pre-wrap;max-height:300px;overflow-y:auto}.word-count{font-size:.75rem;color:var(--gray-400);text-align:right;margin-top:var(--space-2)}.empty-text{font-size:.9rem;color:var(--gray-400);font-style:italic}.grade-input-row{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--gray-200)}.grade-input-row label{font-size:.9rem;font-weight:600;color:var(--gray-700)}.grade-input-row input{width:80px;padding:var(--space-2) var(--space-3);border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:1.25rem;font-weight:600;text-align:center}.feedback-textarea{width:100%;padding:var(--space-4);border:1px solid var(--gray-300);border-radius:var(--radius-lg);font-size:.9rem;line-height:1.6;resize:vertical}.feedback-textarea:focus{outline:none;border-color:var(--primary-500)}.actions-bar{display:flex;gap:var(--space-4);padding:var(--space-6) 0}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--gray-100)}.data-table th{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;background:var(--gray-50)}.data-table td{font-size:.9rem;color:var(--gray-700)}.student-cell{display:flex;flex-direction:column}.student-cell strong{color:var(--gray-900)}.student-cell small{font-size:.75rem;color:var(--gray-400)}.score-cell{text-align:center;font-weight:600}.score-cell.pending{color:var(--warning-500)}.btn-small{padding:var(--space-2) var(--space-4);font-size:.8rem;font-weight:600;border:none;border-radius:var(--radius-md);cursor:pointer;text-decoration:none}.btn-small.primary{background:var(--primary-600);color:#fff}.btn-small.primary:hover{background:var(--primary-700)}.roles-checkboxes{display:flex;flex-wrap:wrap;gap:var(--space-3)}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);font-size:.9rem;color:var(--gray-700);cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary-600)}.modal-subtitle{font-size:.9rem;color:var(--gray-500);margin-top:-.5rem;margin-bottom:var(--space-4)}.badge-admin{background:#fee2e2;color:#991b1b}.badge-teacher{background:#dbeafe;color:#1e40af}.badge-student{background:#d1fae5;color:#065f46}.badge-visitor{background:var(--gray-100);color:var(--gray-600)}.stat-card.highlight{background:linear-gradient(135deg,var(--primary-500) 0%,var(--primary-700) 100%);color:#fff}.stat-card.highlight .stat-icon{background:#fff3}.stat-card.highlight .stat-label{color:#fffc}.section-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4)}.section-stat{display:flex;flex-direction:column;align-items:center;padding:var(--space-5);background:var(--gray-50);border-radius:var(--radius-lg);text-align:center}.section-icon{font-size:2rem;margin-bottom:var(--space-2)}.section-name{font-weight:600;color:var(--gray-700);margin-bottom:var(--space-1)}.section-score{font-size:1.5rem;font-weight:700;color:var(--primary-600)}.badge-in_progress{background:var(--warning-50);color:var(--warning-700)}.badge-submitted{background:#dbeafe;color:#1e40af}.badge-graded{background:var(--success-50);color:var(--success-700)}.badge-expired{background:var(--gray-100);color:var(--gray-600)}.tabs{display:flex;gap:var(--space-2);border-bottom:2px solid var(--gray-200);padding-bottom:0}.tab-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:transparent;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;font-size:.95rem;font-weight:500;color:var(--gray-600)}.listening-audio-section{background:linear-gradient(135deg,#fefce8,#fef9c3);border:2px solid #fde047;border-radius:var(--radius-xl);padding:var(--space-5);margin-bottom:var(--space-5);transition:all var(--transition-fast)}.listening-audio-section:hover{box-shadow:0 4px 12px #fde0474d}.listening-audio-section h3{font-size:1.1rem;font-weight:700;color:var(--gray-800);margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2)}.listening-audio-section .help-text{font-size:.85rem;color:var(--gray-600);margin-bottom:var(--space-4);line-height:1.5}.listening-audio-section .existing-audio{display:flex;flex-direction:column;gap:var(--space-4)}.listening-audio-section .audio-preview{background:#fff;padding:var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--gray-200);box-shadow:0 2px 8px #0000000d}.listening-audio-section .audio-preview audio{width:100%;border-radius:var(--radius-md)}.listening-audio-section .audio-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.listening-audio-section .pending-upload{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;background:#fff;padding:var(--space-4);border-radius:var(--radius-lg);border:2px solid var(--primary-200);animation:pulseGlow 2s infinite}@keyframes pulseGlow{0%,to{box-shadow:0 0 #2563eb33}50%{box-shadow:0 0 0 8px #2563eb00}}.listening-audio-section .pending-upload span{color:var(--gray-700);font-size:.9rem;font-weight:500}.listening-audio-section .no-audio{display:flex;flex-direction:column;align-items:center;width:100%}.listening-audio-section .upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:var(--space-8);background:#fff;border:2px dashed var(--gray-300);border-radius:var(--radius-xl);cursor:pointer;transition:all var(--transition-fast)}.tab-btn:hover{color:var(--primary-600);background:var(--gray-50)}.tab-btn.active{color:var(--primary-600);border-bottom-color:var(--primary-600);font-weight:600}.tab-btn .badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 var(--space-2);background:var(--primary-600);color:#fff;font-size:.75rem;font-weight:600;border-radius:10px}.tab-btn:not(.active) .badge{background:var(--gray-400)}.listening-audio-section .upload-area:hover{border-color:var(--primary-400);background:var(--primary-50);transform:scale(1.01)}.listening-audio-section .upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center}.listening-audio-section .upload-icon{font-size:3rem;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.listening-audio-section .upload-placeholder span:nth-child(2){font-weight:600;color:var(--gray-700);font-size:1rem}.listening-audio-section .upload-hint{font-size:.8rem;color:var(--gray-400);background:var(--gray-100);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full)}.btn-danger{display:inline-flex;align-items:center;gap:var(--space-2);background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:none;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 4px #dc262633}.btn-danger:hover{background:linear-gradient(135deg,#dc2626,#b91c1c);transform:translateY(-1px);box-shadow:0 4px 8px #dc26264d}.rich-text-editor{border:1px solid #e5e7eb;border-radius:.5rem;overflow:hidden;background:#fff}.editor-toolbar{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem;background:#f9fafb;border-bottom:1px solid #e5e7eb}.editor-toolbar button{background:none;border:none;padding:.35rem;border-radius:.25rem;color:#4b5563;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.editor-toolbar button:hover{background:#e5e7eb;color:#111827}.editor-toolbar button.is-active{background:#e0e7ff;color:#4f46e5}.editor-toolbar button:disabled{opacity:.5;cursor:not-allowed}.toolbar-separator{width:1px;background:#e5e7eb;margin:0 .25rem}.editor-content{min-height:300px;padding:1rem}.ProseMirror{outline:none;min-height:300px}.ProseMirror p.is-editor-empty:first-child:before{color:#9ca3af;content:attr(data-placeholder);float:left;height:0;pointer-events:none}.ProseMirror>*+*{margin-top:.75em}.ProseMirror ul,.ProseMirror ol{padding:0 1rem}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3,.ProseMirror h4,.ProseMirror h5,.ProseMirror h6{line-height:1.1}.ProseMirror blockquote{border-left:3px solid #e5e7eb;padding-left:1rem;color:#4b5563;font-style:italic}.ProseMirror img{max-width:100%;height:auto;border-radius:.5rem}.ProseMirror a{color:#4f46e5;text-decoration:underline;cursor:pointer}.calendar-empty{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:3rem 2rem;background:var(--card-bg, #fff);border-radius:12px;border:2px dashed var(--border-color, #e5e7eb);text-align:center}.calendar-empty h3{margin:0;font-size:1.25rem;color:var(--text-primary, #111827)}.calendar-empty p{margin:0;color:var(--text-secondary, #6b7280);max-width:400px}.calendar-empty svg{color:var(--text-secondary, #9ca3af)}.calendar-timeline{display:flex;flex-direction:column;gap:1.5rem}.calendar-day-group{background:var(--card-bg, #fff);border-radius:12px;border:1px solid var(--border-color, #e5e7eb);overflow:hidden}.calendar-day-header{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;font-weight:600;font-size:.95rem}.calendar-day-header svg{flex-shrink:0}.calendar-slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;padding:1rem 1.25rem}.calendar-slot-card{position:relative;display:flex;flex-direction:column;gap:.5rem;padding:1rem;border-radius:10px;border:1px solid var(--border-color, #e5e7eb);background:var(--bg-secondary, #f9fafb);transition:box-shadow .2s}.calendar-slot-card:hover{box-shadow:0 4px 12px #00000014}.calendar-slot-card.booked{border-left:4px solid #f59e0b;background:#fffbeb}.slot-time{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.95rem;color:var(--text-primary, #111827)}.slot-time svg{color:#4f46e5;flex-shrink:0}.slot-title{font-weight:500;color:var(--text-primary, #374151)}.slot-description{font-size:.85rem;color:var(--text-secondary, #6b7280);line-height:1.4}.slot-status{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.25rem}.slot-visitor{font-size:.85rem;color:var(--text-secondary, #6b7280);font-style:italic}.slot-actions{display:flex;gap:.5rem;margin-top:.25rem}.booking-slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;padding:1rem 1.25rem}.booking-slot-card{cursor:pointer;display:flex;flex-direction:column;gap:.5rem;padding:1rem;border-radius:10px;border:2px solid var(--border-color, #e5e7eb);background:var(--card-bg, #fff);transition:border-color .2s,box-shadow .2s,transform .15s}.booking-slot-card:hover{border-color:#4f46e5;box-shadow:0 4px 16px #4f46e526;transform:translateY(-2px)}.slot-teacher{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--text-secondary, #6b7280)}.slot-teacher svg{color:#4f46e5}.btn-book{margin-top:auto;padding:.5rem 1rem;border:none;border-radius:8px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;font-weight:600;font-size:.85rem;cursor:pointer;transition:opacity .2s;text-align:center}.btn-book:hover{opacity:.9}.booking-section{margin-bottom:2rem}.section-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #111827);margin:0 0 1rem}.my-appointments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.my-appointment-card{display:flex;flex-direction:column;gap:.6rem;padding:1.25rem;border-radius:12px;border:1px solid var(--border-color, #e5e7eb);background:var(--card-bg, #fff);box-shadow:0 1px 4px #0000000a}.apt-header{display:flex;justify-content:space-between;align-items:center}.apt-datetime,.apt-teacher{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-primary, #374151)}.apt-datetime svg,.apt-teacher svg{color:#4f46e5;flex-shrink:0}.apt-reason{font-size:.85rem;color:var(--text-secondary, #6b7280)}.calendar-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.calendar-modal{background:var(--card-bg, #fff);border-radius:16px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0003}.calendar-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.calendar-modal-header h2{margin:0;font-size:1.15rem;font-weight:600}.modal-close-btn{background:none;border:none;cursor:pointer;padding:.25rem;color:var(--text-secondary, #6b7280);border-radius:6px;transition:background .15s}.modal-close-btn:hover{background:var(--bg-secondary, #f3f4f6)}.calendar-modal-form{padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.calendar-modal-form .form-group{display:flex;flex-direction:column;gap:.375rem}.calendar-modal-form label{font-size:.875rem;font-weight:500;color:var(--text-primary, #374151)}.calendar-modal-form input,.calendar-modal-form textarea,.calendar-modal-form select{padding:.625rem .875rem;border:1px solid var(--border-color, #d1d5db);border-radius:8px;font-size:.9rem;background:var(--bg-secondary, #f9fafb);color:var(--text-primary, #111827);transition:border-color .15s}.calendar-modal-form input:focus,.calendar-modal-form textarea:focus,.calendar-modal-form select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.calendar-modal-actions{display:flex;justify-content:flex-end;gap:.75rem;padding-top:.5rem}.btn-secondary{padding:.625rem 1.25rem;border:1px solid var(--border-color, #d1d5db);border-radius:8px;background:var(--card-bg, #fff);color:var(--text-primary, #374151);font-weight:500;cursor:pointer;transition:background .15s}.btn-secondary:hover{background:var(--bg-secondary, #f3f4f6)}.booking-summary{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.5rem;background:linear-gradient(135deg,#eef2ff,#f5f3ff);border-bottom:1px solid var(--border-color, #e5e7eb)}.booking-summary-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-primary, #374151)}.booking-summary-item svg{color:#4f46e5;flex-shrink:0}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group select{padding:.5rem .75rem;border:1px solid var(--border-color, #d1d5db);border-radius:8px;font-size:.9rem;background:var(--card-bg, #fff);color:var(--text-primary, #111827)}.filter-group svg{color:var(--text-secondary, #6b7280)}.status-completed{background:#dbeafe;color:#1e40af}.success-text{color:#059669}@media(max-width:768px){.calendar-slots-grid,.booking-slots-grid,.my-appointments-grid,.form-row{grid-template-columns:1fr}.calendar-modal{max-width:100%;margin:.5rem}}
