.school-context[data-v-e2b7c9ee]{display:flex;align-items:center;gap:6px;padding:4px 12px;background:#ffffff1a;border-radius:var(--radius-pill);font-size:var(--fs-base);color:#ffffffe6;font-weight:var(--fw-medium);max-width:200px}.school-context__icon[data-v-e2b7c9ee]{display:flex;align-items:center;flex-shrink:0}.school-context__name[data-v-e2b7c9ee]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bell-btn[data-v-7b83b852]{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#ffffffb3;cursor:pointer;transition:var(--transition)}.bell-btn[data-v-7b83b852]:hover{background:#ffffff1a;color:#fff}.notification-panel__header[data-v-7b83b852]{padding:12px 16px;border-bottom:1px solid var(--color-border-light);display:flex;justify-content:space-between;align-items:center}.notification-panel__title[data-v-7b83b852]{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text)}.notification-panel__count[data-v-7b83b852]{font-size:var(--fs-base);color:var(--color-primary)}.notification-panel__body[data-v-7b83b852]{max-height:360px;overflow-y:auto}.notification-item[data-v-7b83b852]{padding:10px 16px;border-bottom:1px solid var(--color-border-light);cursor:pointer;transition:var(--transition)}.notification-item[data-v-7b83b852]:hover{background:var(--color-bg-alt)}.notification-item--unread[data-v-7b83b852]{border-left:3px solid var(--color-primary)}.notification-item__title[data-v-7b83b852]{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text);margin-bottom:2px}.notification-item__summary[data-v-7b83b852]{font-size:var(--fs-base);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-item__time[data-v-7b83b852]{font-size:var(--fs-sm);color:var(--color-text-muted);margin-top:4px}.notification-empty[data-v-7b83b852]{padding:24px 16px;text-align:center;color:var(--color-text-muted);font-size:var(--fs-base)}.role-switcher[data-v-6c2582e6]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px;border-radius:var(--radius-sm);transition:var(--transition)}.role-switcher[data-v-6c2582e6]:hover{background:#ffffff1a}.role-switcher__avatar[data-v-6c2582e6]{width:38px;height:38px;border-radius:50%;background:#ffffff26;border:2px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-weight:var(--fw-semibold);font-size:var(--fs-base);color:#fff;flex-shrink:0;transition:var(--transition)}.role-switcher:hover .role-switcher__avatar[data-v-6c2582e6]{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.role-switcher__info[data-v-6c2582e6]{display:flex;flex-direction:column;min-width:0}.role-switcher__name[data-v-6c2582e6]{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:#fffffff2;line-height:var(--lh-snug);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-switcher__role[data-v-6c2582e6]{font-size:var(--fs-base);color:#fff9;line-height:var(--lh-snug);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.app-header[data-v-a5ca0c37]{position:fixed;top:0;left:0;right:0;height:64px;background:#1a1a1a;border-bottom:1px solid rgba(255,255,255,.08);z-index:var(--z-header);display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top) 24px 0;color:#fff}.app-header__left[data-v-a5ca0c37]{display:flex;align-items:center;gap:16px}.app-header__brand[data-v-a5ca0c37]{display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.app-header__logo[data-v-a5ca0c37]{display:flex;align-items:center;flex-shrink:0}.app-header__title[data-v-a5ca0c37]{font-size:var(--fs-xl);font-weight:var(--fw-heavy);color:#fff;letter-spacing:-.02em;white-space:nowrap}.app-header__right[data-v-a5ca0c37]{display:flex;align-items:center;gap:16px}.app-header__search[data-v-a5ca0c37]{display:flex;align-items:center;gap:6px;padding:8px 16px;font-size:var(--fs-base);background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);color:#fff9}.search-icon[data-v-a5ca0c37]{flex-shrink:0}.search-input[data-v-a5ca0c37]{border:none;outline:none;background:transparent;font-size:var(--fs-base);color:#ffffffe6;width:140px;font-family:inherit}.search-input[data-v-a5ca0c37]::placeholder{color:#ffffff80}.sidebar[data-v-70952f71]{width:250px;background:var(--color-sidebar-bg);border-right:none;transition:width .2s ease-out;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;color:#ffffffd9}.sidebar--collapsed[data-v-70952f71]{width:68px}.sidebar__toggle[data-v-70952f71]{display:flex;align-items:center;justify-content:center;height:40px;margin:8px;border-radius:var(--radius-sm);cursor:pointer;color:#fff9;transition:var(--transition)}.sidebar__toggle[data-v-70952f71]:hover{background:#ffffff1a;color:#fff}.sidebar__nav[data-v-70952f71]{flex:1;padding:0 8px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.nav-item[data-v-70952f71]{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--radius-sm);color:#ffffffc7;text-decoration:none;font-size:15px;font-weight:var(--fw-medium);transition:var(--transition);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid transparent}.nav-item[data-v-70952f71]:hover{background:#ffffff1a;color:#fff}.nav-item--active[data-v-70952f71]{color:#1a1a1a;background:var(--color-sidebar-active);border-left-color:transparent;font-weight:var(--fw-bold)}.nav-item--child[data-v-70952f71]{padding:8px 16px 8px 48px;font-size:14px;border-left:none}.nav-item--child.nav-item--active[data-v-70952f71]{border-left:none;color:#1a1a1a;background:var(--color-sidebar-active);font-weight:var(--fw-bold)}.nav-item__icon[data-v-70952f71]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.nav-item__label[data-v-70952f71]{overflow:hidden;text-overflow:ellipsis}.nav-group[data-v-70952f71]{margin-top:4px}.nav-group__header[data-v-70952f71]{display:flex;align-items:center;gap:12px;padding:11px 16px;border-radius:var(--radius-sm);color:#ffffffd9;font-size:15px;font-weight:var(--fw-semibold);cursor:pointer;transition:var(--transition);white-space:nowrap;-webkit-user-select:none;user-select:none}.nav-group__header[data-v-70952f71]:hover{background:#ffffff1a;color:#fff}.nav-group__header--active[data-v-70952f71]{color:#fff}.nav-group__label[data-v-70952f71]{flex:1;overflow:hidden;text-overflow:ellipsis}.nav-group__arrow[data-v-70952f71]{flex-shrink:0;transition:transform .2s ease;opacity:.5}.nav-group__arrow--open[data-v-70952f71]{transform:rotate(180deg)}.nav-group__children[data-v-70952f71]{overflow:hidden}.slide-enter-active[data-v-70952f71],.slide-leave-active[data-v-70952f71]{transition:opacity .2s ease,max-height .2s ease}.slide-enter-from[data-v-70952f71],.slide-leave-to[data-v-70952f71]{opacity:0;max-height:0}.sidebar--collapsed .nav-item[data-v-70952f71]{justify-content:center;padding:10px;border-left-width:0}.sidebar--collapsed .nav-item--active[data-v-70952f71]{border-left-width:0;border-bottom:2px solid var(--color-sidebar-active)}.sidebar--collapsed .nav-group__header[data-v-70952f71]{justify-content:center;padding:10px}.ai-fab[data-v-f99cfff2]{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));right:calc(24px + env(safe-area-inset-right));width:48px;height:48px;border-radius:50%;background:var(--color-primary);color:var(--color-bg, #fff);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-lg);transition:var(--transition);z-index:var(--z-overlay)}.ai-fab[data-v-f99cfff2]:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl);background:var(--color-primary-light)}.ai-panel-overlay[data-v-3752896c]{position:fixed;inset:0;z-index:var(--z-modal);background:#00000026}.ai-panel[data-v-3752896c]{position:absolute;top:0;right:0;width:400px;max-width:100vw;height:100dvh;background:var(--color-bg);border-left:1px solid var(--color-border-light);box-shadow:var(--shadow-xl);display:flex;flex-direction:column}.ai-panel-header[data-v-3752896c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--color-border-light);flex-shrink:0}.ai-panel-title[data-v-3752896c]{font-size:16px;font-weight:var(--fw-semibold);color:var(--color-text)}.ai-panel-actions[data-v-3752896c]{display:flex;align-items:center;gap:8px}.ai-panel-expand[data-v-3752896c],.ai-panel-close[data-v-3752896c]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition);text-decoration:none}.ai-panel-expand[data-v-3752896c]:hover,.ai-panel-close[data-v-3752896c]:hover{background:var(--color-bg-alt);color:var(--color-text)}.ai-panel-body[data-v-3752896c]{flex:1;overflow-y:auto;display:flex;align-items:center;justify-content:center}.ai-panel-placeholder[data-v-3752896c]{text-align:center;color:var(--color-text-secondary)}.ai-panel-placeholder-text[data-v-3752896c]{margin-top:12px;font-size:var(--fs-base);font-weight:var(--fw-medium)}.ai-panel-placeholder-hint[data-v-3752896c]{margin-top:8px;font-size:16px;opacity:.7}.ai-panel-placeholder-hint a[data-v-3752896c]{color:var(--color-primary);text-decoration:none}.ai-panel-placeholder-hint a[data-v-3752896c]:hover{text-decoration:underline}.ai-panel-footer[data-v-3752896c]{padding:16px 20px;border-top:1px solid var(--color-border-light);flex-shrink:0}.ai-panel-input[data-v-3752896c]{width:100%;padding:10px 14px;border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-alt);color:var(--color-text-secondary);font-size:16px;outline:none;cursor:not-allowed}.slide-right-enter-active[data-v-3752896c],.slide-right-leave-active[data-v-3752896c]{transition:transform .3s ease,opacity .3s ease}.slide-right-enter-active .ai-panel[data-v-3752896c],.slide-right-leave-active .ai-panel[data-v-3752896c]{transition:transform .3s ease}.slide-right-enter-from[data-v-3752896c],.slide-right-leave-to[data-v-3752896c]{opacity:0}.slide-right-enter-from .ai-panel[data-v-3752896c],.slide-right-leave-to .ai-panel[data-v-3752896c]{transform:translate(100%)}.app-shell[data-v-84f4b712]{height:100dvh;display:flex;flex-direction:column}.app-body[data-v-84f4b712]{display:flex;flex:1;margin-top:64px;height:calc(100dvh - 64px);overflow:hidden}.app-main[data-v-84f4b712]{flex:1;overflow-y:auto;padding:32px;background:var(--color-bg)}:root{--color-primary: #1a7a4f;--color-primary-dark: #145f3d;--color-primary-light: #22956a;--color-accent: #c8e64a;--color-accent-hover: #b8d63a;--color-bg: #f5f5f3;--color-bg-alt: #f0f0ee;--color-bg-card: #ffffff;--color-text: #1a1a1a;--color-text-secondary: #555550;--color-text-muted: #72726c;--color-border: #deded9;--color-border-light: #e8e8e4;--color-success: #1a7a4f;--color-danger: #dc2626;--color-warning: #d97706;--color-info: #2563eb;--color-bg-deep: #1a1a1a;--macaron-mint: #a7f3d0;--macaron-mint-light: #d1fae5;--macaron-yellow: #fde68a;--macaron-yellow-light: #fef3c7;--macaron-coral: #fecaca;--macaron-coral-light: #fee2e2;--macaron-purple: #c4b5fd;--macaron-purple-light: #ede9fe;--macaron-blue: #bae6fd;--macaron-blue-light: #e0f2fe;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 24px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(26, 26, 26, .06);--shadow-md: 0 4px 12px rgba(26, 26, 26, .08);--shadow-lg: 0 18px 46px rgba(26, 26, 26, .09);--shadow-xl: 0 32px 64px rgba(26, 26, 26, .12);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", sans-serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--transition: transform .2s cubic-bezier(.4, 0, .2, 1), box-shadow .2s cubic-bezier(.4, 0, .2, 1), background-color .15s ease, border-color .15s ease, color .15s ease;--z-sidebar: 90;--z-header: 100;--z-overlay: 200;--z-modal: 300;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-base: 16px;--fs-lg: 18px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 32px;--fs-display: 48px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-heavy: 800;--lh-tight: 1.05;--lh-snug: 1.3;--lh-normal: 1.5;--lh-relaxed: 1.6;--r-xs: 4px;--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--r-full: 999px;--text-primary: #1a1a1a;--text-secondary: #555550;--text-tertiary: #72726c;--text-disabled: #96968f;--text-placeholder: #96968f;--text-inverse: #ffffff;--color-success-bg-subtle: #ecfdf5;--color-success-bg: #d1fae5;--color-success-border: #6ee7b7;--color-success-text: #047857;--color-danger-bg-subtle: #fef2f2;--color-danger-bg: #fee2e2;--color-danger-border: #fca5a5;--color-danger-text: #b91c1c;--color-warning-bg-subtle: #fffbeb;--color-warning-bg: #fef3c7;--color-warning-border: #fcd34d;--color-warning-text: #b45309;--color-info-bg-subtle: #eff6ff;--color-info-bg: #dbeafe;--color-info-border: #93c5fd;--color-info-text: #1d4ed8;--color-table-header: #f0f0ee;--color-table-hover: #f0f8f4;--color-sidebar-bg: #1a7a4f;--color-sidebar-active: #c8e64a}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:16px;color:var(--color-text);background:var(--color-bg);line-height:var(--lh-relaxed);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}.page-container{max-width:1200px;margin:0 auto;padding:var(--space-8) var(--space-8)}.page-header{margin-bottom:var(--space-8)}.page-title{font-size:var(--fs-3xl);font-weight:var(--fw-heavy);color:var(--color-text);line-height:var(--lh-tight);letter-spacing:-.035em;text-wrap:balance;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-subtitle{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.08em;font-weight:var(--fw-bold);color:var(--color-text-muted);margin-top:var(--space-2);text-wrap:pretty}.btn-pill{border-radius:var(--radius-pill)!important}.stat-card{padding:var(--space-5) var(--space-6);border-radius:var(--radius-md);border:1px solid var(--color-border-light);background:var(--color-bg-card);box-shadow:var(--shadow-sm);transition:var(--transition)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card .stat-value{font-size:var(--fs-display);font-weight:var(--fw-heavy);letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-card .stat-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);margin-top:var(--space-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag-mint{background:var(--macaron-mint-light);color:#166534}.tag-yellow{background:var(--macaron-yellow-light);color:#854d0e}.tag-coral{background:var(--macaron-coral-light);color:#991b1b}.tag-purple{background:var(--macaron-purple-light);color:#5b21b6}.tag-blue{background:var(--macaron-blue-light);color:#0c4a6e}.tabular-nums{font-variant-numeric:tabular-nums}.chart-height-sm{height:260px}.chart-height-md{height:300px}.chart-height-lg{height:380px}.chart-height-xl{height:440px}@media(max-width:768px){.chart-height-sm{height:220px}.chart-height-md{height:240px}.chart-height-lg{height:300px}.chart-height-xl{height:340px}}@keyframes floatSlow{0%,to{transform:translate(0)}33%{transform:translate(15px,-20px)}66%{transform:translate(-10px,15px)}}.text-uppercase{text-transform:uppercase;letter-spacing:.08em}.text-eyebrow{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#72726c}.text-kpi{font-size:48px;font-weight:800;line-height:1.05;letter-spacing:-.03em;color:#1a1a1a}.text-kpi-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#72726c}.empty-state{text-align:center;padding:48px 24px;color:#72726c}.empty-state__icon{font-size:48px;margin-bottom:16px;opacity:.4}.empty-state__title{font-size:18px;font-weight:700;color:#1a1a1a;margin-bottom:8px}.empty-state__text{font-size:15px;color:#72726c;max-width:360px;margin:0 auto}.n-data-table-th{font-size:13px!important;text-transform:uppercase;letter-spacing:.08em;font-weight:700!important;color:var(--color-text-muted)!important;background:var(--color-table-header)!important}.n-data-table-td{padding:14px 12px!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
