:root{--ink:#171717;--muted:#74777f;--line:#d9dde6;--paper:#f4f5f7;--blue:#3b72ef;--blue-dark:#2458c9;--blue-soft:#dbe6f7;--red:#b43f38}
*{box-sizing:border-box}
html{background:var(--paper)}
body{margin:0;color:var(--ink);background:var(--paper);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}
.shell{width:min(1280px,calc(100% - 42px));margin:auto}
.topbar{position:sticky;top:0;z-index:40;border-bottom:1px solid #e2e4e9;background:rgba(255,255,255,.94);backdrop-filter:blur(14px)}
.topbar-inner{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.suite-nav{display:flex;gap:4px;padding:4px;border:1px solid #e0e2e8;border-radius:13px;background:#fff}
.suite-nav a{padding:9px 17px;border-radius:9px;color:#666b75;font-size:12px;font-weight:750;text-decoration:none}
.suite-nav a.active{color:#fff;background:#272b34}
.top-actions{display:flex;align-items:center;gap:8px}
.period-picker{display:flex;align-items:center;gap:8px;height:42px;padding:4px 6px 4px 11px;border:1px solid #dfe2e8;border-radius:10px;background:#fff}
.period-picker span{color:#777d88;font-size:10px;font-weight:750;white-space:nowrap}
.period-picker select{min-width:154px;height:32px;border:0;border-left:1px solid #e7e9ee;padding:0 26px 0 10px;color:#303641;background:#fff;font:700 12px/1 "Microsoft YaHei","PingFang SC",system-ui,sans-serif;cursor:pointer;outline:none}
.period-picker select:disabled{color:#969ba4;cursor:wait}
button{font:inherit}
.ghost,.solid{border:1px solid #dfe2e8;border-radius:10px;background:#fff;color:#565c67;padding:9px 15px;font-size:12px;font-weight:750;cursor:pointer}
.solid{border-color:#245fe0;background:#2465e8;color:#fff}
.report-page{padding:28px 0 60px}
.report-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding:0 3px}
.report-toolbar span,.report-toolbar b{display:block}
.report-toolbar span{color:#6d75e7;font-size:9px;font-weight:800;letter-spacing:.15em}
.report-toolbar b{margin-top:4px;font-size:13px}
.report-toolbar p{margin:0;color:#858a94;font-size:11px}
.report-toolbar p.success{color:#18835f;font-weight:700}
.report-toolbar p.error{color:var(--red);font-weight:700}
.report-paper{min-height:650px;padding:54px 68px 76px;border:1px solid #e0e2e7;border-radius:8px;background:#fff;box-shadow:0 16px 42px rgba(35,43,58,.07)}
.report-paper h2{margin:0 0 28px;font-size:25px;line-height:1.4}
.report-paper h3{margin:0 0 34px;font-size:20px;line-height:1.4}
.report-paper h2 span,.report-paper h3 span{color:#1759e8;font-family:Consolas,monospace}
.report-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}
.report-table th,.report-table td{height:42px;padding:8px 10px;border:1px solid #2f3540;text-align:center;vertical-align:middle;line-height:1.45}
.report-table th{background:var(--blue);color:#fff;font-weight:700}
.report-table .table-title{height:39px;background:var(--blue);font-size:14px}
.report-table th:nth-child(1){width:13%}
.report-table th:nth-child(2){width:34%}
.report-table th:nth-child(3){width:12%}
.report-table th:nth-child(4){width:17%}
.report-table th:nth-child(5){width:13%}
.report-table th:nth-child(6){width:11%}
.report-table td.band,.report-table td.score{background:var(--blue-soft)}
.report-table td.score{font-size:14px}
.report-table td.calculated{color:#171717;background:#fff;font-weight:400}.report-table td.final-score{color:#12b81e;font-weight:800}.top-actions button:disabled{opacity:.55;cursor:wait}
.dialog{width:min(640px,calc(100vw - 30px));border:0;border-radius:21px;padding:0;background:#f9f8fa;box-shadow:0 26px 90px rgba(25,18,35,.25)}
.dialog::backdrop{background:rgba(31,25,40,.38);backdrop-filter:blur(3px)}
.dialog form{padding:24px}
.dialog header{display:flex;justify-content:space-between}
.dialog header span{color:#6546c7;font-size:10px;font-weight:850;letter-spacing:.15em}
.dialog header h2{margin:6px 0 12px}
.dialog header button{width:35px;height:35px;border:1px solid #e5e2ea;border-radius:50%;background:#fff;font-size:20px;cursor:pointer}
.import-dialog p{color:#716b76;font-size:11px;line-height:1.7}
.import-dialog label{display:grid;gap:6px;margin:12px 0;color:#706a76;font-size:11px;font-weight:750}
.import-dialog input{height:42px;border:1px solid #ddd9e2;border-radius:10px;padding:0 11px;background:#fff}
.file-picker{padding:13px;border:1px dashed #cfc8db;border-radius:13px}
.file-picker input{height:auto;border:0;padding:8px 0}
.file-picker small{font-weight:400;color:#96909b}
.feedback{min-height:24px;color:var(--red);font-size:11px}
.dialog footer{display:flex;justify-content:flex-end;gap:8px}
.dialog footer button{padding:9px 15px;border:1px solid #e5e2ea;border-radius:9px;background:#fff;cursor:pointer}
.dialog footer .solid{background:#2c2536;color:#fff}
.dialog footer button:disabled{opacity:.58;cursor:wait}
@media(max-width:800px){.shell{width:calc(100% - 22px)}.topbar-inner{min-height:58px;gap:8px}.suite-nav a{padding:8px 9px}.top-actions .ghost{display:none}.period-picker{padding-left:8px}.period-picker span{display:none}.period-picker select{min-width:132px;border-left:0;padding-left:4px}.solid{padding-left:10px;padding-right:10px}.report-page{padding-top:18px}.report-toolbar{align-items:flex-start;gap:14px}.report-toolbar p{max-width:170px;text-align:right}.report-paper{padding:32px 18px 50px;overflow-x:auto}.report-table{min-width:850px}.report-paper h2{font-size:23px}.report-paper h3{font-size:18px}}
