:root,[data-theme=blue]{--color-bg: #f4f6f9;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-muted: #64748b;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-danger: #dc2626;--sidebar-bg: #0f172a;--sidebar-text: #e2e8f0;--sidebar-muted: #94a3b8;--sidebar-link: #cbd5e1;--sidebar-border: rgba(255, 255, 255, .1)}[data-theme=emerald]{--color-primary: #059669;--color-primary-hover: #047857;--sidebar-bg: #064e3b}[data-theme=violet]{--color-primary: #7c3aed;--color-primary-hover: #6d28d9;--sidebar-bg: #2e1065}[data-theme=rose]{--color-primary: #e11d48;--color-primary-hover: #be123c;--sidebar-bg: #4c0519}[data-theme=dark]{--color-bg: #0f172a;--color-surface: #1e293b;--color-border: #334155;--color-text: #f1f5f9;--color-muted: #94a3b8;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--sidebar-bg: #020617;--sidebar-text: #e2e8f0;--sidebar-muted: #64748b;--sidebar-link: #cbd5e1;--sidebar-border: rgba(255, 255, 255, .08);--shadow: 0 1px 3px rgba(0, 0, 0, .3)}:root{--sidebar-width: 240px;--radius: 8px;--shadow: 0 1px 3px rgba(15, 23, 42, .08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);color:var(--sidebar-text);padding:1.5rem 1rem;flex-shrink:0;display:flex;flex-direction:column;min-height:100vh}.brand-title{display:block;font-size:1.5rem;font-weight:700;color:#fff}.brand-title-row{display:flex;align-items:center;gap:.5rem}.brand-title-row svg{flex-shrink:0;opacity:.95}.brand-sub{font-size:.75rem;color:var(--sidebar-muted)}.nav{margin-top:2rem;flex:1;display:flex;flex-direction:column;gap:.25rem}.nav-link{display:flex;align-items:center;gap:.625rem;padding:.625rem .875rem;border-radius:var(--radius);color:var(--sidebar-link);font-size:.9375rem}.nav-link svg{flex-shrink:0;opacity:.9}.nav-link.active svg{opacity:1}.nav-link:hover{background:#ffffff0f}.nav-link.active{background:var(--color-primary);color:#fff}.main{flex:1;display:flex;flex-direction:column;min-width:0}.header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.header-title{font-size:1.125rem;font-weight:600}.content{padding:1.5rem;flex:1}.muted{color:var(--color-muted);font-size:.875rem}.error-fallback{padding:2rem 1rem;text-align:center}.error-fallback h2{margin-bottom:.5rem;font-size:1.125rem}.error-fallback .btn{margin-top:1rem}.btn{border:none;border-radius:var(--radius);padding:.625rem 1rem;font-size:.9375rem;cursor:pointer;font-weight:500}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--shadow);padding:2rem;width:100%;max-width:400px;display:flex;flex-direction:column;gap:1rem}.login-card h1{font-size:1.5rem}.field{display:flex;flex-direction:column;gap:.375rem;font-size:.875rem}.field input:focus,.field textarea:focus{outline:2px solid color-mix(in srgb,var(--color-primary) 25%,transparent);outline-offset:1px;border-color:var(--color-primary)}.alert{padding:.75rem;border-radius:var(--radius);font-size:.875rem}.alert-error{background:#fef2f2;color:var(--color-danger);border:1px solid #fecaca}.page-center{min-height:100vh;display:flex;align-items:center;justify-content:center}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}.page-header h2{font-size:1.375rem}.page-hint{margin:-.5rem 0 1rem;font-size:.8125rem}.page-header-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin:1rem 0 2rem}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}.stat-label{display:block;font-size:.8125rem;color:var(--color-muted)}.stat-value{display:block;font-size:1.5rem;font-weight:700;margin-top:.25rem}.stat-sub{display:block;font-size:.75rem;margin-top:.35rem}.stat-sub--link{color:var(--color-primary);text-decoration:none}.stat-sub--link:hover{text-decoration:underline}.stat-card--highlight{border-color:color-mix(in srgb,var(--color-primary) 35%,var(--color-border));background:color-mix(in srgb,var(--color-primary) 5%,var(--color-surface))}.stat-card--highlight .stat-value{color:var(--color-primary)}.fee-filter-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.fee-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;margin-left:.35rem;padding:0 .35rem;font-size:.6875rem;font-weight:600;border-radius:999px;background:color-mix(in srgb,currentColor 12%,transparent)}.fee-balance--overdue{color:var(--color-danger);font-weight:600}.fee-balance--pending{font-weight:500}.amount-quick-btns{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.pay-balance-preview{margin:.5rem 0 0;font-size:.8125rem}.pay-form .form-actions{border-top:none;padding-top:.25rem}.enroll-payment-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .875rem;margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--color-border)}.enroll-payment-hint{margin:0;font-size:.8125rem;grid-column:1 / -1}@media(max-width:520px){.enroll-payment-row{grid-template-columns:1fr}}.section-title{margin:1.5rem 0 .75rem;font-size:1rem}.recent-list{list-style:none}.recent-list li{padding:.5rem 0;border-bottom:1px solid var(--color-border)}.table-wrap{overflow-x:auto;background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem;table-layout:auto}.data-table th,.data-table td{padding:.8rem 1rem;text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table th{background:var(--color-bg);font-weight:600;color:var(--color-muted)}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:color-mix(in srgb,var(--color-primary) 4%,var(--color-surface))}.data-table .cell-date,.data-table .cell-num{white-space:nowrap;width:1%}.data-table .cell-id{white-space:nowrap;width:1%;font-variant-numeric:tabular-nums;color:var(--color-muted);font-weight:500}.data-table .cell-mobile{white-space:nowrap;width:1%;font-variant-numeric:tabular-nums}.data-table .cell-name{min-width:8rem}.data-table .cell-ellipsis{max-width:11rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.data-table .cell-ellipsis-text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table--students{table-layout:auto;width:100%}.data-table--students th,.data-table--students td{padding:.8rem .85rem;overflow:visible}.data-table--students th:first-child,.data-table--students td:first-child{padding-left:1rem}.data-table--students .cell-id,.data-table--students .cell-mobile,.data-table--students .cell-status,.data-table--students .cell-date{width:1%;white-space:nowrap}.data-table--students .cell-name{width:1%;white-space:nowrap;max-width:16rem;overflow:hidden;text-overflow:ellipsis}.data-table--students .cell-actions{width:auto;white-space:nowrap;padding-right:1rem}.data-table--courses{table-layout:auto;width:100%}.data-table--courses th,.data-table--courses td{padding:.8rem .85rem;overflow:visible}.data-table--courses th:first-child,.data-table--courses td:first-child{padding-left:1rem}.data-table--courses .cell-name,.data-table--courses .cell-trainer,.data-table--courses .cell-status,.data-table--courses .cell-num,.data-table--courses .cell-date{width:1%;white-space:nowrap}.data-table--courses .cell-name{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.data-table--courses .cell-actions{width:auto;white-space:nowrap;padding-right:1rem}.data-table .cell-status{white-space:nowrap;width:1%}.data-table .cell-actions{white-space:nowrap;width:1%;padding-right:1rem}.status-pill{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:capitalize;letter-spacing:.01em;background:var(--color-bg);color:var(--color-muted);border:1px solid var(--color-border)}.status-pill--active{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.status-pill--completed{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.status-pill--inactive{background:#f8fafc;color:#64748b;border-color:#e2e8f0}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.875rem;padding:0}.btn-link:disabled,.btn-link.is-disabled{color:var(--color-muted);cursor:not-allowed;opacity:.65}.btn-link.danger{color:var(--color-danger)}.table-actions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.5rem}.table-action-group{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:.5rem}.table-action-group--inline .receipt-no{font-size:.8125rem;color:var(--color-muted);white-space:nowrap}.btn-action-sm{display:inline-flex;align-items:center;justify-content:center;padding:.3rem .7rem;font-size:.78rem;font-weight:500;line-height:1.3;border:1px solid var(--color-primary);border-radius:6px;background:var(--color-surface);color:var(--color-primary);cursor:pointer;white-space:nowrap;font-family:inherit}.btn-action-sm:hover:not(:disabled):not(.btn-action-sm--disabled):not(.btn-action-sm--danger):not(.btn-action-sm--primary){border-color:var(--color-primary);color:#fff;background:var(--color-primary)}.btn-action-sm--primary{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-action-sm--primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff}.btn-action-sm--danger{color:var(--color-danger);border-color:color-mix(in srgb,var(--color-danger) 35%,var(--color-border));background:color-mix(in srgb,var(--color-danger) 6%,var(--color-surface))}.btn-action-sm--danger:hover:not(:disabled){color:#fff;background:var(--color-danger);border-color:var(--color-danger)}.btn-action-sm--disabled{border-color:var(--color-border);background:var(--color-bg);color:var(--color-muted);cursor:default;opacity:.75}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.25rem}.form-stacked{display:flex;flex-direction:column;gap:1.25rem}.enroll-form{gap:0;--enroll-footer-bg: color-mix(in srgb, var(--color-primary) 6%, var(--color-surface))}.modal:has(.enroll-form){max-width:640px}.modal:has(.enroll-form) .modal-body{padding:0}.modal:has(.enroll-form) .enroll-mode-tabs{padding:1rem 1.25rem 0}.enroll-form>fieldset:not(.enroll-form-section--course){padding-inline:1.25rem}.enroll-form .field{gap:.25rem}.enroll-form-footer{margin-top:.75rem;padding:.875rem 1.25rem 1rem;background:var(--enroll-footer-bg);border-top:1px solid var(--color-border)}.enroll-form-footer .enroll-form-section--course{padding:0;margin:0;border:none;background:transparent}.enroll-form-footer .form-actions{margin:.75rem 0 0;padding:0;border:none}.enroll-mode-tabs{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.enroll-form-section{border:none;margin:0;padding:0 0 .625rem;min-inline-size:0}.enroll-form-section+.enroll-form-section{padding-top:.625rem;border-top:1px solid var(--color-border)}.enroll-form-section__title{display:block;width:100%;padding:0;margin:0 0 .5rem;font-size:.6875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted)}.enroll-student-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .875rem}.enroll-student-grid--3{grid-template-columns:repeat(3,1fr)}.enroll-student-grid .field-full{grid-column:1 / -1}@media(max-width:640px){.enroll-student-grid,.enroll-student-grid--3{grid-template-columns:1fr}}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.form-grid .field,.form-stacked .field{position:relative}.form-grid .field:focus-within,.form-stacked .field:focus-within{z-index:2}.field-full{grid-column:1 / -1}.form-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.25rem;padding-top:.75rem;padding-bottom:.25rem;border-top:1px solid var(--color-border);width:100%}.field span{font-weight:500}.field input,.field textarea{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9375rem;font-family:inherit;width:100%;background:var(--color-surface);color:var(--color-text);box-sizing:border-box}.field select,.select-inline{display:block;width:100%;box-sizing:border-box;min-height:2.625rem;padding:.5625rem 2.25rem .5625rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9375rem;font-family:inherit;line-height:1.25;background:var(--color-surface);color:var(--color-text);cursor:pointer;-moz-appearance:auto;appearance:auto;-webkit-appearance:menulist}.select-wrap{display:block;width:100%;box-sizing:border-box;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow:visible;min-height:2.75rem}.select-wrap--inline{display:inline-block;width:auto;min-width:10rem;vertical-align:middle}.select-wrap:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 25%,transparent)}.select-wrap select{display:block;width:100%;box-sizing:border-box;min-height:2.625rem;padding:.5rem 2rem .5rem .75rem;border:none;outline:none;border-radius:0;font-size:.9375rem;font-family:inherit;line-height:1.35;background:transparent;color:var(--color-text);cursor:pointer;-moz-appearance:auto;appearance:auto;-webkit-appearance:menulist}.form-stacked .field .select-wrap:focus-within{z-index:3}.form-select{position:relative;width:100%}.form-select--inline{display:inline-block;width:auto;min-width:10rem;vertical-align:middle}.form-select--inline.form-select--searchable{min-width:14rem}.form-select--disabled .form-select-trigger{opacity:.6;cursor:not-allowed}.field:has(.form-select--open),.enroll-form .field:has(.form-select--open){z-index:5}.form-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:2.75rem;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;text-align:left;cursor:pointer;box-sizing:border-box}.form-select--open .form-select-trigger,.form-select-trigger:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 25%,transparent);outline:none}.form-select.form-select--open{z-index:5}.form-select-placeholder{color:var(--color-muted)}.form-select-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-select-chevron{color:var(--color-muted);font-size:.875rem;flex-shrink:0}.form-select-menu{position:absolute;top:calc(100% + .375rem);left:0;right:0;z-index:20;list-style:none;margin:0;padding:.375rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a26;max-height:12rem;overflow-y:auto;display:flex;flex-direction:column;gap:.2rem}.form-select-menu-wrap{position:absolute;top:calc(100% + .375rem);left:0;right:0;z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a26;overflow:hidden}.form-select--searchable .form-select-menu-wrap{min-width:100%}.form-select-search{padding:.375rem;border-bottom:1px solid var(--color-border);background:var(--color-surface)}.form-select-search input{width:100%;padding:.5rem .625rem;border:1px solid var(--color-border);border-radius:calc(var(--radius) - 2px);background:var(--color-bg);color:var(--color-text);font-size:.875rem;font-family:inherit;box-sizing:border-box}.form-select-search input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 20%,transparent)}.form-select--searchable .form-select-menu{position:static;border:none;border-radius:0;box-shadow:none;max-height:11rem}.form-select-empty{padding:.625rem .75rem;color:var(--color-muted);font-size:.875rem}.form-select-menu button{display:block;width:100%;padding:.625rem .75rem;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--color-text);font-size:.9375rem;font-family:inherit;text-align:left;cursor:pointer}.form-select-menu button.is-selected{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface));color:var(--color-primary);font-weight:600}.form-select-menu button:hover{background:color-mix(in srgb,var(--color-primary) 16%,var(--color-surface));color:var(--color-primary)}.form-select-menu button.is-selected:hover{background:color-mix(in srgb,var(--color-primary) 20%,var(--color-surface))}.form-select-validator{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.date-input{position:relative;width:100%}.date-input-trigger{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:2.75rem;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;text-align:left;cursor:pointer;box-sizing:border-box}.date-input--open .date-input-trigger,.date-input-trigger:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 25%,transparent);outline:none}.date-input--disabled .date-input-trigger{opacity:.6;cursor:not-allowed}.date-input-placeholder{color:var(--color-muted)}.date-input-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-input-icon{font-size:1rem;flex-shrink:0;line-height:1}.date-input-panel{padding:.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a26;box-sizing:border-box;overflow:visible;width:16.25rem;max-width:calc(100vw - 1rem)}.date-input-nav{display:flex;align-items:center;justify-content:space-between;gap:.25rem;margin-bottom:.375rem}.date-input-selects{display:flex;flex:1;gap:.375rem;min-width:0;align-items:center}.date-input-panel .form-select-trigger{min-height:1.75rem;padding:.2rem .375rem;font-size:.75rem}.date-input-month-select{flex:1;min-width:0}.date-input-year-select{flex:0 0 auto;width:5.25rem;min-width:5.25rem}.date-input-year-select .form-select-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em}.date-input-panel .form-select-menu{top:calc(100% + .25rem);bottom:auto;z-index:1110;max-height:9rem;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.date-input-panel .form-select-menu button{padding:.375rem .5rem;font-size:.75rem}.date-input-panel .form-select--open{z-index:1109}.date-input-nav-btn{width:1.625rem;height:1.625rem;border:none;border-radius:calc(var(--radius) - 2px);background:var(--color-bg);color:var(--color-text);font-size:1rem;line-height:1;cursor:pointer;flex-shrink:0}.date-input-nav-btn:hover{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-bg));color:var(--color-primary)}.date-input-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:0;margin-bottom:.25rem}.date-input-weekdays span{text-align:center;font-size:.625rem;font-weight:600;color:var(--color-muted);line-height:1.25rem}.date-input-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0}.date-input-day{width:100%;height:1.75rem;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--color-text);font-size:.75rem;font-family:inherit;cursor:pointer;padding:0}.date-input-day:hover:not(:disabled){background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface))}.date-input-day.is-outside{color:var(--color-muted);opacity:.55}.date-input-day.is-today{font-weight:700;color:var(--color-primary)}.date-input-day.is-selected{background:var(--color-primary);color:#fff}.date-input-day.is-selected.is-today{color:#fff}.date-input-day.is-disabled{opacity:.35;cursor:not-allowed}.date-input-actions{display:flex;justify-content:space-between;margin-top:.375rem;padding-top:.375rem;border-top:1px solid var(--color-border)}.date-input-action{font-size:.75rem;padding:.125rem 0}.field:has(.date-input--open){z-index:5}.date-input.date-input--open{z-index:5}.field input[type=time]{padding:.5rem .625rem;color-scheme:light}.batch-preview{margin:-.25rem 0 0;padding:.5rem .75rem;background:#f0f9ff;border:1px solid #bae6fd;border-radius:var(--radius);font-size:.8125rem;color:#0369a1}.fee-summary-context{margin:0 0 .5rem;font-size:.875rem}.modal:has(.enroll-form) .fee-summary-context{padding:1rem 1.25rem .25rem;margin-bottom:0}.fee-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-bottom:1.25rem;padding:.875rem 1rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius)}.fee-summary-label{display:block;font-size:.75rem;color:var(--color-muted);margin-bottom:.25rem}.fee-summary-value{display:block;font-size:1.125rem;font-weight:600}.fee-summary-balance{color:var(--color-primary)}.student-full-report{display:flex;flex-direction:column;gap:1.5rem}.report-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.875rem 1.5rem}.student-info-layout{display:flex;flex-wrap:wrap;gap:1.25rem;align-items:flex-start}.student-info-layout .detail-grid{flex:1;min-width:220px}.student-photo-report{flex:0 0 auto}.student-photo-report img,.student-photo-report__placeholder{width:140px;height:140px;border-radius:var(--radius);border:1px solid var(--color-border);object-fit:cover}.student-photo-report__placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-muted);font-size:.875rem;background:var(--color-bg)}.student-photo-field{display:grid;grid-template-columns:180px 1fr;gap:.75rem 1rem;align-items:start}.student-photo-field__preview img,.student-photo-field__placeholder{width:180px;height:180px;border-radius:var(--radius);border:1px solid var(--color-border);object-fit:cover}.student-photo-field__placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-muted);border-style:dashed;background:var(--color-bg)}.student-photo-field__input{display:none}.student-photo-field__error{margin-top:.5rem;color:#b00020;font-size:.875rem}.student-photo-field__hint{margin-top:.375rem;font-size:.8125rem}.modal:has(.photo-crop){max-width:480px}.photo-crop__viewport{position:relative;width:100%;height:280px;background:#0f172a;border-radius:var(--radius);overflow:hidden}.photo-crop__zoom{display:flex;flex-direction:column;gap:.375rem;margin-top:1rem;font-size:.875rem}.photo-crop__zoom input[type=range]{width:100%}.photo-crop__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}@media(max-width:640px){.student-photo-field{grid-template-columns:1fr}.student-photo-field__preview img,.student-photo-field__placeholder{width:140px;height:140px}}.detail-item dt{font-size:.75rem;color:var(--color-muted);margin-bottom:.2rem}.detail-item dd{font-size:.9375rem;font-weight:500}.report-stat-grid{margin:0}.enrollment-section .section-title{margin-top:0}.enrollment-meta{margin-bottom:1rem;font-size:.8125rem}.enrollment-fee-summary{margin-bottom:1rem}.subsection-title{font-size:.9375rem;font-weight:600;margin:1rem 0 .75rem}.outstanding-note{font-size:.875rem;margin-bottom:.5rem;padding:.625rem .75rem;background:color-mix(in srgb,var(--color-primary) 8%,var(--color-bg));border:1px solid var(--color-border);border-radius:var(--radius)}.theme-switcher{margin-top:auto;padding-top:1rem;border-top:1px solid var(--sidebar-border)}.theme-label{display:block;font-size:.75rem;color:var(--sidebar-muted);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.04em}.theme-options{display:flex;gap:.5rem;flex-wrap:wrap}.theme-swatch{width:1.75rem;height:1.75rem;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform .15s,border-color .15s}.theme-swatch:hover{transform:scale(1.1)}.theme-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--sidebar-bg),0 0 0 4px #fff}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--color-surface);border-radius:12px;width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 32px #0f172a26}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-header h3{font-size:1.125rem;font-weight:600}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-muted);line-height:1}.modal-body{padding:1.25rem;overflow-y:auto;overflow-x:hidden}.modal-body--scroll{max-height:calc(90vh - 4rem)}.toast-container{position:fixed;bottom:max(1.5rem,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;align-items:center;gap:.75rem;width:min(28rem,calc(100vw - 2rem));pointer-events:none}.toast{position:relative;display:flex;align-items:flex-start;gap:.875rem;width:100%;padding:1rem 1.125rem;border-radius:12px;border:1px solid rgba(148,163,184,.12);background:#1a1f2e;box-shadow:0 12px 32px #00000059,inset 0 1px #ffffff0a;pointer-events:auto;animation:toast-in .3s ease;overflow:hidden}.toast:before{content:"";position:absolute;inset:0 auto 0 0;width:4.5rem;pointer-events:none}.toast--success:before{background:linear-gradient(90deg,rgba(34,197,94,.35) 0%,rgba(34,197,94,.08) 55%,transparent 100%)}.toast--error:before{background:linear-gradient(90deg,rgba(239,68,68,.35) 0%,rgba(239,68,68,.08) 55%,transparent 100%)}.toast--warning:before{background:linear-gradient(90deg,rgba(245,158,11,.35) 0%,rgba(245,158,11,.08) 55%,transparent 100%)}.toast--info:before{background:linear-gradient(90deg,rgba(59,130,246,.35) 0%,rgba(59,130,246,.08) 55%,transparent 100%)}.toast-icon{position:relative;z-index:1;flex-shrink:0;width:1.75rem;height:1.75rem}.toast-icon svg{display:block;width:100%;height:100%}.toast-icon--success{color:#22c55e}.toast-icon--error{color:#ef4444}.toast-icon--warning{color:#f59e0b}.toast-icon--info{color:#3b82f6}.toast-content{position:relative;z-index:1;flex:1;min-width:0;padding-right:.5rem}.toast-title{margin:0;font-size:.9375rem;font-weight:600;line-height:1.35}.toast--success .toast-title{color:#22c55e}.toast--error .toast-title{color:#ef4444}.toast--warning .toast-title{color:#f59e0b}.toast--info .toast-title{color:#3b82f6}.toast-description{margin:.25rem 0 0;font-size:.8125rem;line-height:1.45;color:#94a3b8}.toast-close{position:relative;z-index:1;flex-shrink:0;background:none;border:none;font-size:1.125rem;line-height:1;cursor:pointer;color:#64748b;padding:0;margin-top:.125rem}.toast-close:hover{color:#cbd5e1}@keyframes toast-in{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}.sidebar-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.sidebar-close,.menu-toggle{display:none;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;flex-shrink:0}.sidebar-backdrop{display:none}.header-left{display:flex;align-items:center;gap:.75rem;min-width:0}.header-user{min-width:0}.menu-toggle{width:2.75rem;height:2.75rem;border-radius:var(--radius);color:var(--color-text);background:var(--color-bg)}.menu-icon,.menu-icon:before,.menu-icon:after{display:block;width:1.125rem;height:2px;background:currentColor;border-radius:1px}.menu-icon{position:relative}.menu-icon:before,.menu-icon:after{content:"";position:absolute;left:0}.menu-icon:before{top:-6px}.menu-icon:after{top:6px}.sidebar-close{width:2.25rem;height:2.25rem;font-size:1.5rem;line-height:1;color:var(--sidebar-muted)}.login-card .btn-primary{width:100%}@media(max-width:768px){.toast-container{width:min(28rem,calc(100vw - 1.5rem))}body.nav-open{overflow:hidden}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:90;opacity:0;pointer-events:none;transition:opacity .25s ease}.sidebar-open .sidebar-backdrop{opacity:1;pointer-events:auto}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:100;width:min(280px,88vw);transform:translate(-100%);transition:transform .25s ease;min-height:100dvh;padding-top:max(1.25rem,env(safe-area-inset-top));padding-bottom:max(1rem,env(safe-area-inset-bottom))}.sidebar-open .sidebar{transform:translate(0)}.sidebar-close,.menu-toggle{display:flex}.nav-link{padding:.75rem .875rem;min-height:2.75rem;display:flex;align-items:center}.header{padding:.75rem 1rem;gap:.75rem;flex-wrap:wrap}.header-title{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-user .muted{font-size:.8125rem}.btn-logout{padding:.5rem .75rem;font-size:.875rem}.content{padding:1rem;padding-bottom:max(1rem,env(safe-area-inset-bottom))}.page-header{flex-direction:column;align-items:stretch;gap:.75rem}.page-header h2{font-size:1.25rem}.page-header-actions{flex-wrap:wrap;width:100%}.page-header-actions .btn,.page-header-actions .form-select--inline{flex:1 1 auto;min-width:0}.page-header-actions .list-search--header{flex:1 1 100%;max-width:none}.page-header-actions .form-select--inline{width:100%}.page-header-actions .form-select-trigger{min-height:2.75rem;font-size:16px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;margin:.75rem 0 1.5rem}.stat-card{padding:.875rem}.stat-value{font-size:1.25rem}.form-grid{grid-template-columns:1fr;gap:.875rem}.field-full{grid-column:1}.field input,.field textarea,.form-select-trigger,.list-search-input,.list-toolbar .form-select-trigger{font-size:16px;min-height:2.75rem}.field textarea{min-height:5rem}.form-actions .btn{width:100%;min-height:2.75rem}.fee-summary{grid-template-columns:1fr}.btn{min-height:2.75rem}.login-card{padding:1.5rem}.modal-overlay{padding:0;align-items:flex-end}.modal{max-width:none;max-height:92dvh;border-radius:12px 12px 0 0}.modal-header{padding:.875rem 1rem}.modal-body{padding:1rem}.table-wrap{overflow-x:visible;border:none;background:transparent}.data-table{display:block}.data-table thead{display:none}.data-table tbody{display:flex;flex-direction:column;gap:.75rem}.data-table tr{display:block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.data-table td{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.625rem 1rem;border-bottom:1px solid var(--color-border);text-align:right;font-size:.875rem;width:auto!important;max-width:none!important;min-width:0;white-space:normal;overflow:visible}.data-table td>*:not(.table-action-group){flex:1 1 auto;min-width:0;text-align:right}.data-table td>.status-pill{flex:0 0 auto;margin-left:auto;text-align:center}.data-table .cell-ellipsis-text{max-width:none;flex:1 1 auto;min-width:0;text-align:right}.data-table td:last-child{border-bottom:none}.data-table td:before{content:attr(data-label);font-weight:600;color:var(--color-muted);font-size:.8125rem;text-align:left;flex:0 0 auto;max-width:40%}.data-table td[data-label=""]:before{content:none}.data-table td.cell-actions{justify-content:flex-end}.data-table td.cell-actions .table-action-group{flex:1 1 auto;justify-content:flex-end;flex-wrap:wrap}.recent-list li{font-size:.875rem;word-break:break-word}}@media(max-width:380px){.stat-grid{grid-template-columns:1fr}.header{flex-direction:column;align-items:stretch}.btn-logout{width:100%}}.list-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:0 0 1rem}.checkbox-field{display:flex;flex-direction:row;align-items:center;gap:.5rem}.checkbox-field input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--color-primary);cursor:pointer}.checkbox-field span{font-weight:500;color:var(--color-text)}.list-search{position:relative;flex:1 1 16rem;min-width:min(100%,16rem);max-width:28rem}.list-search--header{flex:1 1 14rem;min-width:min(100%,12rem);max-width:22rem}.page-header .list-search--header{margin-right:.25rem}.list-search-input{width:100%;padding:.55rem 2.25rem .55rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:.875rem}.list-search-input::-webkit-search-cancel-button,.list-search-input::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}.list-search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 18%,transparent)}.list-search-clear{position:absolute;top:50%;right:.35rem;transform:translateY(-50%);width:1.75rem;height:1.75rem;border:none;border-radius:6px;background:transparent;color:var(--color-muted);font-size:1.25rem;line-height:1;cursor:pointer}.list-search-clear:hover{background:var(--color-bg);color:var(--color-text)}.list-toolbar-meta{margin-left:auto;font-size:.8125rem;white-space:nowrap}@media(max-width:640px){.list-toolbar-meta{margin-left:0;width:100%}}.confirm-dialog-lead{margin:0 0 .75rem}.confirm-dialog-hint{margin:0 0 1.25rem;font-size:.875rem;line-height:1.45}.outstanding-banner{background:#fff7ed;border:1px solid #fdba74;border-radius:10px;padding:1rem 1.1rem;margin:.75rem 0 1rem}.outstanding-banner-title{margin:0 0 .35rem;font-weight:600;color:#9a3412}.outstanding-banner-amount{margin:0 0 .5rem;font-size:1.05rem;color:#7c2d12}.congrats-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#0f172a9e;animation:congrats-fade-in .55s ease}.congrats-rays{position:absolute;width:min(28rem,90vw);height:min(28rem,90vw);border-radius:50%;background:radial-gradient(circle,rgba(251,191,36,.28) 0%,rgba(251,191,36,.08) 35%,transparent 70%);animation:congrats-rays-pulse 2.8s ease-in-out infinite;pointer-events:none;z-index:1}.congrats-card{position:relative;z-index:2;width:min(420px,100%);text-align:center;background:#fff;border-radius:18px;padding:2.1rem 1.5rem 1.6rem;box-shadow:0 24px 60px #0f172a47;animation:congrats-pop .85s cubic-bezier(.22,1,.36,1)}.congrats-badge-wrap{position:relative;width:4.5rem;height:4.5rem;margin:0 auto 1rem}.congrats-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;border:2px solid rgba(16,185,129,.45);animation:congrats-ring-pulse 2.2s ease-out infinite}.congrats-badge{position:absolute;top:.35rem;right:.35rem;bottom:.35rem;left:.35rem;border-radius:999px;display:grid;place-items:center;background:linear-gradient(145deg,#34d399,#059669);color:#fff;font-size:1.65rem;font-weight:700;box-shadow:0 8px 20px #05966959;animation:congrats-badge-in .9s cubic-bezier(.22,1,.36,1)}.congrats-kicker{margin:0 0 .35rem;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#059669;animation:congrats-text-in .7s ease .2s both}.congrats-card h2{margin:0 0 .65rem;font-size:1.75rem;color:#0f172a;animation:congrats-text-in .75s ease .28s both}.congrats-lead{margin:0;color:#64748b;line-height:1.45;animation:congrats-text-in .75s ease .36s both}.congrats-lead strong{color:#0f172a}.congrats-course{margin:.45rem 0 1.4rem;font-size:1.2rem;font-weight:700;color:#1d4ed8;animation:congrats-text-in .75s ease .44s both}.congrats-btn{min-width:8.5rem;animation:congrats-text-in .75s ease .55s both}.congrats-burst{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:1}.congrats-confetti{position:absolute;top:-24px;width:9px;height:14px;border-radius:2px;opacity:0;will-change:transform,opacity;animation-name:congrats-fall;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:infinite}.congrats-confetti-size--0{width:7px;height:11px;border-radius:1px}.congrats-confetti-size--1{width:10px;height:10px;border-radius:50%}.congrats-confetti-size--2{width:8px;height:14px;border-radius:2px}.congrats-confetti-size--3{width:12px;height:6px;border-radius:2px}.congrats-confetti--0{background:#f59e0b;--dx: -18px;--spin: 480deg}.congrats-confetti--1{background:#3b82f6;--dx: 16px;--spin: -520deg}.congrats-confetti--2{background:#10b981;--dx: -10px;--spin: 560deg}.congrats-confetti--3{background:#ef4444;--dx: 22px;--spin: -440deg}.congrats-confetti--4{background:#8b5cf6;--dx: -24px;--spin: 600deg}.congrats-confetti--5{background:#ec4899;--dx: 12px;--spin: -500deg}.congrats-confetti--6{background:#14b8a6;--dx: -8px;--spin: 420deg}.congrats-confetti--7{background:#f97316;--dx: 20px;--spin: -580deg}@keyframes congrats-fall{0%{transform:translate3d(0,-8vh,0) rotate(0);opacity:0}8%{opacity:1}92%{opacity:1}to{transform:translate3d(var(--dx, 12px),110vh,0) rotate(var(--spin, 520deg));opacity:0}}@keyframes congrats-fade-in{0%{opacity:0}to{opacity:1}}@keyframes congrats-pop{0%{opacity:0;transform:scale(.82) translateY(22px)}60%{opacity:1;transform:scale(1.03) translateY(-2px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes congrats-badge-in{0%{transform:scale(.4);opacity:0}55%{transform:scale(1.12);opacity:1}to{transform:scale(1);opacity:1}}@keyframes congrats-ring-pulse{0%{transform:scale(.85);opacity:.9}70%{transform:scale(1.35);opacity:0}to{transform:scale(1.35);opacity:0}}@keyframes congrats-rays-pulse{0%,to{transform:scale(.92);opacity:.7}50%{transform:scale(1.08);opacity:1}}@keyframes congrats-text-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.congrats-overlay,.congrats-card,.congrats-badge,.congrats-ring,.congrats-rays,.congrats-kicker,.congrats-card h2,.congrats-lead,.congrats-course,.congrats-btn,.congrats-confetti{animation:none!important;opacity:1!important;transform:none!important}.congrats-burst{display:none}}
