@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--bg-primary:#f8f9ff;--bg-secondary:#fff;--bg-surface:#fff;--bg-card:#fff;--bg-hover:#00236f0a;--bg-active:#00236f14;--gradient-primary:linear-gradient(135deg, #00236f, #1e3a8a);--gradient-secondary:linear-gradient(135deg, #006a61, #00236f);--gradient-accent:linear-gradient(135deg, #1e3a8a, #006a61);--gradient-mesh:radial-gradient(at 20% 80%, #00236f0f 0%, transparent 50%), radial-gradient(at 80% 20%, #006a610d 0%, transparent 50%), radial-gradient(at 50% 50%, #00236f08 0%, transparent 50%);--text-primary:#0b1c30;--text-secondary:#444651;--text-muted:#757682;--text-inverse:#fff;--primary:#00236f;--primary-hover:#1e3a8a;--secondary:#006a61;--success:#006f66;--success-bg:#89f5e7;--error:#ba1a1a;--error-bg:#ffdad6;--warning:#9a3412;--warning-bg:#ffedd5;--info:#00236f;--info-bg:#d3e4fe;--border-color:#e2e8f0;--border-hover:#c5c5d3;--border-focus:#00236f59;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:20px;--radius-full:9999px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000000a;--shadow-glow:0 0 20px #00236f1f;--transition:all .3s cubic-bezier(.4, 0, .2, 1);--transition-fast:all .15s cubic-bezier(.4, 0, .2, 1);--transition-slow:all .5s cubic-bezier(.4, 0, .2, 1);--blur:blur(8px);--blur-heavy:blur(12px);--sidebar-width:256px;--sidebar-collapsed:72px;--topbar-height:64px;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.6;overflow-x:hidden}#root{min-height:100vh}a{color:var(--primary);transition:var(--transition-fast);text-decoration:none}a:hover{color:var(--primary-hover)}img{max-width:100%;display:block}input,button,textarea,select{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:#c5c5d3}::-webkit-scrollbar-thumb:hover{background:#757682}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes gradientMove{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-fade-in{animation:.4s ease-out forwards fadeIn}.animate-fade-in-up{animation:.5s ease-out forwards fadeInUp}.animate-slide-up{animation:.5s ease-out forwards slideUp}.animate-slide-down{animation:.3s ease-out forwards slideDown}.animate-scale-in{animation:.3s ease-out forwards scaleIn}.animate-pulse{animation:2s ease-in-out infinite pulse}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.btn{cursor:pointer;transition:var(--transition);white-space:nowrap;-webkit-user-select:none;user-select:none;letter-spacing:.01em;border:none;justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";transition:var(--transition-fast);background:#fff0;position:absolute;inset:0}.btn:hover:after{background:#ffffff0d}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn:disabled:after{display:none}.btn-sm{border-radius:var(--radius-sm);padding:6px 14px;font-size:.8125rem}.btn-md{border-radius:var(--radius-md);padding:10px 20px;font-size:.875rem}.btn-lg{border-radius:var(--radius-lg);padding:14px 28px;font-size:1rem}.btn-primary{color:#fff;background:#006a61;box-shadow:0 4px 15px #006a6140}.btn-primary:hover{background:#00201d;transform:translateY(-1px);box-shadow:0 6px 20px #006a6159}.btn-secondary{color:var(--text-primary);border:1px solid var(--border-color);background:#fff}.btn-secondary:hover{border-color:var(--border-hover);background:#eff4ff}.btn-danger{background:var(--error);color:#fff;box-shadow:0 4px 15px #ba1a1a40}.btn-danger:hover{background:#93000a;transform:translateY(-1px);box-shadow:0 6px 20px #ba1a1a59}.btn-ghost{color:var(--text-secondary);background:0 0;border:none}.btn-ghost:hover{color:var(--text-primary);background:var(--bg-hover)}.btn-loading{pointer-events:none;opacity:.8}.btn .spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);font-size:.875rem;font-weight:500}.form-label .required{color:var(--error);margin-left:2px}.input-wrapper{align-items:center;display:flex;position:relative}.input-icon{color:var(--text-muted);pointer-events:none;z-index:1;font-size:1rem;position:absolute;left:14px}.input{border-radius:var(--radius-md);width:100%;color:var(--text-primary);transition:var(--transition);background:#fff;border:1px solid #c5c5d3;outline:none;padding:12px 16px;font-size:.9375rem}.input.has-icon{padding-left:42px}.input::placeholder{color:var(--text-muted)}.input:hover{border-color:var(--border-hover)}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #00236f1f}.input.input-error{border-color:var(--error)}.input.input-error:focus{box-shadow:0 0 0 3px #ef444426}.error-message{color:var(--error);align-items:center;gap:4px;font-size:.8125rem;display:flex}textarea.input{resize:vertical;min-height:100px;line-height:1.6}select.input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23444651' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:36px}.card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:var(--transition);background:#fff;border:1px solid #e2e8f0;padding:24px}.card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md)}.card-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.card-title{color:var(--text-primary);font-size:1.125rem;font-weight:600}.card-subtitle{color:var(--text-secondary);margin-top:4px;font-size:.875rem}.stats-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:var(--transition);opacity:0;background:#fff;border:1px solid #e2e8f0;border-left:4px solid #006a61;align-items:flex-start;gap:16px;padding:24px;animation:.5s ease-out forwards fadeInUp;display:flex}.stats-card:hover{box-shadow:var(--shadow-md);border-color:#c5c5d3 #c5c5d3 #c5c5d3 #006a61;transform:translateY(-2px)}.stats-card .stats-icon{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.5rem;display:flex}.stats-card .stats-icon.primary{color:#00236f;background:#e5eeff}.stats-card .stats-icon.success{color:var(--success);background:#89f5e7}.stats-card .stats-icon.warning{color:#9a3412;background:#ffedd5}.stats-card .stats-icon.info{color:#00236f;background:#d3e4fe}.stats-card .stats-icon.error{color:#ba1a1a;background:#ffdad6}.stats-card .stats-info{flex:1}.stats-card .stats-label{color:#757682;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;font-size:.8125rem;font-weight:600}.stats-card .stats-value{color:#0b1c30;font-size:2rem;font-weight:700;line-height:1.2}.class-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:var(--transition);background:#fff;border:1px solid #e2e8f0;padding:24px;position:relative;overflow:hidden}.class-card:before{content:"";opacity:0;height:3px;transition:var(--transition);background:linear-gradient(90deg,#00236f,#006a61);position:absolute;top:0;left:0;right:0}.class-card:hover{box-shadow:var(--shadow-xl);border-color:#c5c5d3;transform:translateY(-4px)}.class-card:hover:before{opacity:1}.class-card .class-name{color:var(--text-primary);margin-bottom:8px;font-size:1.125rem;font-weight:600}.class-card .class-subject{color:var(--text-secondary);margin-bottom:16px;font-size:.875rem}.class-card .class-meta{color:var(--text-muted);align-items:center;gap:12px;font-size:.8125rem;display:flex}.class-card .class-student-count{align-items:center;gap:6px;display:flex}.table-container{width:100%;overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:.875rem}.table thead th{text-align:left;color:#444651;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;z-index:1;background:#eff4ff;border-bottom:1px solid #e2e8f0;padding:12px 16px;font-size:.8125rem;font-weight:600;position:sticky;top:0}.table tbody tr{transition:var(--transition-fast)}.table tbody tr:hover{background:var(--bg-hover)}.table tbody td{color:#0b1c30;vertical-align:middle;border-bottom:1px solid #e2e8f0;padding:14px 16px}.table tbody tr:last-child td{border-bottom:none}.table-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.table-search{min-width:250px;position:relative}.table-search .input{border-radius:var(--radius-full);background:#eff4ff;border-color:#0000;padding-left:40px}.table-search .search-icon{color:var(--text-muted);position:absolute;top:50%;left:14px;transform:translateY(-50%)}.table-pagination{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;display:flex}.table-pagination .pagination-info{color:var(--text-secondary);font-size:.8125rem}.table-pagination .pagination-controls{align-items:center;gap:4px;display:flex}.table-pagination .page-btn{color:#444651;border-radius:var(--radius-sm);cursor:pointer;width:32px;height:32px;transition:var(--transition-fast);background:#eff4ff;border:1px solid #e2e8f0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.table-pagination .page-btn:hover:not(:disabled){color:#00236f;background:#e5eeff;border-color:#00236f}.table-pagination .page-btn.active{color:#fff;background:#00236f;border-color:#0000}.table-pagination .page-btn:disabled{opacity:.3;cursor:not-allowed}.table-pagination .page-size-select{border-radius:var(--radius-sm);color:#0b1c30;cursor:pointer;background:#eff4ff;border:1px solid #e2e8f0;outline:none;padding:6px 10px;font-size:.8125rem}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#eff4ff,#f8fafc,#eff4ff) 0 0/200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-text{width:100%;height:14px;margin-bottom:8px}.skeleton-text.short{width:60%}.skeleton-row{border-bottom:1px solid var(--border-color);gap:16px;padding:12px 16px;display:flex}.skeleton-cell{border-radius:var(--radius-sm);background:linear-gradient(90deg,#eff4ff,#f8fafc,#eff4ff) 0 0/200% 100%;height:16px;animation:1.5s ease-in-out infinite shimmer}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.empty-state .empty-icon{opacity:.4;margin-bottom:16px;font-size:3.5rem}.empty-state .empty-title{color:var(--text-primary);margin-bottom:8px;font-size:1.125rem;font-weight:600}.empty-state .empty-description{color:var(--text-secondary);max-width:360px;font-size:.875rem;line-height:1.6}.badge{border-radius:var(--radius-full);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:4px;padding:4px 12px;font-size:.6875rem;font-weight:700;display:inline-flex}.badge-success{color:#00201d;background:#89f5e7}.badge-warning{color:#9a3412;background:#ffedd5}.badge-error{color:#ba1a1a;background:#ffdad6}.badge-info{color:#00236f;background:#d3e4fe}.badge-primary{color:#00236f;background:#e5eeff}.dropzone{border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:var(--transition);background:#f8f9ff;border:2px dashed #c5c5d3;padding:48px 24px;position:relative}.dropzone:hover,.dropzone.dragging{background:#006a610a;border-color:#006a61}.dropzone.dragging{box-shadow:0 0 20px #006a6126}.dropzone .dropzone-icon{opacity:.6;margin-bottom:16px;font-size:3rem}.dropzone .dropzone-title{color:var(--text-primary);margin-bottom:8px;font-size:1rem;font-weight:600}.dropzone .dropzone-subtitle{color:var(--text-secondary);font-size:.875rem}.dropzone .dropzone-browse{color:var(--primary);font-weight:600;text-decoration:underline}.dropzone-file{border-radius:var(--radius-md);background:#fff;border:1px solid #e2e8f0;align-items:center;gap:12px;margin-top:16px;padding:12px 16px;display:flex}.dropzone-file .file-icon{font-size:1.5rem}.dropzone-file .file-info{text-align:left;flex:1}.dropzone-file .file-name{color:var(--text-primary);font-size:.875rem;font-weight:500}.dropzone-file .file-size{color:var(--text-muted);font-size:.75rem}.dropzone-file .file-remove{background:var(--error-bg);width:32px;height:32px;color:var(--error);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);border:none;justify-content:center;align-items:center;font-size:1rem;display:flex}.dropzone-file .file-remove:hover{background:var(--error);color:#fff}.sidebar{width:var(--sidebar-width);z-index:100;height:100vh;transition:var(--transition);background:#e5eeff;border-right:1px solid #c5c5d3;flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow:hidden auto}.sidebar-logo{border-bottom:1px solid #c5c5d3;flex-shrink:0;align-items:center;gap:12px;padding:24px 20px;display:flex}.sidebar-logo .logo-icon{border-radius:var(--radius-md);color:#fff;background:#00236f;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.25rem;font-weight:700;display:flex}.sidebar-logo .logo-text{color:#00236f;font-size:1.25rem;font-weight:700}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex}.sidebar-section{margin-bottom:8px}.sidebar-section-title{color:#757682;text-transform:uppercase;letter-spacing:.1em;padding:8px 12px 4px;font-size:.6875rem;font-weight:600}.nav-link{border-radius:var(--radius-md);color:#444651;transition:var(--transition-fast);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:12px 16px;font-size:.9375rem;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{color:#0b1c30;background:#00236f0f}.nav-link.active{color:#90a8ff;box-shadow:none;background:#1e3a8a}.nav-link .nav-icon{text-align:center;flex-shrink:0;width:24px;font-size:1.1rem}.nav-link .nav-text{white-space:nowrap;flex:1}.sidebar-footer{border-top:1px solid #c5c5d3;flex-shrink:0;padding:16px}.sidebar-user{border-radius:var(--radius-md);transition:var(--transition-fast);align-items:center;gap:12px;padding:8px;display:flex}.sidebar-user:hover{background:#00236f0f}.sidebar-user .user-avatar-sm{border-radius:var(--radius-full);color:#fff;background:#00236f;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.875rem;font-weight:600;display:flex}.sidebar-user .user-info-sm{flex:1;min-width:0}.sidebar-user .user-name-sm{color:#0b1c30;white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.sidebar-user .user-role-sm{color:#757682;font-size:.75rem}.topbar{height:var(--topbar-height);z-index:50;background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:0 40px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:16px;display:flex}.topbar-hamburger{color:#444651;cursor:pointer;border-radius:var(--radius-md);width:40px;height:40px;transition:var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;display:none}.topbar-hamburger:hover{color:#0b1c30;background:#eff4ff}.topbar-title{color:#0b1c30;font-size:1.125rem;font-weight:600}.topbar-right{align-items:center;gap:12px;display:flex}.topbar-avatar{border-radius:var(--radius-full);color:#fff;cursor:pointer;width:40px;height:40px;transition:var(--transition);font-size:.9375rem;font-weight:600;font-family:var(--font-family);background:#00236f;border:none;justify-content:center;align-items:center;display:flex;position:relative}.topbar-avatar:hover{box-shadow:0 0 0 3px #00236f33}.topbar-dropdown{border-radius:var(--radius-lg);width:200px;box-shadow:var(--shadow-xl);z-index:200;background:#fff;border:1px solid #e2e8f0;padding:6px;animation:.2s ease-out slideDown;position:absolute;top:calc(100% + 8px);right:0}.topbar-dropdown .dropdown-item{border-radius:var(--radius-md);color:#444651;cursor:pointer;transition:var(--transition-fast);text-align:left;width:100%;font-size:.875rem;font-family:var(--font-family);background:0 0;border:none;align-items:center;gap:10px;padding:10px 12px;display:flex}.topbar-dropdown .dropdown-item:hover{color:#0b1c30;background:#eff4ff}.topbar-dropdown .dropdown-item.danger{color:#ba1a1a}.topbar-dropdown .dropdown-item.danger:hover{background:#ffdad6}.topbar-dropdown .dropdown-divider{background:#e2e8f0;height:1px;margin:4px 0}.dashboard-layout{min-height:100vh;display:flex}.dashboard-content{margin-left:var(--sidebar-width);min-height:100vh;transition:var(--transition);flex:1}.dashboard-main{padding:24px;animation:.3s ease-out fadeIn}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0006;justify-content:center;align-items:center;padding:20px;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);background:#fff;border:1px solid #e2e8f0;width:100%;max-width:480px;max-height:90vh;animation:.3s ease-out scaleIn;overflow-y:auto}.modal-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-title{color:#0b1c30;font-size:1.125rem;font-weight:600}.modal-close{color:#757682;cursor:pointer;border-radius:var(--radius-sm);width:32px;height:32px;transition:var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.modal-close:hover{color:#0b1c30;background:#eff4ff}.modal-body{padding:24px}.modal-footer{border-top:1px solid #e2e8f0;justify-content:flex-end;align-items:center;gap:12px;padding:16px 24px;display:flex}.auth-page{background:#f8f9ff;background-image:var(--gradient-mesh);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";background-color:#0000;background-image:radial-gradient(circle at 30% 30%,#00236f0f 0%,#0000 60%),radial-gradient(circle at 70% 70%,#006a610a 0%,#0000 60%);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:200% 200%;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;width:200%;height:200%;animation:15s infinite gradientMove;position:absolute;top:-50%;left:-50%}.auth-card{border-radius:var(--radius-2xl);width:100%;max-width:440px;box-shadow:var(--shadow-xl);z-index:1;background:#fff;border:1px solid #e2e8f0;padding:40px;animation:.6s ease-out slideUp;position:relative}.auth-logo{text-align:center;margin-bottom:32px}.auth-logo .logo-icon-lg{border-radius:var(--radius-lg);color:#fff;background:#00236f;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 16px;font-size:1.5rem;font-weight:700;display:flex}.auth-logo h1{color:#00236f;font-size:1.5rem;font-weight:700}.auth-logo p{color:#444651;margin-top:4px;font-size:.875rem}.auth-form{flex-direction:column;gap:20px;display:flex}.auth-form .btn{width:100%;margin-top:4px}.auth-links{text-align:center;color:var(--text-secondary);margin-top:24px;font-size:.875rem}.auth-links a{color:var(--primary);font-weight:500}.auth-error{border-radius:var(--radius-md);color:#ba1a1a;background:#ffdad6;border:1px solid #ba1a1a33;align-items:center;gap:8px;padding:12px 16px;font-size:.875rem;animation:.3s ease-out slideDown;display:flex}.filter-tabs{border-radius:var(--radius-full);background:0 0;align-items:center;gap:4px;padding:0;display:flex;overflow-x:auto}.filter-tab{color:#444651;border-radius:var(--radius-full);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;font-size:.875rem;font-weight:500;font-family:var(--font-family);background:#eff4ff;border:none;padding:6px 16px}.filter-tab:hover{color:#0b1c30;background:#e5eeff}.filter-tab.active{color:#fff;background:#1e3a8a}.class-grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.stats-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.checkbox-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.checkbox-item{border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast);color:#444651;background:#fff;border:1px solid #e2e8f0;align-items:center;gap:8px;padding:10px 12px;font-size:.875rem;display:flex}.checkbox-item:hover{color:#0b1c30;border-color:#c5c5d3}.checkbox-item.checked{color:#0b1c30;background:#e5eeff;border-color:#00236f}.checkbox-item input[type=checkbox]{accent-color:#006a61;width:16px;height:16px}.toast-container{z-index:2000;flex-direction:column;gap:8px;display:flex;position:fixed;top:20px;right:20px}.toast{border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:300px;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);align-items:center;gap:10px;padding:14px 20px;font-size:.875rem;font-weight:500;animation:.3s ease-out slideInRight;display:flex}.toast-success{color:#00201d;background:#89f5e7;border:1px solid #006f664d}.toast-error{color:#ba1a1a;background:#ffdad6;border:1px solid #ba1a1a4d}.toast-warning{color:#9a3412;background:#ffedd5;border:1px solid #9a34124d}.page-header{margin-bottom:24px}.page-header h1{color:var(--text-primary);margin-bottom:4px;font-size:1.5rem;font-weight:700}.section{margin-bottom:32px}.section-title{color:var(--text-primary);margin-bottom:16px;font-size:1.125rem;font-weight:600}.profile-avatar{border-radius:var(--radius-full);color:#fff;background:#00236f;justify-content:center;align-items:center;width:80px;height:80px;margin-bottom:16px;font-size:2rem;font-weight:700;display:flex}.profile-form{grid-template-columns:1fr 1fr;gap:20px;display:grid}.profile-form .full-width{grid-column:1/-1}.validation-row{align-items:center;gap:8px;display:flex}.validation-icon{border-radius:var(--radius-full);justify-content:center;align-items:center;width:20px;height:20px;font-size:.75rem;display:flex}.validation-icon.valid{background:var(--success-bg);color:var(--success)}.validation-icon.invalid{background:var(--error-bg);color:var(--error)}.feedback-row{cursor:pointer}.feedback-row.expandable:hover{background:var(--bg-hover)}.feedback-expanded{color:#444651;background:#f8f9ff;border-top:1px solid #e2e8f0;padding:16px;font-size:.875rem;line-height:1.6;animation:.2s ease-out slideDown}.spinner-overlay{justify-content:center;align-items:center;padding:60px;display:flex}.spinner-lg{border:3px solid #e2e8f0;border-top-color:#006a61;border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}.sidebar-overlay{z-index:90;background:#00000080;display:none;position:fixed;inset:0}@media (width<=1024px){.class-grid{grid-template-columns:repeat(2,1fr)}.profile-form{grid-template-columns:1fr}}@media (width<=768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay.active{display:block}.dashboard-content{margin-left:0}.topbar-hamburger{display:flex}.dashboard-main{padding:16px}.class-grid,.stats-row{grid-template-columns:1fr}.auth-card{padding:28px 20px}.table-toolbar{flex-direction:column;align-items:stretch}.table-search{min-width:auto}.table-pagination{flex-direction:column;align-items:center}.filter-tabs{-webkit-overflow-scrolling:touch;overflow-x:auto}.checkbox-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.modal{margin:10px}}@media (width<=480px){.stats-card{padding:16px}.stats-card .stats-value{font-size:1.5rem}.page-header h1{font-size:1.25rem}.auth-card{padding:24px 16px}}@media (width<=1100px){.dashboard-overview-grid{grid-template-columns:1fr!important}}@media (width<=900px){.dashboard-subject-grid{grid-template-columns:1fr!important}.dashboard-stats-grid{grid-template-columns:repeat(2,1fr)!important}}@media (width<=600px){.dashboard-stats-grid{grid-template-columns:1fr!important}.dashboard-welcome-banner{flex-direction:column!important}.dashboard-welcome-info-card{min-width:unset!important;width:100%!important}}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.gap-24{gap:24px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.text-center{text-align:center}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.font-semibold{font-weight:600}.w-full{width:100%}.page-header h1{color:#0b1c30;letter-spacing:-.01em;margin-bottom:4px;font-size:2rem;font-weight:700}.page-header p{color:#444651;font-size:1rem}.class-card{cursor:pointer;padding:0}.class-card-img{border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:#1e3a8a;height:128px;position:relative;overflow:hidden}.class-card-img-overlay{background:linear-gradient(#00236f00 40%,#00236fd9 100%);align-items:flex-end;padding:16px;display:flex;position:absolute;inset:0}.class-card-img-name{color:#fff;font-size:1.375rem;font-weight:600;line-height:1.3}.class-subject-badge{color:#00236f;letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius-full);background:#e5eeff;padding:2px 10px;font-size:.625rem;font-weight:600;position:absolute;top:12px;right:12px}.class-card-body{padding:16px}.class-card-body .class-meta{color:#444651;align-items:center;gap:8px;font-size:.875rem;display:flex}.topbar-search{align-items:center;display:flex;position:relative}.topbar-search-icon{color:#757682;pointer-events:none;font-size:.875rem;position:absolute;left:12px}.topbar-search-input{border-radius:var(--radius-full);color:#0b1c30;width:240px;font-size:.9375rem;font-family:var(--font-family);transition:var(--transition-fast);background:#eff4ff;border:none;outline:none;padding:6px 16px 6px 36px}.topbar-search-input::placeholder{color:#6b7280}.topbar-search-input:focus{background:#e5eeff;box-shadow:0 0 0 2px #00236f1f}.topbar-notif{color:#444651;cursor:pointer;border-radius:var(--radius-full);width:40px;height:40px;transition:var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.topbar-notif:hover{color:#0b1c30;background:#eff4ff}.sidebar-logout{border-radius:var(--radius-md);color:#ba1a1a;transition:var(--transition-fast);cursor:pointer;text-align:left;width:100%;font-size:.9375rem;font-weight:500;font-family:var(--font-family);background:0 0;border:none;align-items:center;gap:12px;margin-top:4px;padding:10px 16px;text-decoration:none;display:flex}.sidebar-logout:hover{color:#93000a;background:#ffdad6}.card-error{border-color:#ffdad6!important}.dashboard-main{padding:32px}
