@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";:root{--color-primary:#4f8cff;--color-primary-light:#7dabff;--color-primary-dark:#36c;--color-primary-bg:#edf3ff;--color-primary-50:#f0f5ff;--color-primary-100:#e0ebff;--color-bg:#f8fafb;--color-surface:#fff;--color-surface-hover:#f5f7fa;--color-border:#e8ecf1;--color-border-light:#f0f2f5;--color-text:#1a2233;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-text-inverse:#fff;--color-success:#22c55e;--color-success-bg:#f0fdf4;--color-success-border:#bbf7d0;--color-warning:#f59e0b;--color-warning-bg:#fffbeb;--color-error:#ef4444;--color-error-bg:#fef2f2;--color-error-border:#fecaca;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 6px -1px #0000000f, 0 2px 4px -2px #0000000a;--shadow-lg:0 10px 15px -3px #0000000f, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #00000014, 0 8px 10px -6px #0000000a;--sidebar-width:260px;--sidebar-collapsed-width:72px;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.35s ease;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-base:.875rem;--font-size-md:.9375rem;--font-size-lg:1.0625rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg);line-height:1.6;overflow-x:hidden}a{color:var(--color-primary);text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none}input,select,textarea{font-family:inherit;font-size:inherit}.app-layout{min-height:100vh;display:flex}.main-content{margin-left:var(--sidebar-width);padding:var(--space-8);transition:margin-left var(--transition-normal);flex:1;min-width:0}.main-content.collapsed{margin-left:var(--sidebar-collapsed-width)}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:100;transition:width var(--transition-normal);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden auto}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar-header{padding:var(--space-4) var(--space-4);border-bottom:1px solid var(--color-border-light);align-items:center;gap:var(--space-3);height:64px;display:flex}.sidebar-toggle{border-radius:var(--radius-md);width:40px;height:40px;color:var(--color-text-secondary);transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-toggle:hover{background:var(--color-surface-hover);color:var(--color-primary)}.sidebar-logo{font-size:var(--font-size-lg);color:var(--color-primary);white-space:nowrap;opacity:1;transition:opacity var(--transition-fast);font-weight:700;overflow:hidden}.sidebar.collapsed .sidebar-logo{opacity:0;width:0}.sidebar-nav{padding:var(--space-3) var(--space-2);gap:var(--space-1);flex-direction:column;flex:1;display:flex}.sidebar-separator{background:var(--color-border-light);height:1px;margin:var(--space-2) var(--space-3)}.sidebar-section-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-2) var(--space-3);white-space:nowrap;font-weight:600;overflow:hidden}.sidebar.collapsed .sidebar-section-label{opacity:0}.nav-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);white-space:nowrap;transition:all var(--transition-fast);font-weight:500;text-decoration:none;display:flex;position:relative}.nav-item:hover{background:var(--color-primary-50);color:var(--color-primary)}.nav-item.active{background:var(--color-primary-bg);color:var(--color-primary);font-weight:600}.nav-item.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.nav-item-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.nav-item-text{opacity:1;transition:opacity var(--transition-fast);overflow:hidden}.sidebar.collapsed .nav-item-text{opacity:0;width:0}.nav-group{flex-direction:column;display:flex}.nav-group-toggle{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);white-space:nowrap;transition:all var(--transition-fast);width:100%;font-weight:500;display:flex}.nav-group-toggle:hover{background:var(--color-primary-50);color:var(--color-primary)}.nav-group-toggle.active{color:var(--color-primary)}.nav-group-chevron{transition:transform var(--transition-fast);flex-shrink:0;margin-left:auto}.nav-group-chevron.open{transform:rotate(180deg)}.sidebar.collapsed .nav-group-chevron{display:none}.nav-group-children{padding-left:var(--space-4);max-height:0;transition:max-height var(--transition-normal);overflow:hidden}.nav-group-children.open{max-height:200px}.sidebar.collapsed .nav-group-children{padding-left:0}.page-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-title{font-size:var(--font-size-2xl);color:var(--color-text);letter-spacing:-.02em;font-weight:700}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:all var(--transition-fast);white-space:nowrap;min-height:38px;font-weight:500;line-height:1.5;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);box-shadow:var(--shadow-xs)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-text-muted)}.btn-danger{background:var(--color-error);color:var(--color-text-inverse)}.btn-danger:hover:not(:disabled){background:#dc2626;transform:translateY(-1px)}.btn-ghost{color:var(--color-text-secondary);padding:var(--space-1) var(--space-2);min-height:auto}.btn-ghost:hover{background:var(--color-surface-hover);color:var(--color-text)}.btn-icon{border-radius:var(--radius-md);justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:inline-flex}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);min-height:32px}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-md);min-height:44px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);transition:all var(--transition-fast)}.card:hover{box-shadow:var(--shadow-sm)}.card-clickable:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-md);cursor:pointer;transform:translateY(-1px)}.card-body{padding:var(--space-5)}.card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.table-container{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{background:var(--color-bg);padding:var(--space-3) var(--space-4);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;text-align:left;white-space:nowrap;border-bottom:1px solid var(--color-border);font-weight:600}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-light);font-size:var(--font-size-sm);vertical-align:middle;white-space:nowrap}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-surface-hover)}.table-actions{align-items:center;gap:var(--space-1);display:flex}.form-group{margin-bottom:var(--space-4)}.form-label{font-size:var(--font-size-sm);color:var(--color-text);margin-bottom:var(--space-1);font-weight:500;display:block}.form-input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);transition:all var(--transition-fast);min-height:38px}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100);outline:none}.form-input::placeholder{color:var(--color-text-muted)}.form-input.error{border-color:var(--color-error)}.form-input.error:focus{box-shadow:0 0 0 3px var(--color-error-bg)}.form-error{font-size:var(--font-size-xs);color:var(--color-error);margin-top:var(--space-1)}.form-select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);transition:all var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5L6 8L9 5' fill='none' stroke='%2364748B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;min-height:38px;padding-right:36px}.form-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100);outline:none}.modal-overlay{z-index:1000;padding:var(--space-4);animation:fadeIn var(--transition-fast);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:480px;max-height:90vh;animation:slideUp var(--transition-normal);overflow-y:auto}.modal-lg{max-width:640px}.modal-xl{max-width:840px}.modal-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-size-lg);color:var(--color-text);font-weight:600}.modal-close{border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-muted);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.modal-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.modal-body{padding:var(--space-5) var(--space-6)}.modal-footer{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border-light);display:flex}.badge{padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);white-space:nowrap;align-items:center;gap:4px;font-weight:500;line-height:1;display:inline-flex}.badge-primary{background:var(--color-primary-bg);color:var(--color-primary)}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-neutral{background:var(--color-bg);color:var(--color-text-secondary)}.level-tabs{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.level-tab{padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--font-size-sm);white-space:nowrap;cursor:pointer;transition:all var(--transition-fast);align-items:center;font-weight:500;display:inline-flex}.level-tab:hover{border-color:var(--color-primary-100);color:var(--color-primary)}.level-tab.active{border-color:var(--color-primary);background:var(--color-primary-50);color:var(--color-primary);font-weight:600}.search-bar{width:100%;max-width:320px;position:relative}.search-bar .search-icon{left:var(--space-3);color:var(--color-text-muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search-bar input{padding-left:38px}.pagination{padding:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.pagination-info{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pagination-controls{align-items:center;gap:var(--space-2);display:flex}.pagination-btn{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);width:36px;height:36px;color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.pagination-btn:hover:not(:disabled){background:var(--color-primary-50);border-color:var(--color-primary);color:var(--color-primary)}.pagination-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-text-inverse)}.pagination-btn:disabled{opacity:.3;cursor:not-allowed}.empty-state{padding:var(--space-12) var(--space-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state-icon{width:64px;height:64px;color:var(--color-text-muted);margin-bottom:var(--space-4);opacity:.5}.empty-state-title{font-size:var(--font-size-lg);color:var(--color-text);margin-bottom:var(--space-2);font-weight:600}.empty-state-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);max-width:360px}.skeleton{background:linear-gradient(90deg, var(--color-bg) 25%, var(--color-border-light) 50%, var(--color-bg) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-text{height:14px;margin-bottom:var(--space-2)}.skeleton-row{height:48px;margin-bottom:var(--space-1)}.info-btn{border-radius:var(--radius-full);background:var(--color-primary-bg);width:28px;height:28px;color:var(--color-primary);font-size:var(--font-size-xs);transition:all var(--transition-fast);justify-content:center;align-items:center;font-weight:700;display:inline-flex}.info-btn:hover{background:var(--color-primary);color:var(--color-text-inverse);transform:scale(1.1)}.days-picker{gap:var(--space-2);flex-wrap:wrap;display:flex}.day-box{border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;min-width:44px;height:38px;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;flex:1;justify-content:center;align-items:center;padding:0 6px;display:flex}.day-box:hover{border-color:var(--color-primary-light);background:var(--color-primary-50)}.day-box.selected{border-color:var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary);font-weight:600}.day-box .day-label{font-size:var(--font-size-sm);font-weight:600}.schedule-preview{font-size:var(--font-size-xs);color:var(--color-primary);margin-top:8px;font-weight:500}.multi-select{position:relative}.multi-select-trigger{align-items:center;gap:var(--space-1);min-height:38px;padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);flex-wrap:wrap;display:flex}.multi-select-trigger:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.multi-select-tag{align-items:center;gap:var(--space-1);padding:2px var(--space-2);background:var(--color-primary-bg);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:500;display:inline-flex}.multi-select-tag-remove{color:var(--color-primary);opacity:.7;align-items:center;padding:0;display:flex}.multi-select-tag-remove:hover{opacity:1}.multi-select-dropdown{margin-top:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:50;max-height:200px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.multi-select-option{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast);display:flex}.multi-select-option:hover{background:var(--color-primary-50)}.multi-select-option.selected{background:var(--color-primary-bg);color:var(--color-primary);font-weight:500}.attendance-wrapper{overflow-x:auto}.attendance-table{border-collapse:collapse;min-width:100%}.attendance-table th,.attendance-table td{border:1px solid var(--color-border);padding:var(--space-2);text-align:center;font-size:var(--font-size-xs);min-width:36px;height:36px}.attendance-table th{background:var(--color-bg);color:var(--color-text-secondary);z-index:1;font-weight:600;position:sticky;top:0}.attendance-table td:first-child,.attendance-table th:first-child{background:var(--color-surface);z-index:2;text-align:left;min-width:160px;padding-left:var(--space-3);font-weight:500;font-size:var(--font-size-sm);position:sticky;left:0}.attendance-table th:first-child{background:var(--color-bg);z-index:3}.attendance-cell{cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.attendance-cell:hover{background:var(--color-primary-50)!important}.attendance-cell.lesson-day{background:var(--color-primary-50)}.attendance-cell.present{color:var(--color-success);font-weight:700;font-size:var(--font-size-md);background:var(--color-success-bg)!important}.attendance-cell.absent{color:var(--color-error);font-weight:700;font-size:var(--font-size-md);background:var(--color-error-bg)!important}.payment-status{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;white-space:nowrap;font-weight:600;display:inline-flex}.payment-status.paid{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success-border)}.payment-status.unpaid{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border)}.payment-status:hover{box-shadow:var(--shadow-sm);transform:scale(1.05)}.filters-bar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.filter-group{align-items:center;gap:var(--space-2);display:flex}.filter-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap;font-weight:500}.filter-select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5L6 8L9 5' fill='none' stroke='%2364748B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;min-height:36px;padding-right:28px}.filter-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100);outline:none}.confirm-dialog{text-align:center;padding:var(--space-4) 0}.confirm-dialog-icon{width:48px;height:48px;margin:0 auto var(--space-4);color:var(--color-error)}.confirm-dialog-text{font-size:var(--font-size-md);color:var(--color-text);margin-bottom:var(--space-2)}.confirm-dialog-subtext{font-size:var(--font-size-sm);color:var(--color-text-secondary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.placeholder-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:400px;display:flex}.placeholder-page-icon{width:80px;height:80px;color:var(--color-text-muted);opacity:.4;margin-bottom:var(--space-6)}.placeholder-page-title{font-size:var(--font-size-xl);color:var(--color-text);margin-bottom:var(--space-2);font-weight:600}.placeholder-page-text{font-size:var(--font-size-md);color:var(--color-text-secondary)}.groups-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.group-card{padding:var(--space-5);position:relative}.btn-icon-delete{border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);opacity:0;z-index:2;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:12px}.group-card:hover .btn-icon-delete{opacity:1}.btn-icon-delete:hover{background:var(--color-error-bg);color:var(--color-error);transform:scale(1.1)}.group-card-name{font-size:var(--font-size-md);color:var(--color-text);margin-bottom:var(--space-3);font-weight:600}.group-card-info{gap:var(--space-2);flex-direction:column;display:flex}.group-card-row{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary);display:flex}.group-card-row svg{width:16px;height:16px;color:var(--color-text-muted);flex-shrink:0}.detail-grid{gap:var(--space-2) var(--space-4);grid-template-columns:auto 1fr;align-items:baseline;display:grid}.detail-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.detail-value{font-size:var(--font-size-sm);color:var(--color-text);font-weight:500}.sidebar-overlay{z-index:99;animation:fadeIn var(--transition-fast);background:#0006;display:none;position:fixed;inset:0}@media (width<=1024px){.main-content{padding:var(--space-6)}.groups-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}@media (width<=768px){.sidebar{width:var(--sidebar-width);box-shadow:var(--shadow-xl);transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{width:var(--sidebar-width);transform:translate(-100%)}.sidebar.collapsed.mobile-open{transform:translate(0)}.sidebar-overlay.visible{display:block}.main-content,.main-content.collapsed{padding:var(--space-4);margin-left:0;padding-top:72px}.mobile-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);height:56px;padding:0 var(--space-4);z-index:98;align-items:center;gap:var(--space-3);display:flex;position:fixed;top:0;left:0;right:0}.page-header{flex-direction:column;align-items:flex-start}.filters-bar{align-items:center;gap:var(--space-2);flex-flow:wrap}.filter-group{flex:auto;gap:4px;width:auto;min-width:0}.filter-label{font-size:var(--font-size-xs);white-space:nowrap}.filter-select{width:100%;font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);min-height:36px;padding-right:22px}.filters-bar .search-bar{width:100%;max-width:100%}.modal{max-width:100%;margin:var(--space-4);max-height:calc(100vh - 32px)}.groups-grid{grid-template-columns:1fr}.pagination{flex-direction:column;align-items:center}.table-container{-webkit-overflow-scrolling:touch;scrollbar-width:none;overflow-x:auto}.table-container::-webkit-scrollbar{display:none}.table td,.table th{padding:var(--space-2) 4px;font-size:var(--font-size-xs);white-space:nowrap}.table th:first-child,.table td:first-child{width:20px;padding-left:6px;padding-right:2px}.table th:last-child,.table td:last-child{text-align:center;width:40px;padding-left:2px;padding-right:6px}.payment-status{white-space:nowrap;gap:3px;padding:2px 6px;font-size:11px}.badge{white-space:nowrap;padding:2px 6px;font-size:11px}}@media (width>=769px){.mobile-header{display:none}}.toast-custom{font-family:var(--font-family)!important;font-size:var(--font-size-sm)!important;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-lg)!important}.report-container{gap:var(--space-5);flex-direction:column;display:flex}.report-mode-banner{border:1px solid var(--color-primary-100);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-4);background:linear-gradient(135deg,#f0f5ff 0%,#e6eeff 100%)}.mode-banner-icon{border-radius:var(--radius-md);background:var(--color-primary);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.report-stats-grid{gap:var(--space-4);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-xs);transition:all var(--transition-fast);flex-direction:column;display:flex}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-card.highlight-card{background:linear-gradient(135deg,#ecfdf5 0%,#d1fae5 100%);border-color:#a7f3d0}.stat-card-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.stat-card-title{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.stat-card-icon{border-radius:var(--radius-md);justify-content:center;align-items:center;width:36px;height:36px;display:flex}.icon-blue{color:#3b82f6;background:#edf3ff}.icon-green{color:#16a34a;background:#dcfce7}.icon-red{color:#dc2626;background:#fee2e2}.icon-purple{color:#9333ea;background:#f3e8ff}.icon-emerald{color:#059669;background:#d1fae5}.stat-card-value{color:var(--color-text);margin-bottom:var(--space-1);font-size:1.5rem;font-weight:700;line-height:1.2}.stat-card-sub{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.report-progress-section{gap:var(--space-4);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.progress-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.progress-box-header{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-2);justify-content:space-between;display:flex}.progress-track{background:var(--color-border-light);border-radius:var(--radius-full);height:10px;overflow:hidden}.progress-fill{border-radius:var(--radius-full);height:100%;transition:width .5s ease-in-out}.fill-green{background:linear-gradient(90deg,#10b981 0%,#059669 100%)}.fill-blue{background:linear-gradient(90deg,#3b82f6 0%,#2563eb 100%)}.report-teacher-details{gap:var(--space-5);flex-direction:column;display:flex}.salary-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.salary-box-header{padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border-light);margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.salary-icon{color:var(--color-primary)}.salary-breakdown-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.salary-item{background:var(--color-bg);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);flex-direction:column;gap:4px;display:flex}.salary-item-label{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.salary-item-value{font-size:var(--font-size-md);color:var(--color-text);font-weight:700}.salary-total-callout{color:#fff;border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-top:var(--space-5);background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);border:1px solid #334155;justify-content:space-between;align-items:center;display:flex;box-shadow:0 10px 25px -5px #0f172a40}.custom-select-container{min-width:220px;position:relative}.custom-select-trigger{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--transition-fast);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-weight:600;display:flex}.custom-select-trigger:hover{border-color:var(--color-primary);background:var(--color-surface-hover)}.custom-select-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:220px;box-shadow:var(--shadow-lg);z-index:100;max-height:260px;animation:fadeIn var(--transition-fast);padding:6px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.custom-select-group-header{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:6px 10px 2px;font-size:11px;font-weight:700}.custom-select-option{border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:10px;padding:8px 10px;font-weight:500;display:flex}.custom-select-option:hover{color:var(--color-primary);background:#f0f5ff}.custom-select-option.selected{color:var(--color-primary-dark);background:#e6eeff;font-weight:600}.login-page{min-height:100dvh;padding:var(--space-4);background:var(--color-bg);justify-content:center;align-items:center;display:flex}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:380px;box-shadow:var(--shadow-lg);padding:var(--space-8) var(--space-6)}.login-logo{width:64px;height:64px;margin:0 auto var(--space-4);border-radius:var(--radius-lg);display:block}.login-title{text-align:center;color:var(--color-text);margin:0;font-size:24px;font-weight:700}.login-subtitle{text-align:center;color:var(--color-text-secondary);margin:var(--space-1) 0 var(--space-6)}.login-submit{width:100%;margin-top:var(--space-2);justify-content:center}.sidebar-footer{border-top:1px solid var(--color-border);padding:var(--space-3) var(--space-2);gap:var(--space-1);flex-direction:column;display:flex}.sidebar-user{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);white-space:nowrap;display:flex}.sidebar-user-avatar{border-radius:var(--radius-full);background:var(--color-primary-bg);width:28px;height:28px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;margin-left:-4px;font-size:13px;font-weight:600;display:inline-flex}.sidebar-user-info{flex-direction:column;min-width:0;display:flex;overflow:hidden}.sidebar-user-name{font-size:var(--font-size-sm);color:var(--color-text);text-overflow:ellipsis;font-weight:600;overflow:hidden}.sidebar-user-role{color:var(--color-text-muted);font-size:12px}.sidebar-logout{cursor:pointer;text-align:left;background:0 0;border:none;width:100%;font-family:inherit}.sidebar-logout:hover{color:var(--color-error);background:var(--color-error-bg)}.segmented{gap:var(--space-1);padding:var(--space-1);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex}.segmented-option{padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-family:inherit;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;font-weight:500}.segmented-option:hover{color:var(--color-text)}.segmented-option.active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.form-hint{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.detail-section-title{margin:var(--space-5) 0 var(--space-2);font-size:var(--font-size-sm);color:var(--color-text);font-weight:600}.student-group-list{gap:var(--space-2);flex-direction:column;display:flex}.student-group-item{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-1);flex-direction:column;display:flex}.student-group-item-head{justify-content:space-between;align-items:center;gap:var(--space-2);font-weight:600;display:flex}.student-group-item-meta{gap:var(--space-1) var(--space-4);font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-wrap:wrap;display:flex}.student-group-item-meta span{align-items:center;gap:4px;display:inline-flex}.report-section-title{align-items:center;gap:8px;margin:24px 0 12px;font-size:16px;font-weight:700;display:flex}.mini-progress{align-items:center;gap:var(--space-2);min-width:110px;display:flex}.mini-progress-track{border-radius:var(--radius-full);background:var(--color-border-light);flex:1;height:6px;overflow:hidden}.mini-progress-fill{border-radius:var(--radius-full);background:var(--color-success);height:100%}.mini-progress-value{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:right;min-width:34px;font-weight:600}.table tr.row-clickable{cursor:pointer}@media (width<=480px){.modal-footer{flex-wrap:wrap}.modal-footer .btn{flex:auto;justify-content:center}}@keyframes modal-shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.modal.modal-shake{animation:.3s modal-shake}.combobox{min-width:240px;position:relative}.combobox-trigger{justify-content:space-between;align-items:center;gap:var(--space-2);width:100%;min-height:36px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-family:inherit;font-size:var(--font-size-sm);cursor:pointer;text-align:left;display:flex}.combobox-trigger:focus-visible,.combobox-trigger.open{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100);outline:none}.combobox-placeholder{color:var(--color-text-muted)}.combobox-chevron{color:var(--color-text-secondary);flex-shrink:0}.combobox-dropdown{z-index:50;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);width:max(100%,300px);max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);position:absolute;top:calc(100% + 4px);left:0;overflow:hidden}.combobox-search{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-light);color:var(--color-text-muted);display:flex}.combobox-search input{font-family:inherit;font-size:var(--font-size-sm);color:var(--color-text);background:0 0;border:none;outline:none;flex:1;min-width:0}.combobox-list{padding:var(--space-1);max-height:280px;margin:0;list-style:none;overflow-y:auto}.combobox-option{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);display:flex}.combobox-option.active{background:var(--color-surface-hover)}.combobox-option.selected{color:var(--color-primary)}.combobox-option-label{font-size:var(--font-size-sm);font-weight:500}.combobox-option-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:1px}.combobox-empty{padding:var(--space-3);text-align:center;font-size:var(--font-size-sm);color:var(--color-text-muted)}.permission-list{gap:var(--space-2);flex-direction:column;display:flex}.permission-list.error .permission-item{border-color:var(--color-error-border)}.permission-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);display:flex}.permission-item.checked{border-color:var(--color-primary);background:var(--color-primary-50)}.permission-item input{accent-color:var(--color-primary);margin-top:2px}.permission-item-label{font-size:var(--font-size-sm);color:var(--color-text);font-weight:600;display:block}.permission-item-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);display:block}.badge-error-soft{background:var(--color-error-bg);color:var(--color-error)}.segmented-option{white-space:nowrap}.report-mode-tabs{width:400px;max-width:100%}@media (width<=480px){.report-mode-tabs{width:100%}.report-mode-tabs .segmented-option{padding-left:var(--space-1);padding-right:var(--space-1);font-size:var(--font-size-xs)}.combobox{flex:100%;min-width:0}}
