:root{font-family:"Microsoft YaHei","Noto Sans CJK SC",Arial,sans-serif;color:#17232b;background:#edf0f2;font-size:14px}*{box-sizing:border-box}body{margin:0}.toolbar{max-width:1050px;padding:24px;margin:auto}.toolbar h1{margin:8px 0;font-size:26px}.toolbar p{line-height:1.7}.toolbar a{color:#325168}#controls{display:grid;grid-template-columns:260px 1fr;gap:16px;padding:18px;background:white;border:1px solid #d6dde2;border-radius:8px}label{display:flex;flex-direction:column;gap:6px}select,input,button{font:inherit;padding:8px;border:1px solid #bbc7d0;border-radius:4px}select{width:100%}.dates{display:grid;grid-template-columns:1fr 1fr;gap:10px}.actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:10px}button{background:#f5f8fa;cursor:pointer}button:first-child{background:#244c65;color:white}button:disabled{opacity:.5;cursor:default}.help{font-size:13px;color:#52616b}.print-page{width:210mm;height:297mm;margin:18px auto;padding:12mm 13mm;position:relative;background:white;box-shadow:0 2px 10px #cbd2d7;font-size:10pt;line-height:1.55;break-after:page;page-break-after:always;overflow:visible}.page-heading{border-bottom:1.4px solid #384a56;padding-bottom:3mm;margin-bottom:4mm}.brand{font-size:10pt;color:#52616b;letter-spacing:1px}.page-heading h2{font-size:20pt;line-height:1.3;margin:2mm 0}.page-heading .sub{font-size:10pt;display:flex;justify-content:space-between;gap:4mm}.identity{display:grid;grid-template-columns:1fr 1fr;gap:2mm 6mm;margin-bottom:4mm}.identity .wide{grid-column:1/-1}.note{font-size:9.5pt;color:#53616a;line-height:1.5}.card{border:1px solid #bcc6ce;padding:3mm 4mm;margin:3mm 0}.card h3{font-size:11pt;margin:0 0 1.5mm;color:#223845}.stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:3mm;margin:4mm 0}.stat{padding:3mm;border:1px solid #c9d1d7}.stat strong{display:block;font-size:17pt;margin:1mm 0;line-height:1.3}.stat small{font-size:9.5pt}.compact{margin:1mm 0;font-size:10pt}.handwriting{margin-top:4mm}.handwriting h3{font-size:11pt;margin:2mm 0}.write-lines{height:33mm;background:repeating-linear-gradient(to bottom,transparent 0,transparent 10.7mm,#d7dde1 10.7mm,#d7dde1 11mm)}.teacher-fill{width:100%;min-height:13mm;font:inherit;line-height:1.55;padding:1mm;border:1px dashed #aeb9c2;resize:vertical;background:white;color:#17232b}.teacher-name{display:inline-block;min-width:32mm;border-bottom:1px solid #8898a5;padding:0 1mm;outline:none;max-width:55mm}.signed{display:flex;justify-content:space-between;gap:10mm;margin-top:6mm;padding-top:2mm}.footer{position:absolute;bottom:9mm;left:13mm;right:13mm;display:flex;justify-content:space-between;gap:4mm;font-size:9pt;color:#55636c;border-top:1px solid #cbd3d9;padding-top:2mm}.annex-content{margin-top:4mm}.annex-row{border-bottom:1px solid #d8dee3;padding:3mm 0;overflow-wrap:anywhere}.annex-row h3{font-size:10.5pt;margin:0 0 1.5mm}.annex-row p{margin:1mm 0;font-size:10pt}.source-label{font-size:9.5pt;color:#596773}.badge{font-size:9.5pt;border:1px solid #afbbc4;padding:0 1.5mm}.classification{font-size:10pt;padding:1mm}.screen-tag{font-size:12px;color:#53616a;text-align:center}.page-heading h2.annex-title{font-size:16pt}.warning{color:#664117}.wrap{white-space:pre-wrap;overflow-wrap:anywhere}.print-text{display:none}@media(max-width:850px){#controls{grid-template-columns:1fr}.print-page{margin:12px 0}#reports{overflow:auto}}@page{size:A4;margin:0}@media print{body,:root{background:white}.toolbar,.screen-tag{display:none}.print-page{margin:0;box-shadow:none;break-inside:avoid;page-break-inside:avoid}.print-page:last-child{break-after:auto;page-break-after:auto}.teacher-fill{resize:none;border:0;padding:0}.classification{appearance:none;border:0;background:white;color:#17232b;padding:0}.teacher-name{border:0}.teacher-fill{display:none}.print-text{display:block;white-space:pre-wrap;overflow-wrap:anywhere;min-height:13mm}a{color:inherit;text-decoration:none}}
.page-heading{position:relative;padding-right:25mm;border-bottom-color:#b49a60;min-height:29mm}.report-logo{position:absolute;right:0;top:0;width:23mm;height:23mm;object-fit:contain}.brand,.page-heading h2,.card h3{color:#152f49}.badge{border-color:#c9b37e;color:#493c27}.card{border-left:2px solid #c2ae78}.print-page{font-size:10.5pt}.page-heading .sub{flex-wrap:wrap}@media print{.print-page{background:white}.card{border-left-color:#9f8c5e}}

.main-page .card{padding:2mm 3mm;margin:2mm 0}.main-page .card h3{margin-bottom:1mm}.main-page .handwriting{margin-top:3mm}.main-page .identity{margin-bottom:3mm}.main-page .stats{margin:3mm 0}.main-page .compact{margin:.5mm 0}

.main-page .stat{padding:2mm}.main-page .page-heading{min-height:26mm;margin-bottom:2mm}.main-page .card{padding:1.5mm 3mm}.main-page .card h3{margin-bottom:.5mm}.main-page .stats .stat small{line-height:1.4}
.teacher-name{font:inherit;width:34mm;padding:0 1mm;background:white;border:0;border-bottom:1px solid #8898a5;border-radius:0}.print-teacher{display:none}.annex-row{padding:1.5mm 0}.annex-row h3{margin-bottom:1mm}.annex-row p{margin:.5mm 0}#job{background:white;border:1px solid #c8d1d8;padding:16px;margin:12px 0}#job-links{display:flex;gap:18px;flex-wrap:wrap}#job-people{max-height:260px;overflow:auto;margin-top:12px;font-size:13px;line-height:1.7}.job-failed{color:#733820}@media print{.teacher-name{display:none}.print-teacher{display:inline}.annex-content{margin-top:2mm}}

.main-page .card{padding:1mm 3mm;margin:1.4mm 0}.main-page .identity{gap:1mm;margin-bottom:2mm}.main-page .stats{margin:2mm 0}.main-page .handwriting{margin-top:2mm}.main-page .signed{margin-top:4mm}.main-page .page-heading .sub{font-size:9.5pt}.identity strong{overflow-wrap:anywhere}.main-page .page-heading{padding-bottom:2mm}

.main-page .handwriting h3{margin:1mm 0}.main-page .signed{margin-top:2mm}

/* Keep both attendance scopes legible within one A4 main page. */
.main-page .stat{padding:1mm 2mm}.main-page .stat strong{margin:.3mm 0}.main-page .stats{margin:1mm 0}
