:root{font-family:Microsoft YaHei,sans-serif;color:#172b23;background:#f4f7f5;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.app{display:grid;grid-template-columns:226px 1fr;min-height:100vh}aside{background:#102a22;color:#fff;padding:32px 20px;display:flex;flex-direction:column}.brand{font-size:23px;font-weight:700}.brand span{display:block;font-size:12px;font-weight:400;color:#a0b6ac;margin-top:10px}nav{display:grid;gap:8px;margin-top:44px}button{font:inherit;text-align:left;border:0;border-radius:10px;padding:14px;color:#b8cec3;background:transparent;cursor:pointer}button.active,button:hover{background:#21443a;color:#fff}aside small{margin-top:auto;color:#94aca0}main{padding:36px;max-width:1540px;width:100%}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}header p{color:#73867b;font-size:13px}h1{font-size:28px;margin:8px 0}.badge{padding:8px 13px;border-radius:20px;background:#e4efe9;color:#31634e;font-size:13px}.panel{background:#fff;border:1px solid #e0e7e3;border-radius:16px;padding:24px;box-shadow:0 3px 14px #264c3d0a}.steps{display:flex;gap:28px;border-bottom:1px solid #edf0ee;padding-bottom:20px;color:#7b8b82;font-size:14px}.steps b{color:#176b52}.empty{padding:65px 16px;text-align:center}.empty h2{font-size:20px}.empty p{color:#74827d;font-size:14px;line-height:1.8}@media(max-width:700px){.app{grid-template-columns:1fr}aside{padding:20px}nav{display:flex;margin:18px 0}aside small{display:none}main{padding:20px}.steps{gap:12px;flex-wrap:wrap}}:root{font-synthesis:none}.loading{padding:80px;text-align:center}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:#f4f7f5}.loginIntro{background:linear-gradient(145deg,#102a22,#1d5943);color:#fff;padding:100px 12%;display:flex;flex-direction:column;justify-content:center}.loginIntro h1{font-size:44px;line-height:1.45;margin:28px 0}.loginIntro p{color:#b9d0c3}.eyebrow{color:#dcc78c;letter-spacing:4px;font-size:14px}.loginFeatures{border-top:1px solid #ffffff30;margin-top:50px;padding-top:24px;color:#b9d0c3}.loginCard{align-self:center;margin:60px auto;width:min(440px,85%);padding:40px;background:#fff;border:1px solid #e0e7e3;border-radius:20px;box-shadow:0 16px 50px #102a220a}.loginCard h2{font-size:27px;margin-top:0}.loginCard p,.loginCard small{color:#78867e;line-height:1.6}.loginCard small{display:block;margin-top:26px}.loginCard button{width:100%;text-align:center;margin-top:12px}label{display:flex;flex-direction:column;gap:9px;font-size:14px;color:#426050;margin:16px 0}input,select{width:100%;font:inherit;border:1px solid #ccd8d0;border-radius:9px;padding:12px;background:#fff;color:#172b23}input:focus,select:focus{outline:2px solid #8ebca5;outline-offset:1px}button.primary{background:#176b52;color:#fff;text-align:center}button:disabled{opacity:.5;cursor:wait}.error{padding:13px 18px;background:#fff0ec;color:#a13b27!important;border-radius:9px}.panel+.panel{margin-top:20px}.panel h2{font-size:19px;margin:0 0 16px}.gridForm{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 18px;align-items:end}.gridForm button{margin:16px 0}.check{flex-direction:row;align-items:center}.check input{width:auto}.tableWrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:14px 12px;text-align:left;border-bottom:1px solid #edf0ee;white-space:nowrap}th{color:#718277;background:#f7f9f8}td button,.panel p button{color:#176b52;padding:7px 10px}.panel form button:not(.primary){color:#176b52;border:1px solid #ccd8d0}.loginCard form{margin-top:28px}@media(max-width:800px){.login{grid-template-columns:1fr}.loginIntro{padding:30px}.loginIntro h1{font-size:26px}.loginFeatures{display:none}.loginCard{margin:28px auto}.gridForm{grid-template-columns:1fr}}.workspace{margin:0 auto;max-width:1500px}.back{color:#176b52;margin-bottom:12px}.reportItem{display:flex;gap:15px;align-items:center;padding:16px 0;border-bottom:1px solid #edf0ee}.reportItem div{margin-right:auto}.reportItem p{color:#78867e;font-size:13px}.reportItem button,a{color:#176b52}.examCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:24px}.examCards button{color:#18382a;background:#f4f8f5;border:1px solid #dbe5df;padding:22px}.examCards button:hover{background:#e6f2eb}.examCards p,.examCards span{color:#74827d;font-size:13px}.tableWrap{max-height:650px}th{position:sticky;top:0;z-index:1}@media(max-width:700px){.reportItem{flex-wrap:wrap}}.lineColumns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}.lineRow{display:grid;grid-template-columns:60px 1fr 1fr;gap:12px;align-items:center;border-bottom:1px solid #edf0ee}.lineRow label{font-size:12px}.lineRow input{padding:8px}@media(max-width:750px){.lineColumns{grid-template-columns:1fr}}main{min-width:0;margin-inline:auto;max-width:1800px;padding:clamp(16px,2.2vw,40px)}.app{max-width:2200px;margin:auto;grid-template-columns:clamp(170px,15vw,226px) minmax(0,1fr)}fieldset{border:0;padding:0;min-width:0}.cohortRow{display:flex;gap:20px;align-items:center;margin:12px 0}.cohortRow input,.cohortRow select{max-width:240px}.cohortRow button{color:#176b52}.teacherTable input{min-width:100px;padding:8px}.reportView .tableWrap{max-height:none;overflow-x:auto}.analysisSection{margin:24px 0}.reportSummary{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;background:#edf5ef;padding:14px;border-radius:8px;margin-bottom:12px}.analysisTable th,.analysisTable td{text-align:center;padding:10px 12px}.analysisTable th{position:static;border:1px solid #dde8e1}.rankCell{color:#698278;background:#f8faf9}.reportHeader{text-align:center}.reportView{font-size:clamp(12px,.9vw,15px)}@media(max-width:700px){.app{grid-template-columns:1fr}nav{flex-wrap:wrap}.reportSummary{gap:12px}}.reportHeader{position:sticky;top:0;background:#fff;padding:12px 0;z-index:3;border-bottom:1px solid #edf0ee}.reportHeader p{color:#74827d}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.tabs button{color:#176b52;background:#edf5ef}.tabs .primary{color:#fff;background:#176b52}.templateLink{align-self:center;padding:12px 16px;background:#edf5ef;border-radius:9px;text-align:center}.cutoffTable input{padding:8px;min-width:85px}.cutoffTable td,.cutoffTable th{padding:8px}.examReportRow{display:flex;gap:24px;align-items:center;border-bottom:1px solid #e1e8e3;padding:20px 0}.examRowTitle{flex:0 0 240px}.examRowReports{display:flex;gap:14px;flex-wrap:nowrap;overflow-x:auto;min-width:0;flex:1}.examRowReports button{flex-shrink:0;color:#173c2c;background:#edf5ef;min-width:190px}.examRowReports p,.examRowTitle p{color:#64796b;font-size:13px}.reportToolbar,.reportFilters{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.reportToolbar label,.reportFilters label{margin:8px 0;min-width:150px}.reportToolbar button{color:#176b52}.reportView .reportControls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;position:static;background:#fff}.reportView .reportHeader{flex:1 0 100%;position:static;text-align:center}.reportView .reportControls label{display:flex;flex-direction:row;align-items:center;gap:8px;margin:6px 0;min-width:0;font-size:14px;white-space:nowrap}.reportView .reportControls select{width:auto;max-width:180px;padding:8px}.reportView .reportToolbar,.reportView .reportFilters{display:contents}.reportView .reportControls button.primary{color:#fff;background:#176b52;font-weight:600}.reportView .reportControls button.primary:hover{color:#fff;background:#10553f}.reportView .reportBody,.reportView .analysisSection{width:100%;min-width:0}.reportView .analysisCaption{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0 8px}.reportView .analysisCaption h3{margin:0}.reportView .reportSummary{flex:1;padding:10px;margin:0;gap:20px;white-space:nowrap}.reportView .horizontalControls{display:flex;gap:6px}.reportView .horizontalControls button{color:#176b52;background:#edf5ef;padding:8px 12px;font-size:14px}.reportView .analysisTable{width:100%;min-width:0;max-width:100%;overflow:auto;scrollbar-gutter:stable;scrollbar-width:auto}.reportView .analysisTable table{width:max-content;min-width:100%;table-layout:auto;border-collapse:separate;border-spacing:0}.reportView .analysisTable th,.reportView .analysisTable td{white-space:nowrap}.reportView.presentation{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;width:100vw;height:100dvh;margin:0;border-radius:0;padding:10px 16px;overflow:hidden;background:#fff;display:flex;flex-direction:column;gap:8px}.reportView.presentation .reportControls{flex:0 0 auto;flex-wrap:nowrap;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:4px 0 8px;gap:10px;border-bottom:1px solid #dce6df}.reportView.presentation .reportHeader{flex:0 1 270px;min-width:170px;padding:0;border:0;text-align:left}.reportView.presentation .reportHeader h2{font-size:16px;line-height:1.4;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reportView.presentation .reportHeader p{font-size:12px;line-height:1.4;margin:3px 0 0}.reportView.presentation .reportControls label{flex-shrink:0;margin:0;font-size:14px;min-height:40px}.reportView.presentation .reportControls select{max-width:155px;min-height:40px;font-size:14px}.reportView.presentation .fullscreenButton{flex-shrink:0;font-size:14px;padding:11px 13px}.reportView.presentation .fontControl{display:flex;gap:6px}.reportView.presentation .fontControl input[type=range]{width:190px;padding:0;accent-color:#176b52;cursor:pointer}.reportView.presentation .fontControl button{color:#fff;background:#176b52;font-size:22px;line-height:1;width:34px;height:36px;padding:4px;text-align:center}.reportView.presentation .fontControl b{font-size:17px;min-width:48px}.reportView.presentation .reportBody{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.reportView.presentation .analysisSection{flex:1;min-height:0;display:flex;flex-direction:column;margin:0;overflow:hidden}.reportView.presentation .analysisCaption{flex:0 0 auto;flex-wrap:nowrap;margin:0 0 8px;font-size:16px}.reportView.presentation .analysisCaption h3{font-size:18px;white-space:nowrap}.reportView.presentation .reportSummary{font-size:16px;padding:8px}.reportView.presentation .analysisTable{flex:1;min-height:0;max-height:none;overflow:auto}.reportView.presentation table{font-size:inherit;line-height:1.4}.reportView.presentation .analysisTable thead{position:sticky;top:0;z-index:4}.reportView.presentation .analysisTable th{position:static;top:auto;height:auto;background:#e7f1eb;color:#143c29;border:1px solid #d1e0d6;padding:8px 12px}.reportView.presentation .analysisTable td{padding:10px 14px}.reportView.presentation .analysisTable tbody tr:nth-child(2n){background:#f4f7f5}.reportView.presentation .analysisTable td:first-child{font-weight:700}.reportView.presentation .tableWrap:not(.analysisTable){flex:1;min-height:0;max-height:none;overflow:auto}.reportView.presentation .tableWrap:not(.analysisTable) thead{position:sticky;top:0;z-index:4}.reportView.presentation .tableWrap:not(.analysisTable) th{position:static;background:#e7f1eb}@media(max-width:800px){.examReportRow{flex-direction:column;align-items:stretch}.examRowTitle{flex:auto}.reportView.presentation .reportHeader{flex-basis:180px}.reportView.presentation .analysisCaption{overflow-x:auto}.reportView.presentation .fontControl input[type=range]{width:150px}}.reportView .analysisTable th.pinned,.reportView .analysisTable td.pinned{position:sticky;z-index:2;background:#fff}.reportView .analysisTable th.pinned{z-index:6;background:#f7f9f8}.reportView .analysisTable tbody tr:nth-child(2n) td.pinned{background:#f4f7f5}.reportView .analysisTable .pinned:nth-child(4){box-shadow:3px 0 5px #173c2c20}.reportView.presentation .analysisTable th.pinned{position:sticky;background:#e7f1eb;z-index:6}.reportView .analysisTable .sortButton{font:inherit;color:inherit;background:transparent;border-radius:0;padding:0;text-align:center;white-space:nowrap}.reportView .analysisTable .sortButton:hover{color:#176b52;background:#dcece2}.reportView .analysisTable .sortButton span{font-size:.8em;color:#497b60}.reportView .analysisTable .sortButton{display:inline-flex;align-items:center;justify-content:center;gap:.2em}.reportView .analysisTable .sortButton .sortIcon{font-size:inherit;width:1em;min-width:1em;height:1em;display:inline-flex}.sortIcon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.examStageNav{display:flex;gap:10px;margin:16px 0 20px;overflow-x:auto;padding:8px;background:#fff;border:1px solid #dce6df;border-radius:12px}.examStageNav button{color:#176b52;background:#edf5ef;flex:1;white-space:nowrap;text-align:center}.examStageNav button.primary{color:#fff;background:#176b52}.metricChoices{display:flex;flex-wrap:wrap;gap:8px 24px;padding:16px;background:#f6f9f7;border-radius:10px}.metricChoices h3{width:100%;margin:0}.metricChoices label{margin:4px 0}.reportItem button.danger{color:#a13b27}[hidden]{display:none!important}.cutoffMatrixGroups{display:grid;gap:16px}.cutoffMatrixScroll{overflow-x:auto}.cutoffMatrix{width:100%;border-collapse:collapse}.cutoffMatrix th,.cutoffMatrix td{padding:6px;white-space:nowrap;text-align:center}.cutoffMatrix input{min-width:72px;width:100%;padding:6px}.metricOrder{margin:16px 0}.metricOrder p{font-size:13px;color:#607c71}.metricOrderItems{display:flex;flex-wrap:wrap;gap:8px}.metricChip{display:flex;align-items:center;gap:5px;padding:8px;background:#edf5f0;border:1px solid #ceded6;border-radius:8px;cursor:grab}.metricChip button{padding:3px 7px}.meanChart{min-width:0;margin-bottom:20px}.chartScroll{overflow:auto;max-width:100%}.chartScroll svg{display:block;height:480px;max-width:none}.chartButton{white-space:nowrap}.presentation .meanChart{height:100%;display:flex;flex-direction:column}.presentation .chartScroll{flex:1;min-height:0}.presentation .meanChart h3,.presentation .meanChart p{font-size:16px;margin:8px 0}.chartScroll svg{font-size:18px;font-family:Microsoft YaHei,sans-serif}.presentation .chartScroll svg{font-size:22px}.compactMetric{display:grid;align-items:center;gap:0;font-variant-numeric:tabular-nums;font-family:Consolas,Courier New,monospace;text-align:right}.compactRank{white-space:pre;color:#698278}.reportView .analysisTable th,.reportView .analysisTable td{padding:9px 10px}.reportView .analysisTable th .sortButton+.sortButton{margin-left:.25em}.presentation .chartScroll{display:flex;align-items:center}.presentation .chartScroll svg{flex-shrink:0;height:min(480px,calc(100vh - 180px))}.presentation .meanChart{margin-bottom:0}.reportView .analysisTable .metricHeaderLabel{white-space:pre-line;line-height:1.25;color:inherit;font-size:inherit}.compactMetric{display:inline-grid}.chartHeading{display:flex;justify-content:center;align-items:center;gap:24px;flex-wrap:wrap;margin:12px 0}.chartHeading h3{margin:0}.chartHeading span{color:#925f18;font-size:18px}.chartScroll{height:480px}.presentation .meanChart{flex:1;min-height:0}.presentation .meanChart .chartHeading{flex:0 0 auto;margin:12px 0}.presentation .meanChart .chartHeading h3{font-size:clamp(20px,2vw,32px);margin:0}.presentation .chartScroll{height:auto;display:block;flex:1;min-height:0;overflow:auto}.presentation .meanChart .chartLegend{flex:0 0 auto;font-size:16px;margin:8px 0;text-align:center}.chartScroll svg{max-width:none}.reportView.presentation .analysisTable .sortButton .sortIcon{font-size:.5em;opacity:.45}.reportView.presentation .analysisTable .sortButton:hover .sortIcon{opacity:1}.reportView.presentation .analysisTable th{font-size:.8em;font-weight:600}.reportView.presentation .showcaseMetric{display:inline-flex;align-items:baseline;gap:.12em;font-family:Microsoft YaHei,Arial,sans-serif;font-variant-numeric:tabular-nums}.reportView.presentation .showcaseMetric>span:first-child{font-weight:600}.reportView.presentation .showcaseMetric .rankSeparator{font-size:.65em;color:#96a79e}.reportView.presentation .showcaseMetric .compactRank{font-size:.65em;font-weight:400;color:#61796b;min-width:2ch;text-align:right}.reportView.presentation .analysisTable td{padding:12px 14px}.reportView.presentation .reportSummary{font-size:clamp(18px,1.4vw,26px)}.emptyMetrics{font-size:16px;padding:8px;color:#7b6750}.reportView .analysisTable td{cursor:pointer}.reportView .analysisTable td.rowHighlighted{background:#e8f1ff!important}.reportView .analysisTable .columnHighlighted{background:#e8f4ef!important}.reportView .analysisTable td.cellSelected{background:#c9e4ff!important;box-shadow:inset 0 0 0 2px #2475b9;color:#123f61}.reportView .analysisTable td:focus-visible{outline:2px solid #2475b9;outline-offset:-2px}.reportView .analysisTable td.cellSelected .compactRank{color:#315f80}.reportView .analysisTable td.rowHighlighted{background:#e8f4ef!important}.reportView .analysisTable tbody td{border-bottom:1px solid #b8cec2}.pdfLink{margin-left:18px}.gridForm.teacherImportForm{grid-template-columns:minmax(0,2fr) minmax(180px,1fr)}.teacherFileControl{display:flex;align-items:center;gap:8px;border:1px solid #cbdad2;border-radius:9px;padding:10px;background:#fff;min-width:0}.teacherFileControl input[type=file]{border:0;border-radius:0;padding:0;min-width:0;flex:1;background:transparent}.teacherTemplateButton,.teacherFileControl input::file-selector-button{font:13px Arial,sans-serif;color:#182f27;background:#efefef;border:1px solid #888;border-radius:2px;padding:3px 7px;text-decoration:none;white-space:nowrap;cursor:pointer}@media(max-width:700px){.gridForm.teacherImportForm{grid-template-columns:1fr}.teacherFileControl{flex-wrap:wrap}}.classCounts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 22px}.classCounts button{display:flex;flex-direction:column;gap:5px;min-width:145px;text-align:left}.classCounts button span{font-size:12px}.scoreReviewTable table{min-width:1500px}.scoreReviewTable th,.scoreReviewTable td{white-space:nowrap}.scoreExcluded{opacity:.6}.scorePagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:14px}.reportView.presentation .reportBody.multiDirectionReport{overflow-y:auto;gap:24px;justify-content:flex-start}.reportView.presentation .multiDirectionReport .analysisSection{flex:none;min-height:0;overflow:visible}.reportView.presentation .multiDirectionReport .analysisTable{max-height:65vh;flex:none;overflow:auto}.directionScrollSpacer{flex:0 0 auto;pointer-events:none}.reportView.presentation .analysisTable{scrollbar-gutter:stable}.schoolCountCard{padding:12px 16px;background:#edf5ef;border:1px solid #d8e5dc;border-radius:8px;min-width:190px}.schoolCountCard p{font-size:13px;margin:6px 0 0}.reportView .chartButton:disabled{cursor:not-allowed}.examStageNav button:disabled{cursor:pointer}.reportView .analysisTable td.podiumCell{font-weight:700;box-shadow:inset 3px 0 var(--podium-accent);background:var(--podium-bg);color:var(--podium-text)}.podium1{--podium-accent:#bd8b24;--podium-bg:#fff6d9;--podium-text:#805613}.podium2{--podium-accent:#8195aa;--podium-bg:#edf3f9;--podium-text:#405972}.podium3{--podium-accent:#b77d57;--podium-bg:#fcf0e7;--podium-text:#875638}.reportView .podiumCell .compactRank{color:var(--podium-text);font-weight:700}.reportView .podiumCell .rankSeparator{opacity:.5}.reportView .analysisTable td.podiumCell.cellSelected{box-shadow:inset 0 0 0 2px #2475b9,inset 4px 0 var(--podium-accent)}.analysisTable tr[data-class-type=毓秀班]{--class-tint:#f3eefb}.analysisTable tr[data-class-type=加强班]{--class-tint:#eaf3fc}.analysisTable tr[data-class-type=卫星班]{--class-tint:#eaf6f0}.analysisTable tr[data-class-type=俄语班]{--class-tint:#fff1e7}.analysisTable tr[data-class-type=普通班]{--class-tint:#f3f5f7}.reportView .analysisTable tbody tr[data-class-type] td:not(.podiumCell){background:var(--class-tint,#fff)}@media(max-width:700px){.reportView{min-width:0;padding:12px!important}.reportView .reportHeader h2{font-size:18px;line-height:1.5;overflow-wrap:anywhere}.mobileReport .reportControls{gap:8px;flex-wrap:wrap}.mobileReport:not(.filtersOpen) .reportToolbar,.mobileReport:not(.filtersOpen) .reportFilters{display:none}.mobileReport .reportFilters,.mobileReport .reportToolbar{flex-wrap:wrap;gap:8px}.mobileReport select,.mobileReport button{min-height:40px}.mobileDirectionTabs{display:flex;gap:8px;margin:12px 0}.mobileDirectionTabs button{flex:1}.mobileReport .analysisCaption{flex-wrap:wrap;gap:8px}.mobileReport .analysisSummary{white-space:normal;font-size:12px}.mobileReport .analysisTable{max-width:100%;overflow:auto}.mobileReport .analysisTable th,.mobileReport .analysisTable td{font-size:13px;padding:9px 7px}.mobileReport .analysisTable .pinned:not(:first-child){position:static!important}.mobileReport .analysisTable .pinned:first-child{left:0!important;min-width:72px;max-width:140px;white-space:normal;overflow-wrap:anywhere}.mobileReport .chartScroll{height:360px}.mobileReport .reportBody{min-width:0}.mobileReport.presentation{font-size:14px!important}}
