.brand-name[data-v-1011210b]{display:inline-flex;align-items:baseline;gap:.28em;white-space:nowrap;font-weight:inherit}.bn-main[data-v-1011210b]{display:inline-block;padding-right:.12em;font-family:var(--ui-font-heiti, var(--ui-font));font-weight:800;letter-spacing:var(--ui-brand-tracking, .09em);margin-right:calc(-1 * var(--ui-brand-tracking, .09em))}.bn-sub[data-v-1011210b]{font-family:var(--ui-font-heiti, var(--ui-font));font-weight:500;letter-spacing:.02em}.bn-tm[data-v-1011210b]{display:inline-flex;align-items:center;justify-content:center;vertical-align:.62em;width:1.25em;height:1.25em;margin-left:.06em;font-size:.46em;line-height:1;font-weight:600;letter-spacing:0;border:1px solid currentColor;border-radius:50%;box-sizing:border-box;opacity:.85}.sf[data-v-7c979362]{width:100%;max-width:var(--ui-content-max, 1240px);margin:0 auto;padding:14px var(--ui-gutter, 24px) 18px;border-top:1px solid var(--ui-border);color:var(--ui-text-muted);font-size:var(--ui-fs-help);line-height:var(--ui-lh-help)}.sf-line[data-v-7c979362]{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 8px;margin:0}.sf-copy[data-v-7c979362]{white-space:nowrap}.sf-icp[data-v-7c979362]{color:inherit;text-decoration:none;border-radius:var(--ui-radius-sm)}.sf-icp[data-v-7c979362]:hover{color:var(--ui-primary);text-decoration:underline}.sf-icp[data-v-7c979362]:focus-visible{outline:2px solid var(--ui-primary);outline-offset:2px}.sf--compact[data-v-7c979362]{margin-top:0;padding:10px 0 12px;border-top:0}.sf--dark[data-v-7c979362]{border-top-color:#ffffff1f;color:#ffffff80}.sf--dark .sf-icp[data-v-7c979362]:hover{color:#ffffffeb}@media(max-width:720px){.sf[data-v-7c979362]{padding-left:var(--ui-space-3, 12px);padding-right:var(--ui-space-3, 12px)}.sf--compact[data-v-7c979362]{padding-left:0;padding-right:0}}.admin-identity[data-v-bbc6b639]{display:flex;justify-content:center;padding:40px 16px}.adm-lp-card[data-v-bbc6b639]{max-width:560px;text-align:center;padding:32px 26px}.adm-lp-ico[data-v-bbc6b639]{font-size:42px;line-height:1}.adm-lp-title[data-v-bbc6b639]{font-size:17px;margin:12px 0 10px}.adm-lp-text[data-v-bbc6b639]{opacity:.78;line-height:1.8;margin-bottom:14px;text-align:left}.adm-lp-note[data-v-bbc6b639]{opacity:.55;font-size:12px;margin:14px 0 0}.no-student-profile[data-v-bbc6b639]{display:flex;justify-content:center;padding:40px 16px}.nsp-card[data-v-bbc6b639]{max-width:540px;text-align:center;padding:30px 26px}.nsp-ico[data-v-bbc6b639]{font-size:42px;line-height:1}.nsp-title[data-v-bbc6b639]{font-size:17px;margin:12px 0 10px}.nsp-text[data-v-bbc6b639]{opacity:.78;line-height:1.8;margin-bottom:20px}.student-switch[data-v-bbc6b639]{display:inline-flex;align-items:center;gap:8px}.switch-label[data-v-bbc6b639]{color:var(--text-dim, #6b7280);white-space:nowrap}.student-select[data-v-bbc6b639]{max-width:220px;padding:4px 8px;border:1px solid var(--border, #d8dbe2);border-radius:6px;background:var(--surface, #fff);color:var(--text, #1f2937);font-size:13px;cursor:pointer}.student-select[data-v-bbc6b639]:disabled{opacity:.6;cursor:progress}.student-fallback[data-v-bbc6b639]{color:var(--text, #1f2937)}.switch-hint[data-v-bbc6b639]{color:var(--text-dim, #9ca3af);font-size:12px}.switch-hint.err[data-v-bbc6b639]{color:#dc2626}.switch-manage[data-v-bbc6b639]{color:#2563eb;text-decoration:none;font-size:12px;white-space:nowrap}.switch-manage[data-v-bbc6b639]:hover{text-decoration:underline}.float-dock[data-v-bbc6b639]{position:fixed;right:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px;z-index:900}.float-btn[data-v-bbc6b639]{width:58px;height:58px;border-radius:50%;background:linear-gradient(160deg,#2563eb,#6366f1);border:none;box-shadow:0 4px 14px #2563eb59;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:#fff;transition:transform .12s,box-shadow .12s}.float-btn[data-v-bbc6b639]:hover{transform:scale(1.06);box-shadow:0 6px 18px #2563eb73;color:#fff}.float-ico[data-v-bbc6b639]{font-size:17px;line-height:1}.float-txt[data-v-bbc6b639]{font-size:10px;line-height:1.1;text-align:center}.nav-count[data-v-bbc6b639]{margin-left:2px;font-size:11px;font-variant-numeric:tabular-nums;color:#ffffffb8}.nav-count.zero[data-v-bbc6b639]{color:#ffffff6b}@media(max-width:900px){.float-dock[data-v-bbc6b639]{display:none}}.nav-top-item[data-v-bbc6b639]{font-weight:600}.nt-wrap[data-v-bbc6b639]{position:relative;display:inline-flex;align-items:center;margin-left:8px}.nt-bell[data-v-bbc6b639]{position:relative;width:30px;height:30px;border-radius:50%;border:1px solid var(--border, #d8dbe2);background:var(--surface, #fff);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.nt-bell[data-v-bbc6b639]:hover{background:var(--c-tag-info-bg, #eef2ff)}.nt-bell.nt-on[data-v-bbc6b639]{border-color:#2563eb}.nt-badge[data-v-bbc6b639]{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#dc2626;color:#fff;font-size:10px;line-height:16px;text-align:center;font-variant-numeric:tabular-nums}.nt-panel[data-v-bbc6b639]{position:absolute;right:0;top:36px;width:320px;max-height:420px;overflow-y:auto;z-index:1200;padding:10px 12px;background:var(--surface, #fff);border:1px solid var(--border, #d8dbe2);border-radius:10px;box-shadow:0 10px 28px #0f172a29;text-align:left}.nt-head[data-v-bbc6b639]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.nt-title[data-v-bbc6b639]{font-size:13px}.nt-err[data-v-bbc6b639]{color:#dc2626;font-size:12px;margin:6px 0}.nt-empty[data-v-bbc6b639]{opacity:.6;font-size:12px;padding:10px 0;text-align:center}.nt-list[data-v-bbc6b639]{list-style:none;margin:0;padding:0}.nt-item[data-v-bbc6b639]{padding:8px 8px 8px 10px;border-radius:8px;margin-bottom:6px;border-left:3px solid #cbd5e1;background:#f8fafc}.nt-item.lv-warn[data-v-bbc6b639]{border-left-color:#f59e0b}.nt-item.lv-urgent[data-v-bbc6b639]{border-left-color:#dc2626}.nt-item.read[data-v-bbc6b639]{opacity:.62}.nt-row[data-v-bbc6b639]{display:flex;align-items:center;gap:6px;font-size:11px;opacity:.8}.nt-kind[data-v-bbc6b639]{font-weight:600}.nt-time[data-v-bbc6b639]{margin-left:auto;font-variant-numeric:tabular-nums}.nt-unread-dot[data-v-bbc6b639]{width:6px;height:6px;border-radius:50%;background:#2563eb}.nt-title-btn[data-v-bbc6b639]{display:block;width:100%;text-align:left;margin:4px 0 2px;padding:0;border:none;background:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--c-text, #1f2329)}.nt-title-btn[data-v-bbc6b639]:hover{color:#2563eb;text-decoration:underline}.nt-body[data-v-bbc6b639]{font-size:12px;line-height:1.7;opacity:.82;margin:0 0 6px}.nt-more[data-v-bbc6b639]{width:100%;margin-top:2px}.nt-all[data-v-bbc6b639]{width:100%;margin-top:6px;border-color:var(--border, #d8dbe2);font-weight:600}.acct[data-v-bbc6b639]{display:inline-flex;align-items:center;gap:6px;margin-left:10px;max-width:260px}.acct-name[data-v-bbc6b639]{color:var(--c-text, #1f2329);font-size:13px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-role[data-v-bbc6b639]{background:var(--c-tag-info-bg, #eef2ff);color:var(--c-tag-info-tx, #3b5bdb)}.acct-pwd[data-v-bbc6b639]{background:var(--c-warn-bg, #fdf6e3);color:var(--c-warn-tx, #9a7200);cursor:help}.sidebar[data-v-bbc6b639]{width:220px;padding:20px 0;background:#1f2733;color:#c6ceda;font-size:14px}.sidebar .brand[data-v-bbc6b639]{font-size:15px;padding:0 20px 14px;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar .nav-item[data-v-bbc6b639]{padding:12px 20px;font-size:14px;line-height:1.4;color:#c6ceda;transition:background .15s,color .15s}.sidebar .nav-item[data-v-bbc6b639]:hover{background:#ffffff0f;color:#fff}.sidebar .nav-item.router-link-active[data-v-bbc6b639]{background:#4a5b7261;color:#fff}.sidebar .nav-ico[data-v-bbc6b639]{width:1.6em;text-align:center;margin-right:2px}.sidebar .nav-group-btn[data-v-bbc6b639]{font-weight:600;color:#dee4ec}.sidebar .nav-group-btn[data-v-bbc6b639]:hover{background:#ffffff0f}.sidebar .nav-group-btn.group-active[data-v-bbc6b639]{color:#fff;background:#4a5b723d}.sidebar .nav-group-btn .nav-caret[data-v-bbc6b639]{font-size:11px;opacity:.75}.topbar[data-v-bbc6b639]{height:60px;padding:0 24px;background:var(--ui-surface, #FFFFFF);border-bottom:1px solid var(--ui-border, #E4E7EC);box-shadow:none}.topbar .who[data-v-bbc6b639]{font-size:13px;color:var(--ui-text-body, #3C4756)}.topbar .who[data-v-bbc6b639]:last-child{display:inline-flex;align-items:center;gap:12px}.content[data-v-bbc6b639]{max-width:var(--ui-content-max, 1240px);width:100%;padding:24px var(--ui-gutter, 24px)}.ui-sidebar[data-v-bbc6b639]{width:var(--ui-side-w, 232px);flex:0 0 var(--ui-side-w, 232px);background:var(--ui-side-bg, #1F2733);color:var(--ui-side-text, rgba(255,255,255,.72));display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;padding:0}.ui-sidebar .ui-brand[data-v-bbc6b639]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);height:var(--ui-topbar-h, 60px);padding:0 var(--ui-space-5, 24px);color:var(--ui-side-text-on, #FFFFFF);font-size:16px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:0;flex:0 0 auto;white-space:nowrap}.ui-sidebar .ui-brand-ico[data-v-bbc6b639]{font-size:16px;line-height:1}.ui-sidebar .ui-nav-item[data-v-bbc6b639]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);width:100%;min-height:var(--ui-control-h, 44px);padding:0 var(--ui-space-3, 12px);border:0;border-radius:var(--ui-radius, 8px);background:transparent;color:var(--ui-side-text, rgba(255,255,255,.72));font-family:inherit;font-size:var(--ui-fs-body, 14px);text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease}.ui-sidebar .ui-nav-item[data-v-bbc6b639]:hover{background:var(--ui-side-hover, rgba(255,255,255,.07));color:var(--ui-side-text-on, #FFFFFF)}.ui-sidebar .ui-nav-top-item.router-link-active[data-v-bbc6b639],.ui-sidebar .ui-nav-sub-item.router-link-active[data-v-bbc6b639]{background:var(--ui-side-active, rgba(255,255,255,.13));color:var(--ui-side-text-on, #FFFFFF);font-weight:600}.ui-sidebar .ui-nav-ico[data-v-bbc6b639]{flex:0 0 20px;width:20px;text-align:center;margin-right:0;font-size:15px}.ui-sidebar .ui-nav-group-btn[data-v-bbc6b639]{justify-content:space-between;font-weight:600;color:#dee4ec}.ui-sidebar .ui-nav-group-btn[data-v-bbc6b639]:hover{background:var(--ui-side-hover, rgba(255,255,255,.07))}.ui-sidebar .ui-nav-group-btn.is-group-active[data-v-bbc6b639]{color:var(--ui-side-text-on, #FFFFFF);background:var(--ui-side-active, rgba(255,255,255,.13))}.ui-sidebar .ui-nav-caret[data-v-bbc6b639]{font-size:11px;opacity:.7}.ui-sidebar .ui-nav-sub[data-v-bbc6b639]{padding:var(--ui-space-1, 4px) 0 var(--ui-space-2, 8px)}.ui-sidebar .ui-nav-sub-item[data-v-bbc6b639]{padding-left:calc(var(--ui-space-3, 12px) + 28px);font-size:var(--ui-fs-body, 14px)}.ui-sidebar .ui-nav-count[data-v-bbc6b639]{margin-left:auto;font-size:var(--ui-fs-help, 12px);color:var(--ui-side-text, rgba(255,255,255,.72));opacity:.8}.ui-sidebar .ui-nav-count.is-zero[data-v-bbc6b639]{color:var(--ui-side-text, rgba(255,255,255,.72));opacity:.42}.ui-main[data-v-bbc6b639]{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}.ui-topbar[data-v-bbc6b639]{position:sticky;top:0;z-index:30;height:var(--ui-topbar-h, 60px);padding:0 var(--ui-gutter, 24px);background:var(--ui-surface, #FFFFFF);border-bottom:1px solid var(--ui-border, #E4E7EC);box-shadow:none}.ui-topbar .ui-who[data-v-bbc6b639]{font-size:var(--ui-fs-help, 12px);color:var(--ui-text-muted, #6B7480)}.ui-topbar .ui-who.who-right[data-v-bbc6b639]{margin-left:auto;display:inline-flex;align-items:center;gap:var(--ui-space-3, 12px)}.ui-topbar .ui-switch-label[data-v-bbc6b639]{color:var(--ui-text-muted, #6B7480)}.ui-topbar .ui-student-select[data-v-bbc6b639],.ui-topbar .ui-theme-select[data-v-bbc6b639]{min-height:var(--ui-control-h-sm, 36px);padding:0 var(--ui-space-3, 12px);border:1px solid var(--ui-border, #E4E7EC);border-radius:var(--ui-radius, 8px);background:var(--ui-surface, #FFFFFF);color:var(--ui-text-body, #3C4756);font-family:inherit;font-size:var(--ui-fs-help, 12px);cursor:pointer}.ui-topbar .ui-switch-manage[data-v-bbc6b639]{color:var(--ui-primary, #4A5B72);text-decoration:underline;text-underline-offset:2px}.ui-topbar .ui-bell[data-v-bbc6b639]{width:var(--ui-control-h-sm, 36px);height:var(--ui-control-h-sm, 36px);border:1px solid var(--ui-border, #E4E7EC);border-radius:var(--ui-radius, 8px);background:var(--ui-surface, #FFFFFF)}.ui-topbar .ui-bell.nt-on[data-v-bbc6b639]{border-color:var(--ui-primary, #4A5B72)}.ui-topbar .ui-acct[data-v-bbc6b639]{font-size:var(--ui-fs-help, 12px)}.ui-topbar .ui-acct-name[data-v-bbc6b639]{color:var(--ui-text, #1F2733);font-weight:600}.ui-content[data-v-bbc6b639]{flex:1 1 auto}@media(max-width:1279px){.ui-content[data-v-bbc6b639]{padding:16px}}@media(max-width:1023px){.ui-shell[data-v-bbc6b639]{flex-direction:column}.ui-sidebar[data-v-bbc6b639]{width:100%;flex:0 0 auto;height:auto;position:static;flex-direction:row;align-items:center;overflow-x:auto;overflow-y:hidden}.ui-sidebar .ui-brand[data-v-bbc6b639]{border-bottom:0;flex:0 0 auto;height:auto;padding:10px 16px}.ui-sidebar .ui-nav-group[data-v-bbc6b639]{display:flex}.ui-sidebar .ui-nav-sub[data-v-bbc6b639]{display:none}.ui-sidebar .ui-nav-item[data-v-bbc6b639]{width:auto;white-space:nowrap;border-radius:var(--ui-radius, 8px)}}@media(max-width:719px){.ui-content[data-v-bbc6b639]{padding:16px}.ui-topbar[data-v-bbc6b639]{flex-wrap:wrap;height:auto;padding:8px 16px}.ui-topbar .ui-who.who-right[data-v-bbc6b639]{margin-left:0}}:root{--c-primary: #4f6ef2;--c-primary-dark: #3a55d9;--c-primary-soft: rgba(79, 110, 242, .1);--c-success: #2e9e5b;--c-success-dark: #25834a;--c-danger: #d9534f;--c-danger-dark: #b73f3b;--c-warn: #e0a800;--c-accent: #e26d3c;--c-bg: #f4f6fb;--c-panel: #ffffff;--c-border: #e3e8f2;--c-text: #2c3247;--c-text-2: #6b7280;--c-input-bg: #ffffff;--c-item-bg: #fafbff;--c-btn-disabled: #a9b4d8;--c-link: #3a55d9;--sb-bg: #1f2740;--sb-text: #cfd6ea;--sb-active-bg: rgba(79, 110, 242, .25);--sb-brand-bd: rgba(255, 255, 255, .08);--sb-hover: rgba(255, 255, 255, .06);--c-info-bg: #eef2ff;--c-info-tx: #3a55d9;--c-info-bd: #c8d3fb;--c-ok-bg: #e9f8ef;--c-ok-tx: #217a44;--c-ok-bd: #bfe8cd;--c-warn-bg: #fdf6e3;--c-warn-tx: #9a7200;--c-warn-bd: #f2e2ab;--c-err-bg: #fdecea;--c-err-tx: #b73f3b;--c-err-bd: #f5c6c3;--c-tag-info-bg: #eef2ff;--c-tag-info-tx: #3a55d9;--c-tag-green-bg: #e9f8ef;--c-tag-green-tx: #217a44;--c-tag-red-bg: #fdecea;--c-tag-red-tx: #b73f3b;--c-tag-red-bd: transparent;--c-tag-orange-bg: #fdf6e3;--c-tag-orange-tx: #9a7200;--c-tag-orange-bd: transparent;--c-tag-gray-bg: #eef0f4;--c-tag-gray-tx: #6b7280;--c-code-bg: #0f1730;--c-code-tx: #cfe3ff;--grad-a: #4f6ef2;--grad-b: #6a8bff;--grad-c: #8aa4ff;--radius: 10px;--shadow: 0 2px 10px rgba(30, 50, 120, .08)}body[data-theme=sand]{--c-primary: #c9702e;--c-primary-dark: #a85a1e;--c-primary-soft: rgba(201, 112, 46, .12);--c-success: #4c8c3f;--c-success-dark: #3d7233;--c-danger: #c94f3d;--c-danger-dark: #a83a2b;--c-warn: #c98a12;--c-accent: #d0542e;--c-bg: #f5efe2;--c-panel: #fffdf6;--c-border: #e7dcc5;--c-text: #3e3426;--c-text-2: #8b7c63;--c-input-bg: #fffdf6;--c-item-bg: #faf4e8;--c-btn-disabled: #cbb794;--c-link: #a85a1e;--sb-bg: #3e3226;--sb-text: #eadfc9;--sb-active-bg: rgba(224, 158, 74, .3);--sb-brand-bd: rgba(255, 255, 255, .1);--sb-hover: rgba(255, 255, 255, .07);--c-info-bg: #f3ead6;--c-info-tx: #8a5a1e;--c-info-bd: #e3d3ae;--c-ok-bg: #eaf3df;--c-ok-tx: #3f7a33;--c-ok-bd: #c4ddb2;--c-warn-bg: #f9f0d8;--c-warn-tx: #8f6a10;--c-warn-bd: #ecd9a0;--c-err-bg: #fae7e2;--c-err-tx: #a83a2b;--c-err-bd: #efc4ba;--c-tag-info-bg: #f3ead6;--c-tag-info-tx: #8a5a1e;--c-tag-green-bg: #eaf3df;--c-tag-green-tx: #3f7a33;--c-tag-red-bg: #fae7e2;--c-tag-red-tx: #a83a2b;--c-tag-red-bd: #e5b6ab;--c-tag-orange-bg: #f9edd2;--c-tag-orange-tx: #8f6a10;--c-tag-orange-bd: #e6cf96;--c-tag-gray-bg: #eee7d8;--c-tag-gray-tx: #7d7159;--c-code-bg: #2f2817;--c-code-tx: #ecd9b0;--grad-a: #c9702e;--grad-b: #d98e4a;--grad-c: #e8b078;--shadow: 0 2px 10px rgba(96, 74, 44, .1)}body[data-theme=bamboo]{--c-primary: #0e8a6a;--c-primary-dark: #0a6b52;--c-primary-soft: rgba(14, 138, 106, .1);--c-success: #1f9e57;--c-success-dark: #157a43;--c-danger: #e0483e;--c-danger-dark: #b32c22;--c-warn: #c77700;--c-accent: #e0483e;--c-bg: #e9f2ec;--c-panel: #fbfefc;--c-border: #d2e2d7;--c-text: #1d332c;--c-text-2: #5d7a6e;--c-input-bg: #fbfefc;--c-item-bg: #f2f8f4;--c-btn-disabled: #9dc3b4;--c-link: #0b6b52;--sb-bg: #123f36;--sb-text: #d2ece2;--sb-active-bg: rgba(52, 211, 153, .22);--sb-brand-bd: rgba(255, 255, 255, .1);--sb-hover: rgba(255, 255, 255, .07);--c-info-bg: #e3f2ec;--c-info-tx: #0b6b52;--c-info-bd: #bcdcd0;--c-ok-bg: #e2f6ea;--c-ok-tx: #157347;--c-ok-bd: #b8e3c9;--c-warn-bg: #fdf1d8;--c-warn-tx: #96620a;--c-warn-bd: #efd8a4;--c-err-bg: #fde5e2;--c-err-tx: #b32c22;--c-err-bd: #f2bfb9;--c-tag-info-bg: #e3f2ec;--c-tag-info-tx: #0b6b52;--c-tag-green-bg: #1f9e57;--c-tag-green-tx: #ffffff;--c-tag-red-bg: #e0483e;--c-tag-red-tx: #ffffff;--c-tag-red-bd: #c13a30;--c-tag-orange-bg: #c77700;--c-tag-orange-tx: #ffffff;--c-tag-orange-bd: #a66200;--c-tag-gray-bg: #dfe9e3;--c-tag-gray-tx: #4c665c;--c-code-bg: #10312a;--c-code-tx: #c8ecdb;--grad-a: #0e8a6a;--grad-b: #17a37e;--grad-c: #43c29b;--shadow: 0 2px 10px rgba(24, 70, 54, .12)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--c-bg);color:var(--c-text);font-size:14px;line-height:1.6;transition:background .2s}.layout{display:flex;min-height:100vh}.sidebar{width:210px;flex-shrink:0;background:var(--sb-bg);color:var(--sb-text);display:flex;flex-direction:column;padding:18px 0}.sidebar .brand{color:#fff;font-size:16px;font-weight:700;padding:0 20px 16px;border-bottom:1px solid var(--sb-brand-bd);margin-bottom:10px}.sidebar .nav-item{display:block;padding:11px 20px;color:var(--sb-text);text-decoration:none;border-left:3px solid transparent;transition:background .15s}.sidebar .nav-item:hover{background:var(--sb-hover)}.sidebar .nav-item.router-link-active{background:var(--sb-active-bg);color:#fff;border-left-color:var(--c-primary)}.sidebar .nav-ico{display:inline-block;width:1.6em;text-align:center;margin-right:2px;flex:none}.nav-group-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:0;font:inherit;text-align:left;cursor:pointer;color:var(--sb-text)}.nav-group-btn:hover{background:var(--sb-hover)}.nav-group-btn.group-active{color:#fff;border-left-color:var(--c-primary)}.nav-group-btn .nav-caret{font-size:11px;opacity:.75}.nav-sub .nav-sub-item{padding:9px 20px 9px 44px;font-size:13px;opacity:.92}.main-area{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:54px;background:var(--c-panel);border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;padding:0 22px;box-shadow:var(--shadow)}.topbar .who{color:var(--c-text-2);font-size:13px}.content{flex:1;padding:22px;max-width:1100px;width:100%;margin:0 auto}.page-title{font-size:20px;font-weight:700;margin-bottom:4px}.page-sub{color:var(--c-text-2);font-size:13px;margin-bottom:18px}.card{background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:18px}.card h3{font-size:15px;margin-bottom:12px}.btn{display:inline-block;border:none;border-radius:8px;cursor:pointer;padding:8px 16px;font-size:14px;background:var(--c-primary);color:#fff;transition:background .15s}.btn:hover{background:var(--c-primary-dark)}.btn:disabled{background:var(--c-btn-disabled);cursor:not-allowed}.btn.green{background:var(--c-success)}.btn.green:hover{background:var(--c-success-dark)}.btn.red{background:var(--c-danger)}.btn.red:hover{background:var(--c-danger-dark)}.btn.ghost{background:transparent;color:var(--c-primary);border:1px solid var(--c-primary)}.btn.ghost:hover{background:var(--c-primary-soft)}.btn.sm{padding:4px 10px;font-size:13px}input,select,textarea{border:1px solid var(--c-border);border-radius:8px;padding:8px 10px;font-size:14px;color:var(--c-text);background:var(--c-input-bg);outline:none;font-family:inherit}input:focus,select:focus,textarea:focus{border-color:var(--c-primary)}textarea{width:100%;resize:vertical}.field{margin-bottom:12px}.field label{display:block;font-size:13px;color:var(--c-text-2);margin-bottom:5px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row .field{margin-bottom:0}.alert{border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:13px}.alert.info{background:var(--c-info-bg);color:var(--c-info-tx);border:1px solid var(--c-info-bd)}.alert.ok{background:var(--c-ok-bg);color:var(--c-ok-tx);border:1px solid var(--c-ok-bd)}.alert.warn{background:var(--c-warn-bg);color:var(--c-warn-tx);border:1px solid var(--c-warn-bd)}.alert.err{background:var(--c-err-bg);color:var(--c-err-tx);border:1px solid var(--c-err-bd);font-weight:600}.tag{display:inline-block;padding:1px 9px;border-radius:999px;font-size:12px;background:var(--c-tag-info-bg);color:var(--c-tag-info-tx);margin-right:6px}.tag.green{background:var(--c-tag-green-bg);color:var(--c-tag-green-tx)}.tag.red{background:var(--c-tag-red-bg);color:var(--c-tag-red-tx);border:1px solid var(--c-tag-red-bd);font-weight:600}.tag.gray{background:var(--c-tag-gray-bg);color:var(--c-tag-gray-tx)}.tag.orange{background:var(--c-tag-orange-bg);color:var(--c-tag-orange-tx);border:1px solid var(--c-tag-orange-bd);font-weight:600}.empty{color:var(--c-text-2);text-align:center;padding:26px 0;font-size:13px}pre.json{background:var(--c-code-bg);color:var(--c-code-tx);padding:14px;border-radius:8px;overflow:auto;font-size:12px;line-height:1.55;max-height:460px}.task-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--c-border);border-radius:8px;margin-bottom:8px;background:var(--c-item-bg)}.task-item .info{flex:1;min-width:0}.task-item .title{font-weight:600}.task-item .meta{color:var(--c-text-2);font-size:12px;margin-top:2px}.task-item.done{opacity:.62}.stat-grid{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px}.stat-card{flex:1;min-width:150px;background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.stat-card .num{font-size:26px;font-weight:700;color:var(--c-primary)}.stat-card .label{color:var(--c-text-2);font-size:12px}.theme-switch{display:inline-flex;align-items:center;gap:6px;margin-left:14px}.theme-switch .theme-label{font-size:13px;color:var(--c-text-2);white-space:nowrap}.theme-switch .theme-select{min-width:128px;padding:4px 8px;border:1px solid var(--c-border);border-radius:8px;background:var(--c-input-bg);color:var(--c-text);font-size:13px;cursor:pointer}.theme-switch .theme-select:hover{border-color:var(--c-primary)}.theme-switch .theme-select:focus{outline:none;border-color:var(--c-primary)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--grad-a) 0%,var(--grad-b) 55%,var(--grad-c) 100%)}.login-card{width:380px;background:var(--c-panel);border-radius:14px;padding:34px 32px;box-shadow:0 14px 40px #14287840}.login-card h1{font-size:19px;text-align:center;margin-bottom:4px}.login-card .sub{text-align:center;color:var(--c-text-2);font-size:12px;margin-bottom:22px}.login-card .field input{width:100%}.login-card .btn{width:100%;margin-top:8px;padding:10px}@media print{.no-print,.sidebar,.topbar,.float-dock{display:none!important}.layout,.main-area{display:block!important}.content{padding:0!important;max-width:none!important}body{background:#fff!important}}:root{--ui-bg: #F7F8FA;--ui-surface: #FFFFFF;--ui-surface-2: #FAFBFC;--ui-border: #E4E7EC;--ui-border-strong: #D0D5DD;--ui-text: #1F2733;--ui-text-body: #3C4756;--ui-text-muted: #6B7480;--ui-text-disabled: #98A0AA;--ui-primary: #4A5B72;--ui-primary-hover: #3F4E62;--ui-primary-soft: #EEF1F5;--ui-success: #4E7A63;--ui-success-hover: #436A55;--ui-success-soft: #EDF3EF;--ui-danger: #A34A45;--ui-danger-hover: #8E423E;--ui-danger-soft: #F8EFEE;--ui-warn: #A9784A;--ui-warn-hover: #96673D;--ui-warn-soft: #FAF2EA;--ui-radius-sm: 6px;--ui-radius: 8px;--ui-radius-lg: 12px;--ui-pill: 999px;--ui-space-1: 4px;--ui-space-2: 8px;--ui-space-3: 12px;--ui-space-4: 16px;--ui-space-5: 24px;--ui-space-6: 32px;--ui-shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);--ui-shadow-md: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);--ui-ring: 0 0 0 3px rgba(74, 91, 114, .14);--ui-overlay: rgba(16, 24, 40, .35);--ui-content-max: 1240px;--ui-gutter: 24px;--ui-control-h: 44px;--ui-control-h-sm: 36px;--ui-fs-title: 24px;--ui-fs-section: 15px;--ui-fs-body: 14px;--ui-fs-help: 12px;--ui-lh-title: 1.35;--ui-lh-body: 1.6;--ui-lh-help: 1.5;--ui-font: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--ui-font-heiti: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Source Han Sans SC", "Noto Sans CJK SC", "Heiti SC", "SimHei", "Helvetica Neue", Arial, sans-serif;--ui-brand-tracking: .09em;--ui-side-w: 232px;--ui-side-bg: #1F2733;--ui-side-text: rgba(255,255,255,.72);--ui-side-text-on: #FFFFFF;--ui-side-hover: rgba(255,255,255,.07);--ui-side-active: rgba(255,255,255,.13);--ui-topbar-h: 60px}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-space-2);min-height:var(--ui-control-h);padding:0 var(--ui-space-4);border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);color:var(--ui-text-body);font-family:inherit;font-size:var(--ui-fs-body);line-height:1.2;font-weight:500;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.ui-btn:hover{border-color:var(--ui-border-strong);background:var(--ui-surface-2)}.ui-btn:focus-visible{outline:none;box-shadow:var(--ui-ring);border-color:var(--ui-primary)}.ui-btn:disabled,.ui-btn[disabled]{background:var(--ui-surface-2);border-color:var(--ui-border);color:var(--ui-text-disabled);cursor:not-allowed}.ui-btn--sm{min-height:var(--ui-control-h-sm);padding:0 var(--ui-space-3);font-size:var(--ui-fs-help)}.ui-btn--primary{background:var(--ui-primary);border-color:var(--ui-primary);color:var(--ui-surface)}.ui-btn--primary:hover{background:var(--ui-primary-hover);border-color:var(--ui-primary-hover);color:var(--ui-surface)}.ui-btn--success{background:var(--ui-success);border-color:var(--ui-success);color:var(--ui-surface)}.ui-btn--success:hover{background:var(--ui-success-hover);border-color:var(--ui-success-hover);color:var(--ui-surface)}.ui-btn--danger{background:var(--ui-danger);border-color:var(--ui-danger);color:var(--ui-surface)}.ui-btn--danger:hover{background:var(--ui-danger-hover);border-color:var(--ui-danger-hover);color:var(--ui-surface)}.ui-btn--warn{background:var(--ui-warn);border-color:var(--ui-warn);color:var(--ui-surface)}.ui-btn--warn:hover{background:var(--ui-warn-hover);border-color:var(--ui-warn-hover);color:var(--ui-surface)}.ui-btn--ghost{background:var(--ui-surface);border-color:var(--ui-border);color:var(--ui-text-body)}.ui-btn--ghost:hover{background:var(--ui-surface-2);border-color:var(--ui-border-strong);color:var(--ui-text)}.ui-btn--text{background:transparent;border-color:transparent;color:var(--ui-primary);padding:0 var(--ui-space-2)}.ui-btn--text:hover{background:var(--ui-primary-soft);border-color:transparent;color:var(--ui-primary-hover)}.ui-input,.ui-select{display:inline-flex;align-items:center;width:100%;min-height:var(--ui-control-h);padding:0 var(--ui-space-3);border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);color:var(--ui-text-body);font-family:inherit;font-size:var(--ui-fs-body);line-height:1.4;transition:border-color .15s ease,box-shadow .15s ease}.ui-input::placeholder{color:var(--ui-text-disabled)}.ui-input:hover,.ui-select:hover{border-color:var(--ui-border-strong)}.ui-input:focus,.ui-select:focus{outline:none;border-color:var(--ui-primary);box-shadow:var(--ui-ring)}.ui-input:disabled,.ui-select:disabled{background:var(--ui-surface-2);color:var(--ui-text-disabled);cursor:not-allowed}.ui-select{appearance:none;-webkit-appearance:none;padding-right:var(--ui-space-6);cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--ui-text-muted) 50%),linear-gradient(135deg,var(--ui-text-muted) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}textarea.ui-input{min-height:calc(var(--ui-control-h) * 2);padding:var(--ui-space-3);line-height:var(--ui-lh-body);resize:vertical}.ui-field{display:flex;flex-direction:column;gap:var(--ui-space-2);min-width:0}.ui-field>label{font-size:var(--ui-fs-help);color:var(--ui-text-muted)}.ui-card{background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-sm);padding:var(--ui-space-5)}.ui-card+.ui-card{margin-top:var(--ui-gutter)}.ui-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ui-space-3);margin-bottom:var(--ui-space-4);padding-bottom:var(--ui-space-3);border-bottom:1px solid var(--ui-border)}.ui-card-head>:first-child{font-size:var(--ui-fs-section);font-weight:600;color:var(--ui-text)}.ui-card-head .ui-head-actions{display:flex;align-items:center;gap:var(--ui-space-2);flex-wrap:wrap}.ui-table{width:100%;border-collapse:collapse;font-size:var(--ui-fs-body);color:var(--ui-text-body)}.ui-table th{background:var(--ui-surface-2);color:var(--ui-text-muted);font-size:var(--ui-fs-help);font-weight:600;text-align:left;padding:var(--ui-space-3);border-bottom:1px solid var(--ui-border);white-space:nowrap}.ui-table td{padding:var(--ui-space-3);border-bottom:1px solid var(--ui-border);vertical-align:middle}.ui-table tbody tr:nth-child(2n){background:var(--ui-surface-2)}.ui-table tbody tr:hover{background:var(--ui-primary-soft)}.ui-table td:last-child,.ui-table th:last-child{text-align:right}.ui-tag{display:inline-flex;align-items:center;gap:var(--ui-space-1);padding:2px var(--ui-space-2);border-radius:var(--ui-pill);font-size:var(--ui-fs-help);line-height:1.5;white-space:nowrap}.ui-tag--neutral{background:var(--ui-surface-2);color:var(--ui-text-muted)}.ui-tag--primary{background:var(--ui-primary-soft);color:var(--ui-primary-hover)}.ui-tag--success{background:var(--ui-success-soft);color:var(--ui-success-hover)}.ui-tag--danger{background:var(--ui-danger-soft);color:var(--ui-danger-hover)}.ui-tag--warn{background:var(--ui-warn-soft);color:var(--ui-warn-hover)}.ui-alert{display:flex;gap:var(--ui-space-3);padding:var(--ui-space-3) var(--ui-space-4);border-radius:var(--ui-radius);border-left:3px solid var(--ui-border-strong);font-size:var(--ui-fs-body);line-height:var(--ui-lh-body)}.ui-alert--info{background:var(--ui-primary-soft);border-left-color:var(--ui-primary);color:var(--ui-primary-hover)}.ui-alert--ok{background:var(--ui-success-soft);border-left-color:var(--ui-success);color:var(--ui-success-hover)}.ui-alert--warn{background:var(--ui-warn-soft);border-left-color:var(--ui-warn);color:var(--ui-warn-hover)}.ui-alert--err{background:var(--ui-danger-soft);border-left-color:var(--ui-danger);color:var(--ui-danger-hover)}.ui-page-head{margin-bottom:var(--ui-space-5)}.ui-page-title{font-size:var(--ui-fs-title);font-weight:600;line-height:var(--ui-lh-title);color:var(--ui-text)}.ui-page-sub{margin-top:var(--ui-space-2);font-size:var(--ui-fs-help);line-height:var(--ui-lh-help);color:var(--ui-text-muted);max-width:900px}.ui-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-space-4);margin-bottom:var(--ui-space-4)}.ui-toolbar>.ui-toolbar-group{display:flex;align-items:center;gap:var(--ui-space-2);flex-wrap:wrap}.ui-toolbar>.ui-toolbar-group+.ui-toolbar-group{margin-left:0}.ui-toolbar .ui-spacer{flex:1 1 auto}.ui-toolbar .ui-toolbar-sep{width:1px;align-self:stretch;background:var(--ui-border);margin:0 var(--ui-space-1)}.ui-empty{padding-top:48px;padding-bottom:48px;text-align:center;color:var(--ui-text-muted);font-size:var(--ui-fs-help);line-height:var(--ui-lh-help)}.ui-pager{display:flex;align-items:center;justify-content:flex-end;gap:var(--ui-space-2);margin-top:var(--ui-space-4);font-size:var(--ui-fs-help);color:var(--ui-text-muted)}.ui-pager .ui-btn{min-height:var(--ui-control-h);padding:0 var(--ui-space-3)}.ui-pager .ui-pager-current{min-height:var(--ui-control-h);display:inline-flex;align-items:center;padding:0 var(--ui-space-3);border:1px solid var(--ui-primary);border-radius:var(--ui-radius);color:var(--ui-primary);background:var(--ui-surface);font-size:var(--ui-fs-help)}.ui-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gutter)}.ui-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.ui-tabs{display:inline-flex;align-items:center;gap:var(--ui-space-1);padding:var(--ui-space-1);background:var(--ui-surface-2);border:1px solid var(--ui-border);border-radius:var(--ui-radius)}.ui-tabs>.ui-tab{min-height:var(--ui-control-h-sm);padding:0 var(--ui-space-3);border:0;border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-text-muted);font-family:inherit;font-size:var(--ui-fs-body);cursor:pointer}.ui-tabs>.ui-tab:hover{color:var(--ui-text-body);background:var(--ui-surface)}.ui-tabs>.ui-tab.is-active,.ui-tabs>.ui-tab.active{background:var(--ui-surface);color:var(--ui-text);font-weight:600;box-shadow:var(--ui-shadow-sm)}.ui-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--ui-space-4);background:var(--ui-overlay)}.ui-modal-panel{width:100%;max-width:560px;max-height:88vh;overflow:auto;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-md);padding:var(--ui-space-5)}.ui-modal-title{font-size:var(--ui-fs-section);font-weight:600;color:var(--ui-text)}.ui-modal-body{margin-top:var(--ui-space-3);font-size:var(--ui-fs-body);line-height:var(--ui-lh-body);color:var(--ui-text-body)}.ui-modal-foot{display:flex;justify-content:flex-end;gap:var(--ui-space-2);margin-top:var(--ui-space-5);padding-top:var(--ui-space-4);border-top:1px solid var(--ui-border)}.ui-modal-foot>.ui-btn{min-height:var(--ui-control-h)}.ui-container{width:100%;max-width:var(--ui-content-max);margin:0 auto;padding:var(--ui-space-5) var(--ui-gutter)}.ui-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ui-space-4)}.ui-stat{background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);padding:var(--ui-space-4) var(--ui-space-5)}.ui-stat .ui-stat-num{font-size:26px;font-weight:600;color:var(--ui-text);line-height:1.2}.ui-stat .ui-stat-label{margin-top:var(--ui-space-1);font-size:var(--ui-fs-help);color:var(--ui-text-muted)}.ui-stat-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-space-2);font-size:var(--ui-fs-help);color:var(--ui-text-muted);margin-bottom:var(--ui-space-3)}.ui-stat-line b{color:var(--ui-text);font-weight:600}.ui-help{font-size:var(--ui-fs-help);color:var(--ui-text-muted)}.ui-help details{display:inline}.ui-help summary{cursor:pointer;color:var(--ui-primary);list-style:none;display:inline-flex;align-items:center;gap:2px;padding:0 var(--ui-space-1);border-radius:var(--ui-radius-sm)}.ui-help summary::-webkit-details-marker{display:none}.ui-help summary:before{content:"▸";font-size:10px}.ui-help details[open] summary:before{content:"▾"}.ui-help summary:hover{background:var(--ui-primary-soft)}.ui-help .ui-help-body{display:block;margin-top:var(--ui-space-2);padding:var(--ui-space-3);background:var(--ui-surface-2);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-text-body);line-height:var(--ui-lh-body)}.ui-bar{height:8px;border-radius:var(--ui-pill);background:var(--ui-surface-2);overflow:hidden}.ui-bar>i{display:block;height:100%;border-radius:var(--ui-pill);background:var(--ui-primary);transition:width .3s ease}.ui-bar--success>i{background:var(--ui-success)}.ui-bar--warn>i{background:var(--ui-warn)}.ui-thumb{display:block;width:100%;height:100%;object-fit:contain;border-radius:var(--ui-radius);background:var(--ui-surface-2)}.ui-shell{display:flex;min-height:100vh}.ui-sidebar{width:var(--ui-side-w);flex:0 0 var(--ui-side-w);background:var(--ui-side-bg);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.ui-sidebar .ui-brand{display:flex;align-items:center;gap:var(--ui-space-2);height:var(--ui-topbar-h);padding:0 var(--ui-space-5);color:var(--ui-side-text-on);font-size:16px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08);flex:0 0 auto}.ui-sidebar .ui-brand .ui-brand-tm{display:inline-flex;align-items:center;justify-content:center;width:1.25em;height:1.25em;margin-left:.06em;font-size:.46em;line-height:1;vertical-align:.62em;border:1px solid currentColor;border-radius:50%;opacity:.85}.ui-sidebar .ui-nav{padding:var(--ui-space-3) var(--ui-space-3) var(--ui-space-6)}.ui-sidebar .ui-nav-item{display:flex;align-items:center;gap:var(--ui-space-2);width:100%;min-height:var(--ui-control-h);padding:0 var(--ui-space-3);border:0;border-radius:var(--ui-radius);background:transparent;color:var(--ui-side-text);font-family:inherit;font-size:var(--ui-fs-body);text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease}.ui-sidebar .ui-nav-item:hover{background:var(--ui-side-hover);color:var(--ui-side-text-on)}.ui-sidebar .ui-nav-ico{flex:0 0 20px;text-align:center;font-size:15px}.ui-sidebar .ui-nav-group-btn{justify-content:space-between}.ui-sidebar .ui-nav-group-btn.is-group-active{color:var(--ui-side-text-on)}.ui-sidebar .ui-nav-caret{font-size:11px;opacity:.7}.ui-sidebar .ui-nav-sub{padding:var(--ui-space-1) 0 var(--ui-space-2)}.ui-sidebar .ui-nav-sub-item{padding-left:calc(var(--ui-space-3) + 28px);font-size:var(--ui-fs-body)}.ui-sidebar .ui-nav-sub-item.is-active,.ui-sidebar .ui-nav-top-item.is-active{background:var(--ui-side-active);color:var(--ui-side-text-on);font-weight:600}.ui-sidebar .ui-nav-count{margin-left:auto;font-size:var(--ui-fs-help);color:var(--ui-side-text);opacity:.8}.ui-sidebar .ui-nav-count.is-zero{opacity:.42}.ui-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}.ui-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--ui-space-4);height:var(--ui-topbar-h);padding:0 var(--ui-gutter);background:var(--ui-surface);border-bottom:1px solid var(--ui-border)}.ui-topbar .ui-who{display:inline-flex;align-items:center;gap:var(--ui-space-2);font-size:var(--ui-fs-help);color:var(--ui-text-muted)}.ui-topbar .ui-who+.ui-who{margin-left:auto}.ui-topbar .ui-switch-label{color:var(--ui-text-muted)}.ui-topbar .ui-student-select,.ui-topbar .ui-theme-select{min-height:var(--ui-control-h-sm);padding:0 var(--ui-space-3);border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);color:var(--ui-text-body);font-family:inherit;font-size:var(--ui-fs-help);cursor:pointer}.ui-topbar .ui-switch-manage{color:var(--ui-primary);text-decoration:underline;text-underline-offset:2px}.ui-topbar .ui-bell{position:relative;width:var(--ui-control-h-sm);height:var(--ui-control-h-sm);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);cursor:pointer;font-size:14px}.ui-topbar .ui-bell .ui-bell-badge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;background:var(--ui-danger);color:#fff;border-radius:var(--ui-pill);font-size:10px;line-height:1}.ui-topbar .ui-acct{display:inline-flex;align-items:center;gap:var(--ui-space-2);font-size:var(--ui-fs-help)}.ui-topbar .ui-acct-name{color:var(--ui-text);font-weight:600}.ui-content{flex:1 1 auto}@media(max-width:1279px){.ui-container{padding:var(--ui-space-5) var(--ui-space-4)}.ui-card{padding:var(--ui-space-4)}.ui-grid--4,.ui-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1023px){.ui-grid,.ui-grid--2,.ui-grid--4{grid-template-columns:1fr}.ui-btn--sm,.ui-tabs>.ui-tab{min-height:var(--ui-control-h)}.ui-toolbar{gap:var(--ui-space-3)}.ui-toolbar>.ui-toolbar-group{width:100%}.ui-card-head{flex-direction:column;align-items:stretch}.ui-shell{flex-direction:column}.ui-sidebar{width:100%;flex:0 0 auto;height:auto;position:static;flex-direction:row;align-items:center;overflow-x:auto}.ui-sidebar .ui-brand{border-bottom:0;flex:0 0 auto}.ui-sidebar .ui-nav{display:flex;gap:var(--ui-space-1);padding:var(--ui-space-2)}.ui-sidebar .ui-nav-group{display:flex}.ui-sidebar .ui-nav-sub{display:none}}@media(max-width:719px){.ui-container{padding:var(--ui-space-4) var(--ui-space-4)}.ui-card{padding:var(--ui-space-4)}.ui-toolbar>.ui-toolbar-group>.ui-btn{width:100%}.ui-pager{justify-content:center;flex-wrap:wrap}.ui-modal-panel{width:92vw;max-width:92vw}.ui-modal-foot{flex-direction:column-reverse}.ui-modal-foot>.ui-btn{width:100%}.ui-tabs{width:100%;overflow-x:auto}.ui-stat-grid{grid-template-columns:1fr}.ui-topbar{flex-wrap:wrap;height:auto;padding:var(--ui-space-2) var(--ui-space-4)}.ui-topbar .ui-who+.ui-who{margin-left:0}}
