:root{--ink:#253247;--muted:#758093;--line:#e2e6ec;--paper:#fff;--canvas:#f5f6f8;--accent:#315f9f;--soft:#edf3fc;--positive:#248b65;--negative:#c74640;--radius:12px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--canvas);font-size:14px;line-height:1.5;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit;color:inherit}button,select,summary{cursor:pointer}button{border:1px solid var(--line);border-radius:7px;background:#fff;padding:7px 12px;white-space:nowrap}button:hover{background:#f4f7fb;border-color:#b7c7dc}button:disabled{opacity:.4;cursor:default}input,select{background:#fff;border:1px solid #dce2e9;border-radius:7px;padding:8px 10px;min-width:0}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #6b94cb;outline-offset:3px}a{color:var(--accent);text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-.6px;line-height:1.25}h2{font-size:17px;line-height:1.4}h3{font-size:15px}small,.small-note{font-size:12px;color:var(--muted)}.small-note{line-height:1.7}.eyebrow{display:block;font-size:11px;color:var(--muted);letter-spacing:.6px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip-link{position:fixed;top:-100px;left:16px;z-index:100;padding:12px;background:white}.skip-link:focus{top:10px}[hidden]{display:none!important}
.app-header{height:64px;display:flex;justify-content:space-between;align-items:center;padding:0 26px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:15px}.brand b{font-size:17px;letter-spacing:-.6px}.brand-symbol{display:grid;place-items:center;border-radius:9px;background:#263d60;color:white;width:31px;height:33px;font-family:Georgia,serif;font-size:23px;font-weight:700}.brand-divider{height:18px;width:1px;background:var(--line);margin-inline:6px}.header-right{display:flex;align-items:center;gap:22px}.local-indicator{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px}.local-indicator:before{content:'';background:#68a98b;width:6px;height:6px;border-radius:50%}.quiet-button{font-size:12px;border-color:transparent;background:transparent}.application{display:grid;grid-template-columns:224px minmax(0,1fr);max-width:2000px;margin:auto}.scope-sidebar{position:sticky;top:64px;height:calc(100vh - 64px);overflow-y:auto;background:#fbfcfd;border-right:1px solid var(--line);padding:26px 18px 18px}.sidebar-intro h2{font-size:19px;margin-top:6px;margin-bottom:22px}.field{display:grid;gap:7px;font-size:12px;color:#637084}.field select{width:100%;font-size:13px;color:var(--ink)}#roster-note{margin:8px 0 22px;font-size:11px}.selection-title{display:flex;align-items:center;margin-bottom:12px;gap:8px;font-size:12px}.selection-title b{margin-right:auto}.text-button{padding:0;border:0;background:none;color:var(--accent);font-size:12px}.layer-group{margin-bottom:12px}.layer-label{display:flex;align-items:center;gap:8px;font-weight:650;font-size:13px;padding:7px 0}.layer-label small{margin-left:auto;font-weight:400}.layer-label input,.class-check input{accent-color:var(--accent);width:14px;height:14px;margin:0}.layer-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.class-options{display:grid;grid-template-columns:1fr 1fr;gap:3px 2px;padding:2px 0 6px 3px}.class-check{display:flex;gap:7px;align-items:center;font-size:12px;cursor:pointer;padding:5px 2px;color:#657186}.class-check:has(:checked){color:var(--ink)}.selection-footer{border-top:1px solid var(--line);padding:14px 0;font-size:12px;color:var(--muted)}.method{border-top:1px solid var(--line);padding-top:13px;color:var(--muted);font-size:11px}.method p{margin-top:9px}.workspace-shell{min-width:0}.context-bar{display:flex;gap:20px;align-items:center;justify-content:space-between;background:rgba(255,255,255,.97);padding:17px 30px 14px;position:sticky;top:64px;z-index:30;border-bottom:1px solid #eef0f4}.context-fields{display:flex;gap:20px;min-width:0;flex:1}.context-fields label{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);min-width:0}.context-fields select{border:0;background:#f3f5f8;font-size:13px;font-weight:600;color:var(--ink);max-width:100%}.subject-field{max-width:150px}.exam-field{flex:1;max-width:550px}.exam-field select{width:100%}.active-scope{font-size:12px;color:var(--accent);white-space:nowrap}.workspace-tabs{position:sticky;top:132px;background:#fff;z-index:29;display:flex;gap:27px;align-items:center;padding:0 30px;border-bottom:1px solid var(--line);height:48px}.workspace-tabs button{height:48px;padding:0 2px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);font-size:14px}.workspace-tabs button[aria-current=page]{color:var(--accent);font-weight:650;border-bottom-color:var(--accent)}.workspace-tabs>span{margin-left:auto;font-size:11px;color:var(--muted)}main{padding:27px 30px 30px;min-width:0}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-title p{margin-top:7px;color:var(--muted);font-size:12px}.page-title .eyebrow{margin-bottom:6px;letter-spacing:1.8px;font-size:10px}.title-action{color:var(--accent);border-color:#cedbec;background:var(--soft);font-size:12px}.metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:white;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:20px;padding:20px 6px}.metric{padding:0 22px;border-right:1px solid #e9edf2;min-width:0}.metric:last-child{border-right:0}.metric-label{font-size:12px;color:var(--muted);display:block;margin-bottom:8px}.metric-value{font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:29px;line-height:1.2;font-weight:650;letter-spacing:-.8px;font-variant-numeric:tabular-nums}.metric-value small{font-size:12px;font-weight:400;letter-spacing:0;margin-left:5px}.metric-foot{display:block;color:var(--muted);font-size:11px;margin-top:6px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;min-width:0;margin-bottom:18px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:15px}.panel-head p{color:var(--muted);font-size:12px;margin-top:4px}.panel-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.panel-actions>button{font-size:11px;padding:5px 9px}.plot-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 2px}.plot-toolbar label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px}.plot-toolbar select{font-size:12px;padding:5px 8px}.segment{display:inline-flex;align-items:center;gap:2px;border-radius:7px;padding:3px;background:#f0f3f7;max-width:100%;flex-wrap:wrap}.segment button{padding:5px 10px;border:0;border-radius:5px;background:transparent;font-size:12px;color:var(--muted)}.segment button[aria-pressed=true]{background:#fff;box-shadow:0 1px 4px #20355314;color:var(--ink);font-weight:600}.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.overview-grid>.panel{margin-bottom:18px}.chart-plot{width:100%;height:365px;min-width:0}.wide-plot{height:400px}.plot-note{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.7;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.layer-summary{padding:15px 0;border-bottom:1px solid #edf0f4}.layer-summary:last-of-type{border-bottom:0}.layer-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.layer-top button{border:0;padding:0;background:none;font-weight:600;display:flex;gap:7px;align-items:center}.layer-top span{font-size:11px;color:var(--muted)}.layer-value{font-size:25px;letter-spacing:-.5px;font-weight:650}.layer-value small{font-size:11px;font-weight:400;margin-left:7px}.mini-track{margin-top:9px;height:4px;background:#edf0f4;border-radius:3px;overflow:hidden}.mini-track i{display:block;height:100%;border-radius:3px}.observation{padding:14px 0 0;margin-top:6px;border-top:1px solid var(--line);font-size:12px;color:#5b6980;line-height:1.8}.observation b{color:var(--ink)}.section-labels{display:flex;align-items:center;gap:15px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.section-labels span{display:flex;align-items:center;gap:6px}.table-scroll{width:100%;overflow:auto;border-radius:8px}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap;text-align:right}.data-table th{background:#f5f7fa;color:#758195;font-weight:500;padding:11px 14px;position:sticky;top:0;z-index:2;border-bottom:1px solid var(--line)}.data-table td{padding:11px 14px;border-bottom:1px solid #eef1f5;font-variant-numeric:tabular-nums;height:46px}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table tr:hover td{background:#f7faff}.data-table td button{padding:0;border:0;background:none;color:var(--accent);font-size:13px;font-weight:550}.data-table .align-left{text-align:left}.data-table .layer-cell{color:#748095;font-size:11px}.class-cell{display:flex;align-items:center;gap:9px}.cell-bar{width:90px;height:5px;background:#edf0f4;display:inline-block;margin-left:12px;border-radius:3px;vertical-align:middle}.cell-bar i{display:block;height:100%;background:#8faaca;border-radius:3px}.positive{color:var(--positive)}.negative{color:var(--negative)}.table-head{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px}.table-head input{font-size:13px;width:245px;max-width:100%}.table-head select{font-size:12px}.count-label{color:var(--muted);font-size:12px}.matrix .data-table th,.matrix .data-table td{padding:10px 12px}.matrix .data-table td:first-child,.matrix .data-table th:first-child{position:sticky;left:0;background:#fff;z-index:3;box-shadow:2px 0 4px #20355305}.matrix .data-table th:first-child{z-index:4;background:#f5f7fa}.rate-cell{font-weight:550;text-align:center}.rate-cell button{font:inherit!important;color:inherit!important}.data-table th button{font:inherit;padding:0;border:0;background:transparent}.students-table{max-height:660px}.students-table .data-table td{height:47px}.student-id{display:block;color:var(--muted);font-size:10px;font-weight:400}.diagnosis-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:18px}.weak-list{margin-top:10px}.weak-row{display:grid;grid-template-columns:135px 1fr 53px;align-items:center;gap:14px;margin:13px 0;font-size:12px}.weak-row button{border:0;padding:0;text-align:left;background:transparent;color:var(--ink);white-space:normal}.weak-row small{display:block;font-size:10px}.weak-bar{background:#f3f5f8;height:9px;border-radius:3px;overflow:hidden}.weak-bar i{display:block;height:100%;background:#9aafc9}.weak-row strong{font-size:12px;text-align:right;font-variant-numeric:tabular-nums}.empty-state,.loading-state{padding:80px 30px;text-align:center;color:var(--muted);line-height:1.9}.empty-state h2{color:var(--ink);margin-bottom:8px}.empty-state button{margin-top:14px}.inline-notice{background:#f7f2e9;color:#866f45;border:1px solid #e9dfca;padding:10px 14px;font-size:12px;border-radius:8px;margin-bottom:18px}.workspace-footer{display:flex;gap:20px;padding:0 30px 22px;font-size:11px;color:#9aa3af}.workspace-footer span{margin-left:auto}.profile-dialog{width:min(1160px,96vw);height:min(940px,95vh);padding:0;border:1px solid #d6dee8;border-radius:16px;background:var(--canvas);color:var(--ink);max-height:95vh}.profile-dialog::backdrop,.plot-dialog::backdrop{background:#1e2d4355;backdrop-filter:blur(3px)}.profile-header{position:sticky;top:0;z-index:12;background:#fff;border-bottom:1px solid var(--line);padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px}.profile-header h2{font-size:23px}.profile-header small{display:block;margin-top:4px}.profile-navigation{display:flex;align-items:center;gap:7px}.profile-navigation button{font-size:12px}.profile-body{padding:22px}.profile-metrics{display:flex;gap:25px;flex-wrap:wrap;margin-bottom:20px}.profile-metrics .metric{padding:0 25px 0 0}.profile-metrics .metric-value{font-size:25px}.profile-controls{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.profile-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:18px;align-items:start}.profile-grid>.panel{padding:15px 16px}.profile-body .code-chart{margin:0;padding:0;border:0;background:transparent;min-width:0}.profile-body .cc-head{flex-wrap:wrap;gap:8px;margin-bottom:6px}.profile-body .cc-head h3{font-size:14px}.profile-body .cc-head p{font-size:10px}.profile-body .cc-reference-controls{order:3;flex-basis:100%;display:flex;justify-content:flex-end;gap:8px;font-size:11px}.profile-body .cc-actions{margin-left:auto}.profile-body .cc-actions button{font-size:11px;padding:4px 8px}.profile-body .cc-reference-controls select{font-size:11px;padding:3px 4px}.profile-body .cc-svg{width:100%;min-width:0}.profile-body .cc-scroll::after{display:none}.profile-body .cc-data{font-size:11px}.profile-body .cc-data summary{font-size:11px}.profile-body .cc-legend{font-size:11px;margin-bottom:0}.profile-body .cc-reference-option{gap:4px}.profile-body .cc-reference-option input{min-width:0}.profile-body .cc-reference-swatch{width:14px}.profile-body .cc-head>div:first-child{flex:1;min-width:0}.profile-body .cc-scroll table{font-size:11px}.profile-body .profile-trend{max-width:950px;margin:auto}.plot-dialog{width:min(1300px,96vw);border:0;border-radius:14px;padding:20px;background:#fff;color:var(--ink)}.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}#zoom-plot{height:70vh}.profile-section-select{font-size:12px}.profile-dialog .aux-table{margin-top:10px}.profile-dialog .aux-table td{white-space:normal}.profile-dialog .aux-table select{max-width:300px;font-size:11px}.hide-ranks [data-rank]{display:none!important}
@media(min-width:1700px){main{padding:30px 40px}.context-bar,.workspace-tabs{padding-inline:40px}.overview-grid{grid-template-columns:minmax(0,1fr) 340px}.chart-plot{height:395px}.wide-plot{height:420px}}
@media(max-width:1200px){.application{grid-template-columns:195px minmax(0,1fr)}.scope-sidebar{padding-inline:13px}main{padding:22px}.context-bar,.workspace-tabs{padding-inline:22px}.active-scope{display:none}.overview-grid{grid-template-columns:minmax(0,1fr) 250px}.panel{padding:16px}.metric{padding:0 14px}.metric-value{font-size:26px}.diagnosis-grid{grid-template-columns:1fr}.profile-grid{gap:12px}.profile-body{padding:16px}.profile-body .cc-reference-controls{font-size:10px;gap:5px}}
@media(max-width:900px){.application{grid-template-columns:170px minmax(0,1fr)}.scope-sidebar{padding:18px 12px}.class-options{grid-template-columns:1fr}.overview-grid{grid-template-columns:1fr}.overview-grid>.side-panel{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.side-panel .panel-head,.side-panel .observation{grid-column:1/-1}.side-panel .layer-summary{border:0}.metrics{grid-template-columns:repeat(3,1fr);row-gap:20px}.metric:nth-child(3){border:0}.workspace-tabs{gap:20px}.workspace-tabs>span{display:none}.profile-grid{grid-template-columns:1fr}.profile-metrics{gap:14px}.profile-header{padding:14px 16px}.profile-navigation{gap:4px}.profile-navigation button{padding:5px 7px}.context-fields{gap:10px}.context-fields label{display:grid;gap:4px}.context-bar{padding-block:10px}.workspace-tabs{top:142px}.matrix .data-table td:first-child{min-width:90px}}
@media(max-width:640px){.app-header{height:55px;padding:0 14px}.brand{gap:8px;font-size:12px}.brand b{font-size:14px}.brand-divider{margin:0}.header-right{gap:4px}.local-indicator{display:none}.application{display:block}.scope-sidebar{position:relative;top:0;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:14px 16px}.sidebar-intro{display:none}.scope-sidebar .field{display:flex;align-items:center;justify-content:space-between}.scope-sidebar .field select{width:auto;max-width:75%}#roster-note{margin:4px 0 10px}#class-selection{display:flex;gap:12px;overflow:auto}.layer-group{flex:1;min-width:100px}.class-options{display:none}.selection-title{margin-bottom:0}.selection-footer{padding:8px 0 0}.method{display:none}.context-bar{top:55px;padding:10px 16px}.context-fields{width:100%}.subject-field{max-width:90px}.workspace-tabs{top:131px;gap:24px;padding:0 16px}.workspace-tabs button{font-size:13px}main{padding:20px 14px}.page-title{gap:10px}.page-title h1{font-size:24px}.title-action{font-size:11px}.metrics{grid-template-columns:repeat(2,1fr);padding:16px 0}.metric:nth-child(3){border-right:1px solid var(--line)}.metric:nth-child(2n){border-right:0}.metric:last-child{grid-column:1/-1}.metric-value{font-size:26px}.panel{padding:15px 13px}.panel-head{gap:8px;flex-wrap:wrap}.panel-head h2{font-size:16px}.plot-toolbar{gap:8px}.chart-plot,.wide-plot{height:330px}.overview-grid>.side-panel{grid-template-columns:1fr}.side-panel .panel-head,.side-panel .observation{grid-column:auto}.side-panel .layer-summary{border-bottom:1px solid var(--line);padding:8px 0}.layer-value{font-size:22px}.table-head{align-items:flex-start;flex-wrap:wrap}.table-head input{width:100%}.table-scroll{border:1px solid #eef1f5}.weak-row{grid-template-columns:110px 1fr 46px;gap:10px}.profile-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;border:0}.profile-header{align-items:flex-start;gap:10px}.profile-header h2{font-size:21px}.profile-navigation button{font-size:11px}.profile-header small{font-size:10px}.profile-metrics .metric{padding-right:14px;border:0}.profile-body .cc-head h3{font-size:13px}.profile-body .cc-reference-controls{justify-content:flex-start;flex-wrap:wrap;font-size:11px}.profile-metrics .metric-value{font-size:23px}.workspace-footer{padding:0 16px 20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{.app-header,.scope-sidebar,.context-bar,.workspace-tabs,.panel-actions,.plot-toolbar,.workspace-footer{display:none!important}.application{display:block}main{padding:0}.panel{break-inside:avoid}.table-scroll{overflow:visible}.profile-dialog{position:static;width:100%;max-width:none;max-height:none}body{background:#fff}}
.context-fields label{white-space:nowrap}.context-fields select{flex-shrink:1}.subject-field{flex-shrink:0}
@media(max-width:640px){.class-options{display:grid;grid-template-columns:1fr;max-height:135px;overflow:auto}.class-check{padding:4px 2px}}
/* Interactive refinement: scope chips, restrained motion and richer inspection. */
button,input,select,.class-check,.layer-label,.weak-row,.score-cell{transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}
button:hover{box-shadow:0 3px 10px #28466a0b}.panel{transition:border-color .18s ease,box-shadow .18s ease}.panel:hover{border-color:#cdd8e6;box-shadow:0 4px 20px #25375006}
.layer-group{border:1px solid #e5eaf1;border-radius:10px;padding:7px;background:#fff;margin-bottom:12px}.layer-label{padding:5px 3px 9px;font-size:12px}.layer-label small{font-size:10px;background:#f1f4f8;border-radius:9px;padding:2px 5px}.class-options{gap:5px;padding:0}.class-check{border:1px solid transparent;border-radius:6px;padding:6px 5px;font-size:11px;min-width:0}.class-check:hover{background:#f0f4fa;transform:translateY(-1px)}.class-check:has(:checked){background:color-mix(in srgb,var(--layer-color) 9%,white);border-color:color-mix(in srgb,var(--layer-color) 21%,white);color:#27384e}.class-check input,.layer-label input{appearance:none;display:inline-grid;place-items:center;width:14px;height:14px;min-width:14px;border:1px solid #c4cfdd;border-radius:4px;padding:0;background:white;cursor:pointer}.class-check input:checked,.layer-label input:checked,.layer-label input:indeterminate{background:var(--layer-color,#4272b8);border-color:var(--layer-color,#4272b8)}.class-check input:checked:after,.layer-label input:checked:after{content:'✓';color:#fff;font-weight:800;font-size:11px;line-height:1}.layer-label input:indeterminate:after{content:'−';color:white;font-size:13px;line-height:1}.class-check:focus-within{outline:2px solid #87a9d5;outline-offset:1px}
.axis-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0 3px;margin-top:8px;border-top:1px solid #edf0f4;font-size:12px}.axis-controls label{display:flex;align-items:center;gap:6px;color:#748195}.axis-controls input{width:80px;padding:5px 8px}.axis-controls select{padding:5px 8px;font-size:12px}.axis-controls button{padding:5px 12px;font-size:12px}#axis-error{color:#bd514a}.chart-underlay{margin:-4px 0 22px;padding:0 5px}.class-inspector{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;background:#edf3fb;border:1px solid #dce6f4;border-radius:9px;padding:12px 16px;min-height:53px;margin-top:9px;font-size:12px;color:#6e7e94;transition:background .16s ease}.class-inspector b,.class-inspector strong{color:#294465}.class-inspector strong small{font-weight:400;margin-left:6px}.class-inspector.has-inspection{background:#e8f1fd}.data-table .is-inspected td{background:#edf4ff!important}.weak-row{border-radius:7px;padding:8px;margin:2px -8px;cursor:help}.weak-row:hover,.weak-row:focus-visible{background:#f4f7fb;box-shadow:inset 3px 0 #a5b9d2;transform:translateX(2px);outline:none}.weak-bar i{transition:width .25s ease}
.student-filters{display:grid;grid-template-columns:1.3fr 1.1fr 1.25fr 1.2fr .65fr .65fr auto;gap:10px;align-items:end;padding-bottom:16px;border-bottom:1px solid #edf0f4}.student-filters label{display:grid;gap:5px;font-size:11px;color:#758195;min-width:0}.student-filters input,.student-filters select{width:100%;font-size:12px;padding:8px}.student-filters button{font-size:12px;height:35px}.student-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0 8px;flex-wrap:wrap}.table-method{font-size:11px;color:#8792a2;line-height:1.8;margin-bottom:12px}.score-cell{position:relative;cursor:help}.score-cell:hover,.score-cell:focus-visible{box-shadow:inset 0 0 0 2px #829dbf;filter:saturate(1.3);outline:none}.score-cell small{font-size:10px;opacity:.58}.student-number{font-variant-numeric:tabular-nums;color:#6d7b8f}.students-table{max-height:calc(100vh - 365px);min-height:320px}.students-panel .data-table td,.students-panel .data-table th{padding:10px}.students-panel .data-table th:first-child{min-width:80px}.check-control{gap:6px;white-space:nowrap}.check-control input{accent-color:#4272b8}
.workspace-tabs{top:calc(var(--header-height,64px) + var(--context-height,68px))}.context-bar{top:var(--header-height,64px)}
@media(max-width:1250px){.student-filters{grid-template-columns:repeat(4,minmax(0,1fr))}.axis-controls{gap:9px}.class-options{grid-template-columns:1fr}.class-check{font-size:12px}}
@media(max-width:900px){.student-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.class-inspector{gap:8px 14px}}
@media(max-width:640px){.layer-group{min-width:100px;padding:5px}.class-options{grid-template-columns:1fr;max-height:128px}.class-check{padding:5px;font-size:11px}.layer-label{gap:5px;font-size:11px}.layer-label small{padding:1px 3px;font-size:9px}.student-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.student-toolbar .segment{margin-left:auto}.axis-controls{gap:8px}.axis-controls input{width:68px}.students-table{max-height:65vh}.table-method{font-size:10px}.class-inspector{font-size:11px;padding:10px}.chart-underlay{margin-bottom:18px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.class-check:hover,.weak-row:hover{transform:none}}
.inspect-tooltip{position:fixed;z-index:1000;pointer-events:none;max-width:min(330px,calc(100vw - 24px));padding:13px 16px;border:1px solid #d5e0ec;border-radius:10px;background:#fff;box-shadow:0 8px 30px #25375026;color:#34455f;font-size:12px;line-height:1.85;white-space:pre-line;opacity:0;visibility:hidden;transition:opacity .12s ease}.inspect-tooltip.visible{opacity:1;visibility:visible}
.weak-position{display:inline-block;min-width:17px;margin-right:5px;font-size:10px;color:#8795a8}.priority-row .weak-position{color:#c74640;font-weight:700}.priority-row>strong{color:#c74640!important}.priority-row{background:linear-gradient(90deg,#c7464006,transparent)}
/* Focused workspace navigation and a full viewport student page. */
.workspace-tabs{height:62px;gap:32px}.workspace-tabs button{height:62px;font-size:18px;font-weight:550;padding:0 8px;border-bottom-width:3px}.workspace-tabs button[aria-current=page]{font-weight:750}.workspace-footer{display:none}.chart-underlay:has(.class-inspector:empty):has(#axis-note[hidden]){display:none}.class-inspector:empty{display:none}.inline-help{font-size:12px;max-width:440px;line-height:1.8;color:#728197}.inline-help summary{cursor:pointer}.inline-help[open]{padding:8px 12px;background:#f5f7fa;border-radius:8px}.item-dialog{width:min(720px,94vw);max-height:90dvh;border:1px solid #dce3ec;border-radius:14px;padding:0}.item-dialog::backdrop{background:#17263a66}.item-body{padding:24px 30px}.item-body section{margin:20px 0}.item-body h3{font-size:14px;margin-bottom:8px}.item-body p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.item-score{display:flex;justify-content:space-between;gap:12px;padding-bottom:20px;border-bottom:1px solid #e5eaf1}.item-score b{font-size:21px}.item-score span{font-size:13px}.weak-row[role=button],[data-profile-item]{cursor:pointer}.muted{color:#98a2b0}
.profile-dialog{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0;background:#f5f7fa;padding:0}.profile-dialog .profile-header{padding:20px 32px;background:#fff;z-index:4;position:sticky;top:0}.profile-header h2{font-size:25px}.profile-navigation{flex-wrap:wrap;justify-content:flex-end;gap:8px}.profile-navigation select{max-width:220px}.profile-navigation button[data-profile-export]{background:#365a87;color:#fff;border-color:#365a87}.profile-body{max-width:1800px;margin:auto;padding:24px 32px}.profile-metrics{padding:20px 4px;background:#fff;border:1px solid #e2e7ef;border-radius:12px;margin-bottom:22px}.profile-metrics .metric-foot{display:none}.profile-section-pair{margin-bottom:20px}.section-pair-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}.section-pair-header h2{font-size:17px;white-space:nowrap}.section-pair-header .profile-controls{margin:0;gap:14px;display:flex;align-items:center;flex-wrap:wrap}.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:0}.profile-grid>.panel{margin:0;min-width:0;padding:20px}.profile-bottom-grid{margin-bottom:18px}.profile-body .cc-head{gap:8px}.profile-body .cc-head h3{font-size:15px}.profile-body .cc-head p:empty{display:none}.profile-body .cc-scroll{min-width:0}.profile-body .cc-svg{width:100%;height:330px;min-width:0}.profile-body #profile-weak>.cc-svg{height:365px}.profile-body .cc-svg text{font-size:13px}.profile-body .profile-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.profile-body .profile-controls h2{font-size:16px}.profile-aux{padding:15px 0;color:#62748a}.profile-aux>summary{cursor:pointer}.profile-aux .panel{margin-top:16px}.profile-body .cc-reference-controls{font-size:11px;gap:8px;flex-wrap:wrap}.profile-body .cc-head .cc-actions{gap:4px}.profile-body .cc-legend{font-size:11px}
@media(max-width:1050px){.profile-header{flex-wrap:wrap}.profile-navigation{justify-content:flex-start}.section-pair-header{align-items:flex-start;flex-direction:column}.profile-body{padding:20px}.profile-body .cc-reference-controls{justify-content:flex-start}.profile-body .cc-svg{height:310px}}
@media(max-width:720px){.workspace-tabs{gap:12px;height:54px}.workspace-tabs button{font-size:16px;height:54px}.profile-grid{grid-template-columns:1fr}.profile-dialog .profile-header{padding:14px 16px;position:relative}.profile-body{padding:14px}.profile-navigation select{max-width:175px}.profile-metrics{gap:12px}.profile-body .cc-svg{height:auto}.profile-navigation button{font-size:12px}}
.profile-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}.profile-metrics .metric{padding:0 22px}.profile-body .cc-head p:empty{display:none}@media(max-width:720px){.profile-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-metrics .metric{padding:0 10px}.profile-metrics .metric-value{font-size:23px}}
.item-outcomes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0 16px}.item-outcomes button{display:grid;gap:6px;text-align:left;padding:15px 12px;border:1px solid #e0e6ee;background:#f8fafc;transition:transform .14s,box-shadow .14s}.item-outcomes button:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 4px 14px #25375016}.item-outcomes strong{font-size:25px;font-variant-numeric:tabular-nums}.item-outcomes span{font-size:12px;color:#65768b}.item-outcomes .outcome-zero{color:#bf4c45;border-top:3px solid #bf4c45}.item-outcomes .outcome-partial{color:#ae8228;border-top:3px solid #d3ad58}.item-outcomes .outcome-full{color:#318768;border-top:3px solid #318768}.item-outcomes .outcome-missing{color:#8b97a6;border-top:3px solid #a7b0bc}.item-next{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:#728297;padding-bottom:18px;border-bottom:1px solid #e6ebf2}.item-next button{color:#365a87;background:#edf3fb;border-color:#cfdaea;font-size:12px}.drill-return{margin-bottom:14px}.drill-return button{background:transparent;border-color:transparent;padding-left:0;color:#476889}.item-filter-banner{display:flex;align-items:center;gap:12px;padding:13px 20px;background:#eef4fb;border-bottom:1px solid #dbe4f0}.item-filter-banner>button{border-color:transparent;background:transparent;font-size:13px;color:#365a87}.item-filter-banner>button:last-child{margin-left:auto;color:#748399;font-size:12px}.item-filter-banner select{font-size:12px}.focus-item-score{background:#edf3fb!important;color:#365a87;font-weight:700}.focus-item-score small{font-weight:400;color:#76899d}.weak-row small{white-space:nowrap}.weak-row{grid-template-columns:158px minmax(30px,1fr) 64px}.profile-metrics{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.profile-dialog:modal .profile-body{animation:profile-in .15s ease-out}.item-dialog:modal{animation:profile-in .12s ease-out}@keyframes profile-in{from{opacity:.8;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.profile-dialog:modal .profile-body,.item-dialog:modal{animation:none}.item-outcomes button{transition:none}}@media(max-width:640px){.item-outcomes{grid-template-columns:repeat(2,1fr)}.item-filter-banner{padding:12px;gap:6px;flex-wrap:wrap}.weak-row{grid-template-columns:140px minmax(20px,1fr) 58px}}

/* ===== 视觉精修：按钮体系 / 表单控件 / 图标对齐 / 微配色协调 =====
   保留既有层次色（火箭蓝/励志绿/创新橙）、红黄绿得分率色阶与学生画像 蓝-紫-琥珀 契约，
   仅统一中性色质感、协调 --negative 与既有绩效红，并补齐按钮层级。 */
:root{--negative:#c74640;--ring:#315f9f29;-webkit-font-smoothing:antialiased}
::selection{background:#d8e4f5}

/* --- 图标 --- */
.icon{vertical-align:-2.5px;margin-right:5px}
button>.icon:last-child:not(:first-child){margin-right:0;margin-left:5px}

/* --- 按钮基座：更柔和的边界与按压反馈 --- */
button{border-color:#d6dde6;border-radius:8px;background:linear-gradient(#fff,#f9fbfd);box-shadow:0 1px 2px #20355308}
button:hover{background:linear-gradient(#fbfcfe,#f2f6fa);border-color:#b4c4d8;box-shadow:0 3px 10px #28466a14}
button:active{box-shadow:inset 0 1px 3px #20355312;transform:translateY(.5px)}
button:disabled{box-shadow:none;transform:none}

/* 主按钮：实心品牌蓝 */
.btn-primary{background:linear-gradient(#3a6aad,#315f9f);border-color:#2a5489;color:#fff;box-shadow:0 2px 6px #315f9f33}
.btn-primary:hover{background:linear-gradient(#33619f,#2a5489);border-color:#24497c;color:#fff;box-shadow:0 4px 12px #315f9f40}
.btn-primary:active{box-shadow:inset 0 1px 3px #172c4a55}
.btn-primary:disabled{background:#9db3cd;border-color:#9db3cd;box-shadow:none}

/* 幽灵按钮：面板动作、轻操作 */
.btn-ghost{background:transparent;border-color:transparent;color:#5f6e83;box-shadow:none}
.btn-ghost:hover{background:#edf2f8;border-color:transparent;color:#28374c;box-shadow:none}
.btn-ghost:active{background:#e3eaf3}
.btn-ghost:disabled{background:transparent;color:#a7b1bf}
.btn-sm{padding:5px 10px;font-size:12px}

/* 安静按钮：返回、关闭等文字级操作 */
.btn-quiet{background:transparent;border-color:transparent;color:#5f6e83;box-shadow:none}
.btn-quiet:hover{background:#eef2f7;color:#28374c;box-shadow:none}

/* 既有 quiet-button 增加图标间距与 hover */
.quiet-button{display:inline-flex;align-items:center}
.quiet-button:hover{color:var(--accent)}

/* 顶部「隐藏排名」胶囊开关 */
.pill-toggle{border:1px solid var(--line);border-radius:999px;padding:6px 14px;background:#fff;color:#54637a;box-shadow:0 1px 2px #20355308}
.pill-toggle:hover{background:#f6f9fc;border-color:#c3cfdd;color:#28374c}
.pill-toggle[aria-pressed=true]{background:#eaf1f9;border-color:#b9c9de;color:var(--accent)}

/* 面板动作按钮维持紧凑，但用幽灵质感 */
.panel-actions>button{font-size:11px}

/* --- 表单控件：自定义下拉箭头、统一 hover/focus --- */
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23758093' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}
select:hover{border-color:#c2cddd}
select:disabled{opacity:.55;background-image:none}
.context-fields select{border:0;background-color:#f3f5f8;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23758093' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:26px;border-radius:8px}
.context-fields select:hover{background-color:#eceff4}
.context-fields select:focus{box-shadow:0 0 0 3px var(--ring)}
input:not([type=checkbox]):not([type=radio]):hover{border-color:#c2cddd}
input:not([type=checkbox]):not([type=radio]):focus,select:focus{border-color:#7ea3d4;outline:none;box-shadow:0 0 0 3px var(--ring)}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #6b94cb;outline-offset:2px}
input[type=number]{font-variant-numeric:tabular-nums}

/* 个体点等行内复选框：与侧边栏自定样式一致 */
.check-control{display:inline-flex;align-items:center}
.check-control input{appearance:none;-webkit-appearance:none;display:inline-grid;place-items:center;width:15px;height:15px;min-width:15px;border:1px solid #c4cfdd;border-radius:4px;padding:0;background:#fff;cursor:pointer;accent-color:#4272b8}
.check-control input:checked{background:#4272b8;border-color:#4272b8}
.check-control input:checked:after{content:'✓';color:#fff;font-weight:800;font-size:11px;line-height:1}
.check-control input:focus-visible{outline:2px solid #87a9d5;outline-offset:1px}

/* --- 工作区标签：悬浮只变色，不铺底 --- */
.workspace-tabs button{transition:color .16s ease,border-color .16s ease}
.workspace-tabs button:hover{background:transparent;border-bottom-color:#c3cfdd;color:#3d4c63;box-shadow:none}
.workspace-tabs button[aria-current=page]:hover{border-bottom-color:var(--accent);color:var(--accent)}

/* --- 文本型按钮与表格内链接：悬浮下划线 --- */
.text-button:hover,.data-table td button:hover,.item-filter-banner>button:hover,.drill-return button:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.text-button:hover,.data-table td button:hover,.item-filter-banner>button:hover,.drill-return button:hover{background:transparent;box-shadow:none}

/* --- 滚动条：纤细、低存在 --- */
.scope-sidebar::-webkit-scrollbar,.table-scroll::-webkit-scrollbar,.profile-dialog::-webkit-scrollbar,.profile-body::-webkit-scrollbar,.item-dialog::-webkit-scrollbar,.plot-dialog::-webkit-scrollbar{width:9px;height:9px}
.scope-sidebar::-webkit-scrollbar-thumb,.table-scroll::-webkit-scrollbar-thumb,.profile-dialog::-webkit-scrollbar-thumb,.profile-body::-webkit-scrollbar-thumb,.item-dialog::-webkit-scrollbar-thumb,.plot-dialog::-webkit-scrollbar-thumb{background:#d3dae4;border-radius:5px;border:2px solid transparent;background-clip:content-box}
.scope-sidebar::-webkit-scrollbar-thumb:hover,.table-scroll::-webkit-scrollbar-thumb:hover{background-color:#bcc7d6}
.scope-sidebar::-webkit-scrollbar-track,.table-scroll::-webkit-scrollbar-track,.profile-dialog::-webkit-scrollbar-track,.item-dialog::-webkit-scrollbar-track{background:transparent}

/* --- 读取态：三点脉冲 --- */
.loading-state{display:flex;align-items:center;justify-content:center}
.loading-dots{display:inline-flex;gap:5px;margin-right:10px}
.loading-dots i{width:6px;height:6px;border-radius:50%;background:#8aa6c9;animation:loading-pulse 1s ease-in-out infinite}
.loading-dots i:nth-child(2){animation-delay:.15s}
.loading-dots i:nth-child(3){animation-delay:.3s}
@keyframes loading-pulse{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.loading-dots i{animation:none}}

/* --- 弹窗与小题卡细节 --- */
.item-dialog{box-shadow:0 24px 70px #17263a40}
.plot-dialog{box-shadow:0 24px 70px #17263a40}
.dialog-top button{flex-shrink:0}
.item-outcomes button{border-radius:9px}
.item-outcomes button:focus-visible{outline:2px solid #87a9d5;outline-offset:2px}
.item-next button{border-radius:7px}

/* --- 空状态主按钮 --- */
.empty-state .btn-primary{margin-top:14px;padding:9px 20px}

/* --- 学生页筛选区：重置按钮垂直居中 --- */
.student-filters .quiet-button{height:35px;display:inline-flex;align-items:center;justify-content:center}

/* --- 数据与资源 workspace --- */
#open-tools{border:1px solid var(--line);border-radius:999px;padding:6px 14px}
#open-tools.is-active,#open-tools[aria-pressed=true]{background:#eaf1f9;border-color:#b9c9de;color:var(--accent)}
.tools-workspace{min-width:0}
.tools-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:16px;flex-wrap:wrap}
.tools-head h1{font-size:24px;letter-spacing:-.4px}
.tools-nav{display:flex;gap:6px;flex-wrap:wrap;background:#f0f3f7;padding:4px;border-radius:10px}
.tools-nav button{border:0;background:transparent;box-shadow:none;padding:7px 14px;border-radius:7px;color:#5f6e83}
.tools-nav button[aria-current=page]{background:#fff;color:var(--ink);font-weight:650;box-shadow:0 1px 4px #20355314}
.tools-status{padding:11px 14px;border-radius:9px;border:1px solid var(--line);background:#f7f9fb;color:#5b6980;font-size:12px;margin-bottom:16px}
.tools-status.is-loading{background:#eef4fb;border-color:#d5e2f1;color:#365a87}
.tools-status.is-success{background:#eef7f2;border-color:#cfe4d8;color:#2b6b54}
.tools-status.is-error{background:#f8eeee;border-color:#e4d0ce;color:#9a4540}
.result-json{margin-top:8px}
.result-json pre{max-height:220px;overflow:auto;background:#fff;border:1px solid #e6ebf2;border-radius:8px;padding:10px 12px;font-size:11px;white-space:pre-wrap}
.tools-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.tools-form{display:grid;gap:12px}
.tools-form.inline{grid-template-columns:1fr auto;align-items:end}
.tools-form label{display:grid;gap:6px;font-size:12px;color:#657186}
.tools-form input,.tools-form select{width:100%}
.producer-options{grid-template-columns:minmax(180px,1.4fr) auto auto auto;align-items:end}
.mini-metrics{display:flex;flex-wrap:wrap;gap:12px 22px;margin-bottom:12px;font-size:12px;color:#6d7b8f}
.mini-metrics b{display:block;color:var(--ink);font-size:18px}
.metrics.mini{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}
.metrics.mini .metric-value{font-size:22px}
.guide-list{display:grid;gap:8px}
.guide-item,.tool-card{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border:1px solid #e5eaf1;border-radius:10px;background:#fbfcfd}
.guide-item strong,.tool-card strong{display:block}
.guide-actions{display:flex;gap:6px;flex-shrink:0}
.card-list{display:grid;gap:10px}
.tool-card{flex-direction:column;align-items:flex-start}
.tool-card p{color:#657186;font-size:12px}
.item-list{display:grid;gap:6px;max-height:520px;overflow:auto}
.item-list button{display:grid;gap:2px;text-align:left;padding:10px 12px;white-space:normal;box-shadow:none}
.item-list button span,.item-list button small{color:#6d7b8f;font-size:11px;font-weight:400}
.item-list .is-current,.data-table .is-current{background:#edf3fb;border-color:#c5d6ea}
.stem-preview{white-space:pre-wrap;background:#f5f7fa;border-radius:8px;padding:12px;font-size:13px;line-height:1.7;margin-bottom:14px}
.quality-list{display:grid;gap:12px}
.quality-exam{border:1px solid #e5eaf1;border-radius:10px;padding:12px 14px;background:#fff}
.quality-exam header{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px}
.quality-exam header span{color:#7a8798;font-size:12px}
.quality-exam header b{margin-left:auto}
.quality-issue{margin-top:8px;padding:8px 10px;border-radius:8px;background:#f7f8fa;font-size:12px}
.quality-issue.critical{background:#f8eeee;color:#9a4540}
.quality-issue.warning{background:#f7f2e9;color:#866f45}
.quality-issue.notice{background:#eef4fb;color:#4d6280}
.quality-issue.pass{background:#eef7f2;color:#2b6b54}
.run-status.success{color:var(--positive)}
.run-status.failed,.run-status.error{color:var(--negative)}
.status-available{color:var(--positive);font-size:12px}
.status-planned{color:#8a94a3;font-size:12px}
.empty-state.compact{padding:28px 12px}
@media(max-width:1100px){.tools-grid,.items-grid,.producer-options{grid-template-columns:1fr}.tools-form.inline{grid-template-columns:1fr}}
@media(max-width:640px){.tools-head{align-items:flex-start}.header-right #open-tools{padding:5px 10px;font-size:12px}}

/* Readable comparison hover and shared select spacing. */
body select:not([multiple]){padding-inline-end:34px!important;background-position:right 12px center!important;text-overflow:ellipsis;min-height:30px}
#class-plot{position:relative}.class-hover-overlay{position:absolute;inset:0;pointer-events:none;z-index:5}.class-hover-band{position:absolute;background:var(--hover-color);opacity:.055}.class-hover-line{position:absolute;height:0;border-top:1px dashed var(--hover-color)}.class-hover-line>span{position:absolute;right:0;top:-23px;padding:2px 7px;background:var(--hover-color);color:#fff;border-radius:4px;font-size:11px}.class-hover-card{position:absolute;background:rgba(255,255,255,.98);border:1px solid #dce4ef;border-top:3px solid var(--hover-color);box-shadow:0 8px 30px #243a5826;border-radius:10px;padding:14px 16px;color:#334155;font-size:12px;line-height:1.75}.class-hover-card>strong{font-size:15px;color:var(--hover-color)}.class-hover-card strong small{margin-left:6px}.class-hover-card p{margin:4px 0}.hover-primary{margin:8px 0;color:#52677f}.hover-primary>b{font-size:18px;color:var(--hover-color);margin-left:6px}.hover-primary small{display:block}.hover-hint{font-size:11px;color:#8190a2;border-top:1px solid #e9edf3;padding-top:7px}.comparison-references{display:flex;gap:12px 24px;flex-wrap:wrap;font-size:12px;padding:9px 0}.comparison-references>span{display:flex;align-items:center;gap:6px;color:var(--ref-color)}.comparison-references i{width:24px;border-top:2px dashed var(--ref-color)}.comparison-references i.dot{border-top-style:dotted}.chart-underlay:has(.comparison-references:not(:empty)){display:block}.item-score b small{display:block;color:#718095;font-size:12px;font-weight:400;margin-top:5px}.item-outcomes strong small{font-size:13px;font-weight:500;color:inherit}

.chart-underlay:has(#comparison-references:not(:empty)){display:block!important}

.hover-person{padding:6px 8px;background:#edf3fc;border-radius:5px;color:#315f9f;font-weight:600}

#zoom-plot{position:relative}

/* The corpus supplies source content inside the existing item dialog. */
.corpus-status{display:flex;align-items:center;gap:7px;color:var(--teal,#378879);font-size:12px;padding:10px 0}.corpus-status span{margin-left:auto;color:var(--muted,#8893a2);font-size:11px}.item-body .corpus-passage{padding:14px 16px;background:var(--bg,#f5f7fa);border:1px solid var(--border,#e3e8ee);border-radius:10px}.corpus-passage p{line-height:1.9}.corpus-passage img{display:block;max-width:100%;max-height:280px;margin:12px auto;border-radius:6px}.corpus-provenance .btn-ghost{display:inline-flex;text-decoration:none;margin-top:4px}

/* Persistent entry to the existing class and student HTML profiles. */
.profile-entry{display:inline-flex;align-items:center;padding:7px 12px;border:1px solid #cedbec;border-radius:7px;background:var(--soft);color:var(--accent);font-size:12px;font-weight:600;white-space:nowrap}.profile-entry:hover{background:#dfeafb;border-color:#9db6d8}
@media(max-width:640px){.header-right{gap:8px}.profile-entry{padding:6px 8px;font-size:11px}}

.intake-review{margin-top:18px;padding:18px;border:1px solid #cbd5e1;border-radius:12px;background:#f6f9fc;color:#23344a}.intake-review p{line-height:1.6}.intake-review details{margin:12px 0}.intake-review li{margin:4px 0}#data-refresh{color:#22583b}#data-refresh:hover,#data-refresh:focus-visible{background:#e6f2ea;color:#153d28}

/* Compact desktop workspace: consume the available viewport, not a second page. */
@media screen and (min-width:1200px) and (min-height:720px){
 .app-header{height:48px;padding-inline:22px}
 .header-right{gap:14px}
 .context-bar{padding:8px 22px;gap:16px}
 .context-fields{gap:16px}
 .context-fields select{padding-block:5px}
 .workspace-tabs{height:44px;padding-inline:22px;gap:28px}
 .workspace-tabs button{height:44px;font-size:16px;padding-inline:5px}
 .scope-sidebar{top:var(--header-height,48px);height:calc(100dvh - var(--header-height,48px));padding-top:18px}
 .sidebar-intro h2{margin-bottom:14px}
 #roster-note{margin-bottom:14px}
 #workspace{padding:14px 22px 16px}
 body[data-view=overview] #workspace{display:grid;grid-template-columns:minmax(0,1fr) 220px;grid-template-rows:auto minmax(0,1fr);gap:12px;height:calc(100dvh - var(--header-height,48px) - var(--context-height,48px) - 44px);min-height:570px;align-items:stretch}
 body[data-view=overview] #workspace:has(#rank-scatter){grid-template-columns:minmax(0,1fr) minmax(0,1fr) 200px}
 body[data-view=overview] #workspace>.page-title,body[data-view=overview] #workspace>.metrics,body[data-view=overview] #workspace>.inline-notice,body[data-view=overview] #workspace>.empty-state{grid-column:1/-1;margin:0}
 body[data-view=overview] #workspace>.inline-notice{padding:7px 12px}
 body[data-view=overview] #workspace:has(>.inline-notice){grid-template-rows:auto auto minmax(0,1fr)}
 body[data-view=overview] .page-title h1{font-size:24px}
 body[data-view=overview] .page-title p{margin-top:3px}
 body[data-view=overview] .page-title .eyebrow{margin-bottom:2px}
 body[data-view=overview] .metrics{padding:12px 4px}
 body[data-view=overview] .metric-label{margin-bottom:4px}
 body[data-view=overview] .metric-value{font-size:26px}
 body[data-view=overview] .metric-foot{margin-top:3px}
 body[data-view=overview] .overview-grid{display:contents}
 body[data-view=overview] #workspace .panel{margin:0;padding:14px;min-height:0}
 body[data-view=overview] #workspace .panel:has(.chart-plot){display:flex;flex-direction:column}
 body[data-view=overview] .panel-head{margin-bottom:8px;gap:8px;flex-wrap:wrap}
 body[data-view=overview] .panel-head h2{font-size:16px}
 body[data-view=overview] .panel-head p{margin-top:2px}
 body[data-view=overview] .panel-actions{gap:5px}
 body[data-view=overview] .plot-toolbar{gap:6px;margin-top:4px;font-size:11px}
 body[data-view=overview] .plot-toolbar label{font-size:11px;gap:4px}
 body[data-view=overview] .plot-toolbar .segment button{padding:4px 7px;font-size:11px}
 body[data-view=overview] .chart-plot{flex:1;height:0;min-height:240px}
 body[data-view=overview] .side-panel{grid-column:-2/-1;grid-row:2}
 body[data-view=overview] #workspace:has(>.inline-notice) .side-panel{grid-row:3}
 body[data-view=overview] #workspace>.panel:has(#rank-scatter){grid-column:2;grid-row:2}
 body[data-view=overview] #workspace:has(>.inline-notice)>.panel:has(#rank-scatter){grid-row:3}
 body[data-view=overview] .layer-summary{padding:12px 0}
 body[data-view=overview] .layer-value{font-size:23px}
 body[data-view=overview] .observation{font-size:11px;padding-top:10px}
 body[data-view=students] #workspace{height:calc(100dvh - var(--header-height,48px) - var(--context-height,48px) - 44px);display:flex;flex-direction:column;min-height:460px;gap:8px}
 body[data-view=students] #workspace>.inline-notice,body[data-view=students] .drill-return{margin:0;flex-shrink:0}
 body[data-view=students] .students-panel{flex:1;min-height:0;margin:0;padding:14px;display:flex;flex-direction:column}
 body[data-view=students] .students-panel>*{flex-shrink:0}
 body[data-view=students] .student-filters{padding-bottom:10px;gap:8px}
 body[data-view=students] .student-filters input,body[data-view=students] .student-filters select{padding-block:6px}
 body[data-view=students] .student-toolbar{padding:8px 0}
 body[data-view=students] .students-table{flex:1;min-height:160px;max-height:none}
}

#data-refresh[data-state=error]{color:#a83b38;background:#fff4f2;border-color:#efd0cb}
#data-refresh[data-state=error]:hover,#data-refresh[data-state=error]:focus-visible{color:#7f2825;background:#fde8e4}
#data-refresh[data-state=pending]{color:#7a5a16;background:#fff8e8}
/* Live announcements must not add a one-pixel scroll range below the app. */
#live-status{position:fixed;top:0;left:0}
@media screen and (max-width:900px){
 .app-header{height:auto;min-height:55px;flex-wrap:wrap;gap:8px;padding:8px 14px}
 .brand{white-space:nowrap}
 .header-right{margin-left:auto;justify-content:flex-end;flex-wrap:wrap;gap:6px;max-width:100%}
 #data-refresh{white-space:normal;text-align:left}
}
/* Student profile: every available type group and complete item review. */
.profile-type-group{margin-top:18px;margin-bottom:24px}
.profile-type-group>h3{font-size:15px;margin:0 0 10px;color:#52647a}
.profile-single-chart{grid-template-columns:minmax(0,1fr)}
.profile-single-chart .panel{max-width:none}
.profile-bottom-grid{grid-template-columns:minmax(0,1fr)}
.profile-wrong-summary{display:flex;gap:12px;flex-wrap:wrap;align-items:baseline;margin:0 0 15px;font-size:13px}
.profile-wrong-summary span{font-size:12px;color:var(--muted)}
.profile-wrong-table th,.profile-wrong-table td{text-align:left;padding:10px 12px}
.profile-wrong-table td:nth-child(5),.profile-wrong-table td:nth-child(6){white-space:normal;overflow-wrap:anywhere;min-width:80px;max-width:240px}
.profile-wrong-table td:nth-child(4){font-weight:650}
.profile-wrong-table button{min-width:32px;min-height:28px;border-radius:4px!important}
.profile-wrong-table button:hover,.profile-wrong-table button:focus-visible{background:#e8effa!important;outline:2px solid #8aa7cf;outline-offset:1px}

/* Student profile banner: searchable roster and percentage-based scores. */
.profile-search{position:relative;min-width:0}.profile-search input{width:190px;max-width:100%}
#profile-search-results{position:absolute;top:calc(100% + 6px);left:0;width:300px;max-width:calc(100vw - 40px);max-height:300px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #24364f20;z-index:5;padding:6px}
#profile-search-results button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:10px}#profile-search-results button:hover,#profile-search-results button:focus{background:var(--soft)}#profile-search-results small{display:block;color:var(--muted)}#profile-search-results p{padding:10px;color:var(--muted)}
.profile-metrics .metric-value small{color:inherit;font-size:17px;font-weight:600;white-space:nowrap}.profile-metrics .metric:first-child{min-width:180px}.profile-metrics{grid-template-columns:minmax(190px,1.2fr) repeat(auto-fit,minmax(120px,1fr))}
@media(max-width:720px){.profile-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-metrics .metric:first-child{min-width:0}.profile-search input{width:175px}}
