@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap);*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }

/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{border-width:0}.\!block{display:block!important}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.border{border-width:1px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg-main:#f9fafb;--bg-card:#fff;--bg-sidebar:#0f172a;--bg-topbar:#fff;--primary:#2563eb;--primary-hover:#1d4ed8;--secondary:#0ea5a4;--text-dark:#0f172a;--text-light:#64748b;--text-white:#fff;--border:#e5e7eb;--success:#22c55e;--warning:#f59e0b;--error:#ef4444;--info:#3b82f6;--shadow-soft:0 4px 12px #0f172a14;--shadow-card:0 1px 3px #0f172a0f;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px}#root,body,html{height:100%}body,html{overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f9fafb;background:var(--bg-main);color:#0f172a;color:var(--text-dark);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0}#root{min-height:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.admin-layout{background:var(--bg-main);height:100vh;overflow:hidden}.admin-layout,.sidebar{display:flex;min-height:0}.sidebar{background:var(--bg-sidebar);color:var(--text-white);flex-direction:column;flex-shrink:0;height:100%;width:260px}.sidebar-header{border-bottom:1px solid #ffffff1a;padding:var(--space-3) var(--space-2)}.logo{color:var(--text-white);font-size:1.35rem;font-weight:700;letter-spacing:-.02em;margin:0}.logo-badge{color:#ffffffb3;display:inline-block;font-size:.65rem;font-weight:600;letter-spacing:.08em;margin-top:var(--space-1);text-transform:uppercase}.sidebar-nav{flex:1 1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--space-2) var(--space-1);scrollbar-color:#94a3b8a6 #0000;scrollbar-width:thin}.sidebar-nav::-webkit-scrollbar{height:8px;width:8px}.sidebar-nav::-webkit-scrollbar-thumb{background:#94a3b8a6;border-radius:999px}.nav-item{align-items:center;border-radius:var(--radius-sm);color:#ffffffe6;display:flex;gap:var(--space-2);margin-bottom:var(--space-1);padding:12px 16px;text-decoration:none;transition:all .2s ease}.nav-item:hover:not(.nav-item--active){background:#ffffff1a;color:var(--text-white)}.nav-item--active,.nav-item--active:focus-visible,.nav-item--active:hover{background:var(--primary);box-shadow:0 2px 10px #2563eb66;color:var(--text-white);font-weight:600}.nav-item:focus-visible{outline:2px solid #ffffff80;outline-offset:2px}.nav-icon{font-size:1.1rem}.nav-label{font-size:.9rem}.sidebar-footer{border-top:1px solid #ffffff1a;padding:var(--space-2)}.admin-profile{gap:var(--space-2)}.admin-avatar,.admin-profile{align-items:center;display:flex}.admin-avatar{background:#ffffff26;border-radius:50%;font-size:.9rem;font-weight:600;height:36px;justify-content:center;width:36px}.admin-info{display:flex;flex-direction:column}.admin-name{color:var(--text-white);font-size:.85rem;font-weight:600}.admin-role{color:#fff9;font-size:.7rem}.layout-main{display:flex;flex:1 1;flex-direction:column;min-height:0;min-width:0}.topbar{align-items:center;background:var(--bg-topbar);border-bottom:1px solid var(--border);display:flex;flex-shrink:0;height:64px;justify-content:space-between;padding:0 var(--space-3)}.topbar-title{color:var(--text-dark);font-size:1.1rem;font-weight:600;margin:0}.topbar-right{position:relative}.topbar-profile-btn{align-items:center;background:#fff;border:1px solid var(--border);border-radius:999px;color:var(--text-dark);cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:600;gap:10px;padding:6px 12px 6px 6px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.topbar-profile-btn:hover{background:#f8fafc;border-color:#cbd5e1;box-shadow:0 2px 8px #0f172a0f}.topbar-profile-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.topbar-profile-avatar{align-items:center;background:linear-gradient(135deg,var(--primary) 0,#6366f1 100%);border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;font-size:.85rem;font-weight:700;height:32px;justify-content:center;width:32px}.topbar-profile-label{line-height:1}.topbar-profile-chevron{color:var(--text-light);font-size:.7rem;margin-left:-2px}.topbar-profile-menu{background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 4px 6px #0f172a0d,0 12px 28px #0f172a1f;min-width:220px;padding:8px;position:absolute;right:0;top:calc(100% + 8px);z-index:100}.topbar-profile-menu-header{border-bottom:1px solid var(--border);margin-bottom:6px;padding:10px 12px 12px}.topbar-profile-menu-email{color:var(--text-dark);display:block;font-size:.875rem;font-weight:600;word-break:break-all}.topbar-profile-menu-role{color:var(--text-light);display:block;font-size:.75rem;margin-top:4px}.topbar-profile-menu-item{background:#0000;border:none;border-radius:8px;color:var(--text-dark);cursor:pointer;display:block;font-size:.875rem;font-weight:500;padding:10px 12px;text-align:left;transition:background .15s ease;width:100%}.topbar-profile-menu-item:hover{background:#f1f5f9}.topbar-profile-menu-item--danger{color:#dc2626}.topbar-profile-menu-item--danger:hover{background:#dc262614}.main-content{background:var(--bg-main);flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:none;padding:var(--space-3);scrollbar-color:#64748b73 #0000;scrollbar-width:thin}.main-content::-webkit-scrollbar{width:10px}.main-content::-webkit-scrollbar-thumb{background:#64748b73;background-clip:padding-box;border:2px solid #0000;border-radius:999px}@media (max-width:768px){.sidebar{width:72px}.admin-info,.logo,.logo-badge,.nav-label{display:none}.sidebar-header{padding:var(--space-2)}.nav-item{padding:12px}.admin-profile,.nav-item{justify-content:center}}.dashboard{margin:0 auto;max-width:1200px;width:100%}.page-header{margin-bottom:var(--space-4)}.page-header h1{color:var(--text-dark);font-size:1.9rem;font-weight:700;letter-spacing:-.02em;margin:0 0 var(--space-1) 0}.page-subtitle{color:var(--text-light);font-size:.95rem;margin:0}.stats-grid{grid-gap:var(--space-3);display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:var(--space-4)}.dashboard-card{align-items:flex-start;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);display:flex;gap:var(--space-2);padding:var(--space-3);transition:box-shadow .18s ease,border-color .18s ease}.stats-grid .dashboard-card{overflow:hidden;position:relative}.stats-grid .dashboard-card:before{border-radius:inherit;border-top:3px solid var(--primary);content:"";inset:0;opacity:.8;position:absolute}.stats-grid .dashboard-card>*{position:relative;z-index:1}@media (hover:hover){.dashboard-card:hover{border-color:#94a3b8cc;box-shadow:0 8px 24px #0f172a1f}}.dashboard-grid .dashboard-card{flex-direction:column}.stat-icon{font-size:1.75rem}.stat-content{display:flex;flex-direction:column;gap:var(--space-1)}.stat-value{font-feature-settings:"tnum";color:var(--text-dark);font-size:1.5rem;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.75rem;min-height:1.75rem}.stat-label{color:var(--text-light);font-size:.85rem}.stat-change{color:var(--success);font-size:.75rem;font-weight:500}.dashboard-grid{grid-gap:var(--space-3);display:grid;gap:var(--space-3);grid-template-columns:1.3fr 1fr}@media (max-width:900px){.dashboard-grid{grid-template-columns:1fr}}.dashboard-card h2{color:var(--text-dark);font-size:1.1rem;font-weight:600;margin:0 0 var(--space-2) 0}.activity-list{list-style:none;margin:0;padding:0}.activity-list li{align-items:flex-start;border-bottom:1px solid var(--border);color:var(--text-light);display:flex;font-size:.9rem;gap:var(--space-2);padding:var(--space-2) 0}.activity-list li:last-child{border-bottom:none}.activity-dot{background:var(--primary);border-radius:50%;flex-shrink:0;height:8px;margin-top:.4rem;width:8px}.activity-time{color:var(--text-light);flex-shrink:0;font-size:.75rem;margin-left:auto}.action-buttons{display:flex;flex-wrap:wrap;gap:10px}.quick-action-btn{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);cursor:pointer;font-family:inherit;font-size:.875rem;font-weight:600;padding:10px 16px;transition:background .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .1s ease}.quick-action-btn:hover:not(.quick-action-btn--active){background:#2563eb0f;border-color:var(--primary);color:var(--primary)}.quick-action-btn:active{transform:scale(.98)}.quick-action-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.quick-action-btn--active,.quick-action-btn--active:hover{background:var(--primary);border-color:var(--primary);box-shadow:0 2px 8px #2563eb59;color:var(--text-white)}.page-template{width:100%}.page-template .page-header{margin-bottom:var(--space-3);text-align:left}.page-template .page-header h1{color:var(--text-dark);font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin:0 0 var(--space-1) 0}.page-template .page-subtitle{color:var(--text-light);font-size:.95rem;margin:0}.card,.page-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:var(--space-3)}.form-grid{gap:var(--space-2)}.form-grid,.form-group{display:flex;flex-direction:column}.form-group{gap:var(--space-1)}.form-group label{color:var(--text-dark);font-size:.85rem;font-weight:600}.form-group input{background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);font-size:.9rem;outline:none;padding:10px 14px;transition:border-color .15s ease,box-shadow .15s ease}.form-group input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.form-group input:disabled{background:var(--bg-main);color:var(--text-light);cursor:not-allowed}.form-group textarea{background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);font-family:inherit;font-size:.9rem;min-height:96px;outline:none;padding:10px 14px;resize:vertical;transition:border-color .15s ease,box-shadow .15s ease}.form-group textarea:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.form-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-sm);color:var(--error);font-size:.85rem;padding:var(--space-1) var(--space-2)}.primary-btn{align-items:center;background:var(--primary);border:none;border-radius:var(--radius-sm);color:var(--text-white);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:var(--space-1);justify-content:center;padding:10px 18px;transition:background .2s ease}.primary-btn:hover:not(:disabled){background:var(--primary-hover)}.primary-btn:disabled{cursor:not-allowed;opacity:.6}@media (max-width:640px){.card{padding:var(--space-2)}}.module-placeholder{padding:var(--space-1) 0}.batches-page,.teachers-page{display:flex;flex-direction:column;gap:var(--space-3)}.batch-summary{grid-gap:var(--space-2);display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.batch-summary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:4px;padding:12px 14px}.batch-summary-label{color:var(--text-light);font-size:.8rem}.batch-summary-value{color:var(--text-dark);font-size:1.1rem;font-weight:600}.course-stats{grid-gap:var(--space-2);display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:var(--space-2)}.course-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:4px;padding:12px 14px}.course-stat-label{color:var(--text-light);font-size:.8rem}.course-stat-value{color:var(--text-dark);font-size:1.1rem;font-weight:600}.module-actions{gap:var(--space-2);margin-bottom:var(--space-2)}.export-actions,.module-actions{align-items:center;display:flex;flex-wrap:wrap}.export-actions{gap:8px}.export-select{cursor:pointer;min-width:160px}.batch-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.search-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);flex:1 1;font-size:.9rem;min-width:200px;padding:10px 14px}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426;outline:none}.search-input::placeholder{color:var(--text-light)}.btn-primary{background:var(--primary);border:none;border-radius:var(--radius-sm);color:var(--text-white);cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 18px;transition:background .2s ease}.btn-primary:hover{background:var(--primary-hover)}.btn-primary.btn-secondary{background:#0000;border:1px solid var(--secondary);color:var(--secondary)}.btn-primary.btn-secondary:hover{background:#2563eb14}.placeholder-table{background:var(--bg-main);border:1px dashed var(--border);border-radius:var(--radius-md);padding:var(--space-4)}.placeholder-table p{color:var(--text-light);margin:0 0 var(--space-2) 0}.placeholder-table ul{color:var(--text-light);font-size:.9rem;line-height:1.8;margin:0;padding-left:var(--space-3)}.select-input{background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);font-size:.9rem;outline:none;padding:10px 14px}.select-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.form-success{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:var(--radius-sm);color:var(--success);font-size:.85rem;padding:var(--space-1) var(--space-2)}.add-teacher-panel{background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3)}.add-teacher-panel h2{color:var(--text-dark);font-size:1.1rem;font-weight:600;margin:0 0 var(--space-2) 0}.add-teacher-header{align-items:center;display:flex;gap:var(--space-2);justify-content:space-between;margin-bottom:var(--space-3)}.add-teacher-header p{color:var(--text-light);font-size:.85rem;margin:4px 0 0}.add-teacher-badge{background:#0ea5a414;border:1px solid #0ea5a44d;border-radius:999px;color:var(--primary);font-size:.75rem;font-weight:500;padding:6px 10px;white-space:nowrap}.add-teacher-grid{grid-gap:var(--space-2);display:grid;gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.add-teacher-grid .form-group-wide{grid-column:1/-1}.add-teacher-actions{display:flex;gap:var(--space-2);grid-column:1/-1;justify-content:flex-end;margin-top:var(--space-1)}@media (max-width:768px){.add-teacher-grid{grid-template-columns:1fr}.add-teacher-actions{align-items:stretch;flex-direction:column-reverse}}.teachers-table-wrapper{background:var(--bg-card);border:1px solid #0f172a14;border-radius:14px;box-shadow:0 1px 2px #0f172a0a,0 8px 24px -4px #0f172a14;overflow-x:auto;overflow-y:visible;padding-top:3px;position:relative}.teachers-table-wrapper:before{background:linear-gradient(90deg,var(--primary) 0,#6366f1 45%,#8b5cf6 100%);border-radius:14px 14px 0 0;content:"";height:3px;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:4}.teachers-table-wrapper::-webkit-scrollbar{height:8px}.teachers-table-wrapper::-webkit-scrollbar-thumb{background:#64748b59;border-radius:8px}.teachers-table{background:var(--bg-card);border-collapse:initial;border-spacing:0;font-size:.875rem;line-height:1.45;min-width:640px;width:100%}.teachers-table thead{position:relative}.teachers-table thead th{background:linear-gradient(180deg,#f8fafc,#f1f5f9);border-bottom:1px solid #0f172a14;box-shadow:inset 0 1px 0 #fffc;color:#334155;font-size:.72rem;font-weight:600;letter-spacing:.06em;padding:14px 16px;position:sticky;text-align:left;text-transform:uppercase;top:0;white-space:nowrap;z-index:2}.teachers-table tbody td{border-bottom:1px solid #0f172a0f;color:var(--text-dark);padding:14px 16px;text-align:left;transition:background .15s ease,box-shadow .15s ease;vertical-align:middle}.teachers-table tbody tr{background:var(--bg-card)}.teachers-table tbody tr:nth-child(2n):not(:has(.teachers-empty)){background:#fafbfc}.teachers-table tbody tr:hover:not(:has(.teachers-empty)){background:linear-gradient(90deg,#0ea5a40f,#6366f10a);box-shadow:inset 3px 0 0 var(--primary)}.teachers-table tbody tr:focus-within:not(:has(.teachers-empty)){box-shadow:inset 3px 0 0 var(--primary);outline:none}.teachers-table tbody tr:last-child td{border-bottom:none}.teachers-table .fee-cell,.teachers-table .table-td-num,.teachers-table thead th.table-th-num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.teachers-table .table-td-center,.teachers-table .table-th-center{text-align:center}.table-cell-muted{color:#64748b!important;font-style:italic}.table-cell-strong{color:var(--text-dark);font-weight:600}.table-actions{flex-wrap:nowrap;min-width:156px}.table-actions,.table-btn{align-items:center;display:inline-flex;gap:6px;justify-content:center}.table-btn{border:1px solid #0000;border-radius:8px;cursor:pointer;font-size:.78rem;font-weight:600;min-height:32px;min-width:72px;padding:6px 12px;transition:background .15s ease,border-color .15s ease,transform .12s ease,box-shadow .15s ease;white-space:nowrap}.table-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.table-btn:active:not(:disabled){transform:scale(.98)}.table-btn:disabled{cursor:not-allowed;opacity:.55}.table-btn--primary{background:linear-gradient(180deg,#2563eb,#1d4ed8);border-color:#1e40af;box-shadow:0 1px 2px #1d4ed840;color:#fff}.table-btn--primary:hover:not(:disabled){background:linear-gradient(180deg,#1d4ed8,#1e3a8a);box-shadow:0 2px 8px #1d4ed859}.table-btn--danger{background:linear-gradient(180deg,#ef4444,#dc2626);border-color:#b91c1c;box-shadow:0 1px 2px #dc262633;color:#fff}.table-btn--danger:hover:not(:disabled){background:linear-gradient(180deg,#dc2626,#991b1b);box-shadow:0 2px 8px #dc26264d}.table-btn--ghost{background:#fff;border-color:#e2e8f0;color:#475569}.table-btn--ghost:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1;color:#1e293b}.course-file-link{align-items:center;background:none;border:none;border-radius:6px;color:#2563eb;cursor:pointer;display:inline-flex;font-weight:500;font:inherit;gap:6px;padding:4px 0;text-align:left;text-decoration:none;transition:color .15s ease}.course-file-link:hover:not(:disabled){color:#1d4ed8;text-decoration:underline}.course-file-link:disabled{cursor:wait;opacity:.7}.course-file-pill{align-items:center;background:#94a3b81f;border-radius:999px;color:var(--text-dark);display:inline-flex;font-size:.8rem;padding:4px 10px}.curriculum-cell-stack{align-items:flex-start;display:flex;flex-direction:column;gap:6px}.course-outline-pill{align-items:center;background:#2563eb1a;border-radius:999px;color:#1d4ed8;display:inline-flex;font-size:.8rem;font-weight:500;padding:4px 10px}.fee-cell{color:#0f172a;font-weight:600}.actions-cell{min-width:170px;white-space:nowrap;width:1%}.courses-table{table-layout:fixed;width:100%}.courses-table col.courses-col--id{width:10%}.courses-table col.courses-col--name{width:30%}.courses-table col.courses-col--fee{width:14%}.courses-table col.courses-col--duration{width:16%}.courses-table col.courses-col--level{width:14%}.courses-table col.courses-col--actions{width:16%}.courses-table .courses-col{text-align:left;vertical-align:middle}.courses-table tbody .courses-col,.courses-table thead .courses-col{padding:14px 16px}.courses-table .courses-col--fee{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:left!important;white-space:nowrap}.courses-table .courses-col--fee.fee-cell{color:#0f172a;font-weight:600}.courses-table .courses-col--duration,.courses-table .courses-col--level{padding-left:20px}.courses-table .courses-col--actions{padding-right:20px;text-align:right;white-space:nowrap}.courses-table .course-id-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.8125rem}.courses-table .course-name-cell{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.courses-table .course-meta-pill{border-radius:999px;display:inline-block;font-size:.8rem;font-weight:500;line-height:1.35;padding:4px 10px;vertical-align:middle;white-space:nowrap}.courses-table .course-meta-pill--subtle{background:#94a3b824;color:#475569}.courses-table .course-meta-pill--level{background:#2563eb1a;color:#1d4ed8}.courses-table .courses-col--actions .table-actions{display:inline-flex;gap:8px;justify-content:flex-end;min-width:0;width:100%}.batch-type-pill{background:#2563eb0f;color:var(--secondary)}.batch-status-pill,.batch-type-pill{align-items:center;border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:500;padding:3px 10px}.batch-status-upcoming{background:#3b82f614;color:#1d4ed8}.batch-status-active{background:#22c55e14;color:#15803d}.batch-status-completed{background:#94a3b829;color:#4b5563}.teachers-empty{background:linear-gradient(180deg,#fafbfc,#f8fafc)!important;border-bottom:none!important;color:#64748b;font-size:.9375rem;line-height:1.6;padding:3rem 2rem!important;text-align:center}.teachers-empty:before{content:"📋";display:block;filter:grayscale(.2);font-size:2rem;margin-bottom:12px;opacity:.85}.teachers-empty--loading{overflow:hidden;position:relative}.teachers-empty--loading:before{animation:table-pulse 1.2s ease-in-out infinite;content:"⏳"}.teachers-empty--loading:after{animation:table-shimmer 1.8s ease-in-out infinite;background:linear-gradient(90deg,#0000,#ffffff8c 50%,#0000);content:"";inset:0;pointer-events:none;position:absolute}@keyframes table-shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes table-pulse{0%,to{opacity:.65;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.teachers-empty--loading:after,.teachers-empty--loading:before{animation:none}.table-btn:active:not(:disabled){transform:none}}.table-deadline{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-deadline--ok{color:#059669;font-weight:500}.table-deadline--overdue,.table-deadline-badge{color:#dc2626;font-weight:600}.table-deadline-badge{font-size:.72rem;margin-left:8px}.settings-sections{grid-gap:var(--space-2);display:grid;gap:var(--space-2)}.settings-section{background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3)}.settings-section h3{color:var(--text-dark);font-size:1rem;font-weight:600;margin:0 0 var(--space-1) 0}.settings-section p{color:var(--text-light);font-size:.85rem;margin:0}.phone-field{width:100%}.phone-field__row{align-items:stretch;display:flex;gap:6px;width:100%}.phone-field__plus{align-items:center;color:var(--text-light);display:flex;flex:0 0 auto;font-size:.95rem;font-weight:600;padding:0 2px;-webkit-user-select:none;user-select:none}.phone-field__code{background-color:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);flex:0 0 48px;font-family:inherit;font-size:.9rem;max-width:48px;min-width:48px;outline:none;padding:10px 4px;text-align:center;width:48px}.phone-field__code:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.phone-field__number{background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);flex:1 1 auto;font-family:inherit;font-size:.9rem;min-width:0;outline:none;padding:10px 14px}.phone-field__number:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.phone-field__code:disabled,.phone-field__number:disabled{background:var(--bg-main);color:var(--text-light);cursor:not-allowed}.phone-field__hint{color:#6b7280;display:block;font-size:.8rem;margin-top:6px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.cb-topic-list>li.cb-topic-empty-hint{flex:0 0 auto;width:100%}.cb-topic-empty-hint{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;list-style:none;margin:0;padding:18px 14px;text-align:center}.cb-topic-empty-hint p{color:#64748b;font-size:.8rem;font-weight:600;margin:0 0 6px}.cb-topic-empty-hint span{color:#94a3b8;font-size:.75rem;line-height:1.45}.curriculum-slot{display:flex;flex-direction:column;gap:10px;grid-column:1/-1}.curriculum-slot__label{color:#0f172a;color:var(--text-dark,#0f172a);font-size:.85rem;font-weight:600}.cb-root{background:linear-gradient(165deg,#f8fafc,#fff 42%,#f1f5f9);border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 1px 2px #0f172a0a,0 12px 32px -8px #0f172a1f;overflow:hidden;padding:20px 20px 22px;position:relative}.cb-root:before{background:linear-gradient(90deg,#2563eb,#6366f1 45%,#0ea5e9);border-radius:16px 16px 0 0;content:"";height:3px;left:0;pointer-events:none;position:absolute;right:0;top:0}.cb-header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:20px;position:relative;z-index:1}.cb-header__titles h2{color:#0f172a;font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin:0}.cb-header__titles p{color:#64748b;font-size:.875rem;line-height:1.45;margin:6px 0 0}.cb-course-line{color:#64748b;font-size:.8rem;margin:10px 0 0}.cb-course-line strong{color:#334155;font-weight:600}.cb-course-line em{color:#94a3b8;font-style:italic}.cb-btn-log{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 2px #0f172a0d;color:#334155;cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:600;gap:8px;justify-content:center;padding:10px 16px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.cb-btn-log:hover{background:#f8fafc;border-color:#cbd5e1;box-shadow:0 2px 6px #0f172a0f}.cb-layout{grid-gap:18px;display:grid;gap:18px;grid-template-columns:1fr;position:relative;z-index:1}@media (min-width:960px){.cb-layout{align-items:stretch;gap:20px;grid-template-columns:minmax(300px,380px) minmax(0,1fr)}}.cb-panel{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 1px 3px #0f172a0f,0 8px 24px -6px #0f172a14;display:flex;flex-direction:column;min-height:320px;overflow:hidden}.cb-panel__head{align-items:center;background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f1f5f9;display:flex;gap:12px;justify-content:space-between;padding:14px 16px}.cb-panel__head h3{color:#0f172a;font-size:.9rem;font-weight:700;margin:0}.cb-btn-primary-dark{background:#0f172a;border:none;border-radius:9px;box-shadow:0 1px 2px #0f172a1f;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;padding:8px 14px;transition:background .15s ease}.cb-btn-primary-dark:hover{background:#1e293b}.cb-list-scroll{gap:10px;overflow-y:auto;padding:12px}.cb-empty,.cb-list-scroll{display:flex;flex:1 1;flex-direction:column}.cb-empty{align-items:center;background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px;justify-content:center;margin:8px;padding:36px 20px;text-align:center}.cb-empty p{color:#475569;font-size:.9rem;font-weight:600;margin:0}.cb-empty span{color:#94a3b8;display:block;font-size:.78rem;line-height:1.45;margin-top:8px;max-width:240px}.cb-btn-blue{background:#2563eb;border:none;border-radius:10px;box-shadow:0 2px 8px #2563eb59;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;margin-top:18px;padding:10px 18px;transition:background .15s ease}.cb-btn-blue:hover{background:#1d4ed8}.cb-section-card{background:#fafbfc;border:1px solid #e2e8f0;border-left-width:4px;border-radius:12px;box-shadow:0 1px 2px #0f172a0a;cursor:pointer;display:block;padding:12px 12px 12px 14px;text-align:left;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease;width:100%}.cb-section-card:hover{background:#fff;box-shadow:0 4px 14px #0f172a14}.cb-section-card.is-selected{background:#fff;border-color:#bfdbfe;box-shadow:0 0 0 2px #3b82f6,0 8px 22px #2563eb1f}.cb-section-card__row{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.cb-section-card__main{flex:1 1;min-width:0}.cb-section-card__title-row{align-items:center;display:flex;gap:10px}.cb-num-badge{align-items:center;background:#0f172a;border-radius:999px;color:#fff;display:inline-flex;flex-shrink:0;font-size:.75rem;font-weight:700;height:28px;justify-content:center;width:28px}.cb-section-card__title{color:#0f172a;flex:1 1;font-size:.9rem;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cb-section-card__preview{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#64748b;display:-webkit-box;font-size:.75rem;line-height:1.4;margin:8px 0 0;overflow:hidden;padding-left:38px}.cb-icon-btn{align-items:center;background:#0000;border:none;border-radius:8px;color:#94a3b8;cursor:pointer;display:inline-flex;flex-shrink:0;height:34px;justify-content:center;padding:0;transition:background .15s ease,color .15s ease;width:34px}.cb-icon-btn:hover{background:#fef2f2;color:#e11d48}.cb-section-card--emerald{border-left-color:#10b981}.cb-section-card--blue{border-left-color:#3b82f6}.cb-section-card--violet{border-left-color:#8b5cf6}.cb-section-card--amber{border-left-color:#f59e0b}.cb-section-card--rose{border-left-color:#f43f5e}.cb-section-card--cyan{border-left-color:#06b6d4}.cb-editor{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 1px 3px #0f172a0f,0 8px 24px -6px #0f172a14;display:flex;flex-direction:column;min-height:320px;overflow:hidden}.cb-editor--empty{align-items:center;background:linear-gradient(180deg,#fafbfc,#fff);justify-content:center;padding:40px 24px;text-align:center}.cb-editor--empty p{color:#475569;font-size:.9rem;font-weight:600;margin:0}.cb-editor--empty span{color:#94a3b8;display:block;font-size:.78rem;line-height:1.45;margin-top:8px;max-width:280px}.cb-editor__head{background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f1f5f9;padding:14px 16px 16px}.cb-editor__kicker{color:#94a3b8;font-size:.65rem;font-weight:700;letter-spacing:.08em;margin:0 0 8px;text-transform:uppercase}.cb-editor__title-row{align-items:center;display:flex;gap:12px}.cb-num-badge--lg{font-size:.875rem;height:36px;width:36px}.cb-input{background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#0f172a;flex:1 1;font-family:inherit;font-size:.9rem;font-weight:600;min-width:0;outline:none;padding:10px 14px;transition:border-color .15s ease,box-shadow .15s ease}.cb-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.cb-editor__topics-label{background:#fafbfc;border-bottom:1px solid #f1f5f9;color:#64748b;font-size:.8rem;font-weight:600;margin:0;padding:10px 16px}.cb-topic-list{display:flex;flex:1 1;flex-direction:column;gap:10px;list-style:none;margin:0;overflow-y:auto;padding:14px 16px}.cb-topic-list li{align-items:center;display:flex;gap:10px}.cb-topic-bullet{color:#cbd5e1;font-size:1.1rem;line-height:1;-webkit-user-select:none;user-select:none}.cb-input--topic{background:#f8fafc;font-weight:400}.cb-input--topic:focus{background:#fff}.cb-editor__footer{background:#fafbfc;border-top:1px solid #f1f5f9;padding:14px 16px}.cb-topic-add-row{align-items:stretch;display:flex;gap:10px}.cb-btn-solid-blue{background:#2563eb;border:none;border-radius:10px;color:#fff;cursor:pointer;flex-shrink:0;font-size:.875rem;font-weight:600;padding:10px 18px;transition:background .15s ease}.cb-btn-solid-blue:hover{background:#1d4ed8}.auth-page{align-items:center;background:var(--bg-main);display:flex;justify-content:center;min-height:100vh;padding:var(--space-4) var(--space-2)}.auth-shell{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);max-width:420px;overflow:hidden;padding:28px 32px 32px;width:100%}.auth-form-header{display:flex;justify-content:center;margin-bottom:24px}.auth-brand{align-items:center;display:flex;flex-direction:column;gap:6px;line-height:0}.auth-logo-img{display:block;height:auto;object-fit:contain;width:120px}.auth-brand-title{color:#000;font-size:1.4rem;font-weight:600;letter-spacing:.03em;line-height:1.25;margin:0;text-align:center}.auth-form-title{color:var(--text-dark);font-size:1.25rem;font-weight:700;margin:0 0 var(--space-1) 0}.auth-form-subtitle{color:var(--text-light);font-size:.9rem;margin:0}.auth-form{gap:18px}.auth-form,.auth-form>div{display:flex;flex-direction:column}.auth-form>div{gap:6px}.auth-label{color:var(--text-dark);font-size:.85rem;font-weight:600;margin:0}.auth-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dark);font-size:.9rem;outline:none;padding:10px 14px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.auth-input::placeholder{color:var(--text-light)}.auth-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0ea5a426}.auth-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-sm);color:var(--error);font-size:.85rem;padding:var(--space-1) var(--space-2)}.auth-primary-btn{align-items:center;background:var(--primary);border:none;border-radius:var(--radius-sm);color:var(--text-white);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:var(--space-1);justify-content:center;padding:10px 18px;transition:background .2s ease}.auth-primary-btn:hover:not(:disabled){background:var(--primary-hover)}.auth-primary-btn:disabled{cursor:not-allowed;opacity:.6}.auth-hint{color:var(--text-light);font-size:.8rem;margin:4px 0 0;text-align:center}.auth-hint strong{color:var(--text-dark)}@media (max-width:640px){.auth-page{padding:var(--space-3) var(--space-2)}.auth-shell{padding:24px 24px 28px}}*{box-sizing:border-box}.app-auth-loading{align-items:center;background:#f9fafb;color:#374151;display:flex;flex-direction:column;font-family:system-ui,sans-serif;gap:14px;justify-content:center;min-height:100vh}.app-auth-loading-logo{height:72px;object-fit:contain;width:72px}.app-auth-loading-spinner{animation:app-auth-spin .75s linear infinite;border:3px solid #e5e7eb;border-radius:50%;border-top-color:#2563eb;height:36px;width:36px}@keyframes app-auth-spin{to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.69d9f252.css.map*/