:root{--lq-bg:#f7f7f8;--lq-surface:#fff;--lq-surface-sunken:#fafafa;--lq-surface-hover:#f0f0f1;--lq-text-primary:#111;--lq-text-secondary:#3c3c43;--lq-text-tertiary:#6b6b6b;--lq-text-quaternary:#86868b;--lq-text-disabled:#a1a1a6;--lq-text-on-primary:#fff;--lq-border-subtle:#f0f0f1;--lq-border:#e4e4e7;--lq-border-strong:#d4d4d8;--lq-primary:#111;--lq-primary-hover:#1c1c1e;--lq-primary-active:#000;--lq-primary-soft:#f0f0f1;--lq-success-bg:#ecfdf3;--lq-success-border:#a9e3c0;--lq-success-text:#04663a;--lq-success-dot:#12b76a;--lq-warning-bg:#fff7e8;--lq-warning-border:#f2d19b;--lq-warning-text:#8a5200;--lq-warning-dot:#f79009;--lq-danger-bg:#fef2f2;--lq-danger-border:#f5b9b9;--lq-danger-text:#99231f;--lq-danger-dot:#f04438;--lq-info-bg:#f2f7fc;--lq-info-border:#b4d0ea;--lq-info-text:#1b4e85;--lq-info-dot:#2e90fa;--lq-radius-sm:6px;--lq-radius-md:8px;--lq-radius-full:999px;--lq-space-1:4px;--lq-space-2:8px;--lq-space-3:12px;--lq-space-4:16px;--lq-space-5:20px;--lq-space-6:24px;--lq-space-8:32px;--lq-shadow-overlay:0 1px 2px #0000000f;--lq-font-sans:"Inter", -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--lq-font-mono:"Geist Mono", ui-monospace, "SFMono-Regular", monospace;--lq-sidebar-w:232px;--lq-topbar-h:64px;--lq-content-max:1440px}.dark{--lq-bg:#0f0f10;--lq-surface:#17171a;--lq-surface-sunken:#101012;--lq-surface-hover:#232326;--lq-text-primary:#f5f5f6;--lq-text-secondary:#d4d4d8;--lq-text-tertiary:#a1a1aa;--lq-text-quaternary:#8b8b93;--lq-text-disabled:#63636b;--lq-text-on-primary:#fff;--lq-border-subtle:#232326;--lq-border:#2a2a2e;--lq-border-strong:#3a3a40;--lq-primary:#f5f5f6;--lq-primary-hover:#fff;--lq-primary-active:#e4e4e7;--lq-primary-soft:#232326;--lq-success-bg:#0d2a1d;--lq-success-border:#1c5c3c;--lq-success-text:#6ee7a8;--lq-success-dot:#12b76a;--lq-warning-bg:#2a1f0a;--lq-warning-border:#6b4d10;--lq-warning-text:#fcd34d;--lq-warning-dot:#f79009;--lq-danger-bg:#2a1214;--lq-danger-border:#6b2226;--lq-danger-text:#fda29b;--lq-danger-dot:#f04438;--lq-info-bg:#0f2033;--lq-info-border:#1e4266;--lq-info-text:#93c5fd;--lq-info-dot:#2e90fa}.lq-shell{background:var(--lq-bg);height:100dvh;display:flex;overflow:hidden}.lq-sidebar{width:var(--lq-sidebar-w);background:var(--lq-surface);border-right:1px solid var(--lq-border);flex-direction:column;flex-shrink:0;display:flex}.lq-brand{padding:var(--lq-space-5);height:var(--lq-topbar-h);border-bottom:1px solid var(--lq-border);align-items:center;gap:10px;display:flex}.lq-brand-mark{border-radius:var(--lq-radius-sm);background:var(--lq-primary);flex-shrink:0;width:28px;height:28px}.lq-brand-name{color:var(--lq-text-primary);font-size:14px;font-weight:600}.lq-nav{padding:var(--lq-space-3);flex-direction:column;gap:2px;display:flex;overflow-y:auto}.lq-nav-group+.lq-nav-group{margin-top:var(--lq-space-4)}.lq-nav-label{padding:var(--lq-space-1) var(--lq-space-2) var(--lq-space-2);color:var(--lq-text-disabled);font-size:11px;font-weight:500}.lq-nav-item{border-radius:var(--lq-radius-sm);color:var(--lq-text-secondary);align-items:center;gap:10px;padding:8px;font-size:13px;text-decoration:none;transition:background-color .15s,color .15s;display:flex}.lq-nav-item:hover{background:var(--lq-surface-hover);color:var(--lq-text-primary)}.lq-nav-item[data-active=true]{background:var(--lq-primary);color:var(--lq-text-on-primary);font-weight:500}.lq-sidebar-foot{padding:var(--lq-space-4);border-top:1px solid var(--lq-border);color:var(--lq-text-secondary);align-items:center;gap:10px;margin-top:auto;font-size:12px;display:flex}.lq-avatar{border-radius:var(--lq-radius-full);background:var(--lq-border);flex-shrink:0;width:28px;height:28px}.lq-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.lq-topbar{justify-content:space-between;align-items:center;gap:var(--lq-space-4);height:var(--lq-topbar-h);padding:0 var(--lq-space-6);background:var(--lq-surface);border-bottom:1px solid var(--lq-border);flex-shrink:0;display:flex}.lq-crumb{color:var(--lq-text-quaternary);font-size:13px}.lq-content{padding:var(--lq-space-6);flex:1;overflow-y:auto}.lq-content-inner{gap:var(--lq-space-6);width:min(100%, var(--lq-content-max));flex-direction:column;margin:0 auto;display:flex}.lq-page-head{flex-direction:column;gap:6px;display:flex}.lq-page-title{letter-spacing:-.01em;color:var(--lq-text-primary);font-size:24px;font-weight:600;line-height:32px}.lq-page-desc{color:var(--lq-text-quaternary);font-size:13px;line-height:20px}.lq-section-title{color:var(--lq-text-primary);font-size:16px;font-weight:600;line-height:24px}.lq-card{background:var(--lq-surface);border:1px solid var(--lq-border);border-radius:var(--lq-radius-md);padding:var(--lq-space-5)}.lq-card-head{justify-content:space-between;align-items:center;gap:var(--lq-space-3);margin-bottom:var(--lq-space-4);display:flex}.lq-grid-4{gap:var(--lq-space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.lq-grid-2{gap:var(--lq-space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (max-width:1100px){.lq-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.lq-grid-4,.lq-grid-2{grid-template-columns:minmax(0,1fr)}.lq-sidebar{display:none}}.lq-kpi{background:var(--lq-surface);border:1px solid var(--lq-border);border-radius:var(--lq-radius-md);padding:var(--lq-space-5);flex-direction:column;gap:8px;display:flex}.lq-kpi-label{color:var(--lq-text-tertiary);font-size:13px}.lq-kpi-row{align-items:baseline;gap:8px;display:flex}.lq-kpi-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--lq-text-primary);font-size:28px;font-weight:600;line-height:34px}.lq-kpi-delta{font-variant-numeric:tabular-nums;font-size:12px;font-weight:500}.lq-kpi-delta[data-tone=up]{color:var(--lq-success-text)}.lq-kpi-delta[data-tone=warn]{color:var(--lq-warning-text)}.lq-kpi-delta[data-tone=down]{color:var(--lq-danger-text)}.lq-meter{flex-direction:column;gap:6px;display:flex}.lq-meter-head{color:var(--lq-text-secondary);justify-content:space-between;align-items:center;font-size:13px;display:flex}.lq-meter-value{font-variant-numeric:tabular-nums;color:var(--lq-text-primary);font-weight:500}.lq-meter-track{background:var(--lq-border-subtle);border-radius:3px;height:6px;overflow:hidden}.lq-meter-fill{background:var(--lq-primary);border-radius:3px;height:100%}.lq-meter-fill[data-tone=warn]{background:var(--lq-warning-dot)}.lq-meter-fill[data-tone=danger]{background:var(--lq-danger-dot)}.lq-status{align-items:center;gap:6px;font-size:12px;display:inline-flex}.lq-status-dot{border-radius:var(--lq-radius-full);flex-shrink:0;width:6px;height:6px}.lq-status[data-tone=ok]{color:var(--lq-success-text)}.lq-status[data-tone=ok] .lq-status-dot{background:var(--lq-success-dot)}.lq-status[data-tone=warn]{color:var(--lq-warning-text)}.lq-status[data-tone=warn] .lq-status-dot{background:var(--lq-warning-dot)}.lq-status[data-tone=danger]{color:var(--lq-danger-text)}.lq-status[data-tone=danger] .lq-status-dot{background:var(--lq-danger-dot)}.lq-status[data-tone=info]{color:var(--lq-info-text)}.lq-status[data-tone=info] .lq-status-dot{background:var(--lq-info-dot)}.lq-badge{border-radius:var(--lq-radius-full);border:1px solid var(--lq-border);white-space:nowrap;align-items:center;padding:3px 8px;font-size:11px;font-weight:500;display:inline-flex}.lq-badge[data-tone=ok]{background:var(--lq-success-bg);border-color:var(--lq-success-border);color:var(--lq-success-text)}.lq-badge[data-tone=warn]{background:var(--lq-warning-bg);border-color:var(--lq-warning-border);color:var(--lq-warning-text)}.lq-badge[data-tone=danger]{background:var(--lq-danger-bg);border-color:var(--lq-danger-border);color:var(--lq-danger-text)}.lq-badge[data-tone=info]{background:var(--lq-info-bg);border-color:var(--lq-info-border);color:var(--lq-info-text)}.lq-badge[data-tone=neutral]{background:var(--lq-surface-sunken);color:var(--lq-text-tertiary)}.lq-btn{border-radius:var(--lq-radius-sm);white-space:nowrap;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;height:34px;padding:0 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.lq-btn-primary{background:var(--lq-primary);color:var(--lq-text-on-primary)}.lq-btn-primary:hover{background:var(--lq-primary-hover)}.lq-btn-secondary{background:var(--lq-surface);border-color:var(--lq-border-strong);color:var(--lq-text-primary)}.lq-btn-secondary:hover{background:var(--lq-surface-hover)}.lq-btn-ghost{color:var(--lq-text-secondary);background:0 0}.lq-btn-ghost:hover{background:var(--lq-surface-hover);color:var(--lq-text-primary)}.lq-btn:disabled{opacity:.45;cursor:not-allowed}.lq-table{border-collapse:collapse;width:100%;font-size:13px}.lq-table thead th{text-align:left;color:var(--lq-text-quaternary);border-bottom:1px solid var(--lq-border);padding:10px 12px;font-size:11px;font-weight:500}.lq-table tbody td{color:var(--lq-text-secondary);border-bottom:1px solid var(--lq-border-subtle);padding:11px 12px}.lq-table tbody tr:last-child td{border-bottom:none}.lq-table tbody tr:hover td{background:var(--lq-surface-sunken)}.lq-table .lq-num{font-variant-numeric:tabular-nums;text-align:right}.lq-row{border-bottom:1px solid var(--lq-border-subtle);align-items:center;gap:10px;padding:12px 0;display:flex}.lq-row:last-child{border-bottom:none}.lq-row-title{color:var(--lq-text-primary);font-size:13px;font-weight:500}.lq-row-meta{color:var(--lq-text-quaternary);margin-top:2px;font-size:11px}.lq-empty{border:1px dashed var(--lq-border-strong);border-radius:var(--lq-radius-md);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 24px;display:flex}.lq-empty-title{color:var(--lq-text-primary);font-size:14px;font-weight:600}.lq-empty-desc{color:var(--lq-text-quaternary);font-size:13px}.lq-btn:focus-visible,.lq-nav-item:focus-visible{outline:2px solid var(--lq-info-dot);outline-offset:2px}.ant-btn{font-weight:500;border-radius:var(--lq-radius-sm)!important;box-shadow:none!important}.ant-card,.ant-modal-content,.ant-dropdown-menu{border-radius:var(--lq-radius-md)!important;box-shadow:var(--lq-shadow-overlay)!important}.ant-table-thead>tr>th{background:var(--lq-surface)!important;color:var(--lq-text-quaternary)!important;font-size:11px!important;font-weight:500!important}.ant-table-tbody>tr>td{border-bottom-color:var(--lq-border-subtle)!important}.ant-tag{border-radius:var(--lq-radius-full)!important}:root{--tsinghua-lilac:#f0f0f1;--tsinghua-lilac-strong:#d4d4d8;--tsinghua-lilac-ink:#111;--primary:#111;--primary-foreground:#fff;--accent:#f0f0f1;--accent-foreground:#111;--ring:#111;--background:#f7f7f8;--card:#fff;--border:#e4e4e7;--input:#e4e4e7;--radius:8px;--font-dm-sans:var(--font-inter);--font-dm-serif:var(--font-inter)}.dark{--tsinghua-lilac:#232326;--tsinghua-lilac-strong:#3a3a40;--tsinghua-lilac-ink:#f5f5f6;--primary:#f5f5f6;--primary-foreground:#111;--accent:#232326;--accent-foreground:#f5f5f6;--ring:#f5f5f6;--background:#0f0f10;--card:#17171a;--border:#2a2a2e;--input:#2a2a2e}.console-shell{background:var(--lq-bg)}.console-sidebar{background:var(--lq-surface);box-shadow:none;border-right:1px solid var(--lq-border)}.console-sidebar:before,.console-sidebar:after{display:none}.console-header{background:var(--lq-surface);box-shadow:none;border-bottom:1px solid var(--lq-border)}.console-header:after{display:none}.console-main,.student-main,.dark .student-main{background:var(--lq-bg)}.console-hero,.console-panel,.console-metric,.console-module-card{border:1px solid var(--lq-border);background:var(--lq-surface);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.console-hero{border-radius:var(--lq-radius-md);padding:var(--lq-space-5);background:var(--lq-surface)}.console-hero-grid{background-image:none}.console-panel,.console-module-card{border-radius:var(--lq-radius-md);padding:var(--lq-space-5)}.console-metric{border-radius:var(--lq-radius-md);padding:var(--lq-space-5);min-height:auto}.console-status-row{border:none;border-bottom:1px solid var(--lq-border-subtle);background:0 0;border-radius:0}.console-status-row:last-child{border-bottom:none}.console-icon-tile{border-radius:var(--lq-radius-sm);background:var(--lq-surface-hover);width:32px;height:32px;color:var(--lq-text-secondary);box-shadow:none;border:none}.console-nav-link:before,.console-nav-link:after{display:none}.console-nav-link:hover{background:var(--lq-surface-hover);color:var(--lq-text-primary)}.console-nav-link.is-active{background:var(--lq-primary);color:var(--lq-text-on-primary);box-shadow:none;border-radius:var(--lq-radius-sm)}.console-nav-link:hover .console-nav-icon,.console-nav-link.is-active .console-nav-icon{color:inherit;transform:none}.sidebar-active-bar{background:var(--lq-primary);box-shadow:none;border-radius:999px;animation:none}.console-subnav{border-left:1px solid var(--lq-border);animation:none}.console-collapse-button:hover,.console-bottom-collapse:hover{box-shadow:none;background:var(--lq-surface-hover);transform:none}.console-profile-card,.console-bottom-collapse{box-shadow:none}.console-sparkline>span{background:var(--lq-border-strong);border-radius:2px}.role-switcher-sheet{background:var(--lq-surface);box-shadow:var(--lq-shadow-overlay)}@media (prefers-reduced-motion:no-preference){.console-nav-link,.console-nav-icon{transition:background-color .15s,color .15s}}:global(.page){--login-accent:var(--lq-primary)!important;--login-accent-hover:var(--lq-primary-hover)!important;background:var(--lq-surface)!important;color:var(--lq-text-primary)!important}:global(.page) :global(.brandPanel h1){font-family:var(--lq-font-sans)!important;letter-spacing:-.02em!important;font-weight:600!important}:global(.page) :global(.brandPanel){border-right-color:var(--lq-border)!important}:is(:global(.page) :global(.brandText),:global(.page) :global(.hint),:global(.page) :global(.meta)){color:var(--lq-text-tertiary)!important}:is(:global(.toolShell),:global(.shell)){background:var(--lq-bg)!important;border-color:var(--lq-border)!important}
