html,body{height:100%;min-height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}.workspace-layout{height:100vh;min-height:100vh;overflow:hidden}.workspace-layout>.ant-layout{min-width:0;min-height:0}.workspace-main{flex-direction:column;min-width:0;min-height:0;display:flex}.workspace-sider,.workspace-sider .ant-layout-sider-children{flex-direction:column;display:flex}.workspace-brand{align-items:center;gap:10px;height:64px;padding:0 18px;display:flex;overflow:hidden}.workspace-brand>span{color:#fff;background:#1677ff;border-radius:8px;flex:0 0 34px;place-items:center;width:34px;height:34px;font-size:18px;font-weight:700;display:grid}.workspace-logo{object-fit:contain;border-radius:8px;flex:0 0 34px;width:34px;height:34px}.workspace-brand .ant-typography{white-space:nowrap;display:block}.workspace-brand .ant-typography-secondary{margin-top:2px;font-size:11px}.workspace-sider .ant-menu{flex:1}.workspace-sider-footer{border-top:1px solid var(--ant-color-border-secondary);padding:12px 16px 16px}.workspace-user-menu{justify-content:flex-start;align-items:center;width:100%;padding:4px 0;display:flex}.workspace-sider-footer .workspace-user-menu{text-align:left;justify-content:flex-start;padding-inline:0}.workspace-user-menu .ant-avatar{flex:none}.workspace-user-menu>span:last-child{text-overflow:ellipsis;overflow:hidden}.workspace-header{background:var(--ant-color-bg-container);border-bottom:1px solid var(--ant-color-border-secondary);justify-content:space-between;align-items:center;padding:0 24px;display:flex}.workspace-header.ant-layout-header{background:var(--ant-color-bg-container);padding-inline:24px}.cohort-selector{max-width:min(360px,45vw);color:var(--ant-color-text);align-items:center;gap:7px;padding:0 6px;font-size:18px;font-weight:500;line-height:1.35;display:inline-flex}.workspace-header .cohort-selector{text-align:left;justify-content:flex-start;padding-inline:0;font-family:inherit;font-size:18px;font-weight:600;line-height:1.35}.cohort-selector-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cohort-selector-status,.cohort-menu-status,.cohort-page-status{margin-inline-end:0;font-size:12px;font-weight:400}.cohort-page-status{vertical-align:1px;margin-inline-start:8px}.cohort-menu-item{justify-content:space-between;align-items:center;gap:20px;width:100%;display:flex}.cohort-menu-item>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cohort-selector .anticon{color:var(--ant-color-text-tertiary);font-size:12px}.workspace-content{flex:1;min-height:0;padding:24px;overflow:auto}.workspace-content-inner{flex-direction:column;min-height:100%;display:flex}.workspace-footer{color:var(--ant-color-text-tertiary);text-align:center;background:0 0;flex:none;margin-top:auto;padding:20px 24px 4px}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-header>div:first-child>h2.ant-typography{margin:0;line-height:1.35}.page-header>div:first-child>span.ant-typography{margin-top:4px;line-height:1.5;display:block}.workspace-content-inner>.ant-card.section-card,.workspace-content-inner>.ant-alert.section-card,.overview-board-shell>.ant-card.section-card,.ant-alert.alert-gap{margin-top:16px}.filter-row{margin-bottom:16px}.mapping-row{margin-top:16px;margin-bottom:16px}.cohort-actions-column{white-space:nowrap}.class-students{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px;margin-top:14px;display:grid}.class-students .ant-typography{min-width:0;font-size:12px}.class-students .ant-badge{margin-right:4px}.class-students .anticon{color:#1677ff;margin-left:4px}.class-student-item{align-items:center;gap:4px;width:100%;min-width:0;display:flex}.class-student-item-highlighted{z-index:2;outline-offset:1px;color:#ad4e00;background:#fff1b8;border:1px solid #fa8c16;border-radius:5px;outline:2px solid #fa8c16;padding:2px 4px;font-weight:700;animation:.45s ease-in-out 5 student-locate-flash;position:relative;box-shadow:0 0 0 4px #fa8c1647}@keyframes student-locate-flash{0%,to{background:#fff1b8;outline-color:#fa8c16;box-shadow:0 0 0 4px #fa8c1647}50%{color:#a8071a;background:#ffec3d;outline-color:#f5222d;box-shadow:0 0 0 8px #f5222d52}}@media (prefers-reduced-motion:reduce){.class-student-item-highlighted{animation:none}}.class-student-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.class-student-academic{flex:none;margin-left:auto}.student-tooltip{color:#1f1f1f;white-space:nowrap;min-width:280px;font-size:18px;line-height:1.8}.class-students .ant-tag{margin-inline-end:0;padding-inline:4px;font-size:11px;line-height:18px}.metric-tooltip{max-width:340px;font-size:14px;line-height:1.7}.metric-tooltip strong{margin-bottom:4px;display:block}.balance-chart-card .ant-card-body{padding:16px 20px 12px}.balance-chart-meta{color:var(--ant-color-text-secondary);justify-content:flex-end;margin-bottom:4px;font-size:12px;display:flex}.balance-chart-meta span{align-items:center;gap:5px;display:inline-flex}.balance-legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.balance-legend-male{background:#1677ff}.balance-legend-female{background:#eb2f96}.balance-legend-line{border-top:2px dashed #8c8c8c;width:18px;display:inline-block}.balance-chart-scroll{width:100%;overflow:auto hidden}.balance-chart-stage{min-width:100%;position:relative}.balance-chart-svg{width:100%;min-width:760px;height:248px;display:block;overflow:visible}.balance-axis-label,.balance-axis-tick,.balance-class-label{fill:var(--ant-color-text-tertiary);font-size:11px}.balance-grid-line{stroke:var(--ant-color-border-secondary);stroke-width:1px}.balance-average-line{stroke:#8c8c8c;stroke-dasharray:5 4;stroke-width:1.5px}.balance-chart-bar{cursor:pointer;outline:none}.balance-chart-bar:focus .balance-bar-male,.balance-chart-bar:hover .balance-bar-male{filter:brightness(.9)}.balance-chart-bar:focus .balance-bar-female,.balance-chart-bar:hover .balance-bar-female{filter:brightness(.92)}.balance-bar-male{fill:#1677ff}.balance-bar-female{fill:#eb2f96}.balance-chart-tooltip{z-index:2;color:#1f1f1f;pointer-events:none;background:#fff;border:1px solid #d9d9d9;border-radius:8px;width:max-content;min-width:220px;max-width:280px;padding:10px 14px;font-size:14px;line-height:1.7;position:absolute;top:8px;transform:translate(-50%);box-shadow:0 10px 28px #0003}.balance-chart-tooltip strong{margin-bottom:2px;font-size:15px;display:block}.balance-chart-card .ant-empty{margin:16px 0 8px}.password-card{width:min(460px,100%);margin:80px auto}.login-shell{isolation:isolate;box-sizing:border-box;background:var(--ant-color-fill-quaternary);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.login-vanta-background{z-index:-1;position:absolute;inset:0;overflow:hidden}.login-vanta-background:after{content:"";background:#ffffff8f;position:absolute;inset:0}.login-vanta-background canvas{display:block;inset:0;position:absolute!important}.login-card{z-index:1;background:#ffffffeb;width:min(420px,100%);position:relative}.login-footer{z-index:1;color:var(--ant-color-text-tertiary);text-align:center;margin-top:16px;position:relative}.login-card .ant-typography{margin-bottom:4px}.login-brand{text-align:center;align-items:center;width:100%}.login-brand-mark{width:88px;height:88px;color:var(--ant-color-primary);background:0 0;border-radius:0;place-items:center;margin-bottom:8px;font-size:42px;font-weight:700;display:grid;overflow:hidden}.login-brand-mark img{object-fit:contain;width:100%;height:100%}.settings-logo-preview{border:1px dashed var(--ant-color-border);background:var(--ant-color-fill-quaternary);border-radius:8px;place-items:center;width:96px;height:96px;display:grid;overflow:hidden}.settings-logo-preview img{object-fit:contain;width:100%;height:100%}.login-background-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;width:100%;display:grid}.login-background-options .ant-radio-button-wrapper{border:1px solid var(--ant-color-border);white-space:normal;border-radius:8px;flex-direction:column;align-items:stretch;gap:8px;height:auto;min-height:116px;padding:8px;line-height:1.5;display:flex;overflow:hidden}.login-background-options .ant-radio-button-wrapper:before{display:none}.login-background-options .ant-radio-button-wrapper-checked{border-color:var(--ant-color-primary);box-shadow:0 0 0 2px var(--ant-color-primary-bg)}.login-background-preview{background:var(--ant-color-fill-quaternary);border-radius:5px;height:76px;display:block;overflow:hidden}.login-background-preview img{object-fit:cover;width:100%;height:100%;display:block}.login-background-none{height:100%;color:var(--ant-color-text-tertiary);place-items:center;font-size:12px;display:grid}@media (min-width:1600px){.class-students{grid-template-columns:repeat(3,minmax(0,1fr))}.class-board-row>.class-board-col{flex:0 0 20%;max-width:20%}}@media (max-width:1024px){.login-background-options{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:768px){.workspace-content{padding:16px}.workspace-header.ant-layout-header{padding-inline:12px}.cohort-selector{display:none}.page-header{flex-direction:column}.class-students,.login-background-options{grid-template-columns:repeat(2,minmax(0,1fr))}.balance-chart-card .ant-card-body{padding-inline:12px}.balance-chart-meta{white-space:nowrap;justify-content:flex-start;padding-bottom:4px;overflow-x:auto}.balance-chart-tooltip{position:fixed;top:auto;bottom:16px;left:50%!important}}@media print{.ant-layout-sider,.workspace-header{display:none!important}.workspace-content{padding:0}}.balance-chart-group-hint{color:var(--ant-color-text-tertiary);justify-content:center;gap:12px;margin:-2px 0 2px;font-size:11px;display:flex}.balance-group-hint-gender,.balance-group-hint-academic{border-radius:4px;padding:1px 6px}.balance-group-hint-gender{color:#1677ff;background:#1677ff1a}.balance-group-hint-academic{color:#722ed1;background:#722ed11a}.balance-academic-average-line{stroke:#722ed1}@media (max-width:768px){.balance-chart-group-hint{justify-content:flex-start}}.combined-balance-chart .balance-chart-stage{width:100%!important}.combined-balance-chart .balance-chart-svg{min-width:0}.class-board-row{align-items:stretch}.class-board-row>.class-board-col{align-items:stretch;display:flex}.class-board-row>.class-board-col>.ant-card{width:100%}.overview-board-shell:fullscreen{box-sizing:border-box;background:var(--ant-color-bg-layout,#f5f5f5);width:100vw;height:100vh;padding:8px;position:relative;overflow:auto}.overview-board-shell:fullscreen .overview-board-card{flex-direction:column;width:100%;min-width:1280px;height:calc(100vh - 16px);min-height:720px;margin-top:0;display:flex;overflow:hidden}.overview-board-shell:fullscreen .overview-board-card>.ant-card-head{flex:none;min-height:44px;padding-inline:12px}.overview-board-shell:fullscreen .overview-board-card>.ant-card-head .ant-card-head-title,.overview-board-shell:fullscreen .overview-board-card>.ant-card-head .ant-card-extra{padding-block:6px}.overview-board-shell:fullscreen .overview-board-card>.ant-card-body{flex:1;min-height:0;padding:8px;overflow:hidden}.overview-board-shell:fullscreen .class-board-row{grid-template-columns:repeat(var(--fullscreen-class-columns), minmax(0, 1fr));grid-template-rows:repeat(var(--fullscreen-class-rows), minmax(0, 1fr));gap:8px;width:100%;height:100%;display:grid;margin:0!important}.overview-board-shell:fullscreen .class-board-row>.class-board-col{min-width:0;height:auto;width:auto!important;max-width:none!important;padding:0!important}.overview-board-shell:fullscreen .class-board-row>.class-board-col>.ant-card{flex-direction:column;height:100%;display:flex;overflow:hidden}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-head{flex:none;min-height:34px;padding-inline:6px}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-head .ant-card-head-title,.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-head .ant-card-extra{padding-block:3px;font-size:11px}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-head .ant-space{gap:3px!important}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-head .ant-tag{margin-inline-end:0;padding-inline:3px;font-size:10px;line-height:15px}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-body{flex:1;min-height:0;padding:6px;overflow:hidden}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-body>.ant-space{gap:2px!important}.overview-board-shell:fullscreen .class-board-col>.ant-card>.ant-card-body>.ant-space .ant-tag{margin-inline-end:0;padding-inline:3px;font-size:9px;line-height:14px}.overview-board-shell:fullscreen .class-students{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:2px 4px;margin-top:4px}.overview-board-shell:fullscreen .class-students .ant-typography{font-size:11px;line-height:16px}.overview-board-shell:fullscreen .class-students .ant-badge{margin-right:2px}.overview-board-shell:fullscreen .class-students .ant-tag{padding-inline:2px;font-size:9px;line-height:14px}.overview-print-layout{display:none}@page{size:A4 portrait;margin:12mm}@media print{html,body{background:#fff!important}.ant-layout-sider,.workspace-header,.workspace-footer,.workspace-content-inner>:not(.overview-print-layout),.ant-drawer,.ant-modal-root{display:none!important}.workspace-layout,.workspace-main,.workspace-content{width:100%!important;min-height:0!important;padding:0!important;display:block!important;overflow:visible!important}.overview-print-layout{color:#111;display:block!important}.print-class-page{break-after:page;page-break-after:always;page-break-inside:avoid;min-height:250mm}.print-class-page:last-child{break-after:auto;page-break-after:auto}.print-class-title{margin:0 0 4mm;font-size:20pt;line-height:1.3}.print-class-meta{color:#555;margin-bottom:6mm;font-size:10pt}.print-student-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8mm;display:grid}.print-student-row{white-space:nowrap;border-bottom:.2mm solid #ddd;grid-template-columns:14mm 6mm minmax(0,1fr);gap:1mm;min-width:0;padding:1mm 0;font-size:8.5pt;line-height:1.25;display:grid}.print-student-row span{white-space:nowrap;text-overflow:clip;min-width:0;overflow:hidden}.print-student-row span:nth-child(2){text-align:center}.print-student-row span:nth-child(3){text-align:left}}
