:root{--ink:#183038;--muted:#6b7b80;--line:#dbe5e7;--paper:#fff;--ground:#f3f7f7;--teal:#0f766e;--blue:#155e75;--soft:#e6f4f1;--warn:#b45309;--danger:#b42318}*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--ground);font-size:15px}.hidden{display:none!important}.login-shell{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 10%,#d8f2ea,transparent 36%),linear-gradient(135deg,#ecf7f5,#f9fbfb)}.login-card{width:min(420px,calc(100vw - 32px));background:#fff;padding:42px;border-radius:20px;box-shadow:0 20px 60px #0a2d2b1a}.school-mark{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--teal);color:#fff;font-weight:800;font-size:24px}.login-card h1{font-size:27px;margin:20px 0 5px}.login-card>p{color:var(--muted);margin:0 0 24px}label{display:grid;gap:7px;font-weight:600;color:#405358}input,select,textarea{font:inherit;padding:10px 12px;border:1px solid #cbd8da;border-radius:8px;color:var(--ink);background:#fff;min-width:0}input:focus,select:focus,textarea:focus{outline:3px solid #bde8df;border-color:var(--teal)}textarea{resize:vertical;font-weight:400}form{display:grid;gap:17px}button{font:inherit;font-weight:700;border:0;border-radius:8px;padding:10px 15px;color:#fff;background:var(--teal);cursor:pointer}button:hover{background:#0b635d}.secondary{background:#e7f1f2;color:#1e4e5b}.secondary:hover{background:#d7e7e9}.link-button,.text-action{background:transparent;color:var(--teal);padding:4px}.link-button:hover,.text-action:hover{background:transparent;color:#075d56;text-decoration:underline}.form-message{margin:0;color:var(--teal);min-height:19px;font-weight:600}.error{color:var(--danger)!important}.app-shell{min-height:100vh;display:flex}.sidebar{width:238px;flex:0 0 238px;background:#123f4b;color:#e7f2f3;padding:22px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:0 9px 25px;font-size:17px}.brand span{background:#20a68f;border-radius:8px;padding:5px 8px;font-weight:800}.sidebar nav{display:grid;gap:5px}.sidebar nav button{background:transparent;text-align:left;border-radius:7px;color:#cfe1e5;font-weight:600}.sidebar nav button:hover,.sidebar nav button.active{background:#23606c;color:white}.sidebar-user{border-top:1px solid #39707a;margin-top:auto;padding:18px 9px 3px;display:grid;gap:4px}.sidebar-user small{color:#add1d6}.sidebar-user .link-button{text-align:left;color:#bfe8e5;padding:4px 0}.content{width:calc(100% - 238px);padding:0 34px 42px;max-width:1600px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:29px 0 23px}.topbar h2{font-size:25px;margin:0}.topbar p{margin:7px 0 0;color:var(--muted)}#status-dot{width:10px;height:10px;background:#22a06b;border-radius:50%;box-shadow:0 0 0 4px #d8f4e8}.page-view{display:grid;gap:20px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.metric{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:17px;display:grid;gap:7px;min-height:116px}.metric span{color:var(--muted);font-size:14px}.metric b{font-size:27px}.metric small{color:#6f8589}.metric.compact{min-height:105px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:20px}.panel h3{font-size:18px;margin:0}.panel h4{font-size:14px;margin:16px 0 5px}.panel p{line-height:1.7;color:#41585d;white-space:pre-wrap}.panel-title,.analysis-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:17px}.muted{color:var(--muted);font-weight:400}.field-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.field-grid.compact{grid-template-columns:repeat(5,minmax(0,1fr));align-items:end}.checkline{display:flex;align-items:center;gap:8px;font-weight:400}.checkline input{min-width:auto}.actions{display:flex;align-items:end}.score-table-wrap,.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:11px 12px;text-align:left;border-bottom:1px solid #e5eded}th{color:#5b6f73;background:#f6faf9;font-size:13px}tr:last-child td{border-bottom:0}.score-table td:nth-child(6){white-space:normal;min-width:190px}.score-table input[type=number]{width:92px}.score-table input[type=checkbox]{min-width:auto}.score-table details{display:grid;gap:6px}.score-table summary{cursor:pointer;color:var(--teal);font-weight:600}.score-table textarea{font-size:13px;padding:7px}.score-table select{font-size:13px;padding:7px}.tag{margin-left:7px;color:#a85b09;background:#fff0d8;padding:2px 6px;border-radius:99px}details>summary{cursor:pointer;color:var(--blue)}details>label{margin-top:12px}.inline-filter{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.inline-filter select{min-width:240px}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:20px}.analysis-head{padding:5px 4px;margin:0}.analysis-head h3{margin:0;font-size:20px}.analysis-head p{margin:6px 0;color:var(--muted)}.bar-chart{display:grid;gap:15px;margin-top:18px}.bar-row{display:grid;grid-template-columns:92px 1fr 32px;align-items:center;gap:10px}.bar-track{height:14px;background:#e8efef;border-radius:99px;overflow:hidden}.bar-track i{display:block;height:100%;border-radius:99px}.bar-track .low{background:#d35d55}.bar-track .middle{background:#db9a42}.bar-track .pass{background:#4e9aa0}.bar-track .excellent{background:#0f766e}.empty-state{padding:32px;text-align:center;color:var(--muted);border:1px dashed #c9d7d9;border-radius:9px}.student-result{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:20px}.student-result .metric-grid.small{grid-template-columns:repeat(2,minmax(0,230px));margin-bottom:15px}.line-chart{width:100%;height:auto;min-height:225px;background:#fbfdfd;border-radius:9px;margin:8px 0 20px}.axis{stroke:#8da4a8}.grid{stroke:#dfe9e9;stroke-dasharray:4 4}.trend-line{fill:none;stroke:#0f766e;stroke-width:3}.trend-dot{fill:#0f766e;stroke:#fff;stroke-width:2}.target-line{stroke:#d48127;stroke-width:2;stroke-dasharray:6 4}.target-label,.axis-label,.line-chart text{fill:#60777b;font-size:12px}.target-label{fill:#b75c00}@media(max-width:980px){.sidebar{width:74px;flex-basis:74px;padding:17px 8px}.brand strong,.sidebar nav button:not(.active)::after,.sidebar-user>*{display:none}.brand{padding:0 7px 20px}.sidebar nav button{font-size:0;text-align:center;height:41px}.sidebar nav button::before{content:"•";font-size:22px}.content{width:calc(100% - 74px);padding:0 18px 30px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid,.field-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.app-shell{display:block}.sidebar{width:100%;height:auto;display:flex;flex-direction:row;align-items:center;padding:10px;position:sticky;top:0;z-index:2}.brand{padding:0;margin-right:auto}.brand strong{display:block;font-size:14px}.sidebar nav{display:flex;gap:1px}.sidebar nav button{width:35px}.sidebar-user{display:none}.content{width:100%;padding:0 13px 24px}.topbar{padding:20px 0 16px}.topbar h2{font-size:21px}.topbar p{font-size:13px}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:13px;min-height:102px}.metric b{font-size:23px}.field-grid,.field-grid.compact,.two-column{grid-template-columns:1fr}.inline-filter select{width:100%;min-width:0}.panel{padding:15px}.panel-title{align-items:flex-start;flex-direction:column}.student-result .metric-grid.small{grid-template-columns:1fr}.score-table-wrap{margin:0 -15px;border-radius:0;border-left:0;border-right:0}}
