.app-notifications[data-v-b48b59bd]{position:fixed;top:92px;right:28px;z-index:140;display:grid;width:min(420px,calc(100vw - 40px));gap:10px;pointer-events:none}.app-notification[data-v-b48b59bd]{display:grid;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:10px;min-height:58px;border:1px solid transparent;border-radius:12px;padding:11px 12px 11px 14px;box-shadow:0 12px 34px #1f3a5b2e;font-size:13px;font-weight:700;line-height:1.5;pointer-events:auto}.app-notification-success[data-v-b48b59bd]{border-color:#cbe8d8;color:#1e6746;background:#edf8f2}.app-notification-error[data-v-b48b59bd]{border-color:#f0c9cf;color:#a92f3e;background:#fff0f2}.app-notification-icon[data-v-b48b59bd]{display:grid;place-items:center;width:24px;height:24px}.app-notification-icon svg[data-v-b48b59bd]{width:21px;height:21px;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.app-notification button[data-v-b48b59bd]{display:grid;width:24px;height:24px;place-items:center;border-radius:7px;padding:0;color:currentColor;background:transparent;opacity:.65}.app-notification button svg[data-v-b48b59bd]{width:16px;height:16px;stroke-width:2}.app-notification button[data-v-b48b59bd]:hover{background:#fff9;opacity:1}.app-notification-enter-active[data-v-b48b59bd],.app-notification-leave-active[data-v-b48b59bd]{transition:opacity .16s ease,transform .16s ease}.app-notification-enter-from[data-v-b48b59bd],.app-notification-leave-to[data-v-b48b59bd]{opacity:0;transform:translateY(-8px)}@media(max-width:720px){.app-notifications[data-v-b48b59bd]{top:86px;right:20px;left:20px;width:auto}}.school-logo[data-v-9a1e22a1]{border-radius:0;background:transparent;box-shadow:none;object-fit:contain}:root{color:#17243a;background:#f3f7fb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--brand: #1f5491;--brand-hover: #286b9d;--accent: #3da9db;--ink: #17243a;--muted: #78879b;--line: #e3eaf2;--surface: #ffffff;--canvas: #f3f7fb;--shadow: 0 10px 30px rgba(31, 84, 145, .07)}*{box-sizing:border-box}html{min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0;background:var(--canvas)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin-top:0}.admin-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;transition:grid-template-columns .18s ease}.admin-shell.is-collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar{position:sticky;top:0;z-index:20;display:flex;flex-direction:column;height:100vh;border-right:1px solid var(--line);background:#fff;overflow:visible}.brand{display:flex;align-items:center;gap:12px;height:78px;flex:0 0 auto;border-bottom:1px solid #edf2f7;padding:0 20px;white-space:nowrap}.brand-mark,.login-logo{display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;border-radius:13px;color:#fff;background:linear-gradient(145deg,var(--brand),var(--accent));box-shadow:0 8px 18px #1f549138;font-weight:800}.brand-copy{display:grid;transition:opacity .14s ease}.brand-copy strong{font-size:16px}.is-collapsed .brand{padding:0 18px}.is-collapsed .brand-copy,.is-collapsed .menu-group-title>span:last-child,.is-collapsed .menu-link span{opacity:0;pointer-events:none}.menu{display:grid;align-content:start;gap:14px;flex:1;padding:18px 12px;overflow-y:auto;scrollbar-width:thin}.menu-group{display:grid;gap:4px}.menu-group-title{display:flex;align-items:center;gap:11px;min-height:34px;padding:0 10px;color:#41526b;font-size:13px;font-weight:750;white-space:nowrap}.menu-icon{display:grid;place-items:center;width:28px;height:28px;flex:0 0 auto;border-radius:9px;color:var(--brand);background:#edf5fc}.menu-icon svg{width:16px;height:16px;stroke-width:1.9}.menu-link{display:flex;align-items:center;min-height:38px;margin-left:39px;border-radius:9px;padding:0 10px;color:#64758b;font-size:13px;white-space:nowrap}.menu-link:hover{color:var(--brand);background:#f6f9fc}.menu-link.router-link-exact-active,.menu-link.is-section-active{color:var(--brand);background:#eaf3fb;font-weight:750}.menu-link-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:auto;border-radius:999px;padding:0 6px;color:#996619;background:#fff2d7;font-size:11px;font-variant-numeric:tabular-nums;font-weight:800;line-height:1}.is-collapsed .menu-link{width:40px;min-height:4px;margin-left:6px;padding:0;overflow:hidden}.is-collapsed .menu-link-badge{opacity:0;pointer-events:none}.sidebar-footer{display:grid;gap:2px;max-height:64px;flex:0 0 auto;overflow:hidden;padding:10px 12px 14px;color:#8c97a5;font-size:11px;line-height:1.55;text-align:center;white-space:nowrap;transition:max-height .14s ease,opacity .14s ease,padding .14s ease}.is-collapsed .sidebar-footer{max-height:0;padding-top:0;padding-bottom:0;opacity:0;pointer-events:none}.collapse-button{position:absolute;top:50%;right:-19px;z-index:2;display:grid;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;padding:0;place-items:center;color:#53657b;background:#fff;box-shadow:0 4px 12px #17243a1f;transform:translateY(-50%)}.collapse-button:hover{color:var(--brand);border-color:#b9ccdf;background:#f8fbfd}.collapse-button:focus-visible{outline:3px solid rgba(61,169,219,.22);outline-offset:2px}.collapse-button svg{width:19px;height:19px;stroke-width:2;transition:transform .18s ease}.is-collapsed .collapse-button svg{transform:rotate(180deg)}.workspace{min-width:0}.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:space-between;gap:24px;height:78px;border-bottom:1px solid var(--line);padding:0 30px;background:#fffffff0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar-heading{display:flex;align-items:center;gap:13px;min-width:0}.topbar-back{display:inline-flex;align-items:center;justify-content:center;width:36px;min-height:36px;flex:0 0 auto;border:1px solid #d4dfeb;border-radius:10px;padding:0;color:#52667f;background:#fff;font-size:12px;font-weight:750}.topbar-back:hover{border-color:#a9bfd5;color:var(--brand);background:#f7fafc}.topbar-back svg{width:17px;height:17px;stroke-width:2}.topbar-title{min-width:0}.topbar-title>strong{font-size:17px}.topbar-actions{display:flex;align-items:center;gap:16px}.profile-menu{position:relative}.profile-button{display:flex;align-items:center;gap:9px;min-height:50px;padding:4px 6px;color:var(--ink);background:transparent;text-align:left}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;color:#fff;background:var(--brand);font-weight:750}.avatar svg{width:19px;height:19px;stroke-width:1.9}.profile-chevron{width:15px;height:15px;flex:0 0 auto;color:var(--muted);stroke-width:2}.profile-copy{display:grid;gap:2px}.profile-copy strong{font-size:13px}.profile-copy small{max-width:160px;overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.profile-popover{position:absolute;top:54px;right:0;display:grid;width:150px;border:1px solid var(--line);border-radius:12px;padding:7px;background:#fff;box-shadow:var(--shadow)}.profile-popover a,.profile-popover button{display:flex;align-items:center;width:100%;min-height:38px;border-radius:8px;padding:0 10px;color:#46566c;background:transparent;text-align:left;font-size:13px}.profile-popover a:hover,.profile-popover button:hover{background:#f2f6fa}.page-content{display:grid;gap:16px;width:min(1500px,100%);margin:0 auto;padding:24px 28px 40px}.page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.page-toolbar-actions{justify-content:flex-end}.toolbar-action{margin-left:auto}.muted{color:var(--muted)}.panel{border:1px solid rgba(218,228,239,.92);border-radius:12px;padding:18px;background:var(--surface)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.panel-heading h2{margin:0;font-size:18px}.panel-heading h3{margin:0}.panel-heading a{color:var(--brand);font-size:13px;font-weight:750}.inline-icon-link{display:inline-flex;align-items:center;gap:5px}.inline-icon-link svg{width:15px;height:15px;stroke-width:2}.panel-heading.compact{margin-bottom:12px}.primary-button,.secondary-button,.danger-outline-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;border-radius:10px;padding:0 16px;font-size:13px;font-weight:750}.primary-button>svg,.secondary-button>svg,.danger-outline-button>svg{width:16px;height:16px;flex:0 0 auto;margin-right:6px;stroke-width:2}.primary-button{color:#fff;background:var(--brand)}.primary-button:hover{background:var(--brand-hover)}.secondary-button{border:1px solid #cedae7;color:#425773;background:#fff}.secondary-button:hover{border-color:#a9bfd5;color:var(--brand);background:#f7fafc}.danger-outline-button{border:1px solid #efc2c7;color:#b33b48;background:#fff7f8}.text-button,.danger-text-button{min-height:30px;padding:0 4px;color:var(--brand);background:transparent;font-size:13px;font-weight:750}.danger-text-button{color:#ba4350}.icon-button{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:#66778c;background:#f2f5f8}.icon-button svg{width:18px;height:18px;stroke-width:2}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-card{position:relative;display:grid;gap:8px;min-height:116px;overflow:hidden;border:1px solid var(--line);border-radius:12px;padding:18px;background:#fff}.metric-card:after{position:absolute;top:18px;right:18px;width:36px;height:36px;border-radius:10px;content:"";opacity:.9}.metric-card.has-icon:after{content:none}.metric-card>span:not(.metric-card-icon){color:#62738a;font-size:13px;font-weight:700}.metric-card-icon{position:absolute;top:18px;right:18px;display:grid;place-items:center;width:36px;height:36px;border-radius:10px}.metric-card-icon svg{width:21px;height:21px;stroke-width:1.8}.metric-card strong{font-size:32px;line-height:1}.metric-card small{color:var(--muted)}.metric-blue:after{background:linear-gradient(135deg,#e0ebf7,#bfd8ef)}.metric-cyan:after{background:linear-gradient(135deg,#daf2fa,#addff0)}.metric-amber:after{background:linear-gradient(135deg,#fff1d7,#ffd99a)}.metric-rose:after{background:linear-gradient(135deg,#fbe3e6,#f5bcc3)}.metric-blue .metric-card-icon{color:#285f96;background:linear-gradient(135deg,#e0ebf7,#bfd8ef)}.metric-cyan .metric-card-icon{color:#167a96;background:linear-gradient(135deg,#daf2fa,#addff0)}.metric-amber .metric-card-icon{color:#946119;background:linear-gradient(135deg,#fff1d7,#ffd99a)}.metric-rose .metric-card-icon{color:#a94455;background:linear-gradient(135deg,#fbe3e6,#f5bcc3)}.dashboard-section{min-width:0}.timeline-list{display:grid}.timeline-item{display:grid;grid-template-columns:50px 16px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:72px;border-top:1px solid #edf1f6}.timeline-item:first-child{border-top:0}.timeline-item time{color:var(--brand);font-size:13px;font-weight:800}.timeline-dot{width:9px;height:9px;border:2px solid #fff;border-radius:999px;background:var(--accent);box-shadow:0 0 0 3px #dcedf8}.timeline-item strong{font-size:14px}.timeline-item p{margin:4px 0 0;color:var(--muted);font-size:12px}.filter-bar{display:flex;align-items:center;gap:12px;min-height:40px}.search-input{display:flex;align-items:center;gap:8px;width:min(420px,100%);min-height:40px;border:1px solid #d4dfeb;border-radius:10px;padding:0 12px;background:#fff}.search-input>svg{width:17px;height:17px;flex:0 0 auto;color:#8d9bac;stroke-width:2}.search-input input{width:100%;border:0;outline:none;color:var(--ink);background:transparent}.filter-select{min-width:140px;min-height:40px;border:1px solid #d4dfeb;border-radius:10px;padding:0 34px 0 12px;color:#41536a;background:#fff;outline:none}.filter-result{margin-left:auto;color:var(--muted);font-size:12px}.form-error,.inline-warning{border-radius:10px;padding:11px 13px;font-size:13px}.form-error{margin:0;color:#a92f3e;background:#fff0f2}.inline-warning{color:#8d5c16;background:#fff7e6}.table-panel{padding:0;overflow:hidden}.table-panel-toolbar{display:flex;min-height:68px;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:13px 16px}.table-scroll{width:100%;overflow-x:auto}.entity-table{width:100%;min-width:900px;border-collapse:collapse;color:#43536a;font-size:13px;text-align:left}.entity-table th,.entity-table td{border-top:1px solid #edf1f6;padding:12px 16px;vertical-align:middle}.entity-table th{height:48px;border-top:0;color:#8996a7;background:#f8fafc;font-size:11px;font-weight:800;letter-spacing:.04em;white-space:nowrap}.entity-table tbody tr:hover{background:#f9fbfd}.entity-table td{height:60px}.entity-table td>strong,.entity-table .primary-cell strong{color:var(--ink)}.entity-table .primary-cell small{color:var(--muted);font-size:11px}.entity-table time{color:#68798f;font-size:12px;white-space:nowrap}.entity-table code{color:#52657c;font-size:11px}.table-stacked{display:grid;gap:4px;min-width:0}.table-stacked strong{color:var(--ink)}.table-stacked small{color:var(--muted);font-size:11px}.selection-column{width:54px;text-align:center!important}.primary-cell{display:flex;align-items:center;gap:11px;min-width:0}.primary-cell>div{display:grid;gap:4px;min-width:0}.row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.status-badge{display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-height:25px;border-radius:999px;padding:0 9px;font-size:10px;font-weight:800;white-space:nowrap}.status-green,.status-published,.status-approved{color:#1d704b;background:#e4f5ec}.status-blue{color:#1f5f96;background:#e8f2fb}.status-amber,.status-draft,.status-pending_review{color:#996619;background:#fff2d7}.status-gray,.status-unpublished,.status-cancelled,.status-archived{color:#667386;background:#edf1f5}.progress{display:block;width:82px;height:5px;overflow:hidden;border-radius:999px;background:#e8eef5}.progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--accent))}.progress.large{width:100%;height:7px}.course-table th:nth-child(1){width:30%}.course-table th:nth-child(2){width:23%}.course-table th:nth-child(3){width:17%}.course-table th:nth-child(4){width:12%}.course-table th:nth-child(5){width:18%}.review-table{min-width:1040px}.review-table th:nth-child(2){width:27%}.review-table th:nth-child(3){width:23%}.review-table th:nth-child(4){width:15%}.review-table th:nth-child(5){width:10%}.review-table th:nth-child(6){width:18%}.withdrawal-table{min-width:1050px}.withdrawal-table th:nth-child(1){width:22%}.withdrawal-table th:nth-child(2){width:19%}.withdrawal-table th:nth-child(3){width:23%}.withdrawal-table th:nth-child(4){width:15%}.withdrawal-table th:nth-child(5){width:9%}.withdrawal-table th:nth-child(6){width:12%}.learner-table th:nth-child(1){width:28%}.learner-table th:nth-child(2){width:23%}.learner-table th:nth-child(3){width:16%}.learner-table th:nth-child(4){width:16%}.learner-table th:nth-child(5){width:17%}.staff-table th:nth-child(1){width:25%}.staff-table th:nth-child(2){width:20%}.staff-table th:nth-child(3){width:32%}.staff-table th:nth-child(4){width:12%}.staff-table th:nth-child(5){width:11%}.account-table,.admin-account-table{min-width:1000px}.account-table th:nth-child(1),.admin-account-table th:nth-child(1){width:24%}.account-table th:nth-child(2),.admin-account-table th:nth-child(2){width:15%}.account-table th:nth-child(3),.admin-account-table th:nth-child(3){width:20%}.account-table th:nth-child(4),.admin-account-table th:nth-child(4){width:15%}.account-table th:nth-child(5),.admin-account-table th:nth-child(5){width:10%}.account-table th:nth-child(6),.admin-account-table th:nth-child(6){width:16%}.admin-account-table th:nth-child(5){width:18%}.admin-account-table .row-actions{flex-wrap:nowrap;white-space:nowrap}.attendance-table{min-width:1000px}.attendance-table th:nth-child(1){width:21%}.attendance-table th:nth-child(2){width:25%}.attendance-table th:nth-child(3),.attendance-table th:nth-child(4){width:16%}.attendance-table th:nth-child(5){width:11%}.attendance-table th:nth-child(6){width:11%}.audit-table{min-width:1260px}.audit-table th:nth-child(1){width:14%}.audit-table th:nth-child(2){width:10%}.audit-table th:nth-child(3){width:9%}.audit-table th:nth-child(4){width:15%}.audit-table th:nth-child(5){width:20%}.audit-table th:nth-child(6){width:32%}.audit-filter-bar{flex-wrap:wrap}.audit-time-range{display:flex;align-items:center;gap:8px}.audit-time-field{display:flex;align-items:center;gap:7px;min-height:40px;border:1px solid #d4dfeb;border-radius:10px;padding:0 10px;color:#728197;background:#fff;font-size:11px;font-weight:700;white-space:nowrap}.audit-time-field input{width:150px;border:0;outline:none;color:#41536a;background:transparent;font-size:12px}.audit-filter-check{display:inline-flex;align-items:center;gap:7px;color:#5e7087;font-size:12px;white-space:nowrap}.audit-filter-check input{width:15px;height:15px;margin:0;accent-color:var(--brand)}.audit-object strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.audit-summary>span{min-width:0;line-height:1.55}.audit-summary .text-button{flex:0 0 auto;white-space:nowrap}.audit-row-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto}.audit-row-expanded{background:#f8fbfd}.audit-detail-row:hover{background:transparent!important}.audit-detail-row>td{height:auto;padding:0 16px 16px;background:#f8fbfd}.audit-detail{display:grid;gap:14px;border-left:3px solid #bfd7ea;padding:14px 16px;background:#fff}.audit-change-list{display:grid;border:1px solid #e4ebf2;border-radius:9px;overflow:hidden}.audit-change{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(180px,1fr) minmax(180px,1fr);gap:16px;border-top:1px solid #edf1f6;padding:10px 12px;align-items:start;line-height:1.55}.audit-change:first-child{border-top:0}.audit-change>strong{color:var(--ink)}.audit-change>span{min-width:0;color:#5e7087;overflow-wrap:anywhere}.audit-change-heading{color:#8996a7;background:#f8fafc;font-size:11px}.audit-change-heading>strong{color:inherit}.audit-no-change{margin:0;color:var(--muted);font-size:12px}.audit-technical{display:flex;flex-wrap:wrap;gap:12px 28px;margin:0}.audit-technical>div{display:flex;align-items:baseline;gap:8px;min-width:0}.audit-technical dt{color:#8996a7;font-size:11px;font-weight:750}.audit-technical dd{min-width:0;margin:0}.audit-technical code{overflow-wrap:anywhere}.audit-pagination{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #edf1f6;padding:13px 16px;background:#fff}.audit-page-summary,.audit-page-actions{display:flex;align-items:center;gap:12px;color:#6b7d93;font-size:12px}.audit-page-summary label{display:flex;align-items:center;gap:6px}.audit-page-summary select{min-height:32px;border:1px solid #d4dfeb;border-radius:8px;padding:0 26px 0 9px;color:#41536a;background:#fff;outline:none}.audit-page-actions .secondary-button{min-height:34px;padding:0 12px}.audit-page-actions>span{min-width:76px;text-align:center}.admin-pagination{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #edf1f6;padding:13px 16px;color:#6b7d93;background:#fff;font-size:12px}.admin-pagination>div{display:flex;align-items:center;gap:12px}.admin-pagination .secondary-button{min-height:34px;padding:0 12px}.batch-toolbar{position:sticky;top:90px;z-index:10;display:flex;align-items:center;gap:10px;border:1px solid #bfd3e6;border-radius:13px;padding:11px 14px;background:#eef6fc;box-shadow:0 8px 24px #1f54911f}.batch-toolbar>span{flex:1}.tag-list{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:4px!important}.tag-list span{border-radius:6px;padding:3px 6px;color:#4f6680;background:#eef3f8;font-size:9px;font-weight:750}.record-count{margin:-10px 4px 0;font-size:12px}.venue-table th:nth-child(1){width:25%}.venue-table th:nth-child(2){width:50%}.venue-table th:nth-child(3){width:10%}.venue-table th:nth-child(4){width:15%}.venue-table .row-actions{flex-wrap:nowrap;white-space:nowrap}.map-picker{display:grid;gap:13px;border:1px solid #d8e3ee;border-radius:13px;padding:15px;background:#f8fbfd}.map-picker-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.map-picker-header strong{color:#354a64;font-size:14px}.map-provider{border-radius:999px;padding:5px 9px;color:var(--brand);background:#e9f3fb;font-size:10px;font-weight:750;white-space:nowrap}.map-picker-disabled{display:grid;gap:5px;border:1px dashed #c6d5e4;border-radius:11px;padding:18px;color:#6b7e94;background:#fff;font-size:12px;line-height:1.6}.map-picker-disabled strong{color:#435973}.map-search{display:flex;align-items:center;gap:10px}.map-search .search-input{flex:1;background:#fff}.map-search-message{margin:-3px 0 0;color:#63758b;font-size:11px}.map-candidate-select select{color:#41536a;background:#fff}.map-stage{position:relative;min-width:0;overflow:hidden;border:1px solid #cfdae7;border-radius:11px;background:#edf2f6}.map-canvas{width:100%;height:360px}.map-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#61758d;background:#f5f9fce0;font-size:12px;font-weight:700}.tab-bar{display:flex;gap:6px;width:fit-content;border:1px solid var(--line);border-radius:12px;padding:4px;background:#fff}.tab-bar button{display:flex;align-items:center;gap:8px;min-height:38px;border-radius:9px;padding:0 14px;color:#68798e;background:transparent;font-size:13px}.tab-bar button span{display:grid;place-items:center;min-width:22px;height:20px;border-radius:999px;background:#edf1f5;font-size:10px}.tab-bar button.active{color:#fff;background:var(--brand)}.tab-bar button.active span{background:#ffffff2e}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:24px;background:#0f1f3385;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal-card{display:flex;flex-direction:column;width:min(650px,100%);max-height:calc(100vh - 48px);overflow:hidden;border-radius:18px;background:#fff;box-shadow:0 30px 80px #0a1c3247}.modal-card.modal-wide{width:min(1050px,100%)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:20px;flex:0 0 auto;border-bottom:1px solid var(--line);padding:20px 24px}.modal-header h2{margin:0;font-size:20px}.modal-body{padding:24px;overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:10px;flex:0 0 auto;border-top:1px solid var(--line);padding:14px 24px;background:#fafbfd}.form-grid{display:grid;gap:16px}.form-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;align-content:start;gap:7px;color:#43536a;font-size:12px;font-weight:700}.field input,.field select,.field textarea,.setting-row input{width:100%;min-height:41px;border:1px solid #cfdae7;border-radius:9px;padding:0 11px;color:var(--ink);background:#fff;outline:none;font-weight:500}.field textarea{min-height:80px;padding-top:10px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.setting-row input:focus{border-color:#6aa9d0;box-shadow:0 0 0 3px #3da9db21}.field small{color:var(--muted);font-size:10px;font-weight:500}.field-inline-action{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.field-inline-action .secondary-button{white-space:nowrap}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;clip-path:inset(50%)!important}.span-two{grid-column:span 2}.checkbox-field{display:flex;align-items:center;gap:9px;color:#46566c;font-size:13px}.checkbox-field input{width:16px;height:16px;accent-color:var(--brand)}.course-editor{display:grid;gap:24px}.course-editor-view{gap:14px;padding-top:18px}.course-editor-tabs{width:100%}.course-editor-tabs button{justify-content:center;flex:1}.modal-backdrop.modal-inline{position:static;display:block;padding:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.modal-inline>.modal-card{width:100%;max-height:none;overflow:visible;border:1px solid rgba(218,228,239,.92);border-radius:16px;box-shadow:var(--shadow)}.modal-inline>.modal-card>.modal-body{padding:24px;overflow:visible}.modal-inline>.modal-card>.modal-footer{position:sticky;bottom:0;z-index:5;border-radius:0 0 16px 16px;box-shadow:0 -8px 20px #1f54910f}.course-editor-page.tab-basic .course-description-section,.course-editor-page.tab-basic .course-registration-section,.course-editor-page.tab-basic .course-completion-section,.course-editor-page.tab-description .course-basic-section,.course-editor-page.tab-description .course-registration-section,.course-editor-page.tab-description .course-completion-section,.course-editor-page.tab-registration .course-basic-section,.course-editor-page.tab-registration .course-description-section,.course-editor-page.tab-registration .course-completion-section,.course-editor-page.tab-completion .course-basic-section,.course-editor-page.tab-completion .course-description-section,.course-editor-page.tab-completion .course-registration-section{display:none}.course-editor-page.tab-basic .course-basic-section,.course-editor-page.tab-description .course-description-section,.course-editor-page.tab-registration .course-registration-section,.course-editor-page.tab-completion .course-completion-section{border-bottom:0;padding-bottom:0}.registration-notice-settings{display:grid;gap:16px;border-top:1px solid var(--line);padding-top:22px}.registration-notice-heading,.registration-notice-subheading{display:flex;align-items:center;justify-content:space-between;gap:16px}.registration-notice-heading>strong{font-size:14px}.registration-notice-subheading>span{color:var(--muted);font-size:11px}.registration-notice-default-toggle{display:flex;align-items:center;gap:10px;min-height:46px;border:1px solid #d8e4ef;border-radius:11px;padding:0 14px;color:#334861;background:#f7fafc;font-size:13px;font-weight:750}.registration-notice-default-toggle input{width:17px;height:17px;accent-color:var(--brand)}.registration-notice-defaults,.registration-notice-additional{display:grid;gap:12px}.registration-notice-defaults.disabled{min-height:42px;color:var(--muted)}.registration-notice-preview{display:grid;gap:9px;margin:0;padding-left:28px;color:#52657b;font-size:13px;line-height:1.6}.registration-notice-additional{border-top:1px solid var(--line);padding-top:16px}.series-manager{display:grid;gap:20px}.series-editor-panel{display:grid;gap:16px;border:1px solid #dbe5ef;border-radius:14px;padding:18px;background:#f8fbfd}.series-editor-heading,.series-list-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.series-editor-heading h3{margin:0 0 4px;font-size:15px}.series-list-heading>span{color:var(--muted);font-size:12px}.series-editor-heading p{margin:0;color:var(--muted);font-size:11px}.series-editor-form{grid-template-columns:minmax(220px,1fr) 130px 130px;align-items:end}.series-editor-form .span-two{grid-column:span 2}.series-editor-actions{grid-column:1 / -1;display:flex;justify-content:flex-end}.series-list{display:grid;gap:10px}.series-table th:nth-child(1){width:46%}.series-table th:nth-child(2){width:12%}.series-table th:nth-child(3){width:16%}.series-table th:nth-child(4){width:14%}.series-table th:nth-child(5){width:12%}.cover-uploader{display:grid;grid-template-columns:180px minmax(0,1fr);gap:18px;align-items:center;border:1px dashed #bfd0e0;border-radius:13px;padding:14px;background:#f8fbfd}.cover-preview{display:grid;width:180px;max-width:100%;aspect-ratio:3 / 4;overflow:hidden;place-items:center;border-radius:10px;color:#718298;background:#eaf0f6}.cover-preview img{width:100%;height:100%;object-fit:cover}.cover-preview-button{position:relative;display:block;width:100%;height:100%;overflow:hidden;border-radius:inherit;padding:0;background:transparent;cursor:zoom-in}.cover-preview-zoom{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#fff;background:#0e1d2f8f;opacity:0;transition:opacity .16s ease}.cover-preview-button:hover .cover-preview-zoom,.cover-preview-button:focus-visible .cover-preview-zoom{opacity:1}.cover-preview-zoom svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.cover-preview>div{display:grid;justify-items:center;gap:4px}.cover-preview strong{color:#53657b;font-size:12px}.cover-preview small{font-size:9px}.cover-upload-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.cover-upload-actions small{width:100%;line-height:1.6}.cover-upload-actions .cover-upload-error{color:#ba4350;font-weight:700}.rich-text-editor{min-width:0;overflow:hidden;border:1px solid #cfdae7;border-radius:12px;background:#fff}.rich-text-editor:focus-within{border-color:#6aa9d0;box-shadow:0 0 0 3px #3da9db21}.rich-text-editor.disabled{background:#f7f9fb}.rich-text-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:5px;border-bottom:1px solid #dfe7ef;padding:8px;background:#f8fafc}.rich-text-toolbar select,.rich-text-toolbar button{min-height:34px;border:1px solid transparent;border-radius:7px;color:#4e6077;background:transparent;font-size:12px}.rich-text-toolbar select{padding:0 9px}.rich-text-toolbar button{display:inline-grid;width:34px;min-width:34px;place-items:center;padding:0}.rich-text-toolbar button svg{width:17px;height:17px;stroke-width:2}.rich-text-toolbar button.is-loading svg{animation:toolbar-icon-spin .8s linear infinite}.rich-text-toolbar select{border-color:#d6e0ea;background:#fff;outline:none}.rich-text-toolbar button:hover:not(:disabled){border-color:#c9d7e4;color:var(--brand);background:#fff}.rich-text-toolbar button.active{border-color:#b8d0e3;color:var(--brand);background:#eaf3fb}.toolbar-divider{width:1px;height:22px;margin:0 2px;background:#dce4ec}@keyframes toolbar-icon-spin{to{transform:rotate(360deg)}}.rich-text-editor-content{min-height:440px;padding:22px 24px 36px;color:var(--ink);outline:none;font-size:15px;line-height:1.75}.rich-text-editor-content>*:first-child{margin-top:0}.rich-text-editor-content>*:last-child{margin-bottom:0}.rich-text-editor-content h2{margin:1.6em 0 .65em;font-size:22px;line-height:1.35}.rich-text-editor-content h3{margin:1.4em 0 .6em;font-size:18px;line-height:1.4}.rich-text-editor-content p{margin:0 0 1em}.rich-text-editor-content ul,.rich-text-editor-content ol{margin:0 0 1em;padding-left:1.8em}.rich-text-editor-content blockquote{margin:1em 0;border-left:3px solid #9dbcd4;padding:4px 0 4px 15px;color:#566a82}.rich-text-editor-content a{color:var(--brand);text-decoration:underline}.rich-text-editor-content img{display:block;max-width:100%;height:auto;margin:18px auto;border-radius:8px}.rich-text-editor-content img.ProseMirror-selectednode{outline:3px solid rgba(61,169,219,.35)}.rich-text-editor-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:#9aa8b7;pointer-events:none}.rich-text-error{margin:0;border-top:1px solid #f0d6d9;padding:9px 12px;color:#a83c49;background:#fff7f8;font-size:12px}.form-section{display:grid;gap:18px;border-bottom:1px solid var(--line);padding-bottom:24px}.form-section:last-of-type{border-bottom:0}.form-section-heading{display:flex;align-items:center;gap:12px}.form-section-heading>span{display:grid;place-items:center;width:32px;height:32px;flex:0 0 auto;border-radius:10px;color:#fff;background:var(--brand);font-size:13px;font-weight:800}.form-section-heading h3{margin:0;font-size:16px}.schedule-form{display:grid;gap:16px}.schedule-interval{display:grid;grid-template-columns:auto 100px 110px 1fr;align-items:center;gap:9px;font-weight:500}.schedule-interval input,.schedule-interval select{min-height:41px;border:1px solid #cfdae7;border-radius:9px;padding:0 11px;color:var(--ink);background:#fff;outline:none}.age-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px}.age-range>span{color:var(--muted);font-weight:500}.detail-summary{display:flex;align-items:center;gap:14px;border-radius:13px;padding:15px;background:#f5f8fb}.detail-summary>div{flex:1}.detail-summary h3{margin:0 0 5px}.detail-summary p{margin:0;color:var(--muted);font-size:12px}.detail-tabs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.sub-panel{border:1px solid var(--line);border-radius:13px;padding:15px}.record-list{display:grid}.record-list>div{display:flex;align-items:center;gap:10px;min-height:58px;border-top:1px solid #edf1f6}.record-list>div:first-child{border-top:0}.record-list>div>div{display:grid;gap:4px;flex:1}.record-list small{color:var(--muted)}.learner-detail-page{gap:18px}.learner-profile-panel{display:grid;gap:22px}.learner-profile-main{display:flex;align-items:center;justify-content:space-between;gap:20px}.learner-profile-identity,.learner-profile-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-width:0}.learner-profile-actions{justify-content:flex-end;flex:0 0 auto}.learner-profile-main h2{margin:0;font-size:22px}.learner-profile-statuses{display:flex;align-items:center;gap:7px}.learner-profile-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;border-top:1px solid var(--line);padding-top:18px}.learner-profile-fields>div{display:grid;gap:6px;border-left:1px solid var(--line);padding:0 20px}.learner-profile-fields>div:first-child{border-left:0;padding-left:0}.learner-profile-fields dt{color:var(--muted);font-size:11px;font-weight:750}.learner-profile-fields dd{margin:0;color:var(--ink);font-size:14px;font-weight:700}.learner-detail-tabs{align-self:start}.learner-detail-tabs button{min-width:132px;justify-content:center}.learner-detail-section-header{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:68px;border-bottom:1px solid #edf1f6;padding:13px 16px}.learner-detail-section-header h2{margin:0;font-size:18px}.learner-enrollment-table,.learner-binding-table{min-width:720px}.learner-enrollment-table th:nth-child(1){width:42%}.learner-enrollment-table th:nth-child(2){width:24%}.learner-enrollment-table th:nth-child(3){width:17%}.learner-enrollment-table th:nth-child(4){width:17%}.learner-binding-table th:nth-child(1){width:32%}.learner-binding-table th:nth-child(2){width:23%}.learner-binding-table th:nth-child(3){width:25%}.learner-binding-table th:nth-child(4){width:20%}.permission-list{display:flex;flex-wrap:wrap;gap:8px}.permission-list label{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-weight:600}.permission-list input[type=checkbox]{width:16px;height:16px;min-height:0;flex:0 0 16px;padding:0;accent-color:var(--brand)}.statistics-grid,.settings-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.stat-breakdown{display:grid;gap:16px}.stat-breakdown>div{display:grid;grid-template-columns:130px minmax(0,1fr) 40px;align-items:center;gap:12px;color:#65758a;font-size:12px}.stat-breakdown>div strong{text-align:right}.settings-list{display:grid}.setting-row{display:grid;grid-template-columns:minmax(0,1fr) 180px;align-items:center;gap:18px;min-height:72px;border-top:1px solid #edf1f6}.setting-row:first-child{border-top:0}.setting-row>div{display:grid;gap:4px}.setting-row small{color:var(--muted);font-size:10px}.setting-row .setting-toggle{justify-self:end;width:18px;min-height:18px;padding:0;accent-color:var(--brand)}.role-list{display:grid;gap:8px}.role-list button{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px;border:1px solid var(--line);border-radius:11px;padding:10px 13px;color:#5b6b80;background:#fff;text-align:left}.role-list button:hover{border-color:#b5cbe0;background:#f8fbfd}.role-list button>div{display:grid;gap:4px}.role-list button strong{color:var(--ink)}.role-list button small{color:var(--muted)}.role-list-meta{display:inline-flex;align-items:center;gap:5px}.role-list-meta svg{width:16px;height:16px;stroke-width:2}.empty-state{display:grid;justify-items:center;gap:10px;min-height:160px;place-content:center;padding:24px;text-align:center}.empty-state h3{margin:0;font-size:15px}.loading-state{display:grid;min-height:160px;place-items:center;color:var(--muted);font-size:13px}.login-page{display:grid;min-height:100vh;place-items:center;padding:32px;background:var(--canvas)}.login-logo{width:48px;height:48px;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none}.login-logo.compact{width:44px;height:44px;margin-bottom:0;border-radius:14px;background:linear-gradient(145deg,var(--brand),var(--accent));font-size:16px}.login-card{display:grid;gap:22px;width:min(420px,100%)}.login-card-surface{border:1px solid var(--line);border-radius:14px;padding:28px;background:#fff}.login-heading{display:flex;align-items:center;gap:14px}.login-heading h1{margin:0;font-size:26px}.login-submit{width:100%;min-height:48px;margin-top:2px}.password-page{display:grid;min-height:100vh;place-items:center;padding:30px;background:var(--canvas)}.password-card{border:1px solid var(--line);border-radius:14px;padding:28px;background:#fff}.password-card h1{margin:0;font-size:24px}@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.admin-shell,.admin-shell.is-collapsed{grid-template-columns:76px minmax(0,1fr)}.brand{padding:0 18px}.brand-copy,.menu-group-title>span:last-child,.menu-link span,.menu-link-badge{opacity:0;pointer-events:none}.menu-link{width:40px;min-height:4px;margin-left:6px;padding:0;overflow:hidden}.sidebar-footer,.collapse-button{display:none}.statistics-grid,.settings-layout,.detail-tabs-grid{grid-template-columns:1fr}.topbar{padding:0 20px}.page-content{padding:24px 20px 40px}}@media(max-width:650px){.admin-shell,.admin-shell.is-collapsed{display:block}.sidebar{position:static;width:100%;height:auto;border-right:0}.brand{height:64px}.brand-copy{opacity:1;pointer-events:auto}.menu,.collapse-button{display:none}.topbar{top:0;height:64px}.profile-copy{display:none}.topbar-actions{margin-left:auto}.metric-grid{grid-template-columns:1fr}.page-toolbar{align-items:stretch;flex-direction:column}.page-toolbar-actions{align-items:flex-end}.filter-bar{align-items:stretch;flex-direction:column}.filter-select,.search-input{width:100%}.audit-time-range{align-items:stretch;flex-direction:column}.audit-time-field input{width:100%}.audit-pagination{align-items:stretch;flex-direction:column}.audit-page-summary,.audit-page-actions{justify-content:space-between}.admin-pagination{align-items:stretch;flex-direction:column}.admin-pagination>div{justify-content:space-between}.filter-result,.toolbar-action{margin-left:0}.form-grid.two-columns,.series-editor-form{grid-template-columns:1fr}.series-editor-form .span-two,.series-editor-actions{grid-column:auto}.course-editor-view{padding-top:14px}.field-inline-action{grid-template-columns:1fr}.schedule-interval{grid-template-columns:auto minmax(70px,1fr) minmax(90px,1fr)}.schedule-interval span:last-child{grid-column:1 / -1}.span-two{grid-column:auto}.cover-uploader{grid-template-columns:1fr}.cover-preview{width:min(220px,100%);justify-self:center}.learner-profile-main{align-items:stretch;flex-direction:column}.learner-profile-actions{width:100%}.learner-profile-actions .primary-button,.learner-profile-actions .secondary-button{flex:1 1 180px}.learner-profile-fields{grid-template-columns:1fr;gap:14px}.learner-profile-fields>div{border-top:1px solid var(--line);border-left:0;padding:14px 0 0}.learner-profile-fields>div:first-child{border-top:0;padding-top:0}.rich-text-toolbar{align-items:stretch}.rich-text-toolbar select{flex:1 0 120px}.rich-text-editor-content{min-height:360px;padding:18px 16px 28px}.map-picker-header,.map-search{align-items:stretch;flex-direction:column}.map-provider{justify-self:start}.map-canvas{height:300px}.age-range{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.modal-backdrop{padding:10px}.modal-card{max-height:calc(100vh - 20px);border-radius:14px}.modal-body{padding:18px}.login-page{padding:22px}.batch-toolbar{top:72px;flex-wrap:wrap}}@media(hover:none){.cover-preview-zoom{inset:auto 10px 10px auto;width:36px;height:36px;border-radius:9px;background:#0e1d2fad;opacity:1}.cover-preview-zoom svg{width:21px;height:21px}}
