:root {
  --primary: #165dff;
  --primary-dark: #0e42d2;
  --primary-soft: #eef4ff;
  --secondary: #00a6a6;
  --success: #00b42a;
  --warning: #ff7d00;
  --danger: #f53f3f;
  --text: #1d2129;
  --text-2: #4e5969;
  --muted: #86909c;
  --line: #e5e6eb;
  --line-strong: #c9cdd4;
  --page: #f2f3f5;
  --surface: #ffffff;
  --sidebar-width: 248px;
  --shadow-sm: 0 1px 3px rgba(29, 33, 41, 0.06);
  --shadow: 0 8px 24px rgba(29, 33, 41, 0.07);
  --radius-sm: 6px;
  --radius: 8px;
  --radius-lg: 12px;
  font-family: "Microsoft YaHei", "PingFang SC", Inter, system-ui, -apple-system, sans-serif;
  color: var(--text);
  background: var(--page);
}

/* Department term summaries */
.department-summary-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:24px 0 8px}.department-summary-hero h2{margin:4px 0 8px;font-size:24px;color:#1d2129}.department-summary-hero>div>p:last-child{margin:0;color:#4e5969;line-height:1.6}.department-term-filter{min-width:280px}.department-term-filter label,.department-summary-form label,.department-review-list label{display:grid;gap:8px;color:#4e5969;font-size:14px}.department-summary-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start;margin-top:16px}.department-summary-main,.department-summary-side{display:grid;gap:16px;min-width:0}.summary-role-mark{display:inline-flex;align-items:center;gap:6px;color:#165dff;font-size:14px}.summary-role-mark svg{width:16px}.department-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.department-metric-grid article{padding:16px;border:1px solid #e5e6eb;border-radius:8px;background:#f7f8fa}.department-metric-grid small{display:block;color:#86909c}.department-metric-grid strong{display:block;margin-top:8px;font-size:24px;color:#1d2129}.department-metric-grid em{margin-left:4px;font-size:12px;font-style:normal;font-weight:500;color:#86909c}.department-metric-grid .success{border-color:#b7ebc5;background:#f2fff6}.department-metric-grid .warning{border-color:#ffd8ad;background:#fff8ef}.department-metric-grid .primary{border-color:#bed3ff;background:#f3f7ff}.department-source-warning,.department-review-note,.department-locked-note{display:flex;gap:12px;margin-top:16px;padding:16px;border-radius:8px;background:#fff8ef;color:#4e5969}.department-source-warning>svg,.department-review-note>svg{width:20px;flex:0 0 auto;color:#ff7d00}.department-source-warning strong,.department-review-note strong{color:#1d2129}.department-source-warning p,.department-review-note p{margin:4px 0 0;line-height:1.6}.department-review-note.rejected{background:#fff3f3}.department-review-note.rejected>svg{color:#f53f3f}.department-generate-row,.department-editor-actions,.department-submit-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px}.department-generate-row p{display:flex;align-items:center;gap:8px;margin:0;color:#86909c;font-size:13px}.department-generate-row svg{width:16px}.department-status{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:6px;background:#f2f3f5;color:#4e5969;font-size:12px;font-style:normal;white-space:nowrap}.department-status.submitted{background:#edf3ff;color:#165dff}.department-status.approved{background:#eaf9ef;color:#008a29}.department-status.rejected{background:#fff1f0;color:#cf2f2f}.department-summary-form{display:grid;gap:16px}.department-summary-form input,.department-summary-form textarea,.department-review-list textarea{width:100%}.department-summary-form textarea{resize:vertical;line-height:1.7}.department-form-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}.department-ai-action{display:flex;align-items:center;gap:12px}.department-ai-action>svg{width:22px;color:#165dff}.department-ai-action p{margin:0}.department-ai-action strong,.department-ai-action small{display:block}.department-ai-action small{margin-top:4px;color:#86909c}.department-submit-actions{justify-content:flex-end;padding-top:16px;border-top:1px solid #e5e6eb}.department-submit-actions form{margin:0}.department-locked-note{align-items:center;background:#f7f8fa}.department-locked-note svg{width:18px}.department-reader article{padding:16px 0;border-top:1px solid #e5e6eb}.department-reader article h3{margin:0 0 8px;font-size:16px;color:#1d2129}.department-reader article p{margin:0;color:#4e5969;line-height:1.8}.department-review-list,.department-history-list{display:grid;gap:12px}.department-review-list article{padding:16px;border:1px solid #e5e6eb;border-radius:8px}.department-review-list article>a{display:grid;gap:4px;color:#1d2129;text-decoration:none}.department-review-list small,.department-history-list small{color:#86909c}.department-review-list form{display:grid;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid #e5e6eb}.department-review-list form>div{display:flex;justify-content:flex-end;gap:8px}.department-history-list article{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid #e5e6eb;border-radius:8px}.department-history-list article.selected{border-color:#8db3ff;background:#f5f8ff}.department-history-list article>a:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;flex:1;color:#1d2129;text-decoration:none}.department-history-list article>a span{display:grid;gap:4px;min-width:0}.department-history-list article>div{display:flex;gap:4px}.department-history-list article>div a{display:grid;place-items:center;width:32px;height:32px;border-radius:6px;color:#4e5969}.department-history-list article>div a:hover{background:#edf3ff;color:#165dff}.department-history-list svg{width:16px}
.department-summary-layout.leader-empty{grid-template-columns:1fr}.department-summary-layout.leader-empty .department-summary-main{display:none}.department-summary-layout.leader-empty .department-summary-side{grid-template-columns:1fr 1fr}

@media (max-width:1100px){.department-summary-layout{grid-template-columns:minmax(0,1fr) 320px}.department-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:820px){.department-summary-hero{align-items:stretch;flex-direction:column}.department-term-filter{min-width:0}.department-summary-layout,.department-summary-layout.leader-empty .department-summary-side{grid-template-columns:1fr}.department-form-pair{grid-template-columns:1fr}.department-generate-row,.department-editor-actions{align-items:stretch;flex-direction:column}.department-generate-row .button,.department-editor-actions .button{width:100%}.department-submit-actions{flex-wrap:wrap}.department-submit-actions form,.department-submit-actions button{width:100%}}
@media (max-width:480px){.department-metric-grid{grid-template-columns:1fr 1fr}.department-metric-grid article{padding:12px}.department-metric-grid strong{font-size:18px}.department-summary-hero h2{font-size:20px}.department-history-list article{align-items:flex-start;flex-wrap:wrap}.department-history-list article>div{margin-left:auto}}

/* 第四十七阶段：教师个人版学期教学成果包 */
.teacher-portfolio-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px;padding:24px 28px;border:1px solid #d7e5e2;border-radius:12px;background:#f7fbfa}.teacher-portfolio-hero h2{margin:4px 0 8px;color:#17332f;font-size:24px;line-height:1.25}.teacher-portfolio-hero>div>p:last-child{max-width:780px;margin:0;color:#63736f;line-height:1.65}.teacher-portfolio-hero>span{display:grid;flex:0 0 56px;place-items:center;width:56px;height:56px;border-radius:12px;color:#fff;background:#2d6a63;box-shadow:0 8px 20px rgba(45,106,99,.16)}.teacher-portfolio-hero>span svg{width:26px;height:26px}.teacher-portfolio-layout{display:grid;grid-template-columns:300px minmax(0,1fr);align-items:start;gap:16px}.teacher-portfolio-side,.teacher-portfolio-main{display:grid;min-width:0;gap:16px}.portfolio-create-panel,.portfolio-history-panel,.portfolio-document,.portfolio-student-group{padding:20px}.portfolio-create-panel .form-stack{gap:12px}.portfolio-create-panel label,.portfolio-editor-form label{display:grid;gap:7px;color:#52605d;font-size:12px;font-weight:700}.portfolio-period-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.portfolio-source-note{display:flex;align-items:flex-start;gap:7px;margin:0;color:#798783;font-size:11px;font-weight:400;line-height:1.5}.portfolio-source-note svg{flex:0 0 15px;width:15px;color:#2d6a63}.portfolio-count{display:grid;place-items:center;min-width:34px;height:34px;border-radius:8px;color:#2d6a63;background:#eaf4f1;font-size:12px;font-weight:700}.portfolio-history-list{display:grid;gap:6px}.portfolio-history-list>a{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px;border:1px solid transparent;border-radius:8px;color:inherit;text-decoration:none;transition:border-color .2s ease,background .2s ease,transform .2s ease}.portfolio-history-list>a:hover{border-color:#c9ded9;background:#f8fbfa;transform:translateY(-1px)}.portfolio-history-list>a.active{border-color:#9fc9bf;background:#eef7f4}.portfolio-history-list>a>span{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;color:#2d6a63;background:#eaf4f1}.portfolio-history-list>a>span svg{width:17px}.portfolio-history-list strong,.portfolio-history-list p,.portfolio-history-list small{display:block;min-width:0}.portfolio-history-list strong{overflow:hidden;color:#243b36;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portfolio-history-list p{margin:2px 0;color:#6f7d79;font-size:10px}.portfolio-history-list small{color:#9aa5a2;font-size:9px}.portfolio-history-list em{padding:3px 6px;border-radius:6px;color:#6f7d79;background:#f1f3f3;font-size:9px;font-style:normal;white-space:nowrap}.portfolio-history-list em.confirmed{color:#18734f;background:#e8f7ee}.portfolio-empty{display:grid;justify-items:center;gap:8px;padding:24px 12px;color:#87938f;text-align:center}.portfolio-empty>svg{width:30px;color:#7ba69c}.portfolio-empty strong{color:#42534f}.portfolio-empty p{margin:0;font-size:11px;line-height:1.6}.portfolio-empty.compact{min-height:64px;padding:12px}.portfolio-empty.compact>svg{width:22px}.portfolio-document{padding:0;overflow:hidden}.portfolio-document-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 24px 20px;border-bottom:1px solid #e5ecea;background:#fbfdfc}.portfolio-document-heading h2{margin:8px 0 5px;color:#203733;font-size:20px;line-height:1.35}.portfolio-document-heading p{margin:0;color:#7b8985;font-size:11px}.portfolio-status{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:6px;color:#52605d;background:#eef1f0;font-size:10px;font-weight:700}.portfolio-status svg{width:13px}.portfolio-status.confirmed{color:#18734f;background:#e7f6ed}.portfolio-document-actions{display:flex;gap:6px}.portfolio-document-actions .icon-button{border:1px solid #dfe8e5;background:#fff}.portfolio-metric-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-bottom:1px solid #e5ecea;background:#f7faf9}.portfolio-metric-grid>div{min-width:0;padding:14px 12px;border-right:1px solid #e5ecea}.portfolio-metric-grid>div:last-child{border-right:0}.portfolio-metric-grid small,.portfolio-metric-grid strong{display:block}.portfolio-metric-grid small{overflow:hidden;color:#7d8b87;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.portfolio-metric-grid strong{margin-top:4px;color:#203733;font-size:18px}.portfolio-metric-grid em{margin-left:3px;color:#86928f;font-size:9px;font-style:normal;font-weight:500}.portfolio-editor-form{display:grid;gap:0;padding:0 24px}.portfolio-title-field{padding:20px 0;border-bottom:1px solid #edf1f0}.portfolio-title-field input{font-size:16px;font-weight:700}.portfolio-text-section{padding:18px 0;border-bottom:1px solid #edf1f0}.portfolio-text-section>span{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.portfolio-text-section>span strong{color:#263b37;font-size:14px}.portfolio-text-section>span small{color:#98a29f;font-size:10px;font-weight:400}.portfolio-text-section textarea{width:100%;resize:vertical;line-height:1.75;background:#fafcfc}.portfolio-save-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0}.portfolio-save-bar p{display:flex;align-items:center;gap:7px;margin:0;color:#7f8c89;font-size:11px}.portfolio-save-bar svg{width:15px}.portfolio-ai-strip{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-top:1px solid #dfe9e6;border-bottom:1px solid #dfe9e6;background:#f3f8f7}.portfolio-ai-strip>div{display:flex;align-items:center;min-width:0;gap:11px}.portfolio-ai-strip>div>span{display:grid;flex:0 0 36px;place-items:center;width:36px;height:36px;border-radius:8px;color:#2d6a63;background:#deeeea}.portfolio-ai-strip svg{width:18px}.portfolio-ai-strip strong,.portfolio-ai-strip small,.portfolio-ai-strip em{display:block}.portfolio-ai-strip strong{color:#2b403c;font-size:12px}.portfolio-ai-strip small{margin-top:3px;color:#73817d;font-size:10px;line-height:1.5}.portfolio-ai-strip em{margin-top:3px;color:#c44b36;font-size:10px;font-style:normal}.portfolio-confirm-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:#fff}.portfolio-confirm-bar strong{color:#263b37;font-size:13px}.portfolio-confirm-bar p{margin:3px 0 0;color:#82908c;font-size:10px}.button.success{color:#fff;background:#14804a}.button.success:hover{background:#0f6b3d;transform:translateY(-1px)}.portfolio-readonly-body{padding:4px 24px 20px}.portfolio-readonly-body section{padding:18px 0;border-bottom:1px solid #edf1f0}.portfolio-readonly-body section:last-child{border-bottom:0}.portfolio-readonly-body h3{margin:0 0 8px;color:#263b37;font-size:14px}.portfolio-readonly-body p{margin:0;color:#4f5f5b;line-height:1.8}.portfolio-student-evidence{display:grid;grid-template-columns:1fr 1fr;gap:16px}.portfolio-student-group .panel-heading>span{padding:4px 7px;border-radius:6px;color:#18734f;background:#e8f7ee;font-size:10px;font-weight:700}.portfolio-student-group.attention .panel-heading>span{color:#b65b12;background:#fff3e7}.portfolio-student-list{display:grid}.portfolio-student-list>div:not(.portfolio-empty){display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid #edf1f0}.portfolio-student-list>div:last-child{border-bottom:0}.portfolio-student-list>div>span{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;color:#18734f;background:#e9f6ef;font-size:11px;font-weight:700}.portfolio-student-group.attention .portfolio-student-list>div>span{color:#b65b12;background:#fff3e7}.portfolio-student-list strong,.portfolio-student-list small{display:block}.portfolio-student-list strong{color:#30433f;font-size:11px}.portfolio-student-list small{margin-top:2px;color:#8b9794;font-size:9px}.portfolio-student-list em{color:#18734f;font-size:11px;font-style:normal;font-weight:700}.portfolio-student-group.attention .portfolio-student-list em{color:#b65b12}.portfolio-welcome{display:grid;justify-items:center;min-height:470px;padding:48px;text-align:center}.portfolio-welcome>span{display:grid;place-items:center;width:64px;height:64px;border-radius:12px;color:#2d6a63;background:#e6f2ef}.portfolio-welcome>span svg{width:30px}.portfolio-welcome h2{margin:18px 0 8px;color:#203733;font-size:20px}.portfolio-welcome>p{max-width:520px;margin:0;color:#71807c;line-height:1.7}.portfolio-welcome>div{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;width:min(600px,100%);margin-top:28px;overflow:hidden;border:1px solid #e1e9e7;border-radius:8px;background:#e1e9e7}.portfolio-welcome>div strong,.portfolio-welcome>div small{display:block;padding:10px;background:#fafcfc}.portfolio-welcome>div strong{padding-bottom:3px;color:#304641;font-size:11px}.portfolio-welcome>div small{padding-top:0;color:#87938f;font-size:9px}
@media (max-width:1180px){.teacher-portfolio-layout{grid-template-columns:270px minmax(0,1fr)}.portfolio-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portfolio-metric-grid>div:nth-child(3){border-right:0}.portfolio-metric-grid>div:nth-child(-n+3){border-bottom:1px solid #e5ecea}}
@media (max-width:900px){.teacher-portfolio-layout{grid-template-columns:1fr}.teacher-portfolio-side{grid-template-columns:1fr 1fr}.portfolio-student-evidence{grid-template-columns:1fr}}
@media (max-width:640px){.teacher-portfolio-hero{align-items:flex-start;padding:20px 16px}.teacher-portfolio-hero h2{font-size:20px}.teacher-portfolio-hero>span{display:none}.teacher-portfolio-side{grid-template-columns:1fr}.portfolio-create-panel,.portfolio-history-panel,.portfolio-student-group{padding:16px}.portfolio-document-heading{padding:18px 16px}.portfolio-document-heading h2{font-size:17px}.portfolio-document-heading{align-items:flex-start;flex-direction:column}.portfolio-document-actions{align-self:flex-end;margin-top:-42px}.portfolio-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-metric-grid>div:nth-child(3){border-right:1px solid #e5ecea}.portfolio-metric-grid>div:nth-child(even){border-right:0}.portfolio-metric-grid>div:nth-child(-n+4){border-bottom:1px solid #e5ecea}.portfolio-editor-form{padding:0 16px}.portfolio-text-section>span{align-items:flex-start;flex-direction:column;gap:3px}.portfolio-text-section textarea{min-height:150px}.portfolio-save-bar,.portfolio-ai-strip,.portfolio-confirm-bar{align-items:stretch;flex-direction:column}.portfolio-save-bar .button,.portfolio-ai-strip form,.portfolio-ai-strip .button,.portfolio-confirm-bar .button{width:100%}.portfolio-ai-strip,.portfolio-confirm-bar{padding:16px}.portfolio-readonly-body{padding:4px 16px 16px}.portfolio-welcome{min-height:380px;padding:32px 16px}.portfolio-welcome>div{grid-template-columns:1fr}.portfolio-period-grid{grid-template-columns:1fr}}

/* 第三十四阶段：备课与作业闭环 */
.preparation-hero { display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 24px 28px; color: #fff; background: #263f62; border-radius: var(--radius-lg); box-shadow: 0 12px 26px rgba(38,63,98,.16); }
.preparation-hero .overline { color: #f1cf8d; }
.preparation-hero h2 { margin: 4px 0 7px; font-size: 20px; }
.preparation-hero > div:first-child > p:last-child { max-width: 720px; color: #dce6f2; font-size: 13px; line-height: 1.65; }
.preparation-metrics { display: grid; grid-template-columns: repeat(3,96px); gap: 8px; }
.preparation-metrics span { padding: 12px 10px; text-align: center; background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.15); border-radius: var(--radius); }
.preparation-metrics strong, .preparation-metrics small { display: block; }
.preparation-metrics strong { font-size: 20px; }
.preparation-metrics small { margin-top: 3px; color: #dce6f2; font-size: 12px; }
.preparation-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.preparation-toolbar form { display: flex; align-items: end; gap: 10px; }
.preparation-toolbar label > span, .preparation-manual-picker label > span, .preparation-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 700; }
.preparation-toolbar input, .preparation-manual-picker select, .preparation-form input, .preparation-form textarea { width: 100%; min-height: 38px; padding: 8px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.preparation-toolbar input:focus, .preparation-manual-picker select:focus, .preparation-form input:focus, .preparation-form textarea:focus { background: #fff; border-color: #7798c6; box-shadow: 0 0 0 3px rgba(38,63,98,.08); }
.preparation-toolbar > div { display: flex; align-items: center; gap: 10px; max-width: 520px; }
.preparation-toolbar > div > svg { width: 30px; height: 30px; padding: 7px; color: #a56b13; background: #fff5df; border-radius: var(--radius); }
.preparation-toolbar strong, .preparation-toolbar span { display: block; }
.preparation-toolbar strong { font-size: 13px; }
.preparation-toolbar span { margin-top: 2px; color: var(--muted); font-size: 12px; }
.preparation-manual-picker { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 16px 18px; }
.preparation-manual-picker > div { display: flex; align-items: center; gap: 11px; }
.preparation-manual-picker > div > span { width: 38px; height: 38px; display: grid; place-items: center; color: #31557f; background: #edf2f8; border-radius: var(--radius); }
.preparation-manual-picker strong, .preparation-manual-picker small { display: block; }
.preparation-manual-picker strong { font-size: 14px; }
.preparation-manual-picker small { margin-top: 3px; color: var(--muted); font-size: 12px; }
.preparation-manual-picker form { display: flex; align-items: end; gap: 10px; }
.preparation-manual-picker label { min-width: 150px; }
.preparation-list { display: grid; gap: 16px; margin-top: 16px; }
.preparation-card { overflow: hidden; }
.preparation-card-head { display: grid; grid-template-columns: 90px minmax(0,1fr) auto; gap: 16px; align-items: center; padding: 17px 18px; border-bottom: 1px solid var(--line); }
.preparation-period { align-self: stretch; padding-right: 16px; border-right: 1px solid var(--line); }
.preparation-period strong, .preparation-period span { display: block; }
.preparation-period strong { color: #31557f; font-size: 14px; }
.preparation-period span { margin-top: 4px; color: var(--muted); font-size: 12px; }
.preparation-title-row { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.preparation-title-row em { display: inline-flex; align-items: center; gap: 4px; padding: 3px 6px; color: #17643a; background: #e9f7ef; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; font-weight: 700; }
.preparation-title-row em.homework { color: #855c14; background: #fff4db; }
.preparation-title-row svg { width: 12px; height: 12px; }
.preparation-card-head h2 { margin-top: 5px; font-size: 16px; }
.preparation-card-head p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.preparation-context { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-bottom: 1px solid var(--line); }
.preparation-context section { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 10px; min-width: 0; padding: 15px 18px; border-right: 1px solid var(--line); }
.preparation-context section:last-child { border-right: 0; }
.preparation-context section > span { width: 34px; height: 34px; display: grid; place-items: center; color: #31557f; background: #edf2f8; border-radius: var(--radius); }
.preparation-context section > span svg { width: 17px; height: 17px; }
.preparation-context small, .preparation-context strong, .preparation-context p { display: block; overflow-wrap: anywhere; }
.preparation-context small { color: #31557f; font-size: 12px; font-weight: 700; }
.preparation-context strong { margin-top: 3px; font-size: 14px; line-height: 1.55; }
.preparation-context p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.preparation-resource-row { display: grid; grid-template-columns: 170px minmax(0,1fr); gap: 16px; align-items: center; padding: 12px 18px; background: #fbfcfd; border-bottom: 1px solid var(--line); }
.preparation-resource-row > div:first-child { display: flex; align-items: center; gap: 9px; }
.preparation-resource-row > div:first-child > svg { width: 18px; height: 18px; color: #31557f; }
.preparation-resource-row strong, .preparation-resource-row small { display: block; }
.preparation-resource-row strong { font-size: 13px; }
.preparation-resource-row small { color: var(--muted); font-size: 12px; }
.preparation-resource-row > div:last-child { display: flex; flex-wrap: wrap; gap: 7px; }
.preparation-resource-row a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 8px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 13px; transition: border-color .2s ease, color .2s ease, transform .2s ease; }
.preparation-resource-row a:hover { color: #263f62; border-color: #9db2cd; transform: translateY(-1px); }
.preparation-resource-row a span { color: #31557f; font-size: 12px; font-weight: 700; }
.preparation-form { display: grid; gap: 14px; padding: 18px 20px 20px; }
.preparation-form-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.preparation-form-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.preparation-reuse-notice { display: flex; align-items: center; gap: 5px; margin-top: 5px; color: #2f7a58; font-size: 12px; }
.preparation-reuse-notice svg { width: 14px; height: 14px; }
.preparation-form-heading small { color: #31557f; font-size: 12px; font-weight: 700; }
.preparation-form-heading h3 { margin-top: 2px; font-size: 16px; }
.preparation-form-actions > span { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; color: #31557f; background: #edf2f8; border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; }
.preparation-form-actions > span svg { width: 13px; height: 13px; }
.preparation-form textarea { min-height: 68px; resize: vertical; line-height: 1.6; }
.preparation-two-column { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.preparation-detail-row { display: grid; grid-template-columns: 190px minmax(0,1fr); gap: 12px; }
.preparation-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding-top: 12px; border-top: 1px solid var(--line); }
.preparation-homework-toggle { position: relative; flex: 1; }
.preparation-homework-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.preparation-homework-toggle > span { display: grid; grid-template-columns: 34px minmax(0,1fr); column-gap: 10px; align-items: center; max-width: 520px; min-height: 52px; padding: 8px 12px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; transition: all .2s ease; }
.preparation-homework-toggle > span > svg { width: 34px; height: 34px; grid-row: span 2; padding: 8px; color: #8b651e; background: #fff1d3; border-radius: var(--radius); }
.preparation-homework-toggle strong, .preparation-homework-toggle small { display: block; }
.preparation-homework-toggle strong { font-size: 13px; }
.preparation-homework-toggle small { color: var(--muted); font-size: 12px; }
.preparation-homework-toggle input:checked + span { background: #fffaf0; border-color: #d9b36d; box-shadow: 0 0 0 3px rgba(217,154,53,.08); }
.preparation-homework-queue { margin-top: 16px; overflow: hidden; }
.preparation-homework-queue .panel-heading > span { width: 38px; height: 38px; display: grid; place-items: center; color: #8b651e; background: #fff1d3; border-radius: var(--radius); }
.preparation-queue-list { display: grid; padding: 0 18px 18px; }
.preparation-queue-list a { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 11px; align-items: center; padding: 11px 0; border-bottom: 1px solid #eef0f2; }
.preparation-queue-list a:last-child { border-bottom: 0; }
.preparation-queue-list strong, .preparation-queue-list p { display: block; }
.preparation-queue-list strong { font-size: 13px; }
.preparation-queue-list p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.preparation-queue-list > a > svg { width: 15px; height: 15px; color: var(--muted); }
.preparation-empty { display: flex; align-items: center; gap: 16px; margin-top: 16px; padding: 24px; }
.preparation-empty > svg { width: 40px; height: 40px; color: #31557f; }
.preparation-empty > div { flex: 1; }
.preparation-empty h2 { font-size: 14px; }
.preparation-empty p { margin-top: 4px; color: var(--muted); font-size: 13px; }
.today-preparation-bridge { display: grid; grid-template-columns: 36px minmax(0,1fr) auto; gap: 11px; align-items: center; padding: 12px 18px; background: #fffaf0; border-bottom: 1px solid #ead6ae; }
.today-preparation-bridge > span { width: 36px; height: 36px; display: grid; place-items: center; color: #8b651e; background: #fff1d3; border-radius: var(--radius); }
.today-preparation-bridge.ready { background: #f4f8fc; border-bottom-color: #d5e0ec; }
.today-preparation-bridge.ready > span { color: #31557f; background: #e7eef6; }
.today-preparation-bridge small, .today-preparation-bridge strong, .today-preparation-bridge p { display: block; }
.today-preparation-bridge small { color: #8b651e; font-size: 12px; font-weight: 700; }
.today-preparation-bridge.ready small { color: #31557f; }
.today-preparation-bridge strong { margin-top: 2px; font-size: 14px; }
.today-preparation-bridge p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.today-preparation-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px 12px; }
.today-preparation-actions a { display: inline-flex; align-items: center; gap: 5px; color: #31557f; font-size: 13px; font-weight: 700; white-space: nowrap; }
.today-preparation-actions a svg { width: 14px; height: 14px; }
.today-workflow-bridge { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); border-bottom: 1px solid var(--line); }
.today-workflow-bridge section { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; gap: 10px; align-items: center; min-width: 0; padding: 13px 18px; background: #fbfcfd; }
.today-workflow-bridge section + section { border-left: 1px solid var(--line); }
.today-workflow-bridge section > span { width: 34px; height: 34px; display: grid; place-items: center; color: #31557f; background: #e8f0f8; border-radius: var(--radius); }
.today-workflow-bridge section > span svg { width: 16px; height: 16px; }
.today-workflow-bridge small, .today-workflow-bridge strong, .today-workflow-bridge p { display: block; overflow-wrap: anywhere; }
.today-workflow-bridge small { color: var(--muted); font-size: 12px; font-weight: 700; }
.today-workflow-bridge strong { margin-top: 2px; font-size: 14px; }
.today-workflow-bridge p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.55; }
.today-workflow-bridge a { display: inline-flex; align-items: center; gap: 4px; color: #31557f; font-size: 13px; font-weight: 700; white-space: nowrap; }
.today-workflow-bridge a svg { width: 13px; height: 13px; }
.today-workflow-bridge .checkin.success { background: #f2faf6; }
.today-workflow-bridge .checkin.success > span { color: #17643a; background: #dff3e9; }
.today-workflow-bridge .checkin.warning, .today-workflow-bridge .checkin.attention { background: #fffaf0; }
.today-workflow-bridge .checkin.warning > span, .today-workflow-bridge .checkin.attention > span { color: #9a6100; background: #fff0d0; }
.today-workflow-bridge .progress.completed > span, .today-workflow-bridge .progress.ahead > span { color: #17643a; background: #e4f4eb; }

@media (max-width: 1180px) {
  .preparation-context { grid-template-columns: 1fr; }
  .preparation-context section { border-right: 0; border-bottom: 1px solid var(--line); }
  .preparation-context section:last-child { border-bottom: 0; }
}

@media (max-width: 760px) {
  .preparation-hero, .preparation-toolbar, .preparation-manual-picker, .preparation-submit-row { align-items: stretch; flex-direction: column; }
  .preparation-hero { padding: 20px; }
  .preparation-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .preparation-toolbar form, .preparation-manual-picker form { display: grid; grid-template-columns: 1fr; width: 100%; }
  .preparation-toolbar label, .preparation-toolbar input, .preparation-toolbar .button, .preparation-manual-picker label, .preparation-manual-picker select, .preparation-manual-picker .button { width: 100%; }
  .preparation-toolbar > div { align-items: flex-start; }
  .preparation-card-head { grid-template-columns: 72px minmax(0,1fr); padding: 15px; }
  .preparation-card-head > .button { grid-column: 1 / -1; width: 100%; }
  .preparation-resource-row { grid-template-columns: 1fr; }
  .preparation-resource-row > div:last-child { display: grid; grid-template-columns: 1fr; }
  .preparation-resource-row a { width: 100%; }
  .preparation-form { padding: 16px; }
  .preparation-form-heading { align-items: flex-start; flex-direction: column; }
  .preparation-form-actions { justify-content: flex-start; }
  .preparation-two-column, .preparation-detail-row { grid-template-columns: 1fr; }
  .preparation-submit-row .button { width: 100%; }
  .preparation-homework-toggle > span { max-width: none; }
  .today-preparation-bridge { grid-template-columns: 36px minmax(0,1fr); }
  .today-preparation-actions { grid-column: 1 / -1; justify-content: stretch; }
  .today-preparation-actions a { flex: 1 1 180px; justify-content: center; min-height: 36px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .today-workflow-bridge { grid-template-columns: 1fr; }
  .today-workflow-bridge section + section { border-top: 1px solid var(--line); border-left: 0; }
  .today-workflow-bridge section { grid-template-columns: 34px minmax(0,1fr); padding: 13px 15px; }
  .today-workflow-bridge a { grid-column: 1 / -1; justify-content: center; min-height: 34px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .preparation-empty { align-items: flex-start; flex-wrap: wrap; }
  .preparation-empty > div { min-width: calc(100% - 60px); }
  .preparation-empty .button { width: 100%; }
}

@media (max-width: 420px) {
  .preparation-metrics { grid-template-columns: 1fr; }
  .preparation-metrics span { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px; text-align: left; }
  .preparation-metrics small { margin: 0; }
}

/* 第三十三阶段：今日教学中心 */
.today-hero { display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 24px 28px; color: #fff; background: #175c53; border-radius: var(--radius-lg); box-shadow: 0 10px 24px rgba(23,92,83,.16); }
.today-hero .overline { color: #bfe1db; }
.today-hero h2 { margin: 4px 0 6px; font-size: 20px; }
.today-hero-copy > p:last-child { color: #d8ebe7; font-size: 13px; line-height: 1.65; }
.today-hero-metrics { display: grid; grid-template-columns: repeat(3,92px); gap: 8px; }
.today-hero-metrics span { padding: 12px; text-align: center; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius); }
.today-hero-metrics strong, .today-hero-metrics small { display: block; }
.today-hero-metrics strong { font-size: 20px; }
.today-hero-metrics small { margin-top: 2px; color: #cfe4e0; font-size: 12px; }
.today-hero-metrics .attention strong { color: #ffd991; }
.today-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 16px; padding: 12px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.today-toolbar form, .today-toolbar > div { display: flex; align-items: center; gap: 10px; }
.today-toolbar label > span, .today-manual-picker label > span, .today-lesson-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 700; }
.today-toolbar input, .today-manual-picker select, .today-lesson-form input, .today-lesson-form textarea { min-height: 38px; padding: 8px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.today-toolbar input:focus, .today-manual-picker select:focus, .today-lesson-form input:focus, .today-lesson-form textarea:focus { background: #fff; border-color: #78a9a1; box-shadow: 0 0 0 3px rgba(23,92,83,.09); }
.today-toolbar > div > svg { width: 22px; height: 22px; color: #24786d; }
.today-toolbar > div strong, .today-toolbar > div span { display: block; }
.today-toolbar > div strong { font-size: 13px; }
.today-toolbar > div span { margin-top: 2px; color: var(--muted); font-size: 12px; }
.today-manual-picker { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 16px 18px; }
.today-manual-picker > div, .today-manual-picker form { display: flex; align-items: center; gap: 12px; }
.today-manual-picker > div > span { width: 42px; height: 42px; display: grid; place-items: center; flex: 0 0 auto; color: #24786d; background: #eaf5f2; border-radius: var(--radius); }
.today-manual-picker strong, .today-manual-picker small { display: block; }
.today-manual-picker strong { font-size: 14px; }
.today-manual-picker small { margin-top: 3px; color: var(--muted); font-size: 12px; }
.today-manual-picker select { min-width: 140px; }
.today-lesson-list { display: grid; gap: 16px; margin-top: 16px; }
.today-lesson { overflow: hidden; }
.today-lesson-head { display: grid; grid-template-columns: 92px minmax(0,1fr) auto; gap: 16px; align-items: center; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.today-period { padding-right: 16px; border-right: 1px solid var(--line); }
.today-period strong, .today-period span { display: block; }
.today-period strong { color: #175c53; font-size: 13px; }
.today-period span { margin-top: 3px; color: var(--muted); font-size: 12px; }
.today-lesson-title > div { display: flex; align-items: center; gap: 6px; }
.today-lesson-title em { display: inline-flex; align-items: center; gap: 4px; padding: 3px 6px; color: #9a6100; background: #fff5df; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; font-weight: 700; }
.today-lesson-title em.saved { color: #17643a; background: #e9f7ef; }
.today-lesson-title em svg { width: 12px; height: 12px; }
.today-lesson-title h2 { margin-top: 5px; font-size: 16px; }
.today-lesson-title p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.today-preclass { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-bottom: 1px solid var(--line); }
.today-preclass section { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 10px; min-width: 0; padding: 15px 18px; border-right: 1px solid var(--line); }
.today-preclass section:last-child { border-right: 0; }
.today-preclass section > span { width: 34px; height: 34px; display: grid; place-items: center; color: #24786d; background: #eef7f5; border-radius: var(--radius); }
.today-preclass section > span svg { width: 17px; height: 17px; }
.today-preclass small, .today-preclass strong, .today-preclass p { display: block; overflow-wrap: anywhere; }
.today-preclass small { color: #24786d; font-size: 12px; font-weight: 700; }
.today-preclass strong { margin-top: 3px; font-size: 14px; line-height: 1.55; }
.today-preclass p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.today-resource-row { display: grid; grid-template-columns: 175px minmax(0,1fr); gap: 16px; align-items: center; padding: 12px 18px; background: #fbfcfc; border-bottom: 1px solid var(--line); }
.today-resource-row > div:first-child { display: flex; align-items: center; gap: 9px; }
.today-resource-row > div:first-child > svg { width: 18px; height: 18px; color: #24786d; }
.today-resource-row strong, .today-resource-row small { display: block; }
.today-resource-row strong { font-size: 13px; }
.today-resource-row small { color: var(--muted); font-size: 12px; }
.today-resource-links { display: flex; flex-wrap: wrap; gap: 7px; }
.today-resource-links a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 8px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 13px; transition: border-color .2s ease, color .2s ease, transform .2s ease; }
.today-resource-links a:hover { color: #175c53; border-color: #9cc7c0; transform: translateY(-1px); }
.today-resource-links a span { color: #24786d; font-size: 12px; font-weight: 700; }
.today-resource-empty { color: var(--muted); font-size: 12px; }
.today-lesson-form { display: grid; gap: 14px; padding: 18px 20px 20px; }
.today-form-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.today-form-heading small { color: #24786d; font-size: 12px; font-weight: 700; }
.today-form-heading h3 { margin-top: 2px; font-size: 16px; }
.today-form-heading > span { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; color: #24786d; background: #eef7f5; border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; }
.today-form-heading > span svg { width: 13px; height: 13px; }
.today-choice-group { padding: 0; border: 0; }
.today-choice-group legend { margin-bottom: 6px; color: var(--text-2); font-size: 13px; font-weight: 700; }
.today-choice-group > div { display: flex; flex-wrap: wrap; gap: 8px; }
.today-choice-group label input { position: absolute; opacity: 0; pointer-events: none; }
.today-choice-group label span { min-height: 38px; display: inline-flex; align-items: center; gap: 6px; padding: 7px 10px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); font-size: 13px; font-weight: 700; cursor: pointer; transition: all .2s ease; }
.today-choice-group label input:checked + span { color: #175c53; background: #eaf5f2; border-color: #7fb8af; box-shadow: 0 0 0 2px rgba(23,92,83,.07); }
.today-choice-group label span svg { width: 14px; height: 14px; }
.today-actual-field textarea { width: 100%; min-height: 62px; resize: vertical; line-height: 1.6; }
.today-note-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.today-note-fields input { width: 100%; }
.today-focus-students { overflow: hidden; background: #fbfcfc; border: 1px solid var(--line); border-radius: var(--radius); }
.today-focus-students summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 11px 12px; cursor: pointer; list-style: none; }
.today-focus-students summary::-webkit-details-marker { display: none; }
.today-focus-students summary > span { display: grid; grid-template-columns: 26px minmax(0,1fr); column-gap: 8px; align-items: center; }
.today-focus-students summary > span > svg { width: 26px; height: 26px; grid-row: span 2; padding: 5px; color: #24786d; background: #eaf5f2; border-radius: var(--radius-sm); }
.today-focus-students summary strong, .today-focus-students summary small { display: block; }
.today-focus-students summary strong { font-size: 13px; }
.today-focus-students summary small { color: var(--muted); font-size: 12px; }
.today-focus-students summary em { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); font-size: 12px; font-style: normal; }
.today-focus-students summary em svg { width: 13px; height: 13px; transition: transform .2s ease; }
.today-focus-students[open] summary em svg { transform: rotate(180deg); }
.today-focus-students > div { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 7px; padding: 10px 12px 12px; border-top: 1px solid var(--line); }
.today-focus-students > div label input { position: absolute; opacity: 0; }
.today-focus-students > div label span { min-height: 36px; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 6px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 13px; cursor: pointer; }
.today-focus-students > div label span svg { width: 12px; height: 12px; color: transparent; }
.today-focus-students > div label input:checked + span { color: #175c53; background: #eaf5f2; border-color: #7fb8af; }
.today-focus-students > div label input:checked + span svg { color: #175c53; }
.today-privacy-note { display: flex; align-items: center; gap: 8px; padding: 10px 12px; color: var(--text-2); background: #f7f8fa; border-radius: var(--radius); font-size: 13px; }
.today-privacy-note svg { width: 16px; height: 16px; color: #24786d; }
.today-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 12px; border-top: 1px solid var(--line); }
.today-submit-row p { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; }
.today-submit-row p svg { width: 15px; height: 15px; color: #24786d; }
.today-bottom-grid { display: grid; grid-template-columns: minmax(300px,.85fr) minmax(0,1.15fr); gap: 16px; margin-top: 16px; }
.today-reminders, .today-summaries { overflow: hidden; }
.today-reminders .panel-heading > span, .today-summaries .panel-heading > span { width: 36px; height: 36px; display: grid; place-items: center; color: #24786d; background: #eaf5f2; border-radius: var(--radius); }
.today-reminder-list { display: grid; padding: 0 16px 16px; }
.today-reminder-list a { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 10px 0; border-bottom: 1px solid #eef0f2; }
.today-reminder-list a:last-child { border-bottom: 0; }
.today-reminder-list a > span { width: 34px; height: 34px; display: grid; place-items: center; color: #24786d; background: #eef7f5; border-radius: var(--radius); }
.today-reminder-list a > span.warning { color: #a76400; background: #fff4dd; }
.today-reminder-list svg { width: 16px; height: 16px; }
.today-reminder-list a > svg { width: 14px; height: 14px; color: var(--muted); }
.today-reminder-list strong, .today-reminder-list p { display: block; }
.today-reminder-list strong { font-size: 13px; }
.today-reminder-list p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.today-summary-list { display: grid; gap: 10px; padding: 0 16px 16px; }
.today-summary-list article { padding: 11px 12px; background: #f8f9fa; border-left: 3px solid #7fb8af; border-radius: 0 var(--radius) var(--radius) 0; }
.today-summary-list article.parent-draft { border-left-color: #d59a36; }
.today-summary-list header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.today-summary-list strong { font-size: 13px; }
.today-summary-list button { display: inline-flex; align-items: center; gap: 4px; padding: 4px 6px; color: #24786d; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 12px; cursor: pointer; }
.today-summary-list button svg { width: 12px; height: 12px; }
.today-summary-list p { margin-top: 7px; color: var(--text-2); font-size: 13px; line-height: 1.7; }
.today-summary-list small { display: flex; align-items: center; gap: 5px; margin-top: 7px; color: #8b671f; font-size: 12px; }
.today-summary-list small svg { width: 13px; height: 13px; }
.today-empty { display: flex; align-items: center; gap: 16px; margin-top: 16px; padding: 24px; }
.today-empty > svg { width: 40px; height: 40px; color: #24786d; }
.today-empty > div { flex: 1; }
.today-empty h2 { font-size: 14px; }
.today-empty p { margin-top: 4px; color: var(--muted); font-size: 13px; }

@media (max-width: 1180px) {
  .today-preclass { grid-template-columns: 1fr; }
  .today-preclass section { border-right: 0; border-bottom: 1px solid var(--line); }
  .today-preclass section:last-child { border-bottom: 0; }
  .today-focus-students > div { grid-template-columns: repeat(4,minmax(0,1fr)); }
}

@media (max-width: 760px) {
  .today-hero, .today-toolbar, .today-manual-picker, .today-submit-row { align-items: stretch; flex-direction: column; }
  .today-hero { padding: 20px; }
  .today-hero-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .today-toolbar form, .today-manual-picker form { display: grid; grid-template-columns: 1fr; width: 100%; }
  .today-toolbar label, .today-toolbar input, .today-toolbar .button, .today-manual-picker label, .today-manual-picker select, .today-manual-picker .button { width: 100%; }
  .today-toolbar > div { align-items: flex-start; }
  .today-lesson-head { grid-template-columns: 72px minmax(0,1fr); padding: 15px; }
  .today-lesson-head > .button { grid-column: 1 / -1; width: 100%; }
  .today-resource-row { grid-template-columns: 1fr; }
  .today-resource-links { display: grid; grid-template-columns: 1fr; }
  .today-resource-links a { width: 100%; }
  .today-lesson-form { padding: 16px; }
  .today-choice-group > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
  .today-choice-group label span { justify-content: center; width: 100%; padding: 7px 5px; text-align: center; }
  .today-note-fields, .today-bottom-grid { grid-template-columns: 1fr; }
  .today-focus-students summary { align-items: flex-start; }
  .today-focus-students > div { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .today-submit-row .button { width: 100%; }
  .today-empty { align-items: flex-start; flex-wrap: wrap; }
  .today-empty > div { min-width: calc(100% - 60px); }
  .today-empty .button { width: 100%; }
}

@media (max-width: 420px) {
  .today-hero-metrics, .today-choice-group > div, .today-focus-students > div { grid-template-columns: 1fr; }
  .today-hero-metrics span { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px; text-align: left; }
  .today-hero-metrics small { margin: 0; }
}

/* 第三十二阶段：学期教学进度 */
.teaching-progress-hero { display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 24px 28px; color: #fff; background: #244b68; border-radius: var(--radius-lg); box-shadow: 0 10px 24px rgba(36,75,104,.14); }
.teaching-progress-hero .overline { color: #b8d8e8; }
.teaching-progress-hero h2 { margin: 4px 0 7px; font-size: 19px; }
.teaching-progress-hero > div:first-child > p:last-child { max-width: 720px; color: #dce9f0; font-size: 13px; line-height: 1.65; }
.teaching-term-state { min-width: 300px; display: grid; grid-template-columns: 44px minmax(0,1fr); gap: 12px; align-items: center; padding: 14px 16px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius); }
.teaching-term-state > span { width: 44px; height: 44px; display: grid; place-items: center; color: #244b68; background: #fff; border-radius: var(--radius); }
.teaching-term-state small, .teaching-term-state p { display: block; color: #cfe0e9; font-size: 12px; }
.teaching-term-state strong { display: block; margin: 2px 0; font-size: 13px; }
.teaching-progress-filter { display: flex; align-items: end; gap: 12px; margin-top: 16px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.teaching-progress-filter label { min-width: 220px; }
.teaching-progress-filter label > span, .teaching-term-form label > span, .teaching-plan-form label > span, .class-progress-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 700; }
.teaching-progress-filter select, .teaching-term-form input, .teaching-term-form select, .teaching-term-form textarea, .teaching-plan-form input, .teaching-plan-form select, .class-progress-form input, .class-progress-form select { width: 100%; min-height: 38px; padding: 8px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.teaching-progress-filter select:focus, .teaching-term-form input:focus, .teaching-term-form select:focus, .teaching-term-form textarea:focus, .teaching-plan-form input:focus, .teaching-plan-form select:focus, .class-progress-form input:focus, .class-progress-form select:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.teaching-empty-term { display: flex; align-items: center; gap: 16px; margin-top: 16px; padding: 24px; }
.teaching-empty-term > svg { width: 38px; height: 38px; color: #315f8f; }
.teaching-empty-term h2 { font-size: 15px; }
.teaching-empty-term p { margin-top: 4px; color: var(--muted); font-size: 10px; }
.teaching-week-summary { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 18px 20px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.teaching-week-title { display: grid; grid-template-columns: 44px minmax(0,1fr); align-items: center; gap: 12px; }
.teaching-week-title > span { width: 44px; height: 44px; display: grid; place-items: center; color: #315f8f; background: #eaf1f7; border-radius: var(--radius); }
.teaching-week-title small, .teaching-week-title p { color: var(--muted); font-size: 12px; }
.teaching-week-title h2 { margin: 2px 0; font-size: 15px; }
.teaching-progress-metrics { display: grid; grid-template-columns: repeat(4,88px); gap: 8px; }
.teaching-progress-metrics > span { padding: 9px 10px; text-align: center; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-progress-metrics strong { display: block; color: #244b68; font-size: 17px; }
.teaching-progress-metrics small { color: var(--muted); font-size: 12px; }
.teaching-progress-metrics .success strong { color: #087c66; }
.teaching-progress-metrics .warning strong { color: #b26900; }
.class-progress-panel { margin-top: 16px; overflow: hidden; }
.class-progress-list { display: grid; gap: 12px; padding: 0 18px 18px; }
.class-progress-item { overflow: hidden; border: 1px solid var(--line); border-left: 3px solid #b7c0ca; border-radius: var(--radius); background: #fff; }
.class-progress-item.completed { border-left-color: #20a36b; }
.class-progress-item.ahead { border-left-color: #287ed0; }
.class-progress-item.behind, .class-progress-item.not_taught { border-left-color: #e49a27; }
.progress-prefill-note { display: flex; align-items: center; gap: 7px; margin: 12px 14px 0; padding: 8px 10px; color: #31557f; background: #edf3f8; border-radius: var(--radius-sm); font-size: 8px; line-height: 1.55; }
.progress-prefill-note svg { flex: 0 0 auto; width: 14px; height: 14px; }
.class-progress-item > header { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 12px 14px; background: #fbfcfd; border-bottom: 1px solid var(--line); }
.class-progress-item h3 { font-size: 14px; }
.class-progress-item header p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.progress-state { padding: 4px 7px; border-radius: var(--radius-sm); color: #66717d; background: #eef1f4; font-size: 12px; font-style: normal; font-weight: 700; white-space: nowrap; }
.progress-state.completed { color: #17643a; background: #e9f7ef; }
.progress-state.ahead { color: #225f9a; background: #eaf3fb; }
.progress-state.behind, .progress-state.not_taught { color: #8c5c07; background: #fff4da; }
.class-progress-target { padding: 12px 14px; }
.class-progress-target small { display: block; color: #315f8f; font-size: 12px; font-weight: 700; }
.class-progress-target strong { display: block; margin-top: 3px; font-size: 14px; }
.class-progress-target p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.class-progress-form { display: grid; grid-template-columns: 150px 160px minmax(160px,1fr) minmax(160px,1fr) auto; gap: 10px; align-items: end; padding: 12px 14px; background: #f7f9fa; border-top: 1px dashed var(--line); }
.progress-readonly { display: flex; gap: 9px; align-items: flex-start; margin: 0 14px 12px; padding: 10px 12px; color: var(--text-2); background: #f5f7f8; border-radius: var(--radius); }
.progress-readonly svg { width: 16px; height: 16px; color: #315f8f; }
.progress-readonly strong, .progress-readonly span { display: block; font-size: 9px; line-height: 1.6; }
.teaching-management { display: grid; gap: 16px; margin-top: 16px; }
.teaching-term-editor, .teaching-plan-editor, .teaching-import-panel, .teaching-plan-list { overflow: hidden; }
.teaching-term-form { display: grid; gap: 14px; padding: 0 18px 18px; }
.teaching-form-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.special-week-field textarea { min-height: 76px; resize: vertical; }
.teaching-form-submit { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 12px; border-top: 1px solid var(--line); }
.teaching-form-submit p { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 9px; }
.teaching-form-submit svg { width: 15px; height: 15px; color: #087c66; }
.teaching-plan-form { display: grid; grid-template-columns: 110px 110px minmax(240px,1.4fr) 90px 100px minmax(140px,1fr); gap: 12px; align-items: end; padding: 0 18px 18px; }
.teaching-plan-form .lesson-field { grid-column: span 3; }
.teaching-plan-form .note-field { grid-column: span 2; }
.teaching-plan-form > .button { justify-self: end; }
.teaching-import-form { display: flex; align-items: center; gap: 12px; padding: 0 18px 18px; }
.teaching-import-form .file-picker { flex: 1; }
.teaching-import-summary { display: grid; grid-template-columns: 40px minmax(0,1fr) auto; gap: 12px; align-items: center; margin: 0 18px 14px; padding: 12px; color: #17643a; background: #f0faf5; border: 1px solid #cce7d9; border-radius: var(--radius); }
.teaching-import-summary > span { width: 40px; height: 40px; display: grid; place-items: center; background: #fff; border-radius: var(--radius); }
.teaching-import-summary strong { display: block; font-size: 11px; }
.teaching-import-summary p { margin-top: 2px; color: #4c6d5d; font-size: 9px; }
.teaching-import-summary > div:last-child { display: flex; gap: 8px; }
.teaching-import-table { margin: 0 18px 18px; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-import-table td strong, .teaching-import-table td small { display: block; }
.teaching-import-table td small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.teaching-plan-rows { display: grid; gap: 8px; padding: 0 18px 18px; }
.teaching-plan-rows article { display: grid; grid-template-columns: 38px minmax(0,1fr) auto; gap: 11px; align-items: center; padding: 10px 12px; background: #fafbfc; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-week-number { width: 36px; height: 36px; display: grid; place-items: center; color: #315f8f; background: #eaf1f7; border-radius: var(--radius); font-size: 12px; font-weight: 800; }
.teaching-plan-rows strong { display: block; font-size: 10px; }
.teaching-plan-rows p { margin-top: 3px; color: var(--muted); font-size: 9px; }
.teaching-plan-rows .locked { display: inline-flex; align-items: center; gap: 5px; padding: 5px 7px; color: #66717d; background: #eef1f4; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; }
.teaching-plan-rows .locked svg { width: 13px; height: 13px; }
.teaching-reminder-card { display: grid; grid-template-columns: 44px minmax(0,1fr) auto auto; gap: 14px; align-items: center; margin-top: 16px; padding: 16px 18px; background: #f4f8fb; border: 1px solid #cddfe9; border-radius: var(--radius-lg); }
.teaching-reminder-card.attention { background: #fffaf0; border-color: #ead9b4; }
.teaching-reminder-icon { width: 44px; height: 44px; display: grid; place-items: center; color: #315f8f; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.teaching-reminder-copy small { color: #315f8f; font-size: 12px; font-weight: 700; }
.teaching-reminder-copy h2 { margin: 2px 0; font-size: 15px; }
.teaching-reminder-copy p { color: var(--muted); font-size: 12px; }
.teaching-reminder-stats { display: flex; gap: 8px; }
.teaching-reminder-stats span { min-width: 62px; padding: 7px 9px; text-align: center; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-reminder-stats strong, .teaching-reminder-stats small { display: block; }
.teaching-reminder-stats strong { color: #315f8f; font-size: 14px; }
.teaching-reminder-stats small { color: var(--muted); font-size: 12px; }
.teaching-reminder-stats .warning strong { color: #a66708; }

@media (max-width: 1180px) {
  .class-progress-form { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .class-progress-form .button { justify-self: end; }
  .teaching-plan-form { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .teaching-plan-form .lesson-field, .teaching-plan-form .note-field { grid-column: span 2; }
  .teaching-reminder-card { grid-template-columns: 44px minmax(0,1fr) auto; }
  .teaching-reminder-card > .button { grid-column: 2 / -1; justify-self: end; }
}

@media (max-width: 760px) {
  .teaching-progress-hero, .teaching-week-summary { align-items: stretch; flex-direction: column; padding: 18px; }
  .teaching-term-state { min-width: 0; }
  .teaching-progress-filter { display: grid; grid-template-columns: 1fr; }
  .teaching-progress-filter label { min-width: 0; }
  .teaching-progress-filter .button { width: 100%; }
  .teaching-progress-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .class-progress-item > header { grid-template-columns: auto minmax(0,1fr); }
  .progress-state { grid-column: 2; justify-self: start; }
  .class-progress-form, .teaching-form-grid, .teaching-plan-form { grid-template-columns: 1fr; }
  .class-progress-form .button, .teaching-plan-form .lesson-field, .teaching-plan-form .note-field, .teaching-plan-form > .button { grid-column: auto; width: 100%; }
  .teaching-form-submit, .teaching-import-form { align-items: stretch; flex-direction: column; }
  .teaching-form-submit .button, .teaching-import-form .button { width: 100%; }
  .teaching-import-summary { grid-template-columns: 36px minmax(0,1fr); }
  .teaching-import-summary > div:last-child { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .teaching-import-summary .button { width: 100%; }
  .teaching-import-table { overflow: visible; }
  .teaching-import-table table { min-width: 0; display: block; }
  .teaching-import-table thead { display: none; }
  .teaching-import-table tbody { display: grid; gap: 8px; padding: 8px; }
  .teaching-import-table tr { display: grid; padding: 8px 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .teaching-import-table td { display: grid; grid-template-columns: 86px minmax(0,1fr); gap: 8px; padding: 7px 0; border: 0; border-bottom: 1px solid #eef0f2; overflow-wrap: anywhere; }
  .teaching-import-table td:last-child { border-bottom: 0; }
  .teaching-import-table td::before { content: attr(data-label); color: var(--muted); font-size: 8px; font-weight: 700; }
  .teaching-plan-rows article { grid-template-columns: 36px minmax(0,1fr); }
  .teaching-plan-rows article > :last-child { grid-column: 2; justify-self: start; }
  .teaching-reminder-card { grid-template-columns: 40px minmax(0,1fr); }
  .teaching-reminder-stats, .teaching-reminder-card > .button { grid-column: 1 / -1; }
  .teaching-reminder-card > .button { width: 100%; }
  .teaching-reminder-stats { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* Personal planner */
.planner-dashboard-card { margin-top: 16px; overflow: hidden; background: #fff; border: 1px solid #dfe4ea; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.planner-dashboard-heading { min-height: 84px; display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.planner-dashboard-heading > span, .planner-editor-icon { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #087c69; background: #eaf8f4; border-radius: var(--radius); }
.planner-dashboard-heading > span svg, .planner-editor-icon svg { width: 20px; height: 20px; }
.planner-dashboard-heading small { display: block; margin-bottom: 2px; color: #087c69; font-size: 12px; font-weight: 700; }
.planner-dashboard-heading h2 { font-size: 16px; }
.planner-dashboard-heading p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.planner-dashboard-body { display: grid; grid-template-columns: 300px minmax(0, 1fr); min-height: 114px; }
.planner-dashboard-counts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; padding: 14px; background: #f7faf9; border-right: 1px solid var(--line); }
.planner-dashboard-counts a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 8px 6px; border-right: 1px solid #e3e9e7; transition: color .2s ease, background .2s ease; }
.planner-dashboard-counts a:last-child { border-right: 0; }
.planner-dashboard-counts a:hover { color: #087c69; background: #fff; }
.planner-dashboard-counts strong { font-size: 22px; }
.planner-dashboard-counts span { color: var(--muted); font-size: 12px; text-align: center; }
.planner-dashboard-counts .danger strong { color: var(--danger); }
.planner-dashboard-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; padding: 8px 18px; }
.planner-dashboard-list > a { min-width: 0; display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 9px; padding: 9px 0; border-bottom: 1px solid #f0f2f3; }
.planner-dashboard-list > a:nth-last-child(-n+2) { border-bottom: 0; }
.planner-dashboard-list > a:hover strong { color: #087c69; }
.planner-mini-check { color: #9aa3ad; }
.planner-mini-check svg { width: 18px; height: 18px; }
.planner-dashboard-list strong, .planner-dashboard-list p { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planner-dashboard-list strong { font-size: 12px; }
.planner-dashboard-list p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.planner-dashboard-empty { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 18px; }
.planner-dashboard-empty > svg { width: 28px; height: 28px; color: #68a698; }
.planner-dashboard-empty strong, .planner-dashboard-empty p { display: block; }
.planner-dashboard-empty strong { font-size: 13px; }
.planner-dashboard-empty p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.planner-dashboard-empty a { margin-left: 12px; color: #087c69; font-size: 12px; font-weight: 700; }

.planner-overview { min-height: 148px; display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 28px 32px; color: #fff; background: #214f56; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.planner-overview .overline { margin-bottom: 7px; color: #a9d7d1; }
.planner-overview h2 { margin-bottom: 7px; font-size: 24px; }
.planner-overview-copy > p:last-child { color: rgba(255, 255, 255, .72); }
.planner-privacy { width: min(350px, 40%); display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 12px; padding: 14px 16px; background: rgba(255, 255, 255, .09); border: 1px solid rgba(255, 255, 255, .18); border-radius: var(--radius); }
.planner-privacy > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #d9fff8; background: rgba(255, 255, 255, .1); border-radius: var(--radius); }
.planner-privacy svg { width: 19px; height: 19px; }
.planner-privacy strong, .planner-privacy p { display: block; }
.planner-privacy strong { font-size: 13px; }
.planner-privacy p { margin-top: 3px; color: rgba(255, 255, 255, .68); font-size: 11px; line-height: 1.6; }
.planner-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.planner-metric { min-height: 80px; display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.planner-metric:hover { border-color: #a8cbc4; box-shadow: var(--shadow); transform: translateY(-2px); }
.planner-metric.active { border-color: #79b7aa; box-shadow: 0 0 0 2px rgba(8, 124, 105, .08); }
.planner-metric > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #087c69; background: #eaf8f4; border-radius: var(--radius); }
.planner-metric > span svg { width: 19px; height: 19px; }
.planner-metric strong { display: block; font-size: 22px; }
.planner-metric p { margin-top: 1px; color: var(--muted); font-size: 11px; }
.planner-metric.danger > span { color: var(--danger); background: #fff1f1; }
.planner-metric.danger strong { color: var(--danger); }
.planner-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(320px, .72fr); align-items: start; gap: 16px; margin-top: 16px; }
.planner-list-panel { min-width: 0; overflow: hidden; }
.planner-list-head { min-height: 92px; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 16px 18px; border-bottom: 1px solid var(--line); }
.planner-list-head h2 { margin-bottom: 4px; font-size: 16px; }
.planner-list-head p { color: var(--muted); font-size: 12px; }
.planner-filters { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.planner-filters a { min-height: 30px; display: inline-flex; align-items: center; justify-content: center; padding: 5px 9px; color: var(--text-2); background: #f5f6f7; border: 1px solid transparent; border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.planner-filters a:hover { color: #087c69; background: #eef8f5; }
.planner-filters a.active { color: #087c69; background: #e7f6f2; border-color: #b8dfd5; }
.planner-list { padding: 6px 18px 12px; }
.planner-item { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 12px; padding: 16px 0 16px 8px; border-bottom: 1px solid #edf0f2; }
.planner-item::before { content: ""; position: absolute; left: 0; top: 20px; bottom: 20px; width: 3px; background: #aab3bd; border-radius: 3px; }
.planner-item.priority-high::before { background: #e49a21; }
.planner-item.overdue::before { background: var(--danger); }
.planner-item:last-child { border-bottom: 0; }
.planner-check-form button { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: #9aa3ad; background: #fff; border: 1px solid #d8dde2; border-radius: 50%; cursor: pointer; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.planner-check-form button:hover { color: #087c69; background: #edf9f6; border-color: #8ec7ba; }
.planner-check-form svg { width: 18px; height: 18px; }
.planner-item.completed { opacity: .7; }
.planner-item.completed .planner-check-form button { color: #087c69; background: #eaf8f4; border-color: #9fd0c5; }
.planner-item.completed h3 { color: var(--muted); text-decoration: line-through; }
.planner-item-copy { min-width: 0; }
.planner-item-copy header { display: flex; align-items: center; gap: 6px; margin-bottom: 7px; }
.planner-category, .priority-tag { min-height: 22px; display: inline-flex; align-items: center; justify-content: center; padding: 3px 7px; border-radius: var(--radius-sm); font-size: 10px; font-weight: 700; font-style: normal; }
.planner-category { color: #315c9b; background: #edf4ff; }
.planner-category.lesson { color: #7a4f15; background: #fff6e6; }
.planner-category.memo { color: #5e6570; background: #f1f2f4; }
.priority-tag { color: #5e6570; background: #f2f3f5; }
.priority-tag.high { color: #9b5404; background: #fff2dc; }
.priority-tag.low { color: #6f7781; background: #f5f6f7; }
.planner-item-copy h3 { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.planner-item-copy > p { max-width: 760px; margin-top: 6px; color: var(--text-2); font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.planner-item-copy footer { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 9px; color: var(--muted); font-size: 10px; }
.planner-date { display: inline-flex; align-items: center; gap: 5px; }
.planner-date svg { width: 14px; height: 14px; }
.planner-date.today { color: #087c69; font-weight: 700; }
.planner-date.overdue { color: var(--danger); font-weight: 700; }
.planner-item-actions { display: flex; align-items: flex-start; gap: 4px; }
.planner-item-actions .icon-button { width: 32px; height: 32px; min-height: 32px; }
.planner-item-actions .danger-soft { color: #c83a3a; background: #fff5f5; border: 1px solid #ffd1d1; }
.planner-item-actions .danger-soft:hover { background: #ffeaea; }
.planner-empty { min-height: 360px; }
.planner-editor { position: sticky; top: 88px; overflow: hidden; }
.planner-form { display: grid; gap: 14px; padding: 18px; }
.planner-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 11px; font-weight: 700; }
.planner-form label > span em { color: var(--danger); font-style: normal; }
.planner-form input, .planner-form select, .planner-form textarea { width: 100%; }
.planner-form textarea { resize: vertical; }
.planner-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.planner-form-note { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: start; gap: 9px; padding: 10px 12px; color: #476862; background: #f1f8f6; border: 1px solid #d5eae5; border-radius: var(--radius); }
.planner-form-note > svg { width: 18px; height: 18px; margin-top: 1px; color: #087c69; }
.planner-form-note strong, .planner-form-note span { display: block; }
.planner-form-note strong { font-size: 11px; }
.planner-form-note span { margin-top: 2px; font-size: 10px; line-height: 1.55; }
.planner-form-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding-top: 2px; }

@media (max-width: 1100px) {
  .planner-dashboard-body { grid-template-columns: 260px minmax(0, 1fr); }
  .planner-dashboard-list { grid-template-columns: 1fr; }
  .planner-dashboard-list > a:nth-last-child(-n+2) { border-bottom: 1px solid #f0f2f3; }
  .planner-dashboard-list > a:last-child { border-bottom: 0; }
  .planner-layout { grid-template-columns: minmax(0, 1fr) 320px; }
}

@media (max-width: 900px) {
  .planner-dashboard-body, .planner-layout { grid-template-columns: 1fr; }
  .planner-dashboard-counts { border-right: 0; border-bottom: 1px solid var(--line); }
  .planner-overview { align-items: flex-start; }
  .planner-privacy { width: 42%; }
  .planner-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .planner-editor { position: static; }
}

@media (max-width: 600px) {
  .planner-dashboard-heading { grid-template-columns: 38px minmax(0, 1fr); padding: 12px; }
  .planner-dashboard-heading > .button { grid-column: 1 / -1; width: 100%; }
  .planner-dashboard-list { padding: 6px 12px; }
  .planner-dashboard-empty { align-items: flex-start; justify-content: flex-start; flex-wrap: wrap; padding: 14px 12px; }
  .planner-dashboard-empty a { width: 100%; margin-left: 40px; }
  .planner-overview { min-height: 0; display: block; padding: 22px 18px; }
  .planner-overview h2 { font-size: 20px; }
  .planner-privacy { width: 100%; margin-top: 18px; }
  .planner-metrics { gap: 8px; }
  .planner-metric { min-height: 72px; gap: 9px; padding: 10px; }
  .planner-metric > span { width: 34px; height: 34px; }
  .planner-list-head { display: block; padding: 14px 12px; }
  .planner-filters { justify-content: flex-start; margin-top: 12px; }
  .planner-list { padding: 4px 12px 10px; }
  .planner-item { grid-template-columns: 32px minmax(0, 1fr); gap: 9px; padding: 14px 0 14px 7px; }
  .planner-item-actions { grid-column: 2; justify-content: flex-end; }
  .planner-form { padding: 14px 12px; }
  .planner-form-grid { grid-template-columns: 1fr; }
  .planner-form-actions .button { flex: 1; }
}

/* School subscription payer and reimbursement details. */
.school-order-billing-fields{display:grid;gap:12px;padding:14px;background:#fbfcfd;border:1px solid #e5e6eb;border-radius:8px}.school-order-billing-note{display:flex;align-items:flex-start;gap:9px;padding:10px 11px;color:#176b58;background:#f1faf6;border:1px solid #d6eee3;border-radius:7px}.school-order-billing-note svg{flex:0 0 17px;margin-top:2px}.school-order-billing-note p{margin:0}.school-order-billing-note strong,.school-order-billing-note span{display:block}.school-order-billing-note strong{font-size:13px}.school-order-billing-note span{margin-top:3px;color:#5c776f;font-size:12px;line-height:1.55}.school-order-billing-fields label>span:first-child{display:block;margin-bottom:6px;color:#4e5969;font-size:13px;font-weight:700}.school-order-billing-fields input,.school-order-billing-fields select,.school-order-billing-fields textarea{width:100%;min-height:42px;padding:9px 10px;color:#1d2129;background:#fff;border:1px solid #d9dde4;border-radius:8px;outline:0;transition:.2s ease}.school-order-billing-fields textarea{resize:vertical;line-height:1.55}.school-order-billing-fields input:focus,.school-order-billing-fields select:focus,.school-order-billing-fields textarea:focus{border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.school-order-billing-fields .checkbox-field>span:last-child{display:flex;align-items:center;gap:7px;min-height:42px;padding:9px 10px;color:#4e5969;background:#fff;border:1px solid #d9dde4;border-radius:8px;font-size:13px;font-weight:400}.school-order-billing-fields .checkbox-field input{width:16px;min-height:16px;padding:0}
@media(max-width:640px){.school-order-billing-fields .finance-inline-fields{grid-template-columns:1fr}}

/* 第二十四阶段：教师学科购买范围与本人任教设置 */
.subject-navigation { display: grid; justify-items: end; gap: 8px; }
.subject-switcher { display: flex; gap: 4px; padding: 4px; background: #eef2f7; border-radius: var(--radius); }
.subject-switcher a { min-height: 36px; display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; color: var(--text-2); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; transition: color .2s ease, background .2s ease, box-shadow .2s ease; }
.subject-switcher a svg { width: 16px; height: 16px; }
.subject-switcher a:hover { color: var(--primary); }
.subject-switcher a.active { color: var(--primary); background: #fff; box-shadow: var(--shadow-sm); }
.subject-grid.single-subject { grid-template-columns: minmax(0, 1fr); }
.subject-grid.single-subject .subject-panel { min-width: 0; }
.subject-setup-empty { min-height: 220px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: 32px; }
.subject-setup-empty > span { width: 56px; height: 56px; display: grid; place-items: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-lg); }
.subject-setup-empty > span svg { width: 26px; height: 26px; }
.subject-setup-empty h2 { margin: 5px 0 8px; font-size: 20px; }
.subject-setup-empty div > p:last-child { color: var(--muted); }
.teaching-entitlement-note { display: flex; gap: 12px; margin-bottom: 16px; padding: 12px 14px; color: #27456f; background: #f2f7ff; border: 1px solid #d7e5ff; border-radius: var(--radius); }
.teaching-entitlement-note > svg { width: 18px; height: 18px; margin-top: 2px; color: var(--primary); }
.teaching-entitlement-note strong { display: block; margin-bottom: 2px; font-size: 13px; }
.teaching-entitlement-note p { color: #6a7c96; font-size: 12px; }
.teaching-subject-list { display: grid; gap: 12px; }
.teaching-subject-card { min-width: 0; margin: 0; padding: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-subject-card legend { width: 100%; display: flex; align-items: center; gap: 10px; padding: 0 0 10px; }
.teaching-subject-card legend > span { width: 32px; height: 32px; display: grid; place-items: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); }
.teaching-subject-card legend svg { width: 17px; height: 17px; }
.teaching-subject-card legend strong { font-size: 14px; }
.teaching-subject-card legend em { margin-left: auto; color: var(--muted); font-size: 11px; font-style: normal; }
.teaching-subject-card.locked { background: #f8f9fb; }
.teaching-subject-card.locked legend > span { color: var(--muted); background: #eceff3; }
.teaching-grade-options { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
.teaching-grade-options label { cursor: pointer; }
.teaching-grade-options input { position: absolute; opacity: 0; pointer-events: none; }
.teaching-grade-options span { min-height: 34px; display: grid; place-items: center; color: var(--text-2); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 11px; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.teaching-grade-options input:checked + span { color: var(--primary); background: var(--primary-soft); border-color: #9fbaff; font-weight: 700; }
.teaching-grade-options input:focus-visible + span { outline: 2px solid rgba(22, 93, 255, .28); outline-offset: 2px; }
.teaching-grade-options input:disabled + span { color: #a8adb5; background: #f1f2f4; cursor: not-allowed; }
.teaching-grade-list { display: grid; gap: 12px; }
.teaching-grade-card { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.teaching-grade-card > header { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: #f7f9fc; border-bottom: 1px solid var(--line); }
.teaching-grade-card > header > span { width: 34px; height: 34px; display: grid; place-items: center; color: #fff; background: var(--primary); border-radius: var(--radius-sm); font-size: 14px; font-weight: 800; }
.teaching-grade-card > header strong, .teaching-grade-card > header small { display: block; }
.teaching-grade-card > header strong { font-size: 13px; }
.teaching-grade-card > header small { margin-top: 1px; color: var(--muted); font-size: 12px; }
.teaching-grade-subjects { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 12px; }
.teaching-grade-subject { min-width: 0; padding: 10px; background: #fff; border: 1px solid #e8ebef; border-radius: var(--radius); transition: border-color .2s ease, box-shadow .2s ease; }
.teaching-grade-subject:has(.teaching-subject-check input:checked) { border-color: #a9c1f7; box-shadow: 0 0 0 3px rgba(22, 93, 255, .06); }
.teaching-grade-subject.locked { background: #f7f8fa; }
.teaching-subject-check { display: block; cursor: pointer; }
.teaching-subject-check input { position: absolute; width: 1px !important; min-height: 0 !important; opacity: 0; pointer-events: none; }
.teaching-subject-check > span { min-height: 36px; display: flex !important; align-items: center; gap: 8px; margin: 0 !important; color: var(--text-2); }
.teaching-subject-check > span::after { content: ''; width: 17px; height: 17px; margin-left: auto; background: #fff; border: 1px solid #bfc6cf; border-radius: 5px; box-shadow: inset 0 0 0 3px #fff; }
.teaching-subject-check input:checked + span::after { background: var(--primary); border-color: var(--primary); }
.teaching-subject-check input:focus-visible + span { outline: 2px solid rgba(22, 93, 255, .25); outline-offset: 2px; border-radius: var(--radius-sm); }
.teaching-subject-check input:disabled + span { color: #9ba1aa; cursor: not-allowed; }
.teaching-subject-check svg { width: 17px; height: 17px; color: var(--primary); }
.teaching-grade-subject.locked .teaching-subject-check svg { color: #9ba1aa; }
.teaching-subject-check b { font-size: 12px; }
.teaching-edition-select { display: block; margin-top: 8px; padding-top: 8px; border-top: 1px solid #eef0f2; }
.teaching-edition-select > span { margin-bottom: 4px !important; color: var(--muted) !important; font-size: 12px !important; }
.profile-settings-form .teaching-edition-select select { width: 100%; min-height: 38px; padding: 6px 28px 6px 9px; color: var(--text-2); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); outline: 0; font-size: 12px; transition: border-color .2s ease, box-shadow .2s ease; }
.profile-settings-form .teaching-edition-select select:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.profile-settings-form .teaching-edition-select select:disabled { color: #9ba1aa; background: #eef0f2; }
.form-inline-warning { display: flex; align-items: center; gap: 8px; padding: 10px 12px; color: #a44b00; background: #fff7e8; border: 1px solid #ffd7a1; border-radius: var(--radius); font-size: 11px; }
.form-inline-warning svg { width: 16px; height: 16px; }
.curriculum-context { display: flex; align-items: center; gap: 8px; min-height: 38px; padding: 9px 11px; color: #365477; background: #f2f7ff; border: 1px solid #d5e3f7; border-radius: var(--radius); font-size: 12px; line-height: 1.5; }
.curriculum-context svg { width: 16px; height: 16px; flex: 0 0 auto; color: var(--primary); }
.curriculum-context strong { color: var(--text); }
.curriculum-context.is-missing { color: #a44b00; background: #fff7e8; border-color: #ffd7a1; }
.curriculum-edition { display: block; margin-top: 5px; color: var(--muted); font-size: 9px; white-space: nowrap; }

@media (max-width: 760px) {
  .subject-navigation { width: 100%; justify-items: stretch; }
  .subject-switcher { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .subject-switcher a { justify-content: center; padding-inline: 6px; }
  .subject-setup-empty { grid-template-columns: 1fr; padding: 24px; }
  .subject-setup-empty .button { width: 100%; }
  .teaching-grade-options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .teaching-grade-subjects { grid-template-columns: 1fr; }
}

* { box-sizing: border-box; }
html { min-width: 320px; background: var(--page); }
body { margin: 0; min-height: 100vh; color: var(--text); background: var(--page); font-size: 14px; line-height: 1.6; }
body.menu-open { overflow: hidden; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
svg { width: 20px; height: 20px; flex: 0 0 auto; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { line-height: 1.25; }
button { border: 0; }

.button,
.icon-button,
.side-nav a,
.filter-tabs a,
.table-action,
.trial-chip,
.metric-card,
.student-list a {
  transition: color .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.button svg { width: 18px; height: 18px; }
.button.primary { color: #fff; background: var(--primary); box-shadow: 0 4px 12px rgba(22, 93, 255, .18); }
.button.primary:hover { background: var(--primary-dark); transform: translateY(-1px); }
.button.secondary { color: var(--text-2); background: #fff; border-color: var(--line-strong); }
.button.secondary:hover { color: var(--primary); border-color: #94b4ff; background: var(--primary-soft); }
.button.danger-soft { color: #c32626; background: #fff7f7; border-color: #ffd0d0; }
.button.danger-soft:hover { color: #a51d1d; background: #fff0f0; border-color: #ffaaaa; }
.button.danger { color: #fff; background: #d9363e; box-shadow: 0 4px 12px rgba(217, 54, 62, .16); }
.button.danger:hover { background: #bd2630; transform: translateY(-1px); }
.button.compact { min-height: 34px; padding: 6px 11px; font-size: 11px; }
.button.full { width: 100%; }
.button:disabled, .button[disabled], .table-action:disabled { color: var(--muted); background: #f7f8fa; border-color: var(--line); box-shadow: none; cursor: not-allowed; transform: none; }
.button.is-busy { pointer-events: none; opacity: .72; }
.button:not(:disabled):active,
.icon-button:not(:disabled):active,
.table-action:not(:disabled):active {
  transform: translateY(1px);
  box-shadow: 0 2px 6px rgba(22, 93, 255, .16);
}
.button:focus-visible,
.icon-button:focus-visible,
.table-action:focus-visible,
.side-nav a:focus-visible {
  outline: 3px solid rgba(22, 93, 255, .18);
  outline-offset: 2px;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: none;
  border-color: #6e9cff;
  box-shadow: 0 0 0 3px rgba(22, 93, 255, .1);
}

.icon-button {
  position: relative;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-2);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius);
  cursor: pointer;
}
.icon-button:hover { color: var(--primary); background: var(--primary-soft); border-color: #d7e4ff; }

.overline { color: var(--primary); font-size: 12px; font-weight: 700; line-height: 1.4; }
.notice { min-height: 44px; display: flex; align-items: center; gap: 10px; margin-bottom: 16px; padding: 10px 14px; border: 1px solid; border-radius: var(--radius); }
.notice svg { width: 18px; height: 18px; }
.notice.success { color: #087c26; background: #f0fff3; border-color: #b7ebc2; }
.notice.warning { color: #a44b00; background: #fff7e8; border-color: #ffd7a1; }
.notice.error { color: #c32626; background: #fff3f3; border-color: #ffcaca; }

/* Login and setup */
.auth-page { background: #edf2f8; }
.auth-layout {
  width: min(1080px, calc(100% - 48px));
  min-height: 660px;
  margin: 48px auto;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(420px, .92fr);
  overflow: hidden;
  background: var(--surface);
  border: 1px solid rgba(201, 205, 212, .8);
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 70px rgba(34, 51, 84, .14);
}
.auth-intro {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 48px;
  color: #fff;
  background: #173a71;
  overflow: hidden;
}
.auth-intro::after {
  content: "";
  position: absolute;
  right: -100px;
  bottom: -120px;
  width: 340px;
  height: 340px;
  border: 64px solid rgba(255, 255, 255, .055);
  border-radius: 50%;
}
.auth-brand, .app-brand { display: flex; align-items: center; gap: 12px; }
.brand-symbol {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  background: var(--primary);
  border-radius: var(--radius);
  box-shadow: 0 6px 14px rgba(22, 93, 255, .25);
}
.brand-symbol svg { width: 25px; height: 25px; }
.auth-brand strong, .app-brand strong { display: block; font-size: 16px; line-height: 1.4; }
.auth-brand small, .app-brand small { display: block; margin-top: 1px; color: rgba(255, 255, 255, .65); font-size: 12px; }
.auth-copy { position: relative; z-index: 1; margin: auto 0 40px; }
.auth-copy .overline { margin-bottom: 12px; color: #8eb3ff; }
.auth-copy h1 { max-width: 470px; margin-bottom: 20px; font-size: 32px; font-weight: 700; letter-spacing: 0; }
.auth-copy > p:last-child { max-width: 480px; color: rgba(255, 255, 255, .72); font-size: 15px; line-height: 1.8; }
.auth-intro blockquote { position: relative; z-index: 1; margin: 0; padding: 16px 0 16px 18px; color: rgba(255, 255, 255, .76); border-left: 3px solid #69c0ff; font-size: 14px; }
.auth-points { position: relative; z-index: 1; display: grid; gap: 12px; }
.auth-points span { display: flex; align-items: center; gap: 10px; color: rgba(255, 255, 255, .78); }
.auth-points svg { width: 18px; height: 18px; color: #8eb3ff; }
.auth-form-wrap { display: flex; flex-direction: column; justify-content: center; padding: 48px; background: #fff; }
.auth-form-heading { margin-bottom: 28px; }
.step-tag { display: inline-flex; margin-bottom: 12px; padding: 4px 9px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; }
.auth-form-heading h2 { margin-bottom: 8px; font-size: 24px; }
.auth-form-heading p { color: var(--muted); }
.existing-account-note { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 12px; margin: -8px 0 20px; padding: 12px 14px; color: #315c9b; background: #f3f7ff; border: 1px solid #d7e4ff; border-radius: var(--radius); transition: background .2s ease, border-color .2s ease, box-shadow .2s ease; }
.existing-account-note > svg { width: 20px; height: 20px; color: var(--primary); }
.existing-account-note strong, .existing-account-note span { display: block; }
.existing-account-note strong { color: var(--text-2); font-size: 13px; }
.existing-account-note span { margin-top: 2px; color: #6681aa; font-size: 12px; }
.existing-account-note a { min-height: 34px; display: inline-flex; align-items: center; justify-content: center; padding: 7px 12px; color: #fff; background: var(--primary); border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; transition: background .2s ease, transform .2s ease; }
.existing-account-note a:hover { background: #0f4fe0; transform: translateY(-1px); }
.existing-account-note.emphasized { background: #edf8f2; border-color: #9fd8b8; box-shadow: 0 0 0 3px rgba(16, 185, 129, .08); }
.auth-form { display: grid; gap: 18px; }
.login-help-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: -6px; color: var(--muted); font-size: 11px; }
.login-help-row a { color: var(--primary); font-weight: 600; }
.login-help-row a:hover { text-decoration: underline; }
.auth-form label > span, .form-stack label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-weight: 600; }
.auth-form label > small { display: block; margin-top: 5px; color: var(--muted); font-size: 12px; }
.auth-form input:not([type="checkbox"]),
.form-stack input,
.form-stack select,
.form-stack textarea,
.student-search input {
  width: 100%;
  min-height: 42px;
  padding: 9px 12px;
  color: var(--text);
  background: #f7f8fa;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  outline: none;
  transition: background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.form-stack textarea { min-height: 104px; resize: vertical; }
.auth-form input:focus,
.form-stack input:focus,
.form-stack select:focus,
.form-stack textarea:focus,
.student-search input:focus { background: #fff; border-color: #6e9cff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .1); }
.input-with-icon { position: relative; }
.input-with-icon > svg { position: absolute; top: 50%; left: 12px; width: 18px; height: 18px; color: var(--muted); transform: translateY(-50%); }
.input-with-icon input { padding-left: 40px !important; }
.check-line { display: flex; align-items: flex-start; gap: 9px; color: var(--text-2); cursor: pointer; }
.check-line input { width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--primary); }
.check-line > span { margin: 0 !important; font-weight: 400 !important; }
.auth-footnote { margin-top: 22px; color: var(--muted); text-align: center; }
.auth-footnote a { display: inline-flex; align-items: center; justify-content: center; gap: 5px; color: var(--primary); font-weight: 600; }
.auth-footnote a svg { width: 15px; height: 15px; }
.role-login-note { display: flex; align-items: flex-start; gap: 10px; margin-top: 18px; padding: 12px; color: #315c9b; background: #f3f7ff; border: 1px solid #d7e4ff; border-radius: var(--radius); }
.role-login-note > svg { width: 18px; height: 18px; margin-top: 2px; color: var(--primary); }
.role-login-note strong, .role-login-note span { display: block; }
.role-login-note strong { color: var(--text-2); font-size: 12px; }
.role-login-note span { margin-top: 2px; color: #6681aa; font-size: 11px; }
.recovery-layout { min-height: 640px; }
.recovery-intro { background: #23455f; }
.recovery-form-wrap { padding-top: 40px; padding-bottom: 40px; }
.recovery-target { display: flex; align-items: center; gap: 11px; margin-bottom: 18px; padding: 12px 14px; color: #087c26; background: #f0fff3; border: 1px solid #b7ebc2; border-radius: var(--radius); }
.recovery-target > svg { width: 20px; height: 20px; }
.recovery-target strong, .recovery-target small { display: block; }
.recovery-target strong { font-size: 12px; }
.recovery-target small { color: #4f7f5b; font-size: 11px; }
.recovery-restart { margin-top: 16px; color: var(--muted); font-size: 11px; text-align: center; }
.recovery-restart a { color: var(--primary); font-weight: 600; }

@media (max-width: 600px) {
  .existing-account-note { grid-template-columns: 30px minmax(0, 1fr); }
  .existing-account-note a { grid-column: 1 / -1; width: 100%; }
}

/* Application shell */
.app-shell { min-height: 100vh; }
.sidebar {
  position: fixed;
  z-index: 30;
  inset: 0 auto 0 0;
  width: var(--sidebar-width);
  display: flex;
  flex-direction: column;
  color: var(--text-2);
  background: #fff;
  border-right: 1px solid var(--line);
}
.sidebar-head { min-height: 72px; display: flex; align-items: center; justify-content: space-between; padding: 12px 20px; border-bottom: 1px solid var(--line); }
.app-brand .brand-symbol { width: 38px; height: 38px; box-shadow: none; }
.app-brand .brand-symbol svg { width: 22px; height: 22px; }
.app-brand strong { color: var(--text); font-size: 15px; }
.app-brand small { color: var(--muted); }
.app-brand > span:last-child { min-width: 0; }
.app-brand.school-brand { max-width: 205px; align-items: flex-start; }
.app-brand.school-brand strong, .app-brand.school-brand small { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app-brand.school-brand em { display: block; margin-top: 2px; color: #9aa1ac; font-size: 10px; font-style: normal; line-height: 1.3; }
.app-brand .brand-symbol.school-logo { overflow: hidden; flex: 0 0 auto; background: #fff; border: 1px solid var(--line); }
.app-brand .brand-symbol.school-logo img { width: 100%; height: 100%; object-fit: contain; }
.organization-chip { display: flex; align-items: center; gap: 10px; margin: 16px 14px 12px; padding: 10px; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); transition: color .2s ease, background .2s ease, border-color .2s ease; }
.organization-chip:hover { background: #fff; border-color: #c7d7f5; }
.organization-chip.active { background: var(--primary-soft); border-color: #bfd3f4; }
.organization-chip > span { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); }
.organization-chip svg { width: 17px; height: 17px; }
.organization-chip div { min-width: 0; }
.organization-chip strong, .organization-chip small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.organization-chip strong { max-width: 154px; color: var(--text); font-size: 13px; }
.organization-chip small { margin-top: 1px; color: var(--muted); font-size: 11px; }
.organization-chip .organization-switch-icon { width: 15px; height: 15px; margin-left: auto; color: var(--muted); }
.side-nav { flex: 1; overflow-y: auto; padding: 4px 12px 16px; }
.nav-group + .nav-group { margin-top: 20px; }
.nav-group > p { margin: 0 8px 7px; color: #a7adb7; font-size: 11px; font-weight: 700; }
.side-nav a { position: relative; min-height: 42px; display: flex; align-items: center; gap: 11px; margin: 3px 0; padding: 8px 11px; border-radius: var(--radius); font-weight: 500; }
.side-nav a svg { width: 19px; height: 19px; color: var(--muted); }
.side-nav a:hover { color: var(--primary); background: #f5f8ff; }
.side-nav a:hover svg { color: var(--primary); }
.side-nav a.active { color: var(--primary); background: var(--primary-soft); font-weight: 700; }
.side-nav a.active::before { content: ""; position: absolute; left: -12px; width: 3px; height: 22px; background: var(--primary); border-radius: 0 3px 3px 0; }
.side-nav a.active svg { color: var(--primary); }
.side-nav a em { min-width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; margin-left: auto; color: #fff; background: var(--warning); border-radius: 10px; font-size: 11px; font-style: normal; }
.sidebar-foot { padding: 12px; border-top: 1px solid var(--line); }
.sidebar-foot > a { display: grid; grid-template-columns: 34px minmax(0, 1fr) 18px; align-items: center; gap: 10px; padding: 8px; border-radius: var(--radius); }
.sidebar-foot > a:hover { background: #f7f8fa; }
.sidebar-foot .user-avatar { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: #365f9d; border-radius: 50%; font-size: 12px; font-weight: 700; overflow: hidden; }
.sidebar-foot strong, .sidebar-foot small { display: block; }
.sidebar-foot strong { color: var(--text); font-size: 13px; }
.sidebar-foot small { color: var(--muted); font-size: 11px; }
.sidebar-foot svg { width: 16px; height: 16px; color: var(--muted); }

.main-area { min-height: 100vh; margin-left: var(--sidebar-width); }
.topbar { position: sticky; z-index: 20; top: 0; min-height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 10px 28px; background: rgba(255, 255, 255, .96); border-bottom: 1px solid var(--line); }
.topbar-title { display: flex; align-items: center; gap: 12px; }
.topbar-title h1 { margin-bottom: 3px; font-size: 18px; }
.topbar-title p { color: var(--muted); font-size: 12px; }
.topbar-actions { display: flex; align-items: center; gap: 6px; }
.trial-chip { min-height: 34px; display: inline-flex; align-items: center; gap: 7px; margin-right: 6px; padding: 6px 10px; color: #a44b00; background: #fff7e8; border: 1px solid #ffd7a1; border-radius: var(--radius); font-size: 12px; font-weight: 600; }
.trial-chip svg { width: 16px; height: 16px; }
.trial-chip.member { color: #087c26; background: #f0fff3; border-color: #b7ebc2; }
.trial-chip.paused { color: #075f54; background: #eef9f6; border-color: #bfe4d9; }
.trial-chip.expired { color: #c32626; background: #fff3f3; border-color: #ffcaca; }
.ai-credit-chip { min-height: 34px; display: inline-flex; align-items: center; gap: 7px; padding: 6px 10px; color: #31557f; background: #f3f7fb; border: 1px solid #cfdae7; border-radius: var(--radius); font-size: 12px; font-weight: 700; transition: color .2s ease, background .2s ease, border-color .2s ease, transform .2s ease; }
.ai-credit-chip:hover { color: #234568; background: #eaf1f8; border-color: #9fb4ca; transform: translateY(-1px); }
.ai-credit-chip svg { width: 15px; height: 15px; }
.notification-dot { position: absolute; top: 8px; right: 8px; width: 6px; height: 6px; background: var(--danger); border: 1px solid #fff; border-radius: 50%; }
.page-content { width: min(1600px, 100%); margin: 0 auto; padding: 24px 28px 40px; }

.welcome-band { min-height: 132px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 28px 32px; color: #fff; background: #173a71; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.welcome-band .overline { margin-bottom: 8px; color: #a8c6ff; }
.welcome-band h2 { margin-bottom: 8px; font-size: 24px; }
.welcome-band p { color: rgba(255, 255, 255, .72); }
.welcome-actions { display: flex; gap: 10px; }
.welcome-actions .button.secondary { color: #fff; background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); }
.welcome-actions .button.secondary:hover { background: rgba(255, 255, 255, .17); }
.trial-banner { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 14px; margin-top: 16px; padding: 12px 16px; background: #fff8eb; border: 1px solid #ffe0b5; border-radius: var(--radius); }
.trial-icon { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: var(--warning); background: #ffefd2; border-radius: var(--radius); }
.trial-banner strong { display: block; color: #7e4108; }
.trial-banner p { color: #9a673b; font-size: 12px; }
.trial-banner > a { display: flex; align-items: center; gap: 7px; color: #9c4f08; font-weight: 600; }
.trial-banner > a svg { width: 16px; height: 16px; }

.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.metric-card { position: relative; min-height: 104px; display: flex; align-items: center; gap: 14px; padding: 20px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.metric-card:hover { border-color: #bfceef; box-shadow: var(--shadow); transform: translateY(-2px); }
.metric-icon { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.metric-icon svg { width: 21px; height: 21px; }
.metric-card p { color: var(--text-2); font-size: 13px; }
.metric-card strong { display: block; margin-top: 2px; font-size: 26px; }
.metric-card strong small { margin-left: 4px; color: var(--muted); font-size: 12px; font-weight: 400; }
.metric-arrow { position: absolute; top: 16px; right: 16px; width: 16px; height: 16px; color: #b9bec7; }
.teacher-outcomes-panel { margin-top: 16px; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.teacher-outcomes-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.outcomes-overline { margin-bottom: 4px; color: #087c69; font-size: 12px; font-weight: 700; }
.teacher-outcomes-heading h2 { margin-bottom: 4px; font-size: 17px; }
.teacher-outcomes-heading > div:first-child > p:last-child { color: var(--muted); font-size: 12px; }
.outcomes-progress { min-width: 126px; padding-left: 18px; border-left: 1px solid var(--line); text-align: right; }
.outcomes-progress strong, .outcomes-progress span { display: block; }
.outcomes-progress strong { color: #087c69; font-size: 26px; line-height: 1; }
.outcomes-progress strong small { margin-left: 2px; color: var(--muted); font-size: 13px; font-weight: 500; }
.outcomes-progress span { margin-top: 5px; color: var(--muted); font-size: 12px; }
.teacher-outcomes-body { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(260px, .85fr); }
.outcome-category-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 6px 18px; }
.outcome-category { min-width: 0; display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px 6px; border-bottom: 1px solid #f0f2f3; transition: background .2s ease, color .2s ease, transform .2s ease; }
.outcome-category:nth-child(odd) { border-right: 1px solid #f0f2f3; padding-right: 14px; }
.outcome-category:nth-child(even) { padding-left: 14px; }
.outcome-category:nth-last-child(-n+2) { border-bottom: 0; }
.outcome-category:hover { background: #fafdfc; transform: translateY(-1px); }
.outcome-category > span, .outcome-next-step > span { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: #8b96a3; background: #f2f4f6; border-radius: var(--radius); }
.outcome-category > span svg, .outcome-next-step > span svg { width: 16px; height: 16px; }
.outcome-category.done > span { color: #087c69; background: #eaf8f4; }
.outcome-category.pending { color: var(--muted); }
.outcome-category strong, .outcome-category p { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.outcome-category strong { font-size: 12px; }
.outcome-category p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.outcome-category em { min-width: 36px; color: #087c69; font-size: 12px; font-style: normal; font-weight: 700; text-align: right; white-space: nowrap; }
.outcome-category.pending em { color: #a0a7b0; font-weight: 500; }
.outcome-next-step { display: flex; align-items: flex-start; gap: 11px; padding: 18px; background: #f7faf9; border-left: 1px solid var(--line); }
.outcome-next-step > span { flex: 0 0 auto; color: #087c69; background: #eaf8f4; }
.outcome-next-step small, .outcome-next-step strong, .outcome-next-step p { display: block; }
.outcome-next-step small { margin-bottom: 4px; color: #087c69; font-size: 12px; font-weight: 700; }
.outcome-next-step strong { font-size: 13px; line-height: 1.4; }
.outcome-next-step p { margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.outcome-next-step a { display: inline-flex; align-items: center; gap: 4px; margin-top: 9px; color: #087c69; font-size: 12px; font-weight: 700; }
.outcome-next-step a svg { width: 14px; height: 14px; }
.outcome-badges { padding: 14px 18px 18px; border-top: 1px solid var(--line); }
.outcome-badges-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.outcome-badges-heading h3 { margin-bottom: 3px; font-size: 13px; }
.outcome-badges-heading p { color: var(--muted); font-size: 12px; }
.outcome-badges-heading > span { padding: 3px 7px; color: #087c69; background: #eaf8f4; border-radius: var(--radius-sm); font-size: 12px; white-space: nowrap; }
.outcome-badge-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.outcome-badge { min-width: 0; display: flex; align-items: flex-start; gap: 9px; padding: 10px; background: #fbfcfd; border: 1px solid #edf0f2; border-radius: var(--radius); }
.outcome-badge > span { width: 28px; height: 28px; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; color: #087c69; background: #eaf8f4; border-radius: 50%; }
.outcome-badge > span svg { width: 14px; height: 14px; }
.outcome-badge strong, .outcome-badge p { display: block; }
.outcome-badge strong { font-size: 13px; }
.outcome-badge p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.outcome-badge.steady > span { color: #31557f; background: #edf4ff; }
.outcome-badge.students > span { color: #7054a8; background: #f2efff; }
.outcome-badge.result > span { color: #a44b00; background: #fff7e8; }
.outcome-badge.start > span { color: #68737f; background: #f0f2f4; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .75fr); gap: 16px; margin-top: 16px; }
.content-panel { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.panel-heading { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.panel-heading h2 { margin-bottom: 4px; font-size: 16px; }
.panel-heading p { color: var(--muted); font-size: 12px; }
.text-link { display: inline-flex; align-items: center; gap: 5px; color: var(--primary); font-size: 12px; font-weight: 600; }
.text-link svg { width: 15px; height: 15px; }
.record-list { padding: 4px 18px 8px; }
.record-row { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid #f0f1f2; }
.record-row:last-child { border-bottom: 0; }
.record-row:hover strong { color: var(--primary); }
.record-type { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.record-type.strength { color: #087c26; background: #effbf2; }
.record-type.improvement { color: #a44b00; background: #fff7e8; }
.record-type svg { width: 17px; height: 17px; }
.record-row strong { display: block; overflow: hidden; color: var(--text); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.record-row p { color: var(--muted); font-size: 12px; }
.record-row time { color: var(--muted); font-size: 12px; }
.focus-panel { align-self: start; }
.focus-list { margin: 0; padding: 8px 18px 18px; list-style: none; }
.focus-list li { display: flex; gap: 12px; padding: 12px 0; border-bottom: 1px solid #f0f1f2; }
.focus-list li:last-child { border-bottom: 0; }
.focus-list li > span { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; font-size: 12px; font-weight: 700; }
.focus-list strong { display: block; font-size: 13px; }
.focus-list p { color: var(--muted); font-size: 12px; }
.task-list { padding: 8px 18px 18px; }
.task-list a { display: grid; grid-template-columns: 8px minmax(0, 1fr); align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid #f0f1f2; }
.task-list a:last-child { border-bottom: 0; }
.status-dot { width: 8px; height: 8px; background: var(--warning); border-radius: 50%; }
.status-dot.in_progress { background: var(--primary); }
.status-dot.review { background: #7c5ce7; }
.status-dot.done { background: var(--success); }
.task-list strong { display: block; font-size: 13px; }
.task-list p { color: var(--muted); font-size: 11px; }

.leader-welcome { background: #183b5b; }
.leader-welcome.vice_principal { background: #244566; }
.leader-welcome.grade_leader { background: #31545f; }
.leader-metric-grid .metric-card:nth-child(3) .metric-icon { color: #087c66; background: #eafaf6; }
.leader-metric-grid .metric-card:nth-child(4) .metric-icon { color: #a44b00; background: #fff7e8; }
.leader-dashboard-grid { grid-template-columns: minmax(0, 1.7fr) minmax(310px, .72fr); }
.leader-quality-panel { overflow: hidden; }
.leader-pulse-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
.leader-pulse { min-height: 92px; display: flex; align-items: center; gap: 10px; padding: 16px; border-right: 1px solid var(--line); }
.leader-pulse:last-child { border-right: 0; }
.leader-pulse > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.leader-pulse > span svg { width: 17px; height: 17px; }
.leader-pulse strong, .leader-pulse p { display: block; }
.leader-pulse strong { font-size: 20px; }
.leader-pulse strong small { margin-left: 3px; color: var(--muted); font-size: 10px; font-weight: 400; }
.leader-pulse p { color: var(--muted); font-size: 10px; }
.leader-pulse.positive > span { color: #087c26; background: #effbf2; }
.leader-pulse.warning > span { color: #a44b00; background: #fff7e8; }
.leader-pulse.stable > span { color: #536b8d; background: #f2f6fb; }
.leader-pulse.review > span { color: #6a4fb3; background: #f4f0ff; }
.leader-weak-section { padding: 18px; }
.subsection-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.subsection-heading h3 { margin-bottom: 3px; font-size: 14px; }
.subsection-heading p { color: var(--muted); font-size: 11px; }
.subsection-heading > span { padding: 3px 7px; color: var(--text-2); background: #f2f3f5; border-radius: var(--radius-sm); font-size: 10px; white-space: nowrap; }
.leader-weak-list { display: grid; }
.leader-weak-list > a { min-height: 56px; display: grid; grid-template-columns: 46px minmax(0, 1fr) 16px; align-items: center; gap: 12px; padding: 9px 4px; border-bottom: 1px solid #eef0f2; transition: color .2s ease, background .2s ease; }
.leader-weak-list > a:last-of-type { border-bottom: 0; }
.leader-weak-list > a:hover { color: var(--primary); background: #fafcff; }
.leader-weak-list > a strong { display: block; font-size: 12px; }
.leader-weak-list > a p { margin-top: 2px; color: var(--muted); font-size: 10px; }
.leader-weak-list > a > svg { width: 15px; height: 15px; color: #b9bec7; }
.leader-quick-links { padding: 4px 18px 14px; border-top: 1px solid var(--line); }
.leader-quick-links > a { min-height: 58px; display: grid; grid-template-columns: 30px minmax(0, 1fr) 16px; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid #eef0f2; }
.leader-quick-links > a:last-child { border-bottom: 0; }
.leader-quick-links > a > svg:first-child { width: 18px; height: 18px; color: var(--primary); }
.leader-quick-links > a > svg:last-child { width: 14px; height: 14px; color: #b9bec7; }
.leader-quick-links strong, .leader-quick-links small { display: block; }
.leader-quick-links strong { font-size: 12px; }
.leader-quick-links small { margin-top: 1px; color: var(--muted); font-size: 10px; }
.leader-quick-links > a:hover strong { color: var(--primary); }

.page-toolbar { min-height: 46px; display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.page-toolbar h2 { margin-bottom: 3px; font-size: 16px; }
.page-toolbar p { color: var(--muted); font-size: 12px; }
.two-column-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
.form-panel { overflow: hidden; }
.form-stack { display: grid; gap: 16px; padding: 18px; }
.form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.form-stack label { min-width: 0; }
.privacy-hint { display: flex; gap: 10px; padding: 12px; color: #315c9b; background: #f3f7ff; border: 1px solid #d7e4ff; border-radius: var(--radius); }
.privacy-hint svg { width: 18px; height: 18px; margin-top: 2px; }
.privacy-hint strong, .privacy-hint span { display: block; }
.privacy-hint strong { font-size: 12px; }
.privacy-hint span { color: #6681aa; font-size: 11px; }
.table-panel { min-width: 0; overflow: hidden; }
.table-wrap { width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px 14px; text-align: left; border-bottom: 1px solid #eef0f2; white-space: nowrap; }
th { color: var(--text-2); background: #f7f8fa; font-size: 12px; font-weight: 600; }
tbody tr:nth-child(even) { background: #fbfcfd; }
tbody tr:hover { background: #f6f9ff; }
td { color: var(--text-2); font-size: 13px; }
td strong { display: block; color: var(--text); }
td small { display: block; color: var(--muted); font-size: 11px; }
td code { padding: 3px 6px; color: #315c9b; background: #f0f5ff; border-radius: var(--radius-sm); font-family: Consolas, monospace; font-size: 11px; }
.align-right { text-align: right; }
.table-action { display: inline-flex; align-items: center; gap: 3px; padding: 5px 7px; color: var(--primary); background: transparent; border-radius: var(--radius-sm); cursor: pointer; font-size: 12px; font-weight: 600; }
.table-action:hover { background: var(--primary-soft); }
.table-action svg { width: 14px; height: 14px; }
.filter-tabs { display: flex; gap: 4px; overflow-x: auto; }
.filter-tabs a { padding: 7px 11px; color: var(--text-2); border-bottom: 2px solid transparent; white-space: nowrap; }
.filter-tabs a:hover { color: var(--primary); }
.filter-tabs a.active { color: var(--primary); border-color: var(--primary); font-weight: 700; }

.growth-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 16px; align-items: start; }
.student-rail { position: sticky; top: 96px; max-height: calc(100vh - 120px); overflow: hidden; }
.rail-heading { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid var(--line); }
.rail-heading h2 { font-size: 15px; }
.rail-heading span { color: var(--muted); font-size: 12px; }
.student-search { position: relative; padding: 12px; }
.student-search svg { position: absolute; top: 50%; left: 24px; width: 16px; height: 16px; color: var(--muted); transform: translateY(-50%); }
.student-search input { min-height: 36px; padding-left: 34px; font-size: 12px; }
.student-list { max-height: calc(100vh - 230px); overflow-y: auto; padding: 0 8px 12px; }
.student-list a { display: grid; grid-template-columns: 32px minmax(0, 1fr) 14px; align-items: center; gap: 9px; margin: 2px 0; padding: 9px; border-radius: var(--radius); }
.student-list a:hover { background: #f7f8fa; }
.student-list a.active { background: var(--primary-soft); }
.student-list a > span { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; color: #fff; background: #5177ad; border-radius: 50%; font-size: 12px; }
.student-list strong, .student-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.student-list strong { color: var(--text); font-size: 12px; }
.student-list small { color: var(--muted); font-size: 12px; }
.student-list a.active strong { color: var(--primary); }
.student-list a > svg { width: 13px; height: 13px; color: var(--muted); }
.empty-rail { padding: 24px 12px; color: var(--muted); text-align: center; }
.empty-rail a { display: block; color: var(--primary); }
.growth-main { min-width: 0; }
.student-profile-band { min-height: 100px; display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 16px; padding: 18px 22px; color: #fff; background: #284f87; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.profile-identity { display: flex; align-items: center; gap: 14px; }
.profile-identity > span { width: 54px; height: 54px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .24); border-radius: 50%; font-size: 15px; font-weight: 700; }
.profile-identity p, .profile-identity small { color: rgba(255, 255, 255, .78); font-size: 12px; }
.profile-identity h2 { margin: 3px 0; font-size: 20px; }
.profile-tags { display: flex; gap: 8px; }
.tag { display: inline-flex; padding: 5px 8px; border-radius: var(--radius-sm); font-size: 11px; }
.profile-tags .tag { font-size: 12px; }
.tag.positive { color: #c9ffd4; background: rgba(0, 180, 42, .2); }
.tag.neutral { color: #dce8ff; background: rgba(255, 255, 255, .1); }
.growth-columns { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 16px; align-items: start; }
.timeline { padding: 20px; }
.timeline-item { position: relative; display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 14px; padding-bottom: 24px; }
.timeline-item:not(:last-child)::before { content: ""; position: absolute; top: 36px; bottom: 0; left: 17px; width: 1px; background: var(--line); }
.timeline-mark { z-index: 1; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border: 1px solid #d7e4ff; border-radius: 50%; }
.timeline-mark.strength { color: #087c26; background: #effbf2; border-color: #b7ebc2; }
.timeline-mark.improvement { color: #a44b00; background: #fff7e8; border-color: #ffd7a1; }
.timeline-mark svg { width: 17px; height: 17px; }
.timeline-body { padding: 2px 0; }
.timeline-meta { display: flex; align-items: center; gap: 7px; margin-bottom: 5px; }
.timeline-meta span { color: var(--muted); font-size: 12px; }
.timeline-meta em { padding: 2px 6px; color: var(--text-2); background: #f2f3f5; border-radius: 4px; font-size: 12px; font-style: normal; }
.timeline-body h3 { margin-bottom: 6px; font-size: 14px; }
.timeline-body > p { color: var(--text-2); line-height: 1.8; }
.timeline-body > small { display: block; margin-top: 8px; color: var(--muted); font-size: 12px; }
.evidence { display: inline-flex; align-items: center; gap: 5px; margin-top: 9px; padding: 5px 8px; color: #536b8d; background: #f5f8fc; border-radius: var(--radius-sm); font-size: 11px; }
.evidence svg { width: 13px; height: 13px; }
.parent-visibility { display: inline-flex; align-items: center; gap: 5px; width: fit-content; padding: 4px 7px; color: #66717f; background: #f0f2f4; border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; white-space: nowrap; }
.parent-visibility.visible { color: #087c4f; background: #eaf8f1; }
.parent-visibility svg { width: 14px; height: 14px; }
.record-sharing-row { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 10px; padding-top: 9px; border-top: 1px solid #eef0f2; }
.record-sharing-row > small { margin-right: auto; color: var(--muted); font-size: 12px; }
.record-sharing-row .text-button, .review-sharing-actions .text-button { min-height: 30px; padding: 4px 7px; font-size: 12px; }
.sticky-panel { position: sticky; top: 96px; }
.stage-review-panel { margin-top: 16px; overflow: hidden; }
.stage-review-heading > span { padding: 4px 7px; color: var(--text-2); background: #f2f3f5; border-radius: var(--radius-sm); font-size: 12px; }
.review-subject-switch { display: flex; align-items: end; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.review-subject-switch label { width: 220px; }
.review-subject-switch label > span, .stage-review-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.review-subject-switch select,
.stage-review-form input, .stage-review-form select, .stage-review-form textarea { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.review-subject-switch select:focus,
.stage-review-form input:focus, .stage-review-form select:focus, .stage-review-form textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.review-snapshot { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 0 18px; background: #fafbfc; border-bottom: 1px solid var(--line); }
.review-snapshot > div { min-height: 76px; display: flex; flex-direction: column; justify-content: center; padding: 12px 16px; border-right: 1px solid var(--line); }
.review-snapshot > div:last-child { border-right: 0; }
.review-snapshot span { color: var(--muted); font-size: 12px; }
.review-snapshot strong { margin-top: 4px; font-size: 18px; }
.review-snapshot strong.up { color: #087c26; }
.review-snapshot strong.down { color: #c63f3f; }
.review-snapshot strong.stable { color: var(--primary); }
.stage-review-form { display: grid; gap: 14px; padding: 20px 18px; }
.review-period-fields { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 12px; }
.review-writing-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.stage-review-form textarea { min-height: 104px; resize: vertical; line-height: 1.65; }
.review-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.review-submit-row p { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; }
.review-submit-row svg { width: 15px; height: 15px; color: var(--success); }
.saved-review-list { display: grid; gap: 10px; padding: 18px; background: #fafbfc; border-top: 1px solid var(--line); }
.saved-review-list .empty-inline p { font-size: 12px; }
.saved-review-list article { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 12px; padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.saved-review-list article > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; }
.saved-review-list article > span svg { width: 18px; height: 18px; }
.saved-review-list header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 10px; }
.saved-review-list header strong, .saved-review-list header small { display: block; }
.saved-review-list header small { margin-top: 3px; color: var(--muted); font-size: 10px; }
.saved-review-list header em { padding: 3px 6px; color: #087c26; background: #effbf2; border-radius: 4px; font-size: 10px; font-style: normal; }
.saved-review-list article > div > p { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 8px; padding: 7px 0; color: var(--text-2); border-top: 1px solid #eef0f2; line-height: 1.65; }
.saved-review-list article b { color: var(--text); font-size: 11px; }
.review-sharing-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 6px; }
.review-sharing-actions form { display: inline-flex; }
.parent-management-panel { margin-top: 16px; overflow: hidden; scroll-margin-top: 86px; }
.parent-management-grid { display: grid; grid-template-columns: minmax(250px, .72fr) minmax(320px, .9fr) minmax(360px, 1.15fr); gap: 16px; padding: 0 18px 18px; }
.parent-management-section { min-width: 0; padding: 16px; background: #fafbfc; border: 1px solid var(--line); border-radius: var(--radius); }
.parent-management-section > header { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 10px; margin-bottom: 14px; }
.parent-management-section > header > span { width: 36px; height: 36px; display: grid; place-items: center; color: #315f8f; background: #eaf2fa; border-radius: var(--radius); }
.parent-management-section > header svg { width: 18px; height: 18px; }
.parent-management-section h3 { margin: 0; font-size: 15px; }
.parent-management-section header p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.parent-bind-status { min-height: 106px; display: flex; flex-direction: column; justify-content: center; margin-bottom: 12px; padding: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.parent-bind-status strong { font-size: 14px; }
.parent-bind-status p { margin-top: 6px; color: var(--muted); font-size: 12px; line-height: 1.65; }
.parent-generated-code { margin-bottom: 12px; padding: 14px; text-align: center; background: #f3f8ff; border: 1px solid #cbdcff; border-radius: var(--radius); }
.parent-generated-code small, .parent-generated-code strong, .parent-generated-code p, .parent-generated-code em { display: block; }
.parent-generated-code small { color: var(--muted); font-size: 12px; }
.parent-generated-code strong { margin: 8px 0 4px; color: #174e91; font-size: 24px; letter-spacing: 0; }
.parent-generated-code p { margin-bottom: 10px; color: var(--text-2); font-size: 12px; }
.parent-generated-code em { margin-top: 8px; color: #6c7785; font-size: 12px; font-style: normal; line-height: 1.5; }
.parent-generated-code em svg { width: 13px; vertical-align: -2px; }
.parent-account-list { display: grid; gap: 8px; }
.parent-account-list > article { padding: 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.parent-account-list strong { display: block; font-size: 13px; }
.parent-account-list p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.parent-account-list small { display: flex; align-items: center; gap: 5px; margin-top: 7px; color: #9a6200; font-size: 12px; }
.parent-account-list small svg { width: 14px; }
.parent-account-list details { margin-top: 9px; padding-top: 8px; border-top: 1px solid #eef0f2; }
.parent-account-list summary { width: fit-content; color: var(--primary); font-size: 12px; font-weight: 700; cursor: pointer; }
.parent-account-list details form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px; margin-top: 10px; }
.parent-account-list label span, .parent-notice-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 12px; font-weight: 700; }
.parent-account-list input, .parent-notice-form input, .parent-notice-form textarea { width: 100%; min-height: 40px; padding: 8px 10px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.parent-account-list input:focus, .parent-notice-form input:focus, .parent-notice-form textarea:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.parent-notice-form { display: grid; gap: 10px; }
.parent-notice-form textarea { min-height: 96px; resize: vertical; line-height: 1.65; }
.parent-notice-form .button { justify-self: end; }
.parent-notice-history { display: grid; gap: 8px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line); }
.parent-notice-history article { padding: 10px 0; border-bottom: 1px solid #edf0f2; }
.parent-notice-history article:last-child { border-bottom: 0; }
.parent-notice-history strong { display: block; font-size: 13px; }
.parent-notice-history p { margin: 5px 0; color: var(--text-2); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.parent-notice-history small, .parent-empty-note { color: var(--muted); font-size: 12px; }
.ai-review-assistant { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(0, 1.2fr); align-items: center; gap: 20px; margin-top: 16px; padding: 18px; overflow: hidden; border-color: #d6e0ea; box-shadow: none; }
.ai-review-assistant.has-result { align-items: stretch; background: #f9fbfd; border-color: #b9cce0; }
.ai-review-intro { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 12px; align-items: center; min-width: 0; }
.ai-review-intro > span { width: 42px; height: 42px; display: grid; place-items: center; color: #31557f; background: #eaf1f8; border-radius: var(--radius); }
.ai-review-intro > span svg { width: 20px; height: 20px; }
.ai-review-intro p { color: #31557f; font-size: 12px; font-weight: 700; }
.ai-review-intro h2 { margin: 2px 0 3px; font-size: 14px; }
.ai-review-intro small { display: block; color: var(--muted); font-size: 12px; line-height: 1.55; }
.ai-review-action, .ai-review-result { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-width: 0; padding-left: 20px; border-left: 1px solid #dce4ec; }
.ai-review-action strong, .ai-review-action p, .ai-review-action small, .ai-review-result strong, .ai-review-result p { display: block; }
.ai-review-action strong { font-size: 13px; }
.ai-review-action p { margin-top: 3px; color: var(--text-2); font-size: 12px; }
.ai-review-action small { display: flex; align-items: center; gap: 5px; margin-top: 6px; color: #9a5c12; font-size: 12px; }
.ai-review-action small svg { width: 13px; height: 13px; }
.button.ai-primary { color: #fff; background: #31557f; border-color: #31557f; }
.button.ai-primary:hover:not(:disabled) { background: #234568; border-color: #234568; }
.ai-review-result strong { display: flex; align-items: center; gap: 6px; color: #17643a; font-size: 13px; }
.ai-review-result strong svg { width: 15px; height: 15px; }
.ai-review-result p { margin-top: 4px; color: var(--text-2); font-size: 12px; }

.process-strip { min-height: 78px; display: flex; align-items: center; justify-content: center; gap: 22px; margin-bottom: 16px; padding: 14px 20px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.process-strip > div { display: flex; align-items: center; gap: 9px; }
.process-strip > div > span { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); background: #f2f3f5; border-radius: 50%; font-size: 12px; font-weight: 700; }
.process-strip > div.active > span { color: #fff; background: var(--primary); }
.process-strip > div.done > span { color: #087c26; background: #effbf2; }
.process-strip > div.done > span svg { width: 14px; height: 14px; }
.process-strip strong, .process-strip small { display: block; }
.process-strip strong { font-size: 12px; }
.process-strip small { color: var(--muted); font-size: 10px; }
.process-strip > svg { width: 16px; height: 16px; color: #c9cdd4; }
.tests-layout { grid-template-columns: minmax(0, 1fr) 350px; }
.subject-badge { display: inline-flex; padding: 3px 7px; background: #f2f3f5; border-radius: var(--radius-sm); font-size: 11px; }
.subject-badge.chinese { color: #315c9b; background: #eef4ff; }
.subject-badge.math { color: #087c66; background: #eafaf6; }
.subject-badge.english { color: #9457a8; background: #f8effc; }

.import-panel { margin-bottom: 16px; overflow: hidden; }
.import-heading { min-height: 76px; display: flex; align-items: center; gap: 13px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.import-heading > span { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.import-heading > div { min-width: 0; flex: 1; }
.import-heading h2 { margin-bottom: 4px; font-size: 16px; }
.import-heading p { color: var(--muted); font-size: 12px; }
.import-upload-form { display: grid; grid-template-columns: 210px minmax(280px, 1fr) auto auto; align-items: end; gap: 12px; padding: 18px; }
.import-upload-form > label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-weight: 600; }
.import-upload-form select { width: 100%; min-height: 42px; padding: 9px 12px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: none; }
.import-upload-form select:focus { background: #fff; border-color: #6e9cff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .1); }
.file-drop { position: relative; min-height: 64px; display: flex; align-items: center; gap: 12px; padding: 10px 14px; color: var(--text-2); background: #f8faff; border: 1px dashed #9fb9e8; border-radius: var(--radius); cursor: pointer; }
.file-drop:hover { color: var(--primary); background: var(--primary-soft); border-color: var(--primary); }
.file-drop input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.file-drop > svg { width: 23px; height: 23px; color: var(--primary); }
.file-drop strong, .file-drop small { display: block; }
.file-drop strong { font-size: 12px; }
.file-drop small { color: var(--muted); font-size: 10px; }
.file-drop.has-file { color: #087c26; background: #f0fff3; border-color: #72ce86; }
.import-summary { min-height: 76px; display: flex; align-items: center; gap: 28px; padding: 12px 18px; background: #fbfcfd; border-bottom: 1px solid var(--line); }
.import-summary > div:not(.import-actions) { display: flex; align-items: center; gap: 10px; }
.summary-icon { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); background: #f2f3f5; border-radius: var(--radius); }
.summary-icon.success { color: #087c26; background: #effbf2; }
.summary-icon.warning { color: #a44b00; background: #fff7e8; }
.summary-icon svg { width: 17px; height: 17px; }
.import-summary strong, .import-summary small { display: block; }
.import-summary strong { font-size: 13px; }
.import-summary small { color: var(--muted); font-size: 10px; }
.import-actions { display: flex; gap: 8px; margin-left: auto; }
.import-preview-table { max-height: 390px; }
.invalid-row { background: #fff8f8 !important; }
.validation-state { display: inline-flex; align-items: center; gap: 4px; padding: 3px 6px; border-radius: var(--radius-sm); font-size: 11px; white-space: normal; }
.validation-state svg { width: 13px; height: 13px; }
.validation-state.valid { color: #087c26; background: #effbf2; }
.validation-state.invalid { color: #c32626; background: #fff0f0; }

.test-detail-header { min-height: 124px; display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; padding: 22px 24px; color: #fff; background: #284f87; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.test-detail-header a { display: inline-flex; align-items: center; gap: 5px; margin-bottom: 8px; color: #c9d9f4; font-size: 11px; }
.test-detail-header a svg { width: 14px; height: 14px; }
.test-detail-header p, .test-detail-header small { color: rgba(255, 255, 255, .7); font-size: 11px; }
.test-detail-header h2 { margin: 4px 0; font-size: 20px; }
.test-detail-header .button.secondary { color: #fff; background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); }
.analysis-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.analysis-metrics > div { min-height: 76px; display: flex; align-items: center; gap: 11px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.analysis-metrics > div > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.analysis-metrics svg { width: 18px; height: 18px; }
.analysis-metrics p { color: var(--muted); font-size: 11px; }
.analysis-metrics strong { display: block; color: var(--text); font-size: 18px; }
.test-analysis-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; margin-bottom: 16px; align-items: start; }
.result-panel { min-width: 0; overflow: hidden; }
.analysis-side { display: grid; gap: 16px; }
.weak-panel, .score-upload-panel { overflow: hidden; }
.weak-list { padding: 8px 18px 16px; }
.weak-list > div:not(.empty-inline) { min-height: 38px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #eef0f2; }
.weak-list > div:last-child { border-bottom: 0; }
.weak-list span { color: var(--text-2); }
.weak-list strong { min-width: 38px; padding: 2px 6px; color: #a44b00; background: #fff7e8; border-radius: var(--radius-sm); font-size: 11px; text-align: center; }
.empty-inline { min-height: 90px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); text-align: center; }
.empty-inline svg { width: 24px; height: 24px; margin-bottom: 6px; color: #b5bbc5; }
.empty-inline p { font-size: 11px; }
.score-upload-form { display: grid; gap: 10px; padding: 14px 18px 18px; }
.file-drop.compact { min-height: 58px; }
.change { display: inline-flex; align-items: center; gap: 2px; padding: 3px 6px; border-radius: var(--radius-sm); font-size: 11px; }
.change svg { width: 12px; height: 12px; }
.change.up { color: #087c26; background: #effbf2; }
.change.down { color: #c32626; background: #fff0f0; }
.change.neutral { color: var(--muted); background: #f2f3f5; }
.comment-cell { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.score-preview-panel { margin-top: 0; }

.subject-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; padding: 20px 22px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.subject-header .overline { margin-bottom: 5px; }
.subject-header h2 { margin-bottom: 5px; font-size: 20px; }
.subject-header > div > p:last-child { color: var(--muted); font-size: 12px; }
.subject-ready-workspace { margin-bottom: 16px; overflow: hidden; background: #fff; border: 1px solid var(--line); border-top: 3px solid #3f6fae; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.subject-ready-workspace.math { border-top-color: #16836f; }
.subject-ready-workspace.english { border-top-color: #8a5d9c; }
.subject-ready-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 22px 24px 18px; border-bottom: 1px solid var(--line); }
.subject-ready-heading h2 { margin: 4px 0 5px; font-size: 20px; }
.subject-ready-heading > div > p:last-child { color: var(--text-2); font-size: 14px; line-height: 1.6; }
.ready-quality { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; padding: 7px 10px; color: #356348; background: #f0f8f3; border: 1px solid #cee4d5; border-radius: var(--radius-sm); font-size: 13px; font-weight: 700; }
.ready-quality svg { width: 16px; height: 16px; }
.subject-ready-context { display: grid; grid-template-columns: minmax(280px, .7fr) minmax(0, 1.3fr); gap: 16px; padding: 16px 24px; background: #f8fafc; border-bottom: 1px solid var(--line); }
.week-plan-context { display: flex; align-items: center; gap: 12px; min-width: 0; padding-right: 16px; border-right: 1px solid var(--line); }
.week-plan-context > span { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; color: #315c9b; background: #eaf1fb; border-radius: var(--radius); }
.subject-ready-workspace.math .week-plan-context > span { color: #087c66; background: #eaf7f4; }
.subject-ready-workspace.english .week-plan-context > span { color: #7c4f90; background: #f6eef9; }
.week-plan-context svg { width: 19px; height: 19px; }
.week-plan-context div { min-width: 0; }
.week-plan-context small, .week-plan-context strong, .week-plan-context p { display: block; }
.week-plan-context small { margin-bottom: 3px; color: var(--muted); font-size: 12px; }
.week-plan-context strong { overflow: hidden; color: var(--text); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.week-plan-context p { margin-top: 3px; color: var(--text-2); font-size: 13px; line-height: 1.5; }
.lesson-pack-switcher { max-height: 248px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 8px; padding-right: 4px; overflow-y: auto; scrollbar-color: #c9d3df transparent; scrollbar-width: thin; }
.lesson-pack-switcher a { min-width: 0; padding: 10px 12px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); transition: color .2s ease, border-color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease; }
.lesson-pack-switcher a:hover { color: var(--primary); border-color: #b9cef2; box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.lesson-pack-switcher a.active { color: #244e88; background: #edf4ff; border-color: #9fbee9; box-shadow: inset 3px 0 0 #3f6fae; }
.subject-ready-workspace.math .lesson-pack-switcher a.active { color: #096b5a; background: #edf9f6; border-color: #9fd4c8; box-shadow: inset 3px 0 0 #16836f; }
.subject-ready-workspace.english .lesson-pack-switcher a.active { color: #714485; background: #f8f0fb; border-color: #d5b8df; box-shadow: inset 3px 0 0 #8a5d9c; }
.lesson-pack-switcher small, .lesson-pack-switcher strong { display: block; }
.lesson-pack-switcher small { margin-bottom: 2px; overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.lesson-pack-switcher strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.ready-pack-document { padding: 22px 24px 24px; }
.ready-pack-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.ready-pack-title > div { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.ready-pack-title > div > span { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; color: #315c9b; background: #eef4ff; border-radius: var(--radius); }
.subject-ready-workspace.math .ready-pack-title > div > span { color: #087c66; background: #eafaf6; }
.subject-ready-workspace.english .ready-pack-title > div > span { color: #7c4f90; background: #f8effc; }
.ready-pack-title svg { width: 20px; height: 20px; }
.ready-pack-title small { display: block; margin-bottom: 3px; color: var(--muted); font-size: 12px; }
.ready-pack-title h3 { margin-bottom: 4px; font-size: 18px; }
.ready-pack-title p { color: var(--text-2); font-size: 14px; line-height: 1.6; }
.ready-pack-title em { flex: 0 0 auto; padding: 4px 7px; color: var(--muted); background: #f2f3f5; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; }
.ready-pack-sections { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.ready-pack-sections > section { min-width: 0; overflow: hidden; background: #fbfcfd; border: 1px solid #e3e7ec; border-radius: var(--radius); }
.ready-pack-sections header { min-height: 70px; display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: #f4f6f8; border-bottom: 1px solid #e3e7ec; }
.ready-pack-sections header > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; color: #315c9b; background: #fff; border: 1px solid #dbe3ee; border-radius: var(--radius-sm); }
.ready-pack-sections header svg { width: 17px; height: 17px; }
.ready-pack-sections h4 { font-size: 15px; }
.ready-pack-sections header p { margin-top: 2px; color: var(--muted); font-size: 12px; line-height: 1.4; }
.ready-pack-sections pre { height: 238px; margin: 0; padding: 14px; overflow: hidden; color: var(--text-2); font-family: inherit; font-size: 14px; line-height: 1.75; white-space: pre-wrap; overflow-wrap: anywhere; }
.ready-pack-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.ready-pack-actions .button { min-height: 40px; }
.ready-pack-actions .button svg { width: 16px; height: 16px; }
.ready-pack-full { margin-top: 14px; border: 1px solid var(--line); border-radius: var(--radius); }
.ready-pack-full summary { display: flex; align-items: center; gap: 7px; min-height: 44px; padding: 10px 14px; color: var(--primary); background: #fafbfc; font-size: 13px; font-weight: 700; cursor: pointer; list-style: none; }
.ready-pack-full summary::-webkit-details-marker { display: none; }
.ready-pack-full summary svg { width: 16px; height: 16px; }
.ready-pack-full summary svg:last-child { margin-left: auto; transition: transform .2s ease; }
.ready-pack-full[open] summary svg:last-child { transform: rotate(180deg); }
.ready-pack-full > pre { max-height: 720px; margin: 0; padding: 18px; overflow: auto; color: var(--text-2); background: #fff; border-top: 1px solid var(--line); font-family: inherit; font-size: 14px; line-height: 1.8; white-space: pre-wrap; overflow-wrap: anywhere; }
.ready-pack-empty { margin: 0 0 16px; }
.grade-switcher { display: flex; gap: 4px; padding: 4px; background: #f2f3f5; border-radius: var(--radius); }
.grade-switcher a { padding: 6px 10px; color: var(--text-2); border-radius: var(--radius-sm); font-size: 12px; white-space: nowrap; }
.grade-switcher a:hover { color: var(--primary); }
.grade-switcher a.active { color: var(--primary); background: #fff; box-shadow: var(--shadow-sm); font-weight: 700; }
.subject-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.subject-panel { padding: 20px; background: #fff; border: 1px solid var(--line); border-top: 3px solid #4e7dc3; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.subject-panel.math { border-top-color: #16a085; }
.subject-panel.english { border-top-color: #9460a8; }
.subject-panel-head { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.subject-panel-head > span { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; color: #315c9b; background: #eef4ff; border-radius: var(--radius); }
.subject-panel.math .subject-panel-head > span { color: #087c66; background: #eafaf6; }
.subject-panel.english .subject-panel-head > span { color: #9457a8; background: #f8effc; }
.subject-panel-head p { color: var(--muted); font-size: 12px; }
.subject-panel-head h2 { font-size: 18px; }
.subject-panel-head em { padding: 4px 7px; color: var(--text-2); background: #f2f3f5; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; }
.feature-list { margin: 18px 0; }
.feature-list > div { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 38px; border-bottom: 1px solid #f0f1f2; }
.feature-list svg { width: 15px; height: 15px; color: var(--success); }
.feature-list span { color: var(--text-2); }
.feature-list small { color: var(--muted); font-size: 12px; }
.semester-focus-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 18px 0; }
.semester-focus-grid section { min-width: 0; padding: 13px 14px; background: #f7f9fc; border: 1px solid #e6eaf0; border-radius: var(--radius); }
.semester-focus-grid header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 7px; }
.semester-focus-grid header span { color: var(--text); font-size: 13px; font-weight: 700; }
.semester-focus-grid header small { color: var(--muted); font-size: 12px; }
.semester-focus-grid p { color: var(--text-2); font-size: 13px; line-height: 1.65; }
.subject-resource-toolbar { display: grid; grid-template-columns: 130px 150px minmax(220px, 1fr) auto; align-items: end; gap: 10px; margin: 18px -20px 0; padding: 14px 20px; background: #f8fafc; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.subject-resource-toolbar label > span:first-child { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.subject-resource-toolbar select, .subject-resource-toolbar input { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.subject-resource-toolbar select:focus, .subject-resource-toolbar input:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.subject-resource-filter-actions { display: flex; gap: 8px; }
.subject-resource-filter-actions .button { min-height: 40px; }
.subject-resource-count { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 18px 0 8px; padding-top: 14px; border-top: 1px solid var(--line); }
.subject-resource-count strong { color: var(--text-2); font-size: 13px; }
.subject-resource-count span { color: var(--muted); font-size: 12px; }
.subject-resource-list { display: grid; gap: 8px; }
.subject-resource-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 14px; background: #fafbfc; border: 1px solid #e8ebef; border-radius: var(--radius); transition: background .2s ease, border-color .2s ease, box-shadow .2s ease; }
.subject-resource-list article:hover { background: var(--primary-soft); border-color: #d7e4ff; }
.subject-resource-main { min-width: 0; }
.subject-resource-tags { display: flex; align-items: center; gap: 5px; margin-bottom: 4px; }
.subject-resource-list em { display: inline-block; margin-bottom: 4px; padding: 2px 5px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 12px; font-style: normal; }
.subject-resource-tags em { margin-bottom: 0; }
.subject-resource-tags span { padding: 2px 5px; color: #087c26; background: #effbf2; border-radius: var(--radius-sm); font-size: 12px; }
.subject-resource-tags span.platform { color: #5f6470; background: #eef0f3; }
.subject-resource-tags b { padding: 2px 5px; color: #8a5a16; background: #fff6e8; border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; }
.subject-resource-tags i.quality { padding: 2px 5px; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; font-weight: 600; }
.subject-resource-tags i.quality.template { color: #6b541f; background: #fff6e2; }
.subject-resource-tags i.quality.reviewed { color: #087c26; background: #effbf2; }
.subject-resource-list h3 { font-size: 14px; }
.subject-resource-list p { margin-top: 4px; color: var(--muted); font-size: 13px; line-height: 1.55; }
.subject-resource-location { display: flex; align-items: center; gap: 4px; margin-top: 7px; color: #5f7596; font-size: 12px; }
.subject-resource-location svg { width: 12px; height: 12px; }
.subject-resource-actions { display: flex; gap: 7px; }
.subject-resource-list .copy-resource { min-height: 34px; padding: 5px 9px; font-size: 12px; }
.subject-resource-list .copy-resource svg, .subject-resource-list .print-resource svg { width: 14px; height: 14px; }
.subject-resource-list .print-resource { min-height: 34px; padding: 5px 9px; font-size: 12px; }
.subject-resource-list .copy-resource.is-copied { color: #087c26; background: #effbf2; border-color: #b7ebc2; }
.subject-resource-detail { grid-column: 1 / -1; border-top: 1px solid #e6eaf0; }
.subject-resource-detail summary { display: flex; align-items: center; gap: 6px; width: fit-content; padding-top: 10px; color: var(--primary); font-size: 12px; font-weight: 600; cursor: pointer; list-style: none; }
.subject-resource-detail summary::-webkit-details-marker { display: none; }
.subject-resource-detail summary svg { width: 14px; height: 14px; }
.subject-resource-detail summary svg:last-child { transition: transform .2s ease; }
.subject-resource-detail[open] summary svg:last-child { transform: rotate(180deg); }
.subject-resource-detail pre { margin-top: 10px; padding: 14px 16px; overflow: auto; color: var(--text-2); background: #fff; border: 1px solid #e5e9ef; border-radius: var(--radius); font: inherit; font-size: 12px; line-height: 1.75; white-space: pre-wrap; overflow-wrap: anywhere; }
.subject-resource-quality-note { display: flex; align-items: flex-start; gap: 9px; margin-top: 8px; padding: 10px 12px; color: #645324; background: #fff9eb; border: 1px solid #f0deb1; border-radius: var(--radius); }
.subject-resource-quality-note.reviewed { color: #176b42; background: #f1faf5; border-color: #c7e7d4; }
.subject-resource-quality-note > svg { width: 17px; height: 17px; flex: 0 0 auto; margin-top: 1px; }
.subject-resource-quality-note p, .subject-resource-quality-note strong, .subject-resource-quality-note span, .subject-resource-quality-note small { display: block; }
.subject-resource-quality-note strong { font-size: 13px; }
.subject-resource-quality-note span { margin-top: 2px; font-size: 12px; line-height: 1.55; }
.subject-resource-quality-note small { margin-top: 3px; opacity: .8; font-size: 12px; }
.subject-resource-feedback { grid-column: 1 / -1; }
.subject-resource-feedback > summary { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-size: 12px; cursor: pointer; list-style: none; }
.subject-resource-feedback > summary::-webkit-details-marker { display: none; }
.subject-resource-feedback > summary svg { width: 13px; height: 13px; }
.subject-resource-feedback form { display: grid; grid-template-columns: 170px minmax(220px, 1fr) auto; align-items: end; gap: 8px; margin-top: 9px; padding: 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.subject-resource-feedback label > span { display: block; margin-bottom: 4px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.subject-resource-feedback select, .subject-resource-feedback input { width: 100%; min-height: 36px; padding: 7px 9px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.subject-resource-feedback select:focus, .subject-resource-feedback input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.subject-resource-feedback-history { display: grid; gap: 7px; margin-top: 9px; }
.subject-resource-feedback-history article { padding: 9px 11px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.subject-resource-feedback-history article strong { color: #9b4d43; font-size: 12px; }
.subject-resource-feedback-history article p { margin-top: 3px; color: var(--text-2); font-size: 12px; line-height: 1.55; }
.subject-resource-feedback-history article small, .subject-resource-feedback-history article em { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; font-style: normal; }
.subject-resource-feedback-history article em { color: #087c26; }
.subject-resource-feedback-history article.resolved { background: #f5fbf7; border-color: #cfe8d7; }
.subject-resource-feedback-history article.resolved strong { color: #176b42; }
.subject-resource-feedback-waiting { display: flex; align-items: flex-start; gap: 6px; margin-top: 9px; padding: 9px 11px; color: #725a24; background: #fff9eb; border: 1px solid #f0deb1; border-radius: var(--radius); font-size: 12px; line-height: 1.55; }
.subject-resource-feedback-waiting svg { flex: 0 0 auto; width: 14px; height: 14px; margin-top: 2px; }
.subject-resource-empty { min-height: 132px; display: flex; flex-direction: column; align-items: center; justify-content: center; margin-top: 18px; padding: 16px; color: var(--muted); background: #fafbfc; border: 1px dashed var(--line-strong); border-radius: var(--radius); text-align: center; }
.subject-resource-empty svg { width: 24px; height: 24px; margin-bottom: 6px; color: #b5bbc5; }
.subject-resource-empty strong { color: var(--text-2); font-size: 12px; }
.subject-resource-empty p { max-width: 220px; margin-top: 4px; font-size: 12px; }
.subject-tool-entry { margin-top: 8px; }
.pinyin-tool { margin-top: 16px; overflow: hidden; background: #fff; border: 1px solid #cad8ea; border-radius: var(--radius-lg); box-shadow: 0 10px 24px rgba(49,92,155,.09); }
.pinyin-tool-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 24px; color: #fff; background: #315c9b; }
.pinyin-tool-heading .overline { color: #cfe0fb; }
.pinyin-tool-heading h2 { margin: 4px 0 6px; font-size: 24px; }
.pinyin-tool-heading p:last-child { max-width: 660px; color: #e5eefb; font-size: 13px; line-height: 1.65; }
.pinyin-tool-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.pinyin-tool-actions .button.secondary { color: #244e88; background: #fff; border-color: #fff; }
.pinyin-tool-actions .button.primary { color: #315c9b; background: #dceaff; border-color: #dceaff; }
.pinyin-tool-actions .button.active { color: #fff; background: #214779; border-color: #86aee6; }
.pinyin-tool-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 16px; padding: 16px; background: #f5f8fc; }
.pinyin-main-column { display: grid; gap: 12px; min-width: 0; }
.pinyin-category-tabs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; padding: 5px; background: #e9eff7; border: 1px solid #d8e2ef; border-radius: var(--radius); }
.pinyin-category-tabs button { display: grid; gap: 2px; min-width: 0; padding: 9px 6px; color: #52657e; background: transparent; border: 0; border-radius: var(--radius-sm); cursor: pointer; font: inherit; transition: color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease; }
.pinyin-category-tabs button:hover { color: #315c9b; background: #f8fbff; transform: translateY(-1px); }
.pinyin-category-tabs button.active { color: #315c9b; background: #fff; box-shadow: var(--shadow-sm); font-weight: 700; }
.pinyin-category-tabs small { color: #8b9ab0; font-size: 11px; font-weight: 400; }
.pinyin-draw-panel, .pinyin-blend-panel, .pinyin-mixed-panel, .pinyin-record-panel { background: #fff; border: 1px solid #dde5ef; border-radius: var(--radius); }
.pinyin-draw-panel { padding: 18px; }
.pinyin-draw-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.pinyin-kicker { display: inline-flex; padding: 4px 7px; color: #315c9b; background: #edf4ff; border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; }
.pinyin-draw-toolbar p { margin-top: 5px; color: var(--muted); font-size: 12px; }
.pinyin-card { display: grid; min-height: 192px; place-items: center; align-content: center; gap: 12px; margin-top: 16px; color: #1f3e70; background: linear-gradient(135deg, #f7fbff 0%, #eaf2fc 100%); border: 1px solid #cbdcf2; border-radius: 10px; text-align: center; transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.pinyin-card.is-revealed { border-color: #7ea6d7; box-shadow: 0 8px 20px rgba(49,92,155,.10); transform: translateY(-2px); }
.pinyin-card strong { font-size: 64px; line-height: 1; letter-spacing: 1px; }
.pinyin-card span { color: #60738d; font-size: 14px; }
.pinyin-draw-tip { display: flex; align-items: flex-start; gap: 7px; margin-top: 12px; padding: 9px 11px; color: #596f8d; background: #f8fafc; border: 1px solid #e4ebf4; border-radius: var(--radius-sm); font-size: 12px; line-height: 1.55; }
.pinyin-draw-tip svg { flex: 0 0 auto; width: 16px; margin-top: 1px; color: #b77b20; }
.pinyin-blend-panel, .pinyin-mixed-panel { padding: 16px; }
.pinyin-blend-panel .panel-heading, .pinyin-mixed-panel .panel-heading, .pinyin-record-panel .panel-heading { margin: 0; padding: 0 0 12px; }
.pinyin-blend-panel h3, .pinyin-mixed-panel h3, .pinyin-record-panel h3 { font-size: 16px; }
.pinyin-blend-panel .panel-heading p, .pinyin-mixed-panel .panel-heading p, .pinyin-record-panel .panel-heading p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.pinyin-blend-result { display: grid; grid-template-columns: 1fr 28px 1fr 28px 1.4fr; align-items: center; gap: 8px; padding: 14px; background: #f8fafc; border: 1px solid #e3eaf3; border-radius: var(--radius); text-align: center; }
.pinyin-blend-result > div { min-width: 0; }
.pinyin-blend-result small, .pinyin-blend-result strong, .pinyin-blend-result span { display: block; }
.pinyin-blend-result small { color: var(--muted); font-size: 11px; }
.pinyin-blend-result strong { margin-top: 4px; color: #315c9b; font-size: 22px; }
.pinyin-blend-result .result-main strong { font-size: 28px; }
.pinyin-blend-result .result-main span { margin-top: 3px; color: #6d7c90; font-size: 12px; }
.pinyin-blend-result > b { color: #a8b5c5; font-size: 18px; }
.pinyin-mixed-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.pinyin-mixed-grid button { min-width: 0; padding: 9px; color: var(--text-2); background: #fbfcfe; border: 1px solid #e3eaf3; border-radius: var(--radius-sm); cursor: pointer; text-align: left; transition: border-color .2s ease, background .2s ease, transform .2s ease; }
.pinyin-mixed-grid button:hover { color: #315c9b; background: #f3f7fd; border-color: #aec5e3; transform: translateY(-1px); }
.pinyin-mixed-grid strong, .pinyin-mixed-grid span { display: block; }
.pinyin-mixed-grid strong { font-size: 15px; }
.pinyin-mixed-grid span { margin-top: 3px; overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.pinyin-record-panel { align-self: start; padding: 16px; }
.pinyin-record-mark { display: grid; place-items: center; width: 34px; height: 34px; color: #315c9b; background: #edf4ff; border-radius: var(--radius-sm); }
.pinyin-record-mark svg { width: 18px; }
.pinyin-class-picker { padding: 12px; background: #f7f9fc; border: 1px solid #e4eaf2; border-radius: var(--radius); }
.pinyin-record-panel label { display: grid; gap: 5px; color: var(--text-2); font-size: 12px; font-weight: 700; }
.pinyin-record-panel label > span { color: var(--text-2); }
.pinyin-record-panel select, .pinyin-record-panel input, .pinyin-record-panel textarea { width: 100%; min-height: 38px; padding: 8px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; font: inherit; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.pinyin-record-panel select:focus, .pinyin-record-panel input:focus, .pinyin-record-panel textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.pinyin-record-form { display: grid; gap: 11px; margin-top: 12px; }
.pinyin-record-form .form-row { display: grid; grid-template-columns: 1fr 1.25fr; gap: 8px; }
.pinyin-record-form textarea { resize: vertical; line-height: 1.55; }
.pinyin-empty { display: grid; justify-items: center; gap: 6px; padding: 28px 12px; color: var(--muted); text-align: center; }
.pinyin-empty svg { width: 27px; color: #8da2bd; }
.pinyin-empty strong { color: var(--text-2); font-size: 13px; }
.pinyin-empty p { font-size: 12px; line-height: 1.55; }
.pinyin-record-note { display: flex; align-items: flex-start; gap: 7px; margin-top: 12px; padding-top: 12px; color: var(--muted); border-top: 1px solid var(--line); font-size: 11px; line-height: 1.55; }
.pinyin-record-note svg { flex: 0 0 auto; width: 15px; color: #2a8a62; }
.pinyin-projector-mode { background: #142238; }
.pinyin-projector-mode .app-shell > main { background: #142238; }
.pinyin-projector-mode .pinyin-tool { max-width: 1280px; margin: 24px auto; border-color: #3b5475; box-shadow: 0 16px 38px rgba(0,0,0,.24); }
.pinyin-projector-mode .pinyin-tool-heading { padding: 30px 34px; }
.pinyin-projector-mode .pinyin-tool-layout { grid-template-columns: minmax(0, 1fr); padding: 22px; background: #1c2d47; }
.pinyin-projector-mode .pinyin-record-panel { display: none; }
.pinyin-projector-mode .pinyin-card { min-height: 320px; }
.pinyin-projector-mode .pinyin-card strong { font-size: 112px; }
.pinyin-projector-mode .pinyin-category-tabs { max-width: 760px; margin: 0 auto; }
@media (max-width: 900px) {
  .pinyin-tool-layout { grid-template-columns: 1fr; }
  .pinyin-record-panel { order: -1; }
}
@media (max-width: 640px) {
  .subject-tool-entry { width: 100%; }
  .pinyin-tool-heading { align-items: flex-start; flex-direction: column; padding: 18px; }
  .pinyin-tool-heading h2 { font-size: 20px; }
  .pinyin-tool-actions { width: 100%; justify-content: stretch; }
  .pinyin-tool-actions .button { flex: 1; }
  .pinyin-tool-layout { padding: 10px; }
  .pinyin-category-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pinyin-draw-toolbar { align-items: flex-start; flex-direction: column; }
  .pinyin-draw-toolbar .button { width: 100%; }
  .pinyin-card { min-height: 160px; }
  .pinyin-card strong { font-size: 50px; }
  .pinyin-blend-result { grid-template-columns: 1fr 20px 1fr; }
  .pinyin-blend-result > b:nth-of-type(2) { display: none; }
  .pinyin-blend-result .result-main { grid-column: 1 / -1; padding-top: 8px; border-top: 1px solid #e3eaf3; }
  .pinyin-mixed-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pinyin-record-form .form-row { grid-template-columns: 1fr; }
  .pinyin-projector-mode .pinyin-card strong { font-size: 72px; }
}
.multiplication-tool { margin-top: 16px; overflow: hidden; color: #19342d; background: #fff; border: 1px solid #cbd9d4; border-radius: var(--radius-lg); box-shadow: 0 10px 24px rgba(28,76,62,.09); }
.multiplication-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 24px; color: #fff; background: #245b4b; }
.multiplication-heading .overline { color: #c7e5db; }
.multiplication-heading h2 { margin: 4px 0 6px; font-size: 24px; }
.multiplication-heading p:last-child { max-width: 680px; color: #e0f0eb; font-size: 13px; line-height: 1.65; }
.multiplication-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.multiplication-actions .button.secondary { color: #245b4b; background: #fff; border-color: #fff; }
.multiplication-actions .button.primary { color: #24483e; background: #f1c66d; border-color: #f1c66d; }
.multiplication-actions .button.active { color: #fff; background: #183f34; border-color: #8bbbad; }
.multiplication-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; padding: 16px; background: #f3f7f5; }
.multiplication-main, .multiplication-sidebar { display: grid; align-content: start; gap: 12px; min-width: 0; }
.multiplication-control-panel, .multiplication-stage, .multiplication-session-panel, .multiplication-table-panel, .multiplication-record-panel, .multiplication-stats-panel { background: #fff; border: 1px solid #d9e4e0; border-radius: var(--radius); }
.multiplication-control-panel { display: grid; gap: 13px; padding: 16px; }
.multiplication-control-group { display: grid; gap: 7px; }
.multiplication-control-group > span, .multiplication-control-row label > span { color: #526a63; font-size: 12px; font-weight: 700; }
.multiplication-mode-tabs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 5px; padding: 5px; background: #e9f0ed; border-radius: var(--radius); }
.multiplication-mode-tabs button { min-height: 38px; padding: 7px 8px; color: #536b64; background: transparent; border: 0; border-radius: var(--radius-sm); cursor: pointer; font: inherit; font-size: 12px; transition: color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease; }
.multiplication-mode-tabs button:hover { color: #245b4b; background: #f8fbfa; transform: translateY(-1px); }
.multiplication-mode-tabs button.active { color: #fff; background: #2e6b59; box-shadow: var(--shadow-sm); font-weight: 700; }
.multiplication-control-row { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(120px, .7fr) auto; align-items: end; gap: 10px; }
.multiplication-control-row label { display: grid; gap: 5px; }
.multiplication-control-row select, .multiplication-record-panel select, .multiplication-record-panel input, .multiplication-record-panel textarea, .multiplication-answer-entry input { width: 100%; min-height: 40px; padding: 8px 10px; color: var(--text); background: #f8faf9; border: 1px solid #cedad6; border-radius: var(--radius); outline: 0; font: inherit; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.multiplication-control-row select:focus, .multiplication-record-panel select:focus, .multiplication-record-panel input:focus, .multiplication-record-panel textarea:focus, .multiplication-answer-entry input:focus { background: #fff; border-color: #4e8a78; box-shadow: 0 0 0 3px rgba(46,107,89,.10); }
.multiplication-stage { position: relative; overflow: hidden; padding: 18px; }
.multiplication-stage::before { position: absolute; inset: 0 auto 0 0; width: 4px; background: #d29a32; content: ""; }
.multiplication-stage-status { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #61766f; font-size: 12px; }
.multiplication-stage-status strong { padding: 5px 8px; color: #7a5717; background: #fff7e7; border: 1px solid #ecd5a7; border-radius: var(--radius-sm); font-size: 12px; }
.multiplication-prompt { display: grid; min-height: 188px; place-items: center; align-content: center; gap: 11px; padding: 22px; text-align: center; }
.multiplication-prompt small { color: #8b6a2d; font-size: 12px; font-weight: 700; }
.multiplication-prompt strong { color: #1e5647; font-size: 52px; line-height: 1.15; }
.multiplication-prompt span { max-width: 560px; color: #667a74; font-size: 13px; line-height: 1.6; }
.multiplication-answer-entry { max-width: 560px; margin: 0 auto 12px; }
.multiplication-answer-entry label { display: block; margin-bottom: 5px; color: #526a63; font-size: 12px; font-weight: 700; }
.multiplication-answer-entry > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.multiplication-reveal { display: grid; justify-items: center; gap: 3px; max-width: 560px; margin: 0 auto 12px; padding: 12px; color: #1f5748; background: #eef7f3; border: 1px solid #bfdbd2; border-radius: var(--radius); }
.multiplication-reveal small { color: #668078; font-size: 11px; }
.multiplication-reveal strong { font-size: 22px; }
.multiplication-feedback { min-height: 22px; color: #657971; font-size: 12px; text-align: center; }
.multiplication-feedback.success { color: #19704f; }
.multiplication-feedback.warning { color: #9a6505; }
.multiplication-feedback.error { color: #c33d3d; }
.multiplication-stage-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 10px; }
.multiplication-stage-actions .button.success { color: #fff; background: #2f7a60; border-color: #2f7a60; }
.multiplication-stage-actions .button.warning { color: #765015; background: #fff6e5; border-color: #e7c984; }
.multiplication-session-panel { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }
.multiplication-session-panel > div { display: flex; flex-wrap: wrap; gap: 8px; }
.multiplication-session-panel span { display: grid; grid-template-columns: 22px auto; grid-template-rows: auto auto; min-width: 104px; padding: 7px 10px; background: #f8faf9; border: 1px solid #e0e8e5; border-radius: var(--radius-sm); }
.multiplication-session-panel svg { grid-row: 1 / 3; align-self: center; width: 16px; color: #4d7b6d; }
.multiplication-session-panel small { color: #71827d; font-size: 10px; }
.multiplication-session-panel strong { color: #244f43; font-size: 17px; }
.multiplication-table-panel { padding: 16px; }
.multiplication-table-panel .panel-heading, .multiplication-record-panel .panel-heading, .multiplication-stats-panel .panel-heading { margin: 0; padding: 0 0 12px; }
.multiplication-table-panel h3, .multiplication-record-panel h3, .multiplication-stats-panel h3 { font-size: 16px; }
.multiplication-table-panel .panel-heading p, .multiplication-record-panel .panel-heading p, .multiplication-stats-panel .panel-heading p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.multiplication-table { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.multiplication-table button { min-width: 0; padding: 8px 6px; color: #284d43; background: #fbfcfc; border: 1px solid #dce6e2; border-radius: var(--radius-sm); cursor: pointer; text-align: center; transition: border-color .2s ease, background .2s ease, transform .2s ease; }
.multiplication-table button:hover { background: #eef7f3; border-color: #8cb8aa; transform: translateY(-1px); }
.multiplication-table small, .multiplication-table strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.multiplication-table small { color: #73857f; font-size: 10px; }
.multiplication-table strong { margin-top: 3px; font-size: 12px; }
.multiplication-record-panel, .multiplication-stats-panel { padding: 16px; }
.multiplication-record-panel .panel-heading > span { display: grid; flex: 0 0 auto; place-items: center; width: 34px; height: 34px; color: #27644f; background: #e8f3ef; border-radius: var(--radius-sm); }
.multiplication-record-panel .panel-heading > span svg { width: 18px; }
.multiplication-class-picker { padding: 11px; background: #f6f9f8; border: 1px solid #e0e8e5; border-radius: var(--radius); }
.multiplication-record-panel label { display: grid; gap: 5px; color: #435c55; font-size: 12px; font-weight: 700; }
.multiplication-record-form { display: grid; gap: 10px; margin-top: 11px; }
.multiplication-record-form textarea { resize: vertical; line-height: 1.55; }
.multiplication-stats-list { display: grid; gap: 6px; }
.multiplication-stats-list button { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; padding: 9px 10px; color: #2b5046; background: #fafcfc; border: 1px solid #dce6e2; border-radius: var(--radius-sm); cursor: pointer; text-align: left; transition: border-color .2s ease, background .2s ease; }
.multiplication-stats-list button:hover { background: #eef7f3; border-color: #91baad; }
.multiplication-stats-list strong, .multiplication-stats-list small { display: block; }
.multiplication-stats-list strong { font-size: 12px; }
.multiplication-stats-list small { margin-top: 2px; color: #768780; font-size: 10px; }
.multiplication-stats-list em { flex: 0 0 auto; color: #8a621b; font-size: 11px; font-style: normal; }
.multiplication-empty { display: grid; justify-items: center; gap: 6px; padding: 26px 10px; color: var(--muted); text-align: center; }
.multiplication-empty.compact { padding: 20px 8px; }
.multiplication-empty svg { width: 26px; color: #7ea496; }
.multiplication-empty strong { color: var(--text-2); font-size: 13px; }
.multiplication-empty p { font-size: 12px; line-height: 1.55; }
.multiplication-safety-note { display: flex; align-items: flex-start; gap: 7px; margin-top: 12px; padding-top: 12px; color: var(--muted); border-top: 1px solid var(--line); font-size: 11px; line-height: 1.55; }
.multiplication-safety-note svg { flex: 0 0 auto; width: 15px; color: #2f7a60; }
.multiplication-projector-mode { background: #102a23; }
.multiplication-projector-mode .app-shell > main { background: #102a23; }
.multiplication-projector-mode .multiplication-tool, .multiplication-tool:fullscreen { max-width: 1400px; margin: 20px auto; background: #f3f7f5; border-color: #3f7163; }
.multiplication-projector-mode .multiplication-layout, .multiplication-tool:fullscreen .multiplication-layout { grid-template-columns: minmax(0, 1fr); }
.multiplication-projector-mode .multiplication-sidebar, .multiplication-projector-mode .multiplication-table-panel, .multiplication-tool:fullscreen .multiplication-sidebar, .multiplication-tool:fullscreen .multiplication-table-panel { display: none; }
.multiplication-projector-mode .multiplication-prompt, .multiplication-tool:fullscreen .multiplication-prompt { min-height: 330px; }
.multiplication-projector-mode .multiplication-prompt strong, .multiplication-tool:fullscreen .multiplication-prompt strong { font-size: 88px; }
@media (max-width: 980px) {
  .multiplication-layout { grid-template-columns: 1fr; }
  .multiplication-sidebar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .multiplication-table { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .multiplication-heading { align-items: flex-start; flex-direction: column; padding: 18px; }
  .multiplication-heading h2 { font-size: 20px; }
  .multiplication-actions { width: 100%; justify-content: stretch; }
  .multiplication-actions .button { flex: 1 1 calc(50% - 4px); }
  .multiplication-layout { padding: 10px; }
  .multiplication-mode-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .multiplication-control-row { grid-template-columns: 1fr 1fr; }
  .multiplication-control-row .button { grid-column: 1 / -1; width: 100%; }
  .multiplication-prompt { min-height: 156px; padding: 16px 8px; }
  .multiplication-prompt strong { font-size: 38px; }
  .multiplication-stage-actions .button { flex: 1 1 calc(50% - 4px); }
  .multiplication-session-panel { align-items: stretch; flex-direction: column; }
  .multiplication-session-panel > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .multiplication-session-panel span { min-width: 0; padding: 6px; }
  .multiplication-session-panel .button { width: 100%; }
  .multiplication-table { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .multiplication-sidebar { grid-template-columns: 1fr; }
  .multiplication-projector-mode .multiplication-prompt strong, .multiplication-tool:fullscreen .multiplication-prompt strong { font-size: 58px; }
}
.resource-import-panel { margin-top: 16px; overflow: hidden; }
.resource-upload-form { display: grid; grid-template-columns: 280px minmax(260px, 1fr) auto; align-items: center; gap: 16px; padding: 16px 18px 18px; }
.resource-upload-form > div { padding: 10px 12px; color: var(--text-2); background: #fafbfc; border: 1px solid var(--line); border-radius: var(--radius); }
.resource-upload-form > div strong { display: block; margin-bottom: 2px; font-size: 11px; }
.resource-upload-form > div p { color: var(--muted); font-size: 10px; }
.resource-preview-table { max-height: 420px; }
.resource-preview-table td strong, .resource-preview-table td small { display: block; }
.resource-preview-table td small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.resource-library-panel { margin-top: 16px; overflow: hidden; }
.resource-total { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 11px; font-weight: 700; }
.resource-total svg { width: 15px; height: 15px; }
.resource-filter-form { display: grid; grid-template-columns: repeat(4, 120px) minmax(220px, 1fr) auto; align-items: end; gap: 10px; padding: 14px 18px; background: #fafbfc; border-bottom: 1px solid var(--line); }
.resource-filter-form label { min-width: 0; }
.resource-filter-form label > span, .resource-editor-grid label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.resource-filter-form select, .resource-filter-form input,
.resource-editor-grid select, .resource-editor-grid input, .resource-editor-grid textarea { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.resource-filter-form select:focus, .resource-filter-form input:focus,
.resource-editor-grid select:focus, .resource-editor-grid input:focus, .resource-editor-grid textarea:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.resource-filter-form .input-with-icon > svg { width: 16px; height: 16px; }
.resource-filter-actions { display: flex; gap: 8px; }
.resource-filter-actions .button { min-height: 40px; padding-inline: 13px; }
.resource-edit-form { margin: 16px 18px 4px; overflow: hidden; background: #f8faff; border: 1px solid #d9e5ff; border-radius: var(--radius); }
.resource-edit-heading { min-height: 60px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; background: #f1f6ff; border-bottom: 1px solid #d9e5ff; }
.resource-edit-heading > div { display: flex; align-items: center; gap: 10px; }
.resource-edit-heading > div > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: #fff; border: 1px solid #d9e5ff; border-radius: var(--radius); }
.resource-edit-heading > div > span svg { width: 17px; height: 17px; }
.resource-edit-heading h3 { font-size: 14px; }
.resource-edit-heading p { margin-top: 2px; color: var(--muted); font-size: 10px; }
.resource-editor-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; padding: 14px; }
.resource-editor-grid label { min-width: 0; }
.resource-editor-grid textarea { min-height: 152px; resize: vertical; line-height: 1.65; }
.resource-wide-field { grid-column: span 2; }
.resource-content-field { grid-column: span 3; }
.resource-sort-field small { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; }
.resource-editor-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 8px; padding-top: 2px; }
.managed-resource-list { padding: 4px 18px 18px; }
.managed-resource-row { min-height: 126px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: 16px 0; border-bottom: 1px solid #eef0f2; }
.managed-resource-row:last-child { border-bottom: 0; }
.managed-resource-row.inactive { opacity: .72; }
.managed-resource-main { min-width: 0; }
.managed-resource-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-bottom: 7px; }
.managed-resource-tags em, .resource-status { display: inline-flex; align-items: center; min-height: 22px; padding: 2px 6px; border-radius: var(--radius-sm); font-size: 10px; font-style: normal; }
.managed-resource-tags em { color: var(--text-2); background: #f2f3f5; }
.resource-status.active { color: #087c26; background: #effbf2; }
.resource-status.inactive { color: #6b7280; background: #eceff3; }
.resource-review-status, .resource-feedback-count { display: inline-flex; align-items: center; min-height: 22px; padding: 2px 6px; border-radius: var(--radius-sm); font-size: 10px; }
.resource-review-status.pending { color: #9a6700; background: #fff6df; }
.resource-review-status.reviewed { color: #087c26; background: #effbf2; }
.resource-review-status.rejected, .resource-feedback-count { color: #b42318; background: #fff0ef; }
.managed-resource-main h3 { font-size: 14px; }
.managed-resource-main > p { max-width: 860px; margin-top: 4px; color: var(--text-2); font-size: 12px; line-height: 1.55; }
.managed-resource-main > small { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 8px; color: #5f7596; font-size: 10px; }
.managed-resource-main > small svg { width: 13px; height: 13px; }
.managed-resource-main > small span { margin-left: 7px; color: var(--muted); }
.managed-resource-actions { display: flex; align-items: center; gap: 8px; }
.managed-resource-actions form { margin: 0; }
.managed-resource-actions .button { min-height: 36px; padding: 6px 10px; font-size: 11px; }
.managed-resource-actions .button svg { width: 15px; height: 15px; }
.school-resource-review { grid-column: 1 / -1; }
.school-resource-review > summary { display: inline-flex; align-items: center; gap: 6px; color: var(--primary); font-size: 11px; font-weight: 600; cursor: pointer; list-style: none; }
.school-resource-review > summary::-webkit-details-marker { display: none; }
.school-resource-review > summary svg { width: 14px; height: 14px; }
.school-resource-review-body { display: grid; grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr); gap: 16px; margin-top: 10px; padding: 12px; background: #f8faff; border: 1px solid #dce6f8; border-radius: var(--radius); }
.school-resource-review-body section { padding: 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.school-resource-review-body section strong, .school-resource-review-body section p, .school-resource-review-body section small, .school-resource-review-body section em { display: block; }
.school-resource-review-body section strong { font-size: 10px; }
.school-resource-review-body section p { margin-top: 4px; color: var(--text-2); font-size: 11px; line-height: 1.55; }
.school-resource-review-body section small { margin-top: 8px; color: var(--muted); font-size: 9px; }
.school-resource-review-body section em { margin-top: 7px; color: #8a4b06; font-size: 10px; font-style: normal; }
.school-resource-review-body form { display: grid; gap: 8px; }
.school-resource-review-body form > label > span { display: block; margin-bottom: 4px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.school-resource-review-body form > label > input { width: 100%; min-height: 36px; padding: 7px 9px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.school-review-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.school-review-checks label { display: flex; align-items: center; gap: 6px; color: var(--text-2); font-size: 10px; cursor: pointer; }
.school-review-checks input { width: 14px; height: 14px; accent-color: var(--primary); }
.school-resource-review-body form > div:last-child { display: flex; justify-content: flex-end; gap: 7px; }

.resource-review-dashboard { margin-top: 16px; }
.resource-review-task-list { display: grid; gap: 8px; }
.resource-review-task-list > a, .resource-review-history-list > a { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 12px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); transition: border-color .2s ease, background-color .2s ease, transform .2s ease; }
.resource-review-task-list > a:hover, .resource-review-history-list > a:hover, .resource-review-history-list > a.active { background: #f7faff; border-color: #b9cdf1; }
.resource-review-task-list > a:hover { transform: translateY(-1px); }
.resource-review-task-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 34px; width: 34px; height: 34px; color: var(--primary); background: #edf4ff; border-radius: 8px; }
.resource-review-task-list > a > div, .resource-review-history-list > a > div { min-width: 0; flex: 1; }
.resource-review-task-list strong, .resource-review-task-list small, .resource-review-history-list strong, .resource-review-history-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.resource-review-task-list small, .resource-review-history-list small { margin-top: 4px; color: var(--muted); font-size: 12px; }
.resource-review-page, .resource-review-history { margin-top: 16px; }
.resource-review-page > .panel-heading { align-items: flex-start; }
.resource-review-document { margin-top: 16px; padding: 16px; background: #fbfcfe; border: 1px solid var(--line); border-radius: 10px; }
.resource-review-document > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.resource-review-kicker { display: block; color: var(--primary); font-size: 12px; font-weight: 700; }
.resource-review-document h3 { margin: 6px 0 4px; font-size: 20px; line-height: 1.3; }
.resource-review-document header p, .resource-review-document header small { display: block; color: var(--text-2); line-height: 1.6; }
.resource-review-document header small { margin-top: 8px; color: var(--muted); font-size: 12px; }
.review-task-status { display: inline-flex; align-items: center; flex: 0 0 auto; min-height: 24px; padding: 3px 8px; color: #556070; background: #eef1f4; border-radius: 6px; font-size: 12px; font-weight: 700; }
.review-task-status.submitted { color: #165dff; background: #e8f0ff; }
.review-task-status.approved { color: #087c52; background: #e7f8ef; }
.review-task-status.serious_issue { color: #b42318; background: #fff0ef; }
.review-task-status.needs_revision { color: #9a6700; background: #fff6df; }
.resource-review-links { display: flex; flex-wrap: wrap; gap: 8px; padding: 16px 0; }
.resource-review-content { padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: 8px; }
.resource-review-content h4, .resource-review-check-form h4 { margin: 0 0 10px; font-size: 16px; }
.resource-review-content pre { max-height: 560px; margin: 0; overflow: auto; color: var(--text-2); font: inherit; line-height: 1.75; white-space: pre-wrap; }
.resource-review-check-form { display: grid; gap: 12px; margin-top: 16px; padding: 16px; background: #f4f8ff; border: 1px solid #d9e6fb; border-radius: 8px; }
.resource-review-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.resource-review-check-grid label { display: flex; align-items: flex-start; gap: 9px; min-height: 64px; padding: 12px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; }
.resource-review-check-grid input { flex: 0 0 auto; width: 16px; height: 16px; margin-top: 2px; accent-color: var(--primary); }
.resource-review-check-grid span, .resource-review-check-grid strong, .resource-review-check-grid small { display: block; }
.resource-review-check-grid strong { font-size: 14px; }
.resource-review-check-grid small { margin-top: 4px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.resource-review-check-form > label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-weight: 700; }
.resource-review-check-form textarea { width: 100%; min-height: 120px; padding: 10px 12px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: 8px; outline: 0; resize: vertical; transition: border-color .2s ease, box-shadow .2s ease; }
.resource-review-check-form textarea:focus { border-color: #8db4f8; box-shadow: 0 0 0 3px rgba(22,93,255,.1); }
.resource-review-submit-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.resource-review-result { display: flex; gap: 10px; margin-top: 16px; padding: 12px; color: var(--text-2); background: #eef8f2; border: 1px solid #c9ead5; border-radius: 8px; }
.resource-review-result svg { flex: 0 0 auto; color: #087c52; }
.resource-review-result p, .resource-review-result span { display: block; margin: 0; line-height: 1.6; }
.resource-review-result span { margin-top: 3px; color: var(--muted); }
.resource-review-history-list { display: grid; gap: 8px; }
.resource-review-history-list > a { justify-content: space-between; }

@media (max-width: 720px) {
  .resource-review-document { padding: 12px; }
  .resource-review-document > header { display: block; }
  .resource-review-document > header .review-task-status { margin-top: 10px; }
  .resource-review-document h3 { font-size: 18px; }
  .resource-review-links .button, .resource-review-submit-actions .button { width: 100%; justify-content: center; }
  .resource-review-check-grid { grid-template-columns: 1fr; }
}
.school-resource-feedback-list { display: grid; gap: 8px; margin-top: 9px; }
.school-resource-feedback-list article { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 420px); gap: 12px; padding: 10px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.school-resource-feedback-list article span { color: #b42318; font-size: 10px; font-weight: 700; }
.school-resource-feedback-list article p { margin-top: 3px; color: var(--text-2); font-size: 11px; }
.school-resource-feedback-list article small, .school-resource-feedback-list article em { display: block; margin-top: 3px; color: var(--muted); font-size: 9px; font-style: normal; }
.school-resource-feedback-list article em { color: #087c26; }
.school-resource-feedback-list form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 7px; }
.school-resource-feedback-list input { width: 100%; min-height: 36px; padding: 7px 9px; border: 1px solid var(--line); border-radius: var(--radius); }
.principle-note { display: flex; gap: 12px; margin-top: 16px; padding: 15px 18px; color: #315c9b; background: #f4f7fc; border: 1px solid #d9e2ef; border-radius: var(--radius); }
.principle-note > svg { width: 20px; height: 20px; margin-top: 1px; }
.principle-note strong { display: block; margin-bottom: 3px; }
.principle-note p { color: #5f7596; font-size: 12px; }

.management-loop { display: flex; align-items: center; justify-content: center; gap: 28px; margin-bottom: 16px; padding: 18px 24px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.management-loop > div { display: flex; align-items: center; gap: 10px; }
.management-loop > div > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.management-loop strong, .management-loop small { display: block; }
.management-loop strong { font-size: 12px; }
.management-loop small { color: var(--muted); font-size: 10px; }
.management-loop > svg { width: 17px; height: 17px; color: var(--line-strong); }
.school-quality-panel { margin-bottom: 16px; overflow: hidden; }
.school-quality-heading > span { padding: 4px 8px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 11px; }
.school-quality-filter { display: flex; align-items: end; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.school-quality-filter label { width: 190px; }
.school-quality-filter label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.school-quality-filter select { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.school-quality-filter select:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.school-quality-metrics { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); padding: 0 18px; background: #fafbfc; border-bottom: 1px solid var(--line); }
.school-quality-metrics > div { min-height: 82px; display: flex; align-items: center; gap: 10px; padding: 14px 12px; border-right: 1px solid var(--line); }
.school-quality-metrics > div:last-child { border-right: 0; }
.school-quality-metrics > div > span { width: 34px; height: 34px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.school-quality-metrics > div.positive > span { color: #087c26; background: #effbf2; }
.school-quality-metrics > div.warning > span { color: #a44b00; background: #fff7e8; }
.school-quality-metrics svg { width: 17px; height: 17px; }
.school-quality-metrics small, .school-quality-metrics strong { display: block; }
.school-quality-metrics small { color: var(--muted); font-size: 10px; }
.school-quality-metrics strong { margin-top: 3px; font-size: 17px; }
.school-quality-body { display: grid; grid-template-columns: minmax(0, 1fr) 340px; align-items: start; }
.school-quality-body > section { min-width: 0; padding: 18px; border-right: 1px solid var(--line); }
.school-quality-body > aside { padding: 18px; }
.quality-section-title { min-height: 42px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.quality-section-title h3 { font-size: 14px; }
.quality-section-title p { margin-top: 3px; color: var(--muted); font-size: 10px; }
.quality-section-title em { padding: 3px 6px; color: var(--text-2); background: #f2f3f5; border-radius: 4px; font-size: 10px; font-style: normal; }
.quality-class-table th, .quality-class-table td { padding: 10px 9px; }
.quality-class-table td strong, .quality-class-table td small { display: block; }
.quality-class-table td small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.quality-state { display: inline-flex; padding: 3px 6px; border-radius: 4px; font-size: 10px; }
.quality-state.positive { color: #087c26; background: #effbf2; }
.quality-state.warning { color: #a44b00; background: #fff7e8; }
.quality-state.neutral { color: var(--text-2); background: #f2f3f5; }
.school-weak-list { display: grid; gap: 6px; }
.school-weak-list article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 9px; min-height: 54px; padding: 8px 0; border-bottom: 1px solid #eef0f2; }
.school-weak-list article:last-child { border-bottom: 0; }
.school-weak-list strong, .school-weak-list small { display: block; }
.school-weak-list small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.school-weak-list em { color: #a44b00; font-size: 10px; font-style: normal; }
.quality-note { display: flex; align-items: flex-start; gap: 8px; padding: 11px 18px; color: #536b8d; background: #f5f8fc; border-top: 1px solid #dfe7f1; font-size: 10px; }
.quality-note svg { width: 15px; height: 15px; flex: 0 0 auto; }
.school-layout { grid-template-columns: minmax(0, 1fr) 370px; }
.count-chip { padding: 4px 8px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 11px; }
.deployment-list { padding: 8px 18px 18px; }
.deployment-list article { position: relative; display: grid; grid-template-columns: 4px minmax(0, 1fr) 40px; gap: 14px; padding: 16px 0; border-bottom: 1px solid #eef0f2; }
.deployment-list article:last-child { border-bottom: 0; }
.status-line { background: var(--warning); border-radius: 2px; }
.status-line.in_progress { background: var(--primary); }
.status-line.review { background: #7c5ce7; }
.status-line.done { background: var(--success); }
.deployment-list article.overdue { background: linear-gradient(90deg, #fff8f8 0, #fff 34%); }
.deployment-main > div { display: flex; gap: 6px; margin-bottom: 6px; }
.deployment-main em { padding: 2px 6px; color: var(--text-2); background: #f2f3f5; border-radius: 4px; font-size: 10px; font-style: normal; }
.deployment-main h3 { margin-bottom: 6px; font-size: 14px; }
.deployment-main > p { color: var(--text-2); }
.deployment-main footer { display: flex; gap: 18px; margin-top: 10px; color: var(--muted); font-size: 11px; }
.deployment-main footer span { display: inline-flex; align-items: center; gap: 5px; }
.deployment-main footer svg { width: 13px; height: 13px; }
.deployment-main em.task-state.in_progress { color: var(--primary); background: var(--primary-soft); }
.deployment-main em.task-state.review { color: #6941c6; background: #f3efff; }
.deployment-main em.task-state.done { color: #087c26; background: #effbf2; }
.deployment-main em.task-overdue { color: #c32626; background: #fff0f0; }

.task-workspace { display: grid; grid-template-columns: 320px minmax(0, 1fr); align-items: start; gap: 16px; }
.task-navigation { position: sticky; top: 84px; overflow: hidden; }
.task-navigation-list { max-height: calc(100vh - 190px); overflow-y: auto; padding: 6px 12px 12px; }
.task-navigation-list > a { display: grid; grid-template-columns: 8px minmax(0, 1fr) 18px; align-items: center; gap: 10px; min-height: 86px; padding: 11px 9px; border-bottom: 1px solid #eef0f2; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.task-navigation-list > a:last-of-type { border-bottom: 0; }
.task-navigation-list > a:hover { background: #f7f9fc; }
.task-navigation-list > a.active { background: var(--primary-soft); border-color: #dbe6ff; border-radius: var(--radius); }
.task-navigation-list strong { display: block; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.task-navigation-list p { margin-top: 3px; color: var(--text-2); font-size: 10px; }
.task-navigation-list small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.task-navigation-list > a > svg { width: 15px; height: 15px; color: var(--muted); }
.task-detail-column { min-width: 0; display: grid; gap: 16px; }
.task-detail-header { min-height: 116px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 22px; color: #fff; background: #173a71; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.task-detail-title { min-width: 0; display: flex; align-items: center; gap: 14px; }
.task-status-icon { width: 46px; height: 46px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: #fff; background: rgba(255, 255, 255, .13); border: 1px solid rgba(255, 255, 255, .18); border-radius: var(--radius); }
.task-status-icon svg { width: 22px; height: 22px; }
.task-detail-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.task-detail-tags span, .task-detail-tags em { padding: 2px 6px; color: rgba(255, 255, 255, .78); background: rgba(255, 255, 255, .1); border-radius: 4px; font-size: 10px; font-style: normal; }
.task-detail-tags em.review { color: #eee7ff; background: rgba(163, 132, 255, .25); }
.task-detail-tags em.done { color: #d8f8df; background: rgba(64, 194, 103, .22); }
.task-detail-tags em.overdue { color: #ffe2e2; background: rgba(245, 63, 63, .22); }
.task-detail-title h2 { overflow-wrap: anywhere; font-size: 18px; }
.task-detail-title > div > p { margin-top: 5px; color: rgba(255, 255, 255, .65); font-size: 11px; }
.task-deadline { flex: 0 0 auto; padding-left: 22px; border-left: 1px solid rgba(255, 255, 255, .16); text-align: right; }
.task-deadline span, .task-deadline strong { display: block; }
.task-deadline span { color: rgba(255, 255, 255, .58); font-size: 10px; }
.task-deadline strong { margin-top: 3px; font-size: 13px; }
.task-objective-panel, .task-effect-panel, .task-update-history, .task-update-form-panel { overflow: hidden; }
.task-objective-content { padding: 16px 18px 18px; color: var(--text-2); line-height: 1.75; }
.effect-scope { padding: 4px 7px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 10px; }
.task-effect-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
.task-effect-metrics > div { min-height: 82px; padding: 14px 18px; background: #fafbfc; border-right: 1px solid var(--line); }
.task-effect-metrics > div:last-child { border-right: 0; }
.task-effect-metrics span, .task-effect-metrics strong { display: block; }
.task-effect-metrics span { color: var(--muted); font-size: 10px; }
.task-effect-metrics strong { margin-top: 4px; font-size: 18px; }
.task-effect-metrics .positive strong { color: #087c26; }
.task-effect-metrics .negative strong { color: #c32626; }
.task-effect-breakdown { display: flex; align-items: center; gap: 18px; padding: 11px 18px; }
.task-effect-breakdown span { display: inline-flex; align-items: center; gap: 5px; color: var(--text-2); font-size: 11px; }
.task-effect-breakdown svg { width: 14px; height: 14px; }
.task-effect-breakdown .positive { color: #087c26; }
.task-effect-breakdown .negative { color: #c32626; }
.task-effect-empty { min-height: 116px; padding: 20px; }
.task-update-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; align-items: start; gap: 16px; }
.task-update-timeline { padding: 4px 18px 18px; }
.task-update-timeline > article { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 11px; padding: 15px 0; border-bottom: 1px solid #eef0f2; }
.task-update-timeline > article:last-of-type { border-bottom: 0; }
.task-update-timeline > article > span { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.task-update-timeline > article > span svg { width: 16px; height: 16px; }
.task-update-timeline header { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.task-update-timeline header strong { font-size: 12px; }
.task-update-timeline header em { padding: 2px 5px; color: var(--text-2); background: #f2f3f5; border-radius: 4px; font-size: 9px; font-style: normal; }
.task-update-timeline header time { margin-left: auto; color: var(--muted); font-size: 10px; }
.task-update-timeline article > div > p { margin-top: 7px; color: var(--text-2); font-size: 12px; line-height: 1.65; }
.task-update-timeline article section { margin-top: 10px; padding: 10px 12px; background: #f7f9fc; border-left: 3px solid var(--primary); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.task-update-timeline article section b { color: var(--text-2); font-size: 10px; }
.task-update-timeline article section p { margin-top: 3px; color: var(--text-2); font-size: 11px; }
.task-form-note { display: flex; align-items: flex-start; gap: 8px; padding: 10px 11px; color: #536b8d; background: #f5f8fc; border: 1px solid #dfe7f1; border-radius: var(--radius); font-size: 10px; }
.task-form-note svg { width: 15px; height: 15px; }
.task-complete-note { min-height: 220px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 24px; text-align: center; }
.task-complete-note > svg { width: 34px; height: 34px; margin-bottom: 10px; color: var(--success); }
.task-complete-note h3 { font-size: 14px; }
.task-complete-note p { max-width: 280px; margin-top: 5px; color: var(--muted); font-size: 11px; }

.staff-import-upload-form { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(300px, 1.2fr) auto; align-items: center; gap: 14px; padding: 16px 18px; }
.staff-import-upload-form .file-drop { min-height: 58px; }
.staff-import-rules { min-width: 0; }
.staff-import-rules strong { display: block; margin-bottom: 4px; font-size: 11px; }
.staff-import-rules p { color: var(--muted); font-size: 10px; line-height: 1.6; }
.staff-import-preview table { min-width: 820px; }
.staff-import-preview td { vertical-align: middle; }
.staff-import-preview td strong, .staff-import-preview td small { display: block; }
.staff-import-preview td small { margin-top: 3px; color: var(--muted); font-size: 10px; }
.staff-import-assignment { min-width: 230px; color: var(--text-2); line-height: 1.6; }
.staff-toolbar { margin-bottom: 16px; overflow: hidden; }
.staff-filter-form { display: grid; grid-template-columns: 150px 150px minmax(220px, 1fr) auto; align-items: end; gap: 10px; padding: 14px 18px; }
.staff-filter-form label { min-width: 0; }
.staff-filter-form label > span, .staff-editor-form label > span, .password-reset-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.staff-filter-form select, .staff-filter-form input,
.staff-editor-form select, .staff-editor-form input,
.password-reset-form input { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.staff-filter-form select:focus, .staff-filter-form input:focus,
.staff-editor-form select:focus, .staff-editor-form input:focus,
.password-reset-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.staff-editor-form input[readonly] { color: var(--muted); background: #eef0f3; cursor: not-allowed; }
.staff-filter-actions { display: flex; gap: 8px; }
.staff-filter-actions .button { min-height: 40px; padding-inline: 12px; }
.staff-workspace { display: grid; grid-template-columns: minmax(0, 1fr) 440px; align-items: start; gap: 16px; }
.staff-list-panel { min-width: 0; overflow: hidden; }
.staff-list { padding: 4px 18px 18px; }
.staff-row { min-height: 112px; display: grid; grid-template-columns: 42px minmax(0, 1fr) 105px 36px; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid #eef0f2; }
.staff-row:last-child { border-bottom: 0; }
.staff-row.inactive { opacity: .65; }
.staff-avatar { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: #59749a; border-radius: 50%; font-size: 14px; font-weight: 700; }
.staff-avatar.principal { background: #275ba7; }
.staff-avatar.vice_principal { background: #16817c; }
.staff-avatar.grade_leader { background: #a56113; }
.staff-main { min-width: 0; }
.staff-name-line { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.staff-name-line h3 { font-size: 14px; }
.staff-name-line em { padding: 2px 6px; border-radius: 4px; font-size: 9px; font-style: normal; }
.staff-name-line em.role { color: var(--primary); background: var(--primary-soft); }
.staff-name-line em.role.vice_principal { color: #08746f; background: #ecfbfa; }
.staff-name-line em.role.grade_leader { color: #96520a; background: #fff7e8; }
.staff-name-line em.role.teacher { color: var(--text-2); background: #f2f3f5; }
.staff-name-line em.status.active { color: #087c26; background: #effbf2; }
.staff-name-line em.status.inactive { color: #6b7280; background: #eceff3; }
.staff-main > p { margin-top: 4px; color: var(--muted); font-size: 10px; }
.staff-main > small { display: flex; align-items: flex-start; gap: 5px; margin-top: 7px; color: var(--text-2); font-size: 10px; line-height: 1.55; }
.staff-main > small svg { width: 13px; height: 13px; margin-top: 1px; color: #6f88aa; }
.staff-login { text-align: right; }
.staff-login span, .staff-login strong { display: block; }
.staff-login span { color: var(--muted); font-size: 9px; }
.staff-login strong { margin-top: 2px; color: var(--text-2); font-size: 10px; font-weight: 500; }
.staff-editor-column { position: sticky; top: 84px; display: grid; gap: 16px; }
.staff-editor-panel, .staff-security-panel { overflow: hidden; }
.staff-editor-form { display: grid; gap: 0; padding: 0 18px 18px; }
.staff-form-section { padding: 16px 0; border-bottom: 1px solid #eef0f2; }
.staff-section-heading { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.staff-section-heading > span { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.staff-section-heading > span svg { width: 16px; height: 16px; }
.staff-section-heading h3 { font-size: 13px; }
.staff-section-heading p { margin-top: 2px; color: var(--muted); font-size: 9px; }
.staff-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
.staff-role-field { grid-column: 1 / -1; }
.grade-scope-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.grade-scope-grid label { position: relative; min-width: 0; cursor: pointer; }
.grade-scope-grid input { position: absolute; opacity: 0; pointer-events: none; }
.grade-scope-grid span { min-height: 36px; display: flex; align-items: center; justify-content: center; color: var(--text-2); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 10px; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.staff-editor-form .grade-scope-grid span,
.staff-editor-form .responsibility-grid span { display: flex; align-items: center; justify-content: center; }
.grade-scope-grid input:checked + span { color: var(--primary); background: var(--primary-soft); border-color: #9bb9ff; font-weight: 700; }
.assignment-section { border-bottom: 0; }
.assignment-matrix { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); }
.assignment-head, .assignment-row { display: grid; grid-template-columns: minmax(120px, 1fr) repeat(4, 54px); align-items: center; }
.assignment-head { min-height: 34px; color: var(--muted); background: #f2f3f5; font-size: 9px; text-align: center; }
.assignment-head span:first-child { padding-left: 10px; text-align: left; }
.assignment-row { min-height: 48px; border-top: 1px solid #eef0f2; }
.assignment-row > div { min-width: 0; padding: 7px 10px; }
.assignment-row strong, .assignment-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.assignment-row strong { font-size: 10px; }
.assignment-row small { color: var(--muted); font-size: 8px; }
.assignment-row > label { position: relative; height: 48px; display: flex; align-items: center; justify-content: center; border-left: 1px solid #eef0f2; cursor: pointer; }
.assignment-row > label input { position: absolute; opacity: 0; pointer-events: none; }
.assignment-row > label span { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; color: transparent; background: #fff; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); transition: color .2s ease, background .2s ease, border-color .2s ease; }
.assignment-row > label span svg { width: 14px; height: 14px; }
.assignment-row > label:hover span { border-color: #8eafff; }
.assignment-row > label input:checked + span { color: #fff; background: var(--primary); border-color: var(--primary); }
.staff-editor-form > .button { margin-top: 16px; }
.staff-security-actions { display: grid; gap: 14px; padding: 16px 18px 18px; }
.password-reset-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px; }
.staff-status-form { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 14px; border-top: 1px solid #eef0f2; }
.staff-status-form strong { display: block; font-size: 11px; }
.staff-status-form p { margin-top: 2px; color: var(--muted); font-size: 9px; }
.staff-self-note { display: flex; align-items: flex-start; gap: 8px; padding: 11px; color: #536b8d; background: #f5f8fc; border: 1px solid #dfe7f1; border-radius: var(--radius); font-size: 10px; }
.staff-self-note svg { width: 15px; height: 15px; }
.staff-readonly-panel { min-height: 260px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 28px; text-align: center; }
.staff-readonly-panel > svg { width: 34px; height: 34px; margin-bottom: 10px; color: var(--warning); }
.staff-readonly-panel h2 { font-size: 16px; }
.staff-readonly-panel p { max-width: 300px; margin: 6px 0 16px; color: var(--muted); font-size: 11px; }

.billing-summary { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; padding: 22px; background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--primary); border-radius: var(--radius); }
.billing-summary > span { width: 46px; height: 46px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.billing-summary.expired { border-left-color: var(--danger); }
.billing-summary.expired > span { color: var(--danger); background: #fff3f3; }
.billing-summary.paused { border-left-color: #087c66; }
.billing-summary.paused > span { color: #087c66; background: #eafaf6; }
.billing-summary p { color: var(--muted); font-size: 11px; }
.billing-summary h2 { margin: 2px 0; font-size: 18px; }
.billing-summary small { color: var(--text-2); }
.service-reminder-button { color: #a44b00; background: #fff7e8; border-color: #ffd7a1; }
.service-reminder-panel { overflow: hidden; margin-bottom: 16px; }
.service-reminder-list { display: grid; padding: 0 24px 20px; }
.service-reminder-list > article { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 16px 0; border-bottom: 1px solid #eef0f3; }
.service-reminder-list > article:last-child { border-bottom: 0; }
.service-reminder-list > article > span:first-child { display: grid; place-items: center; width: 40px; height: 40px; color: #165dff; background: #eef4ff; border-radius: 8px; }
.service-reminder-list > article.important > span:first-child { color: #a44b00; background: #fff7e8; }
.service-reminder-list > article.urgent > span:first-child { color: #c32626; background: #fff3f3; }
.service-reminder-list > article.read { opacity: .72; }
.service-reminder-list header { display: flex; align-items: center; gap: 8px; }
.service-reminder-list strong { color: #1d2129; font-size: 14px; }
.service-reminder-list em { padding: 3px 6px; color: #a44b00; background: #fff7e8; border-radius: 6px; font-size: 10px; font-style: normal; font-weight: 700; }
.service-reminder-list p { margin: 4px 0; color: #4e5969; font-size: 13px; line-height: 1.6; }
.service-reminder-list small { color: #86909c; font-size: 11px; }
.service-reminder-read { display: inline-flex; align-items: center; gap: 5px; color: #667085; font-size: 12px; white-space: nowrap; }
.service-reminder-read svg { width: 15px; }
@media(max-width:760px){.service-reminder-list{padding-inline:16px}.service-reminder-list>article{grid-template-columns:40px minmax(0,1fr)}.service-reminder-list>article>form,.service-reminder-read{grid-column:2;justify-self:start}}
.ai-points-overview { display: grid; grid-template-columns: minmax(260px,.72fr) minmax(0,1.28fr); gap: 0; margin-bottom: 16px; color: #fff; background: #31557f; border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 10px 24px rgba(49,85,127,.14); }
.ai-points-balance { display: flex; align-items: center; gap: 14px; padding: 22px 24px; border-right: 1px solid rgba(255,255,255,.15); }
.ai-points-balance > span { width: 46px; height: 46px; display: grid; flex: 0 0 auto; place-items: center; color: #31557f; background: #fff; border-radius: var(--radius); }
.ai-points-balance > span svg { width: 22px; height: 22px; }
.ai-points-balance p, .ai-points-balance small { color: #dce7f2; font-size: 9px; }
.ai-points-balance strong { display: block; margin: 2px 0; font-size: 24px; }
.ai-points-balance strong em { margin-left: 4px; font-size: 10px; font-style: normal; }
.ai-points-rules { padding: 22px 24px; }
.ai-points-rules strong { font-size: 12px; }
.ai-points-rules p { max-width: 680px; margin: 5px 0 10px; color: #dce7f2; font-size: 9px; line-height: 1.65; }
.ai-points-rules span { display: inline-flex; align-items: center; gap: 5px; padding: 4px 7px; color: #e8f8ef; background: rgba(20,142,76,.24); border-radius: var(--radius-sm); font-size: 9px; }
.ai-points-rules span.offline { color: #ffedc8; background: rgba(145,92,20,.28); }
.ai-points-rules span svg { width: 13px; height: 13px; }
.ai-ledger-panel { margin-bottom: 16px; overflow: hidden; }
.ai-ledger-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 24px; padding: 0 18px 18px; }
.ai-ledger-list article { display: grid; grid-template-columns: 30px minmax(0,1fr) auto; column-gap: 10px; align-items: center; min-width: 0; padding: 11px 0; border-bottom: 1px solid #eef0f2; }
.ai-ledger-list article > span { width: 30px; height: 30px; display: grid; grid-row: span 2; place-items: center; border-radius: var(--radius); }
.ai-ledger-list article > span svg { width: 14px; height: 14px; }
.ai-ledger-list article > span.positive { color: #087c26; background: #effbf2; }
.ai-ledger-list article > span.negative { color: #9a5c12; background: #fff7e8; }
.ai-ledger-list strong, .ai-ledger-list p { display: block; overflow-wrap: anywhere; }
.ai-ledger-list strong { font-size: 10px; }
.ai-ledger-list p, .ai-ledger-list article > small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.ai-ledger-list article > em { font-size: 11px; font-style: normal; font-weight: 700; }
.ai-ledger-list article > em.positive { color: #087c26; }
.ai-ledger-list article > em.negative { color: #9a5c12; }
.ai-ledger-list article > small { grid-column: 3; text-align: right; }
.plan-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.plan-card { position: relative; padding: 24px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.plan-card.recommended { border-color: #8fb1ff; box-shadow: 0 8px 24px rgba(22, 93, 255, .1); }
.plan-card > em { position: absolute; top: 12px; right: 12px; padding: 3px 7px; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius-sm); font-size: 10px; font-style: normal; }
.plan-card h2 { margin-bottom: 7px; font-size: 18px; }
.plan-card > p { min-height: 44px; color: var(--muted); font-size: 12px; }
.plan-card > strong { display: block; margin: 16px 0; font-size: 22px; }
.plan-card ul { display: grid; gap: 9px; margin: 0 0 20px; padding: 0; list-style: none; }
.plan-card li { display: flex; align-items: center; gap: 7px; color: var(--text-2); }
.plan-card li svg { width: 15px; height: 15px; color: var(--success); }
.profile-page-grid { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 16px; }
.profile-summary-column, .profile-settings-column { min-width: 0; display: grid; align-content: start; gap: 16px; }
.profile-card { min-height: 150px; display: flex; align-items: center; gap: 16px; padding: 24px; }
.large-avatar { width: 64px; height: 64px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; color: #fff; background: #365f9d; border-radius: 50%; font-size: 16px; font-weight: 700; }
.profile-card p { color: var(--primary); font-size: 12px; font-weight: 600; }
.profile-card h2 { margin: 4px 0; font-size: 20px; }
.profile-card small { color: var(--muted); }
.account-details { padding: 10px 22px; }
.detail-row { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 24px; border-bottom: 1px solid #eef0f2; }
.detail-row:last-child { border-bottom: 0; }
.detail-row span { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); }
.detail-row svg { width: 17px; height: 17px; }
.detail-row strong { color: var(--text-2); }
.profile-safety-note { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px; }
.profile-safety-note > svg { width: 22px; height: 22px; flex: 0 0 auto; color: var(--success); }
.profile-safety-note h2 { margin-bottom: 4px; font-size: 14px; }
.profile-safety-note p { color: var(--muted); font-size: 12px; line-height: 1.65; }
.profile-form-panel { overflow: hidden; }
.profile-panel-icon { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.profile-panel-icon.secure { color: #087c66; background: #eafaf6; }
.profile-panel-icon.email { color: #536b8d; background: #f2f6fb; }
.profile-panel-icon.email.verified { color: #087c26; background: #effbf2; }
.profile-panel-icon svg { width: 18px; height: 18px; }
.profile-settings-form { display: grid; gap: 14px; padding: 2px 22px 22px; }
.profile-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.profile-settings-form label { min-width: 0; }
.profile-settings-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.profile-settings-form input { width: 100%; min-height: 42px; padding: 9px 12px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.profile-settings-form .teaching-grade-options input { width: 1px; min-height: 0; padding: 0; border: 0; }
.profile-settings-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.profile-form-actions { min-height: 54px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 14px; border-top: 1px solid #eef0f2; }
.profile-form-actions p { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; }
.profile-form-actions p svg { width: 14px; height: 14px; flex: 0 0 auto; color: #6f88aa; }
.profile-mail-warning { display: flex; align-items: center; gap: 8px; margin: 0 22px 16px; padding: 10px 12px; color: #a44b00; background: #fff7e8; border: 1px solid #ffd7a1; border-radius: var(--radius); font-size: 12px; }
.profile-mail-warning svg { width: 16px; height: 16px; }
.verified-email-row { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 11px; margin: 0 22px 18px; padding: 12px 14px; background: #f7fbf8; border: 1px solid #d7eadb; border-radius: var(--radius); }
.verified-email-row > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #087c26; background: #e8f7eb; border-radius: var(--radius); }
.verified-email-row > span svg { width: 18px; height: 18px; }
.verified-email-row strong, .verified-email-row p { display: block; }
.verified-email-row strong { font-size: 12px; }
.verified-email-row p { margin-top: 2px; color: var(--muted); font-size: 10px; }
.verified-email-row em { padding: 3px 7px; color: #087c26; background: #e8f7eb; border-radius: var(--radius-sm); font-size: 10px; font-style: normal; }
.email-code-form { margin: 0 22px 22px; padding: 16px; background: #f6f9ff; border: 1px solid #d7e4ff; border-radius: var(--radius); }
.email-code-heading { display: flex; align-items: center; gap: 9px; }
.email-code-heading > svg { width: 18px; height: 18px; color: var(--primary); }
.email-code-heading strong, .email-code-heading small { display: block; }
.email-code-heading strong { font-size: 11px; }
.email-code-heading small { color: var(--muted); font-size: 10px; }
.email-code-form .button { justify-self: end; }
.data-safety { grid-column: 1 / -1; display: flex; gap: 14px; padding: 20px 24px; }
.data-safety > svg { color: var(--success); }
.data-safety h2 { margin-bottom: 5px; font-size: 16px; }
.data-safety p { color: var(--muted); }

/* Organization backup and restore */
.data-security-overview { min-height: 142px; display: flex; align-items: center; justify-content: space-between; gap: 28px; margin-bottom: 16px; padding: 24px 28px; color: #fff; background: #214c73; border: 1px solid #1b4266; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.security-overview-copy { min-width: 0; display: flex; align-items: center; gap: 18px; }
.security-shield { width: 54px; height: 54px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: #dff9ed; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .16); border-radius: var(--radius-lg); }
.security-shield svg { width: 27px; height: 27px; }
.security-overview-copy .overline { color: #9ed7c4; }
.security-overview-copy h2 { margin: 4px 0 6px; font-size: 22px; }
.security-overview-copy > div > p:last-child { max-width: 700px; color: #d6e2ed; font-size: 12px; }
.backup-health { min-width: 190px; display: flex; align-items: center; gap: 11px; padding: 14px 16px; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14); border-radius: var(--radius); }
.health-dot { width: 10px; height: 10px; flex: 0 0 auto; border-radius: 50%; box-shadow: 0 0 0 5px rgba(255, 255, 255, .07); }
.health-dot.healthy { background: #48d597; }
.health-dot.attention { background: #ffb44c; }
.backup-health small, .backup-health strong, .backup-health p { display: block; }
.backup-health small { color: #b9cddd; font-size: 9px; }
.backup-health strong { margin: 1px 0; font-size: 13px; }
.backup-health p { color: #d6e2ed; font-size: 9px; }
.backup-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 16px; }
.backup-action-card { min-width: 0; padding: 20px 22px; }
.backup-action-card > header { display: flex; align-items: flex-start; gap: 12px; }
.backup-action-card > header > span { width: 42px; height: 42px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; border-radius: var(--radius); }
.manual-backup-card > header > span { color: var(--primary); background: var(--primary-soft); }
.automatic-backup-card > header > span { color: #087c66; background: #eafaf6; }
.backup-action-card > header svg { width: 20px; height: 20px; }
.backup-action-card h2 { margin-bottom: 4px; font-size: 15px; }
.backup-action-card header p { color: var(--muted); font-size: 10px; }
.backup-coverage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: 18px 0; }
.backup-coverage span { display: flex; align-items: center; gap: 6px; padding: 7px 9px; color: var(--text-2); background: #f7f8fa; border-radius: var(--radius-sm); font-size: 10px; }
.backup-coverage svg { width: 14px; height: 14px; color: #6f88aa; }
.manual-backup-card form, .manual-backup-card .button { width: 100%; }
.automatic-status-list { display: grid; gap: 0; margin: 14px 0 12px; }
.automatic-status-list > div { min-height: 34px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid #eef0f2; }
.automatic-status-list > div:last-child { border-bottom: 0; }
.automatic-status-list span { color: var(--muted); font-size: 10px; }
.automatic-status-list strong { color: var(--text-2); font-size: 10px; }
.offsite-reminder { display: flex; align-items: flex-start; gap: 7px; padding: 9px 10px; color: #6d5714; background: #fff9e8; border: 1px solid #f6e5ac; border-radius: var(--radius-sm); font-size: 9px; }
.offsite-reminder svg { width: 14px; height: 14px; flex: 0 0 auto; }
.restore-panel, .backup-history-panel { margin-bottom: 16px; overflow: hidden; }
.restore-permission, .history-count { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; color: #536b8d; background: #f2f6fb; border-radius: var(--radius-sm); font-size: 9px; font-weight: 600; }
.restore-permission svg { width: 13px; height: 13px; }
.restore-upload-form { display: grid; grid-template-columns: minmax(300px, 1.1fr) minmax(320px, 1fr) auto; align-items: center; gap: 14px; padding: 0 20px 20px; }
.backup-file-drop { min-height: 70px; }
.restore-upload-rules { display: grid; gap: 6px; }
.restore-upload-rules > p { display: flex; align-items: flex-start; gap: 8px; }
.restore-upload-rules > p > svg { width: 16px; height: 16px; margin-top: 2px; color: #5577a2; }
.restore-upload-rules strong, .restore-upload-rules small { display: block; }
.restore-upload-rules strong { color: var(--text-2); font-size: 10px; }
.restore-upload-rules small { color: var(--muted); font-size: 9px; }
.restore-readonly-note { display: flex; align-items: flex-start; gap: 12px; margin: 0 20px 20px; padding: 14px 16px; color: #6d5714; background: #fff9e8; border: 1px solid #f6e5ac; border-radius: var(--radius); }
.restore-readonly-note > svg { width: 20px; height: 20px; }
.restore-readonly-note strong { display: block; font-size: 11px; }
.restore-readonly-note p { margin-top: 3px; font-size: 10px; }
.restore-preview { padding: 0 20px 20px; }
.restore-preview-heading { display: flex; align-items: center; gap: 12px; padding: 14px; background: #f2fbf7; border: 1px solid #cdeedc; border-radius: var(--radius); }
.restore-preview-heading > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #087c66; background: #fff; border-radius: var(--radius); }
.restore-preview-heading p { color: #087c66; font-size: 9px; font-weight: 700; }
.restore-preview-heading h3 { margin: 2px 0; font-size: 13px; overflow-wrap: anywhere; }
.restore-preview-heading small { color: var(--muted); font-size: 9px; }
.restore-summary-grid { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); margin: 14px 0; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.restore-summary-grid > div { padding: 10px 8px; text-align: center; border-right: 1px solid var(--line); }
.restore-summary-grid > div:last-child { border-right: 0; }
.restore-summary-grid span, .restore-summary-grid strong { display: block; }
.restore-summary-grid span { color: var(--muted); font-size: 9px; }
.restore-summary-grid strong { margin-top: 2px; font-size: 16px; }
.restore-warning { display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; color: #8a4b06; background: #fff8eb; border: 1px solid #f5d6a7; border-radius: var(--radius); }
.restore-warning > svg { width: 18px; height: 18px; }
.restore-warning strong, .restore-warning span { display: block; }
.restore-warning strong { font-size: 10px; }
.restore-warning span { margin-top: 2px; font-size: 9px; }
.restore-confirm-actions { display: flex; align-items: flex-end; justify-content: flex-end; gap: 10px; margin-top: 14px; }
.restore-confirm-form { display: flex; align-items: flex-end; gap: 10px; }
.restore-confirm-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.restore-confirm-form input { width: 230px; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.restore-confirm-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.backup-history-list { display: grid; padding: 0 18px 18px; }
.backup-history-list article { min-height: 70px; display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 4px; border-bottom: 1px solid #eef0f2; }
.backup-history-list article:last-child { border-bottom: 0; }
.backup-type-icon { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.backup-type-icon.daily { color: #087c66; background: #eafaf6; }
.backup-type-icon.pre_restore { color: #a44b00; background: #fff7e8; }
.backup-type-icon svg { width: 17px; height: 17px; }
.backup-record-main { min-width: 0; }
.backup-record-main > div { display: flex; align-items: center; gap: 8px; }
.backup-record-main strong { font-size: 11px; }
.backup-record-main em { padding: 2px 5px; color: var(--muted); background: #f4f5f7; border-radius: 4px; font-size: 8px; font-style: normal; }
.backup-record-main p { margin: 3px 0 1px; color: var(--text-2); font-size: 10px; }
.backup-record-main small { color: var(--muted); font-size: 9px; }

.empty-state { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 24px; color: var(--muted); text-align: center; }
.empty-state > svg { width: 34px; height: 34px; margin-bottom: 10px; color: #b5bbc5; }
.empty-state strong { color: var(--text-2); }
.empty-state p { margin: 4px 0 14px; font-size: 12px; }
.empty-state.compact { min-height: 140px; }
.page-empty { min-height: 420px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.mobile-only { display: none; }
.mobile-task-dock, .mobile-capability-panel { display: none; }
.sidebar-overlay { display: none; }

@media (max-width: 1180px) {
  .parent-management-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .parent-management-section.notice-section { grid-column: 1 / -1; }
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-grid { grid-template-columns: minmax(0, 1fr) 300px; }
  .leader-pulse-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .leader-pulse:nth-child(2) { border-right: 0; }
  .leader-pulse:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .subject-grid { grid-template-columns: 1fr; }
  .subject-resource-toolbar { grid-template-columns: 130px 150px minmax(220px, 1fr); }
  .subject-resource-filter-actions { grid-column: 1 / -1; justify-content: flex-end; }
  .growth-columns { grid-template-columns: minmax(0, 1fr); }
  .sticky-panel { position: static; }
  .process-strip { gap: 12px; }
  .process-strip > div p { display: none; }
  .management-loop { gap: 14px; }
  .import-upload-form { grid-template-columns: 190px minmax(240px, 1fr) auto; }
  .import-upload-form > a { grid-column: 3; }
  .test-analysis-layout { grid-template-columns: minmax(0, 1fr) 270px; }
  .school-quality-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .school-quality-metrics > div:nth-child(3n) { border-right: 0; }
  .school-quality-metrics > div:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
  .school-quality-body { grid-template-columns: 1fr; }
  .school-quality-body > section { border-right: 0; border-bottom: 1px solid var(--line); }
  .resource-filter-form { grid-template-columns: repeat(4, minmax(110px, 1fr)); }
  .resource-keyword { grid-column: span 3; }
  .task-workspace { grid-template-columns: 280px minmax(0, 1fr); }
  .task-update-layout { grid-template-columns: 1fr; }
  .staff-workspace { grid-template-columns: minmax(0, 1fr) 400px; }
  .staff-filter-form { grid-template-columns: 130px 130px minmax(180px, 1fr); }
  .staff-filter-actions { grid-column: 1 / -1; justify-content: flex-end; }
}

@media (max-width: 960px) {
  .mobile-only { display: inline-flex; }
  .sidebar { transform: translateX(-100%); transition: transform .22s ease; box-shadow: 12px 0 32px rgba(29, 33, 41, .15); }
  .sidebar.open { transform: translateX(0); }
  .sidebar-overlay { position: fixed; z-index: 25; inset: 0; display: block; pointer-events: none; background: rgba(29, 33, 41, .42); opacity: 0; transition: opacity .2s ease; }
  .sidebar-overlay.visible { pointer-events: auto; opacity: 1; }
  .main-area { margin-left: 0; }
  .page-content { padding: 20px; }
  .topbar { padding: 10px 20px; }
  .two-column-layout, .tests-layout, .school-layout { grid-template-columns: minmax(0, 1fr); }
  .form-panel { order: -1; }
  .growth-layout { grid-template-columns: 210px minmax(0, 1fr); }
  .management-loop > div p { display: none; }
  .auth-layout { grid-template-columns: 1fr; width: min(620px, calc(100% - 32px)); margin: 24px auto; }
  .auth-intro { min-height: 330px; }
  .auth-copy { margin: 64px 0 28px; }
  .import-upload-form { grid-template-columns: 1fr 1fr; align-items: stretch; }
  .import-upload-form > label:first-of-type, .import-upload-form .file-drop { grid-column: 1 / -1; }
  .import-upload-form > a { grid-column: auto; }
  .test-analysis-layout { grid-template-columns: 1fr; }
  .analysis-side { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-snapshot { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-snapshot > div:nth-child(2) { border-right: 0; }
  .review-snapshot > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .review-writing-grid { grid-template-columns: 1fr; }
  .resource-upload-form { grid-template-columns: 1fr 1fr; }
  .resource-upload-form .file-drop { grid-column: 1 / -1; }
  .resource-filter-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .resource-keyword { grid-column: span 1; }
  .resource-editor-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .subject-resource-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .subject-ready-context { grid-template-columns: 1fr; }
  .week-plan-context { padding-right: 0; padding-bottom: 14px; border-right: 0; border-bottom: 1px solid var(--line); }
  .ready-pack-sections { grid-template-columns: 1fr; }
  .ready-pack-sections pre { height: 190px; }
  .subject-resource-keyword { grid-column: 1 / -1; }
  .resource-content-field { grid-column: 1 / -1; }
  .task-workspace { grid-template-columns: 1fr; }
  .task-navigation { position: static; }
  .task-navigation-list { max-height: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px 12px 12px; }
  .task-navigation-list > a { border: 1px solid var(--line); border-radius: var(--radius); }
  .staff-workspace { grid-template-columns: 1fr; }
  .staff-editor-column { position: static; }
  .staff-import-upload-form { grid-template-columns: minmax(260px, 1fr) minmax(280px, 1fr); }
  .staff-import-upload-form > .button { grid-column: 1 / -1; }
  .backup-action-grid { grid-template-columns: 1fr; }
  .restore-upload-form { grid-template-columns: 1fr; }
  .restore-upload-form > .button { width: 100%; }
  .restore-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .restore-summary-grid > div:nth-child(4n) { border-right: 0; }
  .restore-summary-grid > div:nth-child(-n+4) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 720px) {
  .parent-management-grid { grid-template-columns: 1fr; padding: 0 14px 14px; }
  .parent-management-section.notice-section { grid-column: auto; }
  .homework-parent-control { justify-content: flex-start; max-width: none; }
  .review-sharing-actions { justify-content: flex-start; }
  .parent-account-list details form { grid-template-columns: 1fr; }
  .parent-account-list details .button, .parent-notice-form .button { width: 100%; justify-self: stretch; }
  .topbar { min-height: 64px; display: grid; grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: 8px; padding: 8px 12px; }
  .topbar-title, .topbar-title > div { min-width: 0; }
  .topbar-title { width: 100%; }
  .topbar-title h1 { margin-bottom: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .topbar-actions { width: 100%; justify-content: flex-end; }
  .topbar-title p { display: none; }
  .topbar-actions .trial-chip span { display: none; }
  .topbar-actions .ai-credit-chip span { display: none; }
  .page-content { padding: 16px 12px 28px; }
  .welcome-band { align-items: flex-start; flex-direction: column; padding: 22px; }
  .welcome-actions { width: 100%; }
  .welcome-actions .button { flex: 1; }
  .trial-banner { grid-template-columns: 38px minmax(0, 1fr); }
  .trial-banner > a { grid-column: 2; }
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .metric-card { min-height: 94px; padding: 14px; }
  .metric-icon { width: 36px; height: 36px; }
  .metric-card strong { font-size: 22px; }
  .teacher-outcomes-heading { padding: 16px; }
  .teacher-outcomes-body { grid-template-columns: 1fr; }
  .outcome-category-list { grid-template-columns: 1fr; padding: 6px 12px; }
  .outcome-category:nth-child(odd), .outcome-category:nth-child(even) { padding-left: 6px; padding-right: 6px; border-right: 0; }
  .outcome-category:nth-last-child(-n+2) { border-bottom: 1px solid #f0f2f3; }
  .outcome-category:last-child { border-bottom: 0; }
  .outcome-next-step { border-top: 1px solid var(--line); border-left: 0; }
  .outcome-badges { padding: 14px 16px 16px; }
  .outcome-badge-list { grid-template-columns: 1fr; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .leader-pulse { min-height: 82px; padding: 12px; }
  .growth-layout { grid-template-columns: 1fr; }
  .student-rail { position: static; max-height: none; }
  .student-list { max-height: 210px; }
  .student-profile-band { align-items: flex-start; flex-direction: column; }
  .profile-tags { flex-wrap: wrap; }
  .review-subject-switch, .review-submit-row { align-items: stretch; flex-direction: column; }
  .review-subject-switch label { width: 100%; }
  .review-period-fields { grid-template-columns: 1fr; }
  .review-submit-row .button { width: 100%; }
  .saved-review-list article > div > p { grid-template-columns: 1fr; gap: 3px; }
  .process-strip { justify-content: flex-start; overflow-x: auto; }
  .import-heading { align-items: flex-start; flex-wrap: wrap; }
  .import-heading > .button { width: 100%; }
  .import-summary { align-items: flex-start; flex-wrap: wrap; gap: 12px; }
  .import-actions { width: 100%; margin-left: 0; }
  .import-actions form { flex: 1; }
  .import-actions .button { width: 100%; }
  .staff-import-upload-form { grid-template-columns: 1fr; padding: 14px; }
  .staff-import-upload-form > .button { grid-column: auto; width: 100%; }
  .staff-import-preview { max-height: none; overflow: visible; padding: 12px; background: #f7f8fa; }
  .staff-import-preview table { min-width: 0; display: block; }
  .staff-import-preview thead { display: none; }
  .staff-import-preview tbody { display: grid; gap: 10px; }
  .staff-import-preview tr { display: grid; padding: 8px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .staff-import-preview td { min-width: 0; display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: start; gap: 10px; padding: 8px 0; border: 0; border-bottom: 1px solid #eef0f2; }
  .staff-import-preview td:last-child { border-bottom: 0; }
  .staff-import-preview td::before { content: attr(data-label); color: var(--muted); font-size: 10px; font-weight: 600; }
  .staff-import-preview .staff-import-assignment { min-width: 0; }
  .test-detail-header { align-items: flex-start; flex-direction: column; }
  .test-detail-header .button { width: 100%; }
  .analysis-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .analysis-side { grid-template-columns: 1fr; }
  .subject-header { align-items: flex-start; flex-direction: column; }
  .subject-ready-heading { align-items: flex-start; flex-direction: column; padding: 18px; }
  .subject-ready-context { padding: 14px 18px; }
  .lesson-pack-switcher { grid-template-columns: 1fr; }
  .ready-pack-document { padding: 18px; }
  .ready-pack-title { flex-direction: column; }
  .ready-pack-actions { display: grid; grid-template-columns: 1fr; }
  .ready-pack-actions .button { width: 100%; }
  .ready-pack-full > pre { padding: 14px; font-size: 13px; }
  .grade-switcher { width: 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; }
  .grade-switcher a { flex: 1; text-align: center; }
  .semester-focus-grid { grid-template-columns: 1fr; }
  .subject-resource-toolbar { grid-template-columns: 1fr; margin-inline: -20px; }
  .subject-resource-toolbar > *, .subject-resource-keyword, .subject-resource-filter-actions { grid-column: auto; }
  .subject-resource-filter-actions .button { flex: 1; }
  .subject-resource-count { align-items: flex-start; flex-direction: column; gap: 2px; }
  .subject-resource-list { min-width: 0; }
  .subject-resource-list article { width: 100%; min-width: 0; grid-template-columns: minmax(0, 1fr); box-sizing: border-box; }
  .subject-resource-tags, .subject-resource-actions { min-width: 0; flex-wrap: wrap; }
  .subject-resource-actions { width: 100%; }
  .subject-resource-actions .button { min-width: 0; flex: 1 1 132px; }
  .subject-resource-feedback form { grid-template-columns: 1fr; }
  .subject-resource-feedback form .button { width: 100%; }
  .resource-import-panel .panel-heading { align-items: flex-start; flex-direction: column; }
  .resource-import-panel .panel-heading .button { width: 100%; }
  .resource-upload-form { grid-template-columns: 1fr; }
  .resource-upload-form > * { grid-column: auto; }
  .resource-library-panel .panel-heading { align-items: flex-start; }
  .resource-filter-actions { align-self: end; }
  .managed-resource-row { grid-template-columns: 1fr; gap: 12px; }
  .managed-resource-actions { justify-content: flex-end; }
  .school-resource-review-body { grid-template-columns: 1fr; }
  .school-resource-feedback-list article { grid-template-columns: 1fr; }
  .school-resource-feedback-list form { grid-template-columns: 1fr; }
  .task-navigation-list { grid-template-columns: 1fr; }
  .task-detail-header { align-items: flex-start; flex-direction: column; padding: 18px; }
  .task-deadline { width: 100%; padding: 10px 0 0; border-top: 1px solid rgba(255, 255, 255, .16); border-left: 0; text-align: left; }
  .task-effect-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .task-effect-metrics > div:nth-child(2) { border-right: 0; }
  .task-effect-metrics > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .staff-filter-form { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px; }
  .staff-keyword { grid-column: 1 / -1; }
  .staff-filter-actions { justify-content: stretch; }
  .staff-filter-actions .button { flex: 1; }
  .staff-row { grid-template-columns: 42px minmax(0, 1fr) 40px; }
  .staff-login { grid-column: 2; text-align: left; }
  .staff-row > .icon-button { grid-column: 3; grid-row: 1 / span 2; }
  .management-loop { justify-content: flex-start; overflow-x: auto; }
  .plan-grid, .profile-page-grid { grid-template-columns: 1fr; }
  .ai-review-assistant, .ai-points-overview { grid-template-columns: 1fr; }
  .ai-review-action, .ai-review-result { align-items: stretch; flex-direction: column; padding-top: 14px; padding-left: 0; border-top: 1px solid #dce4ec; border-left: 0; }
  .ai-review-action .button, .ai-review-result .button { width: 100%; }
  .ai-points-balance { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.15); }
  .ai-ledger-list { grid-template-columns: 1fr; }
  .data-safety { grid-column: auto; }
  .auth-intro, .auth-form-wrap { padding: 28px 24px; }
  .auth-copy h1 { font-size: 26px; }
  .auth-intro { min-height: 310px; }
  .form-row { grid-template-columns: 1fr; }
  .page-toolbar { align-items: flex-start; flex-direction: column; }
  .filter-tabs { width: 100%; }
  .school-quality-filter { align-items: stretch; flex-direction: column; }
  .school-quality-filter label { width: 100%; }
  .school-quality-filter .button { width: 100%; }
  .school-quality-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 0 12px; }
  .school-quality-metrics > div:nth-child(3n) { border-right: 1px solid var(--line); }
  .school-quality-metrics > div:nth-child(2n) { border-right: 0; }
  .school-quality-metrics > div:nth-child(-n+4) { border-bottom: 1px solid var(--line); }
  .school-quality-body > section, .school-quality-body > aside { padding: 14px; }
  .data-security-overview { align-items: flex-start; flex-direction: column; padding: 20px; }
  .security-overview-copy { align-items: flex-start; }
  .security-shield { width: 44px; height: 44px; }
  .backup-health { width: 100%; }
  .restore-panel .panel-heading, .backup-history-panel .panel-heading { align-items: flex-start; flex-direction: column; }
  .restore-confirm-actions, .restore-confirm-form { width: 100%; align-items: stretch; flex-direction: column; }
  .restore-confirm-actions form, .restore-confirm-actions .button, .restore-confirm-form label, .restore-confirm-form input { width: 100%; }
  .backup-history-list { padding: 0 12px 12px; }
  .backup-history-list article { grid-template-columns: 38px minmax(0, 1fr); }
  .backup-history-list article > .button { grid-column: 2; justify-self: start; }
}

@media (max-width: 700px) {
  .mobile-task-dock { position: sticky; z-index: 18; top: 62px; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); overflow: hidden; margin: 0 0 14px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.97); box-shadow: 0 5px 18px rgba(31,48,77,.08); backdrop-filter: blur(8px); }
  .mobile-task-dock a { position: relative; display: grid; min-width: 0; min-height: 56px; place-items: center; align-content: center; gap: 3px; padding: 7px 3px; border-right: 1px solid var(--line); color: var(--text-2); font-size: 12px; font-weight: 700; }
  .mobile-task-dock a:last-child { border-right: 0; }
  .mobile-task-dock a svg { width: 19px; height: 19px; }
  .mobile-task-dock a.active { color: var(--primary); background: var(--primary-soft); }
  .mobile-task-dock.has-five { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .mobile-task-dock.has-five a { font-size: 11px; }
  .mobile-task-dock a em { position: absolute; top: 5px; left: calc(50% + 7px); min-width: 17px; height: 17px; padding: 0 4px; border: 2px solid #fff; border-radius: 9px; color: #fff; background: #e5484d; font-size: 9px; font-style: normal; line-height: 13px; text-align: center; }
  .mobile-capability-panel { display: grid; grid-template-columns: 38px minmax(0,1fr); gap: 11px; margin-bottom: 14px; padding: 14px; border: 1px solid #cbd9ea; border-radius: 8px; background: #f7faff; }
  .mobile-capability-icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 8px; color: var(--primary); background: #e5edff; }
  .mobile-capability-icon svg { width: 20px; height: 20px; }
  .mobile-capability-panel strong { color: var(--text); font-size: 14px; }
  .mobile-capability-panel p { margin-top: 2px; color: var(--text-2); font-size: 12px; line-height: 1.55; }
  .mobile-capability-panel ul { display: grid; gap: 4px; margin: 8px 0 0; padding: 0; list-style: none; }
  .mobile-capability-panel li { position: relative; padding-left: 15px; color: var(--text-2); font-size: 12px; line-height: 1.55; }
  .mobile-capability-panel li::before { position: absolute; top: 7px; left: 1px; width: 6px; height: 6px; border-radius: 50%; content: ''; background: #8a98aa; }
  .mobile-capability-panel li.ready::before { background: var(--success); }
  .mobile-capability-panel li.warning::before { background: #d98b00; }
  .mobile-capability-panel li.error { color: #a43838; }
  .mobile-capability-panel li.error::before { background: #d64545; }
  .location-feedback, .lesson-checkin-form .location-feedback { min-height: 20px; font-size: 12px; line-height: 1.55; }
  .wrong-upload-form label > span, .patrol-check-form label > span { font-size: 13px; }
  .wrong-upload-form label small, .file-drop small { font-size: 12px; line-height: 1.5; }
  .file-drop strong { font-size: 13px; }
  .file-drop { min-height: 72px; padding: 12px 14px; }
  .lesson-checkin-form .button, .patrol-photo-row .button { width: 100%; min-height: 44px; }
}

@media (max-width: 430px) {
  .mobile-task-dock { top: 58px; }
  .mobile-task-dock a { min-height: 54px; font-size: 11px; }
  .mobile-task-dock.has-five a { font-size: 10px; }
  .today-hero { padding: 18px 16px; }
  .today-hero-copy > p:last-child { font-size: 13px; }
  .today-lesson-head { grid-template-columns: 64px minmax(0,1fr); gap: 11px; }
  .today-period strong, .today-lesson-title h2 { font-size: 15px; }
  .today-preclass, .today-workflow-bridge { grid-template-columns: 1fr; }
  .wrong-upload-form { padding: 14px; }
}

@media (max-width: 440px) {
  .metric-grid { grid-template-columns: 1fr; }
  .metric-card { min-height: 82px; }
  .welcome-actions { flex-direction: column; }
  .profile-identity > span { display: none; }
  .deployment-main footer { align-items: flex-start; flex-direction: column; gap: 4px; }
  .auth-layout { width: 100%; min-height: 100vh; margin: 0; border: 0; border-radius: 0; }
  .auth-intro { min-height: 280px; }
  .review-snapshot { grid-template-columns: 1fr; padding: 0 14px; }
  .review-snapshot > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-snapshot > div:last-child { border-bottom: 0; }
  .saved-review-list header { flex-direction: column; }
  .school-quality-metrics { grid-template-columns: 1fr; }
  .school-quality-metrics > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .school-quality-metrics > div:last-child { border-bottom: 0; }
  .resource-library-panel .panel-heading { flex-direction: column; }
  .resource-filter-form { grid-template-columns: 1fr; padding: 12px; }
  .resource-keyword { grid-column: auto; }
  .resource-filter-actions .button { flex: 1; }
  .resource-edit-form { margin: 12px 12px 4px; }
  .resource-editor-grid { grid-template-columns: 1fr; padding: 12px; }
  .resource-wide-field, .resource-content-field { grid-column: auto; }
  .resource-editor-actions .button { flex: 1; }
  .managed-resource-list { padding: 4px 12px 14px; }
  .managed-resource-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .managed-resource-actions .button { width: 100%; }
  .task-detail-title { align-items: flex-start; }
  .task-status-icon { width: 40px; height: 40px; }
  .task-effect-metrics { grid-template-columns: 1fr; }
  .task-effect-metrics > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .task-effect-metrics > div:last-child { border-bottom: 0; }
  .task-effect-breakdown { align-items: flex-start; flex-direction: column; gap: 6px; }
  .task-update-timeline { padding: 4px 12px 14px; }
  .task-update-timeline header time { width: 100%; margin-left: 0; }
  .staff-filter-form { grid-template-columns: 1fr; }
  .staff-keyword, .staff-filter-actions { grid-column: auto; }
  .staff-filter-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .staff-filter-actions .button:last-child { grid-column: 1 / -1; }
  .staff-list { padding: 4px 12px 14px; }
  .staff-main > small { display: block; }
  .staff-main > small svg { display: none; }
  .staff-editor-form { padding: 0 12px 14px; }
  .staff-form-grid { grid-template-columns: 1fr; }
  .staff-role-field { grid-column: auto; }
  .security-overview-copy { flex-direction: column; gap: 12px; }
  .backup-coverage { grid-template-columns: 1fr; }
  .restore-upload-form, .restore-preview { padding: 0 12px 14px; }
  .restore-readonly-note { margin: 0 12px 14px; }
  .restore-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .restore-summary-grid > div { border-bottom: 1px solid var(--line); }
  .restore-summary-grid > div:nth-child(2n) { border-right: 0; }
  .restore-summary-grid > div:nth-last-child(-n+2) { border-bottom: 0; }
  .assignment-head, .assignment-row { grid-template-columns: minmax(105px, 1fr) repeat(4, 43px); }
  .assignment-head span { font-size: 8px; }
  .password-reset-form { grid-template-columns: 1fr; }
  .staff-status-form { align-items: stretch; flex-direction: column; }
  .staff-status-form .button { width: 100%; }
  .profile-form-grid { grid-template-columns: 1fr; }
  .profile-settings-form { padding: 2px 14px 16px; }
  .profile-form-actions { align-items: stretch; flex-direction: column; }
  .profile-form-actions .button { width: 100%; }
  .profile-mail-warning, .verified-email-row { margin-right: 14px; margin-left: 14px; }
  .email-code-form { margin-right: 14px; margin-left: 14px; }
  .email-code-form .button { width: 100%; justify-self: stretch; }
}

/* Wrong-item review and individualized worksheets */
.test-detail-tabs { min-height: 54px; display: flex; align-items: stretch; gap: 4px; margin: -4px 0 16px; padding: 5px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.test-detail-tabs a { min-width: 150px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 10px 14px; color: var(--text-2); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; }
.test-detail-tabs a:hover { color: var(--primary); background: var(--primary-soft); }
.test-detail-tabs a.active { color: #fff; background: var(--primary); }
.test-detail-tabs svg { width: 16px; height: 16px; }
.test-detail-tabs em { padding: 2px 5px; color: #a44b00; background: #fff7e8; border-radius: 4px; font-size: 10px; font-style: normal; }
.test-detail-tabs a.active em { color: var(--primary); background: #fff; }

.wrong-workspace { display: grid; grid-template-columns: minmax(0, 1fr) 360px; align-items: start; gap: 16px; }
.wrong-list-panel, .wrong-upload-panel { overflow: hidden; }
.wrong-counts { display: flex; align-items: center; gap: 7px; }
.wrong-counts span, .wrong-counts em { padding: 4px 7px; border-radius: var(--radius-sm); font-size: 10px; font-style: normal; }
.wrong-counts span { color: #087c26; background: #effbf2; }
.wrong-counts em { color: #a44b00; background: #fff7e8; }
.wrong-list { display: grid; gap: 12px; padding: 0 18px 18px; }
.wrong-card { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.wrong-card.pending { border-left: 3px solid var(--warning); }
.wrong-card.confirmed { border-left: 3px solid var(--success); }
.wrong-card > header { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; background: #fafbfc; border-bottom: 1px solid var(--line); }
.wrong-card > header > div { display: flex; align-items: center; gap: 10px; }
.student-avatar.small { width: 32px; height: 32px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: #fff; background: #315f9d; border-radius: 50%; font-size: 12px; font-weight: 700; }
.wrong-card header strong, .wrong-card header small { display: block; }
.wrong-card header small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.wrong-status { display: inline-flex; align-items: center; gap: 5px; color: #a44b00; font-size: 11px; }
.confirmed .wrong-status { color: #087c26; }
.wrong-status svg { width: 14px; height: 14px; }
.wrong-card-body { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 16px; padding: 14px; }
.wrong-photo { min-height: 170px; display: flex; align-items: center; justify-content: center; overflow: hidden; background: #f2f3f5; border: 1px solid var(--line); border-radius: var(--radius); }
.wrong-photo img { width: 100%; height: 100%; max-height: 260px; object-fit: contain; }
.wrong-photo.empty { flex-direction: column; gap: 8px; color: var(--muted); }
.wrong-photo.empty svg { width: 28px; height: 28px; }
.wrong-confirm-form { display: grid; gap: 10px; }
.wrong-confirm-form label > span, .wrong-upload-form label > span, .worksheet-editor label > span, .worksheet-attempt-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.wrong-confirm-form input, .wrong-confirm-form select, .wrong-confirm-form textarea,
.worksheet-editor input, .worksheet-editor select, .worksheet-editor textarea,
.worksheet-attempt-form input, .worksheet-attempt-form select, .worksheet-attempt-form textarea { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.wrong-confirm-form input:focus, .wrong-confirm-form select:focus, .wrong-confirm-form textarea:focus,
.worksheet-editor input:focus, .worksheet-editor select:focus, .worksheet-editor textarea:focus,
.worksheet-attempt-form input:focus, .worksheet-attempt-form select:focus, .worksheet-attempt-form textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.wrong-confirm-form textarea, .wrong-upload-form textarea { resize: vertical; }
.wrong-confirm-form .button { justify-self: end; }
.wrong-upload-panel { position: sticky; top: 84px; }
.wrong-upload-form { padding: 14px 18px 18px; }
.wrong-image-drop { min-height: 74px; }
.ocr-preview { display: none; min-height: 160px; overflow: hidden; background: #f2f3f5; border: 1px solid var(--line); border-radius: var(--radius); }
.ocr-preview.visible { display: flex; align-items: center; justify-content: center; }
.ocr-preview img { width: 100%; max-height: 280px; object-fit: contain; }
.ocr-state { overflow: hidden; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.ocr-state > div { width: var(--ocr-progress, 0%); height: 3px; background: var(--primary); transition: width .2s ease; }
.ocr-state span { display: block; padding: 7px 10px; color: var(--muted); font-size: 10px; }
.wrong-upload-form label small { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; }
.form-actions.split { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

.worksheet-workspace { display: grid; grid-template-columns: 300px minmax(0, 1fr); align-items: start; gap: 16px; }
.worksheet-candidates, .worksheet-editor-panel { overflow: hidden; }
.candidate-list { display: grid; gap: 4px; padding: 8px 12px 14px; }
.candidate-list article { min-height: 58px; display: grid; grid-template-columns: 32px minmax(0, 1fr) 36px; align-items: center; gap: 10px; padding: 7px 9px; border: 1px solid transparent; border-radius: var(--radius); }
.candidate-list article:hover { background: #f7f9fc; }
.candidate-list article.active { background: var(--primary-soft); border-color: #cbdcff; }
.candidate-list strong, .candidate-list small { display: block; }
.candidate-list small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.candidate-list form { margin: 0; }
.worksheet-editor-head { min-height: 84px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.worksheet-editor-head p, .worksheet-editor-head small { color: var(--muted); font-size: 10px; }
.worksheet-editor-head h2 { margin: 3px 0; font-size: 17px; }
.worksheet-editor-head > div:last-child { display: flex; align-items: center; gap: 8px; }
.worksheet-status { padding: 4px 7px; color: #a44b00; background: #fff7e8; border-radius: var(--radius-sm); font-size: 10px; }
.worksheet-status.approved { color: #087c26; background: #effbf2; }
.worksheet-editor { padding: 18px 20px; }
.worksheet-title-field { display: block; margin-bottom: 16px; }
.worksheet-item-list { display: grid; gap: 0; margin-bottom: 16px; border-top: 1px solid var(--line); }
.worksheet-item-list article { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--line); }
.question-number { width: 28px; height: 28px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; font-size: 11px; font-weight: 700; }
.worksheet-item-list article > div { display: grid; gap: 9px; }
.worksheet-item-list article > div > p { display: flex; gap: 6px; }
.worksheet-item-list em, .worksheet-item-list article > div > p > span { padding: 2px 6px; border-radius: 4px; font-size: 10px; font-style: normal; }
.worksheet-item-list em { color: var(--primary); background: var(--primary-soft); }
.worksheet-item-list article > div > p > span { color: var(--text-2); background: #f2f3f5; }
.worksheet-item-list textarea { resize: vertical; }
.worksheet-approve { min-height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 20px; background: #f7f9fc; border-top: 1px solid var(--line); }
.worksheet-approve p { display: flex; align-items: center; gap: 10px; }
.worksheet-approve p > svg { width: 22px; color: var(--success); }
.worksheet-approve strong, .worksheet-approve small { display: block; }
.worksheet-approve small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.worksheet-attempts { padding: 22px 20px 20px; border-top: 1px solid var(--line); }
.attempts-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.attempts-heading > div > p { color: var(--primary); font-size: 10px; font-weight: 700; }
.attempts-heading h2 { margin: 3px 0; font-size: 17px; }
.attempts-heading small { color: var(--muted); font-size: 10px; }
.attempts-heading > span { padding: 4px 7px; color: var(--text-2); background: #f2f3f5; border-radius: var(--radius-sm); font-size: 10px; }
.worksheet-attempt-form { display: grid; gap: 12px; padding: 16px; background: #f7f9fc; border: 1px solid var(--line); border-radius: var(--radius); }
.attempt-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.attempt-notes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.worksheet-attempt-form textarea { resize: vertical; }
.worksheet-attempt-form > .button { justify-self: end; }
.attempt-history { display: grid; gap: 8px; margin-top: 14px; }
.attempt-history article { display: grid; grid-template-columns: 48px minmax(0, 1fr); align-items: start; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); }
.attempt-rate { width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; font-size: 11px; font-weight: 700; }
.attempt-rate.excellent, .attempt-rate.improved { color: #087c26; background: #effbf2; }
.attempt-rate.needs_work { color: #a44b00; background: #fff7e8; }
.attempt-history article > div > p:first-child { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.attempt-history time, .attempt-history small { color: var(--muted); font-size: 10px; }
.attempt-history article > div > p:not(:first-child) { margin-top: 5px; color: var(--text-2); font-size: 11px; line-height: 1.55; }
.worksheet-empty { min-height: 520px; }

.worksheet-print-page { min-height: 100vh; padding: 24px; background: #e9edf2; }
.print-toolbar { width: min(210mm, 100%); display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 auto 16px; }
.print-toolbar > div { display: flex; gap: 8px; }
.worksheet-paper { width: min(210mm, 100%); min-height: 297mm; margin: 0 auto; padding: 18mm 16mm 14mm; color: #1d2129; background: #fff; box-shadow: 0 10px 30px rgba(29, 33, 41, .12); }
.worksheet-paper-head { padding-bottom: 10mm; text-align: center; border-bottom: 2px solid #1d2129; }
.worksheet-paper-head > p { color: #4e5969; font-size: 11px; }
.worksheet-paper-head h1 { margin: 5px 0 9px; font-size: 24px; }
.worksheet-paper-head > div { display: flex; justify-content: center; gap: 28px; font-size: 13px; }
.worksheet-paper-head small { display: block; margin-top: 10px; color: #4e5969; font-size: 11px; }
.worksheet-questions { display: grid; gap: 8mm; padding: 10mm 0; }
.worksheet-questions article { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 10px; break-inside: avoid; }
.question-meta { margin-bottom: 5px; color: #4e5969; font-size: 11px; }
.question-prompt { font-size: 14px; line-height: 1.8; }
.answer-space { min-height: 18mm; margin-top: 6px; background: repeating-linear-gradient(to bottom, transparent 0, transparent 8mm, #e5e6eb 8mm, #e5e6eb calc(8mm + 1px)); }
.answer-key { margin-top: 8mm; padding-top: 8mm; border-top: 2px solid #1d2129; break-before: page; }
.answer-key h2 { margin-bottom: 8px; font-size: 17px; }
.answer-key div { display: grid; gap: 7px; }
.answer-key p { font-size: 12px; line-height: 1.7; }
.worksheet-paper-foot { margin-top: 10mm; padding-top: 5mm; color: #86909c; border-top: 1px solid #e5e6eb; font-size: 10px; text-align: center; }

@media (max-width: 1100px) {
  .wrong-workspace { grid-template-columns: minmax(0, 1fr) 320px; }
  .wrong-card-body { grid-template-columns: 140px minmax(0, 1fr); }
  .worksheet-workspace { grid-template-columns: 250px minmax(0, 1fr); }
}

@media (max-width: 860px) {
  .test-detail-tabs { overflow-x: auto; }
  .test-detail-tabs a { min-width: 138px; }
  .wrong-workspace, .worksheet-workspace { grid-template-columns: 1fr; }
  .wrong-upload-panel { position: static; order: -1; }
  .worksheet-candidates { max-height: 360px; overflow-y: auto; }
  .attempt-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .test-detail-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); display: grid; overflow: visible; }
  .test-detail-tabs a { min-width: 0; flex-direction: column; gap: 3px; padding: 9px 5px; text-align: center; line-height: 1.35; }
  .test-detail-tabs svg { display: none; }
  .wrong-card-body { grid-template-columns: 1fr; }
  .wrong-photo { min-height: 150px; }
  .wrong-confirm-form .button { width: 100%; justify-self: stretch; }
  .form-actions.split { grid-template-columns: 1fr; }
  .worksheet-editor-head, .worksheet-approve, .print-toolbar { align-items: flex-start; flex-direction: column; }
  .worksheet-editor-head > div:last-child, .print-toolbar > div { width: 100%; }
  .worksheet-editor-head .button, .worksheet-approve .button, .print-toolbar .button { flex: 1; }
  .worksheet-attempts { padding: 18px 14px; }
  .attempt-notes { grid-template-columns: 1fr; }
  .worksheet-attempt-form > .button { width: 100%; justify-self: stretch; }
  .worksheet-print-page { padding: 0; }
  .print-toolbar { padding: 12px; margin: 0; background: #fff; }
  .worksheet-paper { min-height: 0; padding: 24px 16px; box-shadow: none; }
  .worksheet-paper-head > div { align-items: flex-start; flex-direction: column; gap: 4px; text-align: left; }
}

/* Mobile-first class daily work */
.daily-context-bar { min-height: 72px; display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 16px; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.daily-context-form { display: flex; align-items: flex-end; gap: 10px; }
.daily-context-form label > span, .homework-create-form label > span, .homework-picker label > span, .daily-student-card > label > span, .homework-bulk-toolbar label > span, .classroom-quick-setup label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.daily-context-form select, .daily-context-form input, .homework-create-form select, .homework-create-form input, .homework-picker select,
.daily-student-card select, .daily-student-card input, .homework-bulk-toolbar select, .homework-bulk-toolbar input, .classroom-quick-setup select, .classroom-quick-setup input { width: 100%; min-height: 40px; padding: 8px 11px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.daily-context-form select:focus, .daily-context-form input:focus, .homework-create-form select:focus, .homework-create-form input:focus, .homework-picker select:focus,
.daily-student-card select:focus, .daily-student-card input:focus, .homework-bulk-toolbar select:focus, .homework-bulk-toolbar input:focus, .classroom-quick-setup select:focus, .classroom-quick-setup input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.daily-context-form label:first-of-type { width: 190px; }
.daily-context-form label:nth-of-type(2) { width: 152px; }
.daily-context-form label:nth-of-type(3) { width: 112px; }
.daily-anchor-nav { display: flex; gap: 6px; }
.daily-anchor-nav a { min-height: 38px; display: inline-flex; align-items: center; gap: 6px; padding: 8px 11px; color: var(--text-2); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; }
.daily-anchor-nav a:hover { color: var(--primary); background: var(--primary-soft); border-color: #cbdcff; }
.daily-anchor-nav svg { width: 15px; height: 15px; }
.daily-panel { margin-bottom: 16px; overflow: hidden; }
.daily-panel, .daily-homework-section, .classroom-quick-overview { scroll-margin-top: 86px; }
.daily-panel-heading { align-items: center; }
.daily-panel-heading > div > .subject-badge { margin-bottom: 7px; }
.daily-saved-state { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-size: 10px; font-weight: 600; }
.daily-saved-state svg { width: 15px; height: 15px; color: var(--success); }
.homework-parent-control { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 7px; max-width: 360px; }
.homework-parent-control > small { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-size: 12px; }
.homework-parent-control > small svg { width: 14px; color: var(--success); }
.homework-parent-control form { display: inline-flex; }
.daily-summary-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 0 18px 14px; overflow: hidden; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.daily-summary-strip > div { min-height: 68px; display: flex; align-items: center; justify-content: center; gap: 10px; padding: 10px; border-right: 1px solid var(--line); }
.daily-summary-strip > div:last-child { border-right: 0; }
.daily-summary-strip > div > span { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; }
.daily-summary-strip svg { width: 16px; height: 16px; }
.daily-summary-strip strong, .daily-summary-strip small { display: block; }
.daily-summary-strip strong { font-size: 17px; line-height: 1.2; }
.daily-summary-strip small { margin-top: 2px; color: var(--muted); font-size: 12px; }
.daily-summary-strip .late > span, .daily-summary-strip .leave > span, .daily-summary-strip .correction > span { color: #a44b00; background: #fff1d9; }
.daily-summary-strip .sick > span, .daily-summary-strip .missing > span, .daily-summary-strip .absent > span { color: #c32626; background: #fff0f0; }
.daily-summary-strip .excellent > span, .daily-summary-strip .resolved > span { color: #087c26; background: #eaf8ee; }
.daily-roster-form { padding: 0 18px 18px; }
.daily-bulk-toolbar, .homework-bulk-toolbar { min-height: 62px; display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding: 10px 12px; background: #f7f9fc; border: 1px solid var(--line); border-radius: var(--radius); }
.daily-bulk-toolbar > div:first-child { margin-right: auto; }
.daily-bulk-toolbar strong, .daily-bulk-toolbar p { display: block; }
.daily-bulk-toolbar strong { font-size: 12px; }
.daily-bulk-toolbar p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.daily-student-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.daily-student-card { min-width: 0; padding: 12px; background: #fff; border: 1px solid var(--line); border-top: 3px solid #9eb3cd; border-radius: var(--radius); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.daily-student-card:hover { box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.daily-student-card.status-present, .homework-card.status-completed { border-top-color: #7e9aba; }
.daily-student-card.status-late, .daily-student-card.status-leave, .homework-card.status-correction { border-top-color: var(--warning); }
.daily-student-card.status-sick, .daily-student-card.status-absent, .homework-card.status-missing { border-top-color: var(--danger); }
.homework-card.status-excellent { border-top-color: var(--success); }
.daily-student-card > header { min-height: 38px; display: flex; align-items: center; gap: 9px; margin-bottom: 10px; }
.attendance-card > header > span { width: 30px; height: 30px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: #315f9d; background: #eef4fc; border-radius: 50%; font-size: 12px; font-weight: 700; }
.daily-student-card > header > div { min-width: 0; flex: 1; }
.daily-student-card > header strong, .daily-student-card > header small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.daily-student-card > header strong { font-size: 13px; }
.daily-student-card > header small { margin-top: 2px; color: var(--muted); font-size: 12px; }
.daily-student-card > header > svg { width: 17px; height: 17px; color: #7790ad; }
.daily-student-card.status-late > header > svg, .daily-student-card.status-leave > header > svg, .homework-card.status-correction > header > svg { color: var(--warning); }
.daily-student-card.status-sick > header > svg, .daily-student-card.status-absent > header > svg, .homework-card.status-missing > header > svg { color: var(--danger); }
.homework-card.status-excellent > header > svg { color: var(--success); }
.daily-student-card > label { display: block; margin-top: 8px; }
.daily-student-card > label > span { margin-bottom: 4px; font-size: 13px; }
.daily-student-card select, .daily-student-card input { min-height: 38px; padding: 7px 9px; font-size: 13px; }
.daily-save-bar { min-height: 62px; display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 16px; padding: 11px 12px 0; border-top: 1px solid var(--line); }
.daily-save-bar p { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; }
.daily-save-bar p svg { width: 15px; height: 15px; color: var(--primary); }
.daily-homework-section { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, .72fr); gap: 16px; margin-bottom: 16px; }
.homework-create-panel, .homework-history-panel { overflow: hidden; }
.profile-panel-icon.homework { color: #087c26; background: #edf9f1; }
.homework-create-form { display: grid; grid-template-columns: 120px minmax(220px, 1fr) 145px 145px auto; align-items: end; gap: 10px; padding: 0 18px 18px; }
.homework-create-form .button { min-width: 138px; }
.homework-create-form .curriculum-context { grid-column: 1 / -1; }
.homework-picker { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 10px; padding: 0 18px 12px; }
.homework-picker label { min-width: 0; }
.homework-recent-list { display: grid; gap: 3px; padding: 0 12px 14px; }
.homework-recent-list > a { min-height: 54px; display: grid; grid-template-columns: auto minmax(0, 1fr) 18px; align-items: center; gap: 9px; padding: 8px 9px; border: 1px solid transparent; border-radius: var(--radius-sm); }
.homework-recent-list > a:hover { background: #f7f9fc; }
.homework-recent-list > a.active { background: var(--primary-soft); border-color: #cbdcff; }
.homework-recent-list strong, .homework-recent-list p { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.homework-recent-list strong { font-size: 13px; }
.homework-recent-list p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.homework-recent-list > a > svg { width: 15px; color: var(--muted); }
.homework-bulk-toolbar { display: grid; grid-template-columns: auto 150px minmax(200px, 1fr) auto; }
.bulk-selection-actions { display: flex; align-items: center; gap: 4px; }
.text-button { min-height: 34px; display: inline-flex; align-items: center; gap: 5px; padding: 6px 8px; color: var(--primary); background: transparent; border: 0; border-radius: var(--radius-sm); font-size: 10px; font-weight: 600; cursor: pointer; }
.classroom-student-toolbar .text-button { font-size: 12px; }
.text-button:hover { background: var(--primary-soft); }
.text-button svg { width: 14px; height: 14px; }
.student-select { position: relative; width: 28px; height: 28px; flex: 0 0 auto; }
.student-select input { position: absolute; opacity: 0; pointer-events: none; }
.student-select span { width: 28px; height: 28px; display: block; background: #f7f8fa; border: 1px solid var(--line); border-radius: 50%; cursor: pointer; }
.student-select span::after { content: ""; position: absolute; inset: 8px; background: transparent; border-radius: 50%; }
.student-select input:checked + span { background: var(--primary-soft); border-color: #8db1ff; }
.student-select input:checked + span::after { background: var(--primary); }
.classroom-quick-form { padding: 0 18px 18px; }
.classroom-quick-setup { display: grid; grid-template-columns: 150px minmax(220px, .8fr) minmax(280px, 1.2fr); gap: 10px; margin-bottom: 14px; padding: 12px; background: #f7f9fc; border: 1px solid var(--line); border-radius: var(--radius); }
.classroom-tag-picker { min-width: 0; margin: 0 0 14px; padding: 0; border: 0; }
.classroom-tag-picker legend { margin-bottom: 8px; color: var(--text-2); font-size: 13px; font-weight: 700; }
.classroom-tag-picker > div { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.quick-tag { position: relative; min-width: 0; cursor: pointer; }
.quick-tag input { position: absolute; opacity: 0; pointer-events: none; }
.quick-tag > span { min-height: 48px; display: flex; align-items: center; justify-content: center; gap: 7px; padding: 8px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); font-size: 13px; font-weight: 700; transition: color .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.quick-tag > span:hover { border-color: #a9c2f7; transform: translateY(-1px); }
.quick-tag svg { width: 17px; height: 17px; color: #5278ad; }
.quick-tag input:focus-visible + span { box-shadow: 0 0 0 3px rgba(22, 93, 255, .12); }
.quick-tag input:checked + span { color: #164b99; background: #edf4ff; border-color: #79a3f5; box-shadow: 0 4px 12px rgba(22, 93, 255, .08); }
.quick-tag.follow-up input:checked + span { color: #8a5700; background: #fff8e9; border-color: #e7bd6a; box-shadow: 0 4px 12px rgba(245, 158, 11, .08); }
.quick-tag.follow-up svg { color: #a46b09; }
.classroom-student-toolbar { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.classroom-student-toolbar strong, .classroom-student-toolbar p { display: block; }
.classroom-student-toolbar strong { font-size: 12px; }
.classroom-student-toolbar p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.classroom-student-toolbar p span { color: var(--primary); font-weight: 700; }
.classroom-student-toolbar > div:last-child { display: flex; align-items: center; gap: 4px; }
.classroom-student-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.classroom-student-choice { min-width: 0; min-height: 58px; display: flex; align-items: center; gap: 9px; padding: 9px 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; user-select: none; transition: background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.classroom-student-choice:hover { border-color: #b4c8ec; transform: translateY(-1px); }
.classroom-student-choice > input { position: absolute; opacity: 0; pointer-events: none; }
.classroom-student-choice > span:last-child { min-width: 0; }
.classroom-student-choice strong, .classroom-student-choice small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.classroom-student-choice strong { font-size: 12px; }
.classroom-student-choice small { margin-top: 2px; color: var(--muted); font-size: 12px; }
.quick-check { width: 26px; height: 26px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: transparent; background: #f6f8fb; border: 1px solid var(--line); border-radius: 50%; transition: color .2s ease, background .2s ease, border-color .2s ease; }
.quick-check svg { width: 14px; height: 14px; stroke-width: 3; }
.classroom-student-choice.selected { background: #f2f7ff; border-color: #8eb1f4; box-shadow: 0 3px 10px rgba(22, 93, 255, .07); }
.classroom-student-choice.selected .quick-check { color: #fff; background: var(--primary); border-color: var(--primary); }
.classroom-quick-overview { display: grid; grid-template-columns: minmax(360px, .8fr) minmax(0, 1.2fr); gap: 16px; margin-bottom: 16px; }
.quick-trend-panel, .quick-history-panel { overflow: hidden; }
.profile-panel-icon.quick { color: #315f9d; background: #eef4fc; }
.quick-trend-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; padding: 0 18px 18px; }
.quick-trend-grid > div { min-width: 0; min-height: 72px; display: flex; align-items: center; justify-content: center; gap: 7px; padding: 8px 5px; background: #f7f9fc; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.quick-trend-grid > div > svg { width: 16px; height: 16px; flex: 0 0 auto; color: #5278ad; }
.quick-trend-grid strong, .quick-trend-grid small { display: block; }
.quick-trend-grid strong { font-size: 15px; line-height: 1.2; }
.quick-trend-grid small { margin-top: 3px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.quick-trend-grid .follow-up svg { color: #a46b09; }
.quick-history-list { display: grid; gap: 5px; padding: 0 14px 16px; }
.quick-history-list > article { min-height: 62px; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 9px 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.quick-history-list > article.withdrawn { opacity: .62; background: #f8f9fa; }
.quick-history-icon { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: #315f9d; background: #eef4fc; border-radius: 50%; }
.quick-history-icon svg { width: 15px; height: 15px; }
.quick-history-list > article > div:nth-child(2) { min-width: 0; }
.quick-history-title { display: flex; align-items: center; gap: 6px; min-width: 0; }
.quick-history-title strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.quick-history-list p, .quick-history-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.quick-history-list p { margin-top: 3px; color: var(--text-2); font-size: 12px; }
.quick-history-list small { margin-top: 2px; color: var(--muted); font-size: 12px; }
.quick-withdrawn-badge { flex: 0 0 auto; padding: 2px 5px; color: var(--muted); background: #eceff2; border-radius: 4px; font-size: 12px; font-weight: 700; }
.text-button.danger { color: var(--danger); }
.text-button.danger:hover { background: #fff0f0; }
.empty-daily-page { min-height: 460px; display: flex; align-items: center; justify-content: center; }

@media (max-width: 1180px) {
  .daily-student-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .daily-homework-section { grid-template-columns: 1fr; }
  .homework-create-form { grid-template-columns: 110px minmax(220px, 1fr) 145px 145px; }
  .homework-create-form .button { grid-column: 1 / -1; justify-self: end; }
  .classroom-student-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .classroom-quick-overview { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .daily-context-bar { align-items: stretch; flex-direction: column; }
  .daily-context-form { display: grid; grid-template-columns: 1.2fr 1fr .8fr auto; }
  .daily-context-form label:first-of-type, .daily-context-form label:nth-of-type(2), .daily-context-form label:nth-of-type(3) { width: auto; }
  .daily-anchor-nav { justify-content: flex-end; }
  .daily-student-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .homework-bulk-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bulk-selection-actions { grid-column: 1 / -1; }
  .classroom-quick-setup { grid-template-columns: 140px 1fr; }
  .quick-detail-field { grid-column: 1 / -1; }
  .classroom-student-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .daily-context-bar { margin: -4px -8px 12px; padding: 12px; border-right: 0; border-left: 0; border-radius: 0; }
  .daily-context-form { grid-template-columns: 1fr 1fr; }
  .daily-context-form label:first-of-type { grid-column: 1 / -1; }
  .daily-context-form .button { grid-column: 1 / -1; width: 100%; }
  .daily-anchor-nav { display: grid; grid-template-columns: repeat(3, 1fr); }
  .daily-anchor-nav a { justify-content: center; }
  .daily-panel-heading { align-items: flex-start; }
  .daily-saved-state { display: none; }
  .daily-summary-strip { grid-template-columns: repeat(5, minmax(62px, 1fr)); margin-right: 12px; margin-left: 12px; overflow-x: auto; }
  .daily-summary-strip > div { min-height: 58px; gap: 5px; padding: 8px 5px; }
  .daily-summary-strip > div > span { width: 24px; height: 24px; }
  .daily-summary-strip strong { font-size: 14px; }
  .daily-roster-form { padding-right: 12px; padding-left: 12px; }
  .daily-bulk-toolbar { align-items: stretch; flex-direction: column; }
  .daily-bulk-toolbar > div:first-child { margin-right: 0; }
  .daily-bulk-toolbar .button { width: 100%; }
  .daily-student-grid { grid-template-columns: 1fr; gap: 8px; }
  .daily-student-card { display: grid; grid-template-columns: 1fr 1fr; gap: 0 8px; padding: 11px; }
  .daily-student-card > header { grid-column: 1 / -1; }
  .attendance-card > label:last-child, .homework-card > label:last-child { grid-column: 1 / -1; }
  .daily-save-bar { position: sticky; z-index: 8; bottom: 0; align-items: stretch; flex-direction: column; gap: 8px; margin-right: -12px; margin-left: -12px; padding: 10px 12px; background: rgba(255,255,255,.96); box-shadow: 0 -8px 20px rgba(29,33,41,.06); }
  .daily-save-bar .button { width: 100%; }
  .classroom-quick-form { padding-right: 12px; padding-left: 12px; }
  .classroom-quick-setup { grid-template-columns: 1fr; padding: 10px; }
  .quick-context-field, .quick-detail-field { grid-column: auto; }
  .classroom-tag-picker > div { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .quick-tag > span { min-height: 52px; flex-direction: column; gap: 4px; font-size: 10px; }
  .classroom-student-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
  .classroom-student-choice { min-height: 56px; padding: 8px; }
  .classroom-student-toolbar { align-items: flex-start; }
  .quick-trend-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: 12px; padding-left: 12px; }
  .quick-history-list { padding-right: 10px; padding-left: 10px; }
  .quick-history-list > article { grid-template-columns: 32px minmax(0, 1fr); }
  .quick-history-list > article > form { grid-column: 2; justify-self: end; }
  .homework-create-form { grid-template-columns: 1fr 1fr; padding-right: 14px; padding-left: 14px; }
  .homework-title-field { grid-column: 1 / -1; }
  .homework-create-form .button { width: 100%; justify-self: stretch; }
  .homework-picker { grid-template-columns: 1fr; padding-right: 14px; padding-left: 14px; }
  .homework-picker .button { width: 100%; }
  .homework-bulk-toolbar { grid-template-columns: 1fr; }
  .bulk-selection-actions { grid-column: auto; justify-content: space-between; }
  .homework-bulk-toolbar .button { width: 100%; }
  .homework-card > label:nth-of-type(2) { grid-column: 1 / -1; }
}

/* Account workspaces */
.workspace-overview { min-height: 156px; display: flex; align-items: center; justify-content: space-between; gap: 32px; margin-bottom: 16px; padding: 28px 32px; color: #fff; background: #183d67; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.workspace-overview-copy { max-width: 690px; }
.workspace-overview-copy .overline { color: #9dc5ee; }
.workspace-overview-copy h2 { margin: 5px 0 8px; font-size: 23px; }
.workspace-overview-copy > p:last-child { color: #d8e5f2; font-size: 12px; line-height: 1.7; }
.workspace-current-mark { min-width: 280px; display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius-lg); }
.workspace-current-mark > span { width: 40px; height: 40px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: #dff9ed; background: rgba(255,255,255,.1); border-radius: var(--radius); }
.workspace-current-mark svg { width: 20px; height: 20px; }
.workspace-current-mark small, .workspace-current-mark strong, .workspace-current-mark p { display: block; }
.workspace-current-mark small { color: #a9c4df; font-size: 10px; }
.workspace-current-mark strong { max-width: 220px; margin: 3px 0; overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.workspace-current-mark p { color: #d8e5f2; font-size: 10px; }
.membership-pause-card { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 14px; margin-bottom: 16px; padding: 16px 18px; background: #f1f9f6; border: 1px solid #cfe9df; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.membership-pause-card > span { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; color: #087c66; background: #dff4ed; border-radius: var(--radius); }
.membership-pause-card > span svg { width: 21px; height: 21px; }
.membership-pause-card p { color: #087c66; font-size: 10px; font-weight: 700; }
.membership-pause-card h2 { margin: 3px 0 4px; color: #244d43; font-size: 14px; }
.membership-pause-card small { color: #5f7b72; font-size: 10px; line-height: 1.6; }
.workspace-page-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; align-items: start; gap: 16px; }
.workspace-main-column, .workspace-side-column { min-width: 0; display: grid; gap: 16px; }
.workspace-list-panel, .workspace-join-panel, .workspace-invite-panel { overflow: hidden; }
.workspace-list { display: grid; gap: 8px; padding: 0 18px 18px; }
.workspace-row { min-height: 82px; display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); transition: border-color .2s ease, box-shadow .2s ease; }
.workspace-row:hover { border-color: #c7d7f5; box-shadow: var(--shadow-sm); }
.workspace-row.current { background: #f7faff; border-color: #bfd3f4; }
.workspace-row.inactive { background: #fafafa; }
.workspace-type-icon { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.workspace-row.inactive .workspace-type-icon { color: var(--muted); background: #f0f1f2; }
.workspace-type-icon svg { width: 20px; height: 20px; }
.workspace-row-copy { min-width: 0; }
.workspace-row-copy > div { display: flex; align-items: center; gap: 8px; }
.workspace-row-copy strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.workspace-row-copy em { flex: 0 0 auto; padding: 3px 6px; color: #17643a; background: #eaf8ee; border-radius: var(--radius-sm); font-size: 9px; font-style: normal; font-weight: 700; }
.workspace-row-copy em.inactive { color: var(--muted); background: #eceeef; }
.workspace-row-copy p { margin-top: 4px; color: var(--text-2); font-size: 11px; }
.workspace-row-copy small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
.workspace-current-check { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: #087c26; background: #eaf8ee; border-radius: 50%; }
.workspace-current-check svg { width: 16px; height: 16px; }
.workspace-disabled-text { color: var(--muted); font-size: 10px; }
.workspace-row-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }
.workspace-join-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 12px; padding: 0 18px 14px; }
.workspace-join-form label > span, .workspace-invite-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.invite-code-field { position: relative; }
.invite-code-field svg { position: absolute; top: 50%; left: 12px; width: 16px; height: 16px; color: var(--muted); transform: translateY(-50%); }
.invite-code-field input, .workspace-invite-form input { width: 100%; min-height: 42px; padding: 9px 12px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.invite-code-field input { padding-left: 38px; font-family: Consolas, monospace; font-size: 14px; letter-spacing: 0; text-transform: uppercase; }
.invite-code-field input:focus, .workspace-invite-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.workspace-data-note { display: flex; align-items: flex-start; gap: 10px; margin: 0 18px 18px; padding: 12px; color: #315f52; background: #f1f9f6; border: 1px solid #cfe9df; border-radius: var(--radius); }
.workspace-data-note > svg { width: 18px; height: 18px; flex: 0 0 auto; color: #087c66; }
.workspace-data-note strong, .workspace-data-note span { display: block; }
.workspace-data-note strong { margin-bottom: 2px; font-size: 11px; }
.workspace-data-note span { color: #5f7b72; font-size: 10px; line-height: 1.6; }
.workspace-transfer-panel, .transfer-history-panel, .transfer-review-panel { overflow: hidden; }
.profile-panel-icon.transfer { color: #315d8a; background: #edf4fb; }
.workspace-transfer-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 0 18px 18px; }
.workspace-transfer-form label > span, .transfer-review-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.workspace-transfer-form select, .workspace-transfer-form textarea, .transfer-review-form textarea { width: 100%; min-height: 42px; padding: 9px 12px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.workspace-transfer-form select:focus, .workspace-transfer-form textarea:focus, .transfer-review-form textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.workspace-transfer-form textarea, .transfer-review-form textarea { resize: vertical; line-height: 1.6; }
.transfer-reason-field, .transfer-submit-row { grid-column: 1 / -1; }
.transfer-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 2px; }
.transfer-submit-row p { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.transfer-submit-row p svg { width: 15px; height: 15px; flex: 0 0 auto; }
.transfer-empty { display: flex; align-items: flex-start; gap: 12px; margin: 0 18px 18px; padding: 16px; background: #f8f9fb; border: 1px dashed #cfd5dd; border-radius: var(--radius); }
.transfer-empty > svg { width: 20px; height: 20px; flex: 0 0 auto; color: #54708c; }
.transfer-empty strong { display: block; margin-bottom: 4px; font-size: 12px; }
.transfer-empty p { color: var(--muted); font-size: 10px; line-height: 1.6; }
.transfer-privacy-note { display: flex; align-items: flex-start; gap: 10px; margin: 0 18px 18px; padding: 12px; color: #60491a; background: #fff9ed; border: 1px solid #f1ddb4; border-radius: var(--radius); }
.transfer-privacy-note > svg { width: 18px; height: 18px; flex: 0 0 auto; color: #a76d00; }
.transfer-privacy-note strong { display: block; margin-bottom: 3px; font-size: 11px; }
.transfer-privacy-note p { color: #806b41; font-size: 10px; line-height: 1.65; }
.transfer-history-list, .transfer-review-list { display: grid; gap: 8px; padding: 0 18px 18px; }
.transfer-history-list > article { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 11px; padding: 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.transfer-status-icon { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #a76d00; background: #fff5dd; border-radius: var(--radius); }
.transfer-status-icon svg { width: 18px; height: 18px; }
.transfer-status-icon.approved { color: #087c26; background: #eaf8ee; }
.transfer-status-icon.rejected { color: #c32626; background: #fff0f0; }
.transfer-history-list header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.transfer-history-list header strong { min-width: 0; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.transfer-status { flex: 0 0 auto; padding: 3px 7px; color: #8b5e08; background: #fff5dd; border-radius: var(--radius-sm); font-size: 9px; font-style: normal; font-weight: 700; }
.transfer-status.approved { color: #17643a; background: #eaf8ee; }
.transfer-status.rejected { color: #a32929; background: #fff0f0; }
.transfer-history-list p, .transfer-history-list small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; line-height: 1.55; }
.transfer-history-list small.review-note { color: #765d2b; }
.transfer-history-list small.result-note { color: #17643a; }
.transfer-review-list > article { padding: 14px; background: #fbfcfe; border: 1px solid var(--line); border-radius: var(--radius); }
.transfer-review-list > article > header { display: flex; align-items: center; gap: 10px; }
.transfer-review-list > article > header > span { width: 38px; height: 38px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.transfer-review-list > article > header svg { width: 19px; height: 19px; }
.transfer-review-list > article > header strong { display: block; font-size: 12px; }
.transfer-review-list > article > header p { margin-top: 3px; color: var(--muted); font-size: 10px; }
.transfer-request-reason { margin: 10px 0; padding: 10px 12px; background: #fff; border-left: 3px solid #9bb7d4; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.transfer-request-reason strong { display: block; margin-bottom: 3px; font-size: 10px; }
.transfer-request-reason p { color: var(--text-2); font-size: 10px; line-height: 1.6; }
.transfer-review-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 10px; margin-top: 12px; }
.transfer-review-form > div { display: flex; gap: 7px; }
.generated-invite { margin: 0 18px 16px; padding: 18px; text-align: center; background: #f6f9fd; border: 1px solid #d7e2f1; border-radius: var(--radius); }
.generated-invite small { display: block; color: var(--muted); font-size: 10px; }
.generated-invite strong { display: block; margin: 8px 0 4px; color: #183d67; font-family: Consolas, monospace; font-size: 24px; letter-spacing: 0; }
.generated-invite p { margin-bottom: 12px; color: var(--text-2); font-size: 10px; }
.generated-invite em { display: flex; align-items: center; justify-content: center; gap: 5px; margin-top: 9px; color: var(--muted); font-size: 9px; font-style: normal; }
.generated-invite em svg { width: 13px; height: 13px; }
.workspace-invite-form { display: grid; gap: 12px; padding: 0 18px 18px; }
.workspace-guide-panel { padding: 22px; }
.workspace-guide-panel > span { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; color: #087c66; background: #eafaf6; border-radius: var(--radius); }
.workspace-guide-panel > span svg { width: 21px; height: 21px; }
.workspace-guide-panel h2 { margin: 12px 0 14px; font-size: 15px; }
.workspace-guide-panel ol { display: grid; gap: 13px; }
.workspace-guide-panel li { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 9px; }
.workspace-guide-panel li > em { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary); background: var(--primary-soft); border-radius: 50%; font-size: 10px; font-style: normal; font-weight: 700; }
.workspace-guide-panel strong, .workspace-guide-panel small { display: block; }
.workspace-guide-panel strong { font-size: 11px; }
.workspace-guide-panel small { margin-top: 3px; color: var(--muted); font-size: 10px; line-height: 1.55; }

@media (max-width: 980px) {
  .workspace-page-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .workspace-overview { align-items: flex-start; flex-direction: column; gap: 18px; padding: 22px 18px; }
  .workspace-current-mark { width: 100%; min-width: 0; }
  .workspace-current-mark strong { max-width: calc(100vw - 150px); }
  .membership-pause-card { grid-template-columns: 40px minmax(0, 1fr); padding: 14px; }
  .membership-pause-card > span { width: 40px; height: 40px; }
  .membership-pause-card .button { grid-column: 1 / -1; width: 100%; }
  .workspace-join-form { grid-template-columns: 1fr; }
  .workspace-join-form .button { width: 100%; }
  .workspace-row { grid-template-columns: 38px minmax(0, 1fr); padding: 11px; }
  .workspace-type-icon { width: 38px; height: 38px; }
  .workspace-row-actions { grid-column: 1 / -1; width: 100%; justify-content: stretch; padding-left: 50px; }
  .workspace-row-actions form { flex: 1; }
  .workspace-row-actions .button { width: 100%; }
  .workspace-row-actions .workspace-current-check { display: none; }
  .workspace-disabled-text { padding-left: 50px; }
  .workspace-transfer-form { grid-template-columns: 1fr; padding-right: 14px; padding-left: 14px; }
  .transfer-reason-field, .transfer-submit-row { grid-column: auto; }
  .transfer-submit-row { align-items: stretch; flex-direction: column; }
  .transfer-submit-row .button { width: 100%; }
  .transfer-history-list, .transfer-review-list { padding-right: 14px; padding-left: 14px; }
  .transfer-history-list header { align-items: flex-start; flex-direction: column; gap: 5px; }
  .transfer-history-list header strong { white-space: normal; }
  .transfer-review-form { grid-template-columns: 1fr; }
  .transfer-review-form > div { display: grid; grid-template-columns: 1fr; }
  .transfer-review-form .button { width: 100%; }
}

/* 总务后勤工作台 */
.general-affairs-band { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; padding: 24px 32px; border: 1px solid #d9e3e8; border-radius: 12px; background: #f7fafb; }
.general-affairs-band h2 { margin: 4px 0 8px; color: #17242b; font-size: 24px; line-height: 1.25; }
.general-affairs-band p { margin: 0; color: #64737c; }
.general-affairs-welcome { color: #1f3736; border: 1px solid #d8e4e2; background: #f4f9f8; }
.general-affairs-welcome .overline { color: #5c8d89; }
.general-affairs-welcome h2 { color: #1f3736; }
.general-affairs-welcome p { color: #657a79; }
.general-affairs-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.general-affairs-metrics article, .general-affairs-metrics a { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 12px; min-height: 82px; padding: 14px 16px; border: 1px solid #e2e8ec; border-radius: 8px; color: inherit; background: #fff; text-decoration: none; transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.general-affairs-metrics a { grid-template-columns: 42px minmax(0, 1fr) 18px; }
.general-affairs-metrics a:hover { border-color: #b6cbc8; box-shadow: 0 5px 16px rgba(32, 61, 65, .08); transform: translateY(-1px); }
.general-affairs-metrics article > span, .general-affairs-metrics a > span { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 8px; color: #286a67; background: #eaf4f3; }
.general-affairs-metrics .urgent > span, .general-affairs-metrics .approval > span { color: #b54708; background: #fff3e6; }
.general-affairs-metrics .stock > span { color: #8b6513; background: #fff8df; }
.general-affairs-metrics .asset > span { color: #405b7b; background: #edf2f8; }
.general-affairs-metrics svg { width: 19px; }
.general-affairs-metrics a > svg { width: 16px; color: #98a2b3; }
.general-affairs-metrics strong, .general-affairs-metrics small { display: block; }
.general-affairs-metrics strong { color: #1d2939; font-size: 23px; line-height: 1.15; }
.general-affairs-metrics small { margin-top: 3px; color: #667085; font-size: 11px; }
.general-affairs-tabs { display: flex; gap: 4px; margin-bottom: 16px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.general-affairs-tabs a { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 40px; padding: 8px 14px; border-radius: 6px; color: #5a6971; text-decoration: none; transition: color .2s ease, background .2s ease; }
.general-affairs-tabs a:hover { color: #286a67; background: #f3f8f7; }
.general-affairs-tabs a.active { color: #1d5c59; background: #eaf4f3; font-weight: 700; }
.general-affairs-tabs svg { width: 17px; }
.general-request-layout { display: grid; grid-template-columns: minmax(0, 1fr) 400px; align-items: start; gap: 16px; }
.general-request-main, .general-request-side { min-width: 0; display: grid; gap: 16px; }
.general-request-filter { display: grid; grid-template-columns: repeat(2, minmax(150px, 220px)) auto; align-items: end; gap: 10px; padding: 16px; }
.general-request-filter label > span, .general-action-form label > span, .general-request-form label > span, .general-record-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 11px; font-weight: 700; }
.general-request-filter select,
.general-action-form input, .general-action-form select, .general-action-form textarea,
.general-request-form input, .general-request-form select, .general-request-form textarea,
.general-record-form input, .general-record-form select, .general-record-form textarea {
  width: 100%;
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid #d7e0e4;
  border-radius: 8px;
  outline: 0;
  color: #34444c;
  background: #f8fafb;
  transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.general-action-form textarea, .general-request-form textarea, .general-record-form textarea { resize: vertical; line-height: 1.6; }
.general-request-form textarea { min-height: 96px; }
.general-request-filter select:focus,
.general-action-form input:focus, .general-action-form select:focus, .general-action-form textarea:focus,
.general-request-form input:focus, .general-request-form select:focus, .general-request-form textarea:focus,
.general-record-form input:focus, .general-record-form select:focus, .general-record-form textarea:focus {
  border-color: #72a9a5;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(44, 119, 114, .09);
}
.general-request-form input::placeholder, .general-request-form textarea::placeholder,
.general-record-form input::placeholder, .general-record-form textarea::placeholder { color: #98a2b3; }
.general-request-list-panel { padding: 0; overflow: hidden; }
.general-request-list-panel > .panel-heading { margin: 0; padding: 18px 22px; border-bottom: 1px solid #e7ecef; }
.general-request-list > a { display: grid; grid-template-columns: 46px minmax(0, 1fr) 18px; align-items: center; gap: 13px; padding: 16px 22px; border-bottom: 1px solid #e7ecef; color: inherit; text-decoration: none; transition: background .2s ease, box-shadow .2s ease; }
.general-request-list > a:last-of-type { border-bottom: 0; }
.general-request-list > a:hover, .general-request-list > a.selected { background: #f6faf9; }
.general-request-list > a.selected { box-shadow: inset 3px 0 #2c7772; }
.general-request-list > a > svg { width: 17px; color: #98a2b3; }
.general-request-icon { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 8px; color: #286a67; background: #eaf4f3; }
.general-request-icon.purchase { color: #9a6700; background: #fff5d9; }
.general-request-icon.safety { color: #b54708; background: #fff0e6; }
.general-request-icon.repair { color: #315d86; background: #edf4fb; }
.general-request-icon svg { width: 19px; }
.general-request-list header { display: flex; align-items: center; min-width: 0; gap: 8px; }
.general-request-list header strong { min-width: 0; overflow: hidden; color: #25343c; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.request-priority { flex: 0 0 auto; padding: 2px 6px; border-radius: 6px; color: #667085; background: #f0f2f5; font-size: 10px; font-style: normal; }
.request-priority.important { color: #9a6700; background: #fff4cc; }
.request-priority.urgent { color: #b42318; background: #feeceb; }
.general-request-list p { margin: 5px 0 7px; overflow: hidden; color: #667085; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.general-request-list footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; color: #98a2b3; font-size: 11px; }
.general-request-detail, .general-request-form-panel, .general-record-form { padding: 20px; }
.general-request-detail > header { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 12px; padding-bottom: 16px; border-bottom: 1px solid #e7ecef; }
.general-request-detail > header small { color: #2c7772; font-size: 10px; font-weight: 700; }
.general-request-detail > header h2 { margin: 4px 0; color: #25343c; font-size: 18px; line-height: 1.35; overflow-wrap: anywhere; }
.general-request-detail > header p { margin: 0; color: #98a2b3; font-size: 11px; }
.general-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 16px 0; overflow: hidden; border: 1px solid #e1e7ea; border-radius: 8px; background: #e1e7ea; }
.general-detail-grid span { min-width: 0; padding: 10px 12px; background: #fafcfc; }
.general-detail-grid small, .general-detail-grid strong { display: block; }
.general-detail-grid small { color: #98a2b3; font-size: 10px; }
.general-detail-grid strong { margin-top: 3px; overflow: hidden; color: #34444c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.general-detail-note { padding: 12px; border-left: 3px solid #7eaaa6; border-radius: 0 8px 8px 0; background: #f4f8f7; }
.general-detail-note small { color: #6c807e; font-size: 10px; font-weight: 700; }
.general-detail-note p { margin: 5px 0 0; color: #42545c; font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.general-scene-photo { position: relative; display: block; margin-top: 12px; overflow: hidden; border-radius: 8px; background: #edf2f3; }
.general-scene-photo img { display: block; width: 100%; max-height: 230px; object-fit: cover; }
.general-scene-photo span { position: absolute; right: 8px; bottom: 8px; display: inline-flex; align-items: center; gap: 5px; padding: 6px 9px; border-radius: 6px; color: #fff; background: rgba(23, 36, 43, .78); font-size: 10px; }
.general-scene-photo svg { width: 14px; }
.general-action-form { display: grid; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid #e7ecef; }
.general-action-form > div:last-child { display: flex; justify-content: flex-end; gap: 8px; }
.general-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.general-cancel-form { margin-top: 10px; text-align: right; }
.general-update-list { margin-top: 18px; padding-top: 16px; border-top: 1px solid #e7ecef; }
.general-update-list h3 { margin: 0 0 10px; color: #34444c; font-size: 13px; }
.general-update-list article { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 9px; padding: 9px 0; }
.general-update-list article > span { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 6px; color: #2c7772; background: #eaf4f3; }
.general-update-list svg { width: 14px; }
.general-update-list strong { color: #34444c; font-size: 11px; }
.general-update-list p { margin: 2px 0; color: #667085; font-size: 11px; line-height: 1.5; }
.general-update-list small { color: #98a2b3; font-size: 9px; }
.general-request-form-panel > .panel-heading > span, .general-record-form > .panel-heading > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; color: #fff; background: #2c7772; }
.general-request-form, .general-record-form form { display: grid; gap: 10px; }
.general-photo-field input[type="file"] { min-height: 46px; padding: 7px; border: 1px dashed #afc7c5; background: #f8fbfb; cursor: pointer; }
.general-photo-field input[type="file"]::file-selector-button { min-height: 30px; margin-right: 9px; padding: 6px 10px; border: 0; border-radius: 6px; color: #1d5c59; background: #e3f0ef; font-weight: 700; cursor: pointer; }
.general-photo-field small { display: block; margin-top: 5px; color: #98a2b3; font-size: 10px; }
.general-record-layout { display: grid; grid-template-columns: minmax(0, 1fr) 370px; align-items: start; gap: 16px; }
.general-record-list { min-width: 0; padding: 0; overflow: hidden; }
.general-record-list > .panel-heading { margin: 0; padding: 18px 22px; border-bottom: 1px solid #e7ecef; }
.general-record-list th, .general-record-list td { padding: 12px; }
.general-record-list td strong, .general-record-list td small { display: block; }
.general-record-list td small { margin-top: 3px; color: #98a2b3; font-size: 10px; }
.inventory-state, .asset-state { display: inline-flex; padding: 3px 7px; border-radius: 6px; color: #176b4b; background: #e8f5ee; font-size: 10px; font-weight: 700; }
.inventory-state.warning, .asset-state.repair { color: #b54708; background: #fff1e3; }
.asset-state.idle { color: #475467; background: #eef1f4; }
.asset-state.retired { color: #b42318; background: #feeceb; }
.inventory-adjust-form { display: grid; grid-template-columns: 76px 64px minmax(90px, 1fr) auto; gap: 6px; }
.inventory-adjust-form select, .inventory-adjust-form input { min-width: 0; height: 34px; padding: 6px 8px; font-size: 11px; }
.general-affairs-dashboard-grid { display: grid; grid-template-columns: minmax(0, 1fr) 350px; gap: 16px; }
.general-dashboard-list { padding: 0; overflow: hidden; }
.general-dashboard-list > .panel-heading { margin: 0; padding: 18px 22px; border-bottom: 1px solid #e7ecef; }
.general-dashboard-links { padding: 18px; }
.general-dashboard-links > a { display: grid; grid-template-columns: 36px minmax(0, 1fr) 16px; align-items: center; gap: 10px; padding: 11px 8px; border-bottom: 1px solid #edf0f2; color: inherit; text-decoration: none; }
.general-dashboard-links > a:last-child { border-bottom: 0; }
.general-dashboard-links > a > svg:first-child { width: 18px; color: #2c7772; }
.general-dashboard-links > a > svg:last-child { width: 15px; color: #98a2b3; }
.general-dashboard-links strong, .general-dashboard-links small { display: block; }
.general-dashboard-links strong { color: #34444c; font-size: 12px; }
.general-dashboard-links small { margin-top: 2px; color: #98a2b3; font-size: 10px; }

@media (max-width: 1180px) {
  .general-affairs-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .general-request-layout { grid-template-columns: minmax(0, 1fr) 360px; }
  .general-record-layout { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .general-request-layout, .general-affairs-dashboard-grid { grid-template-columns: 1fr; }
  .general-request-side { grid-row: 1; }
  .general-affairs-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
  .general-affairs-band { align-items: stretch; flex-direction: column; padding: 20px 16px; }
  .general-affairs-band h2 { font-size: 20px; }
  .general-affairs-band .button { width: 100%; }
  .general-affairs-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .general-affairs-metrics article, .general-affairs-metrics a { min-height: 72px; padding: 11px; }
  .general-affairs-metrics article:last-child, .general-affairs-metrics a:last-child { grid-column: 1 / -1; }
  .general-affairs-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .general-request-filter, .general-action-grid { grid-template-columns: 1fr; }
  .general-request-filter .button { width: 100%; }
  .general-request-list > a { grid-template-columns: 40px minmax(0, 1fr) 15px; gap: 9px; padding: 14px 16px; }
  .general-request-icon { width: 40px; height: 40px; }
  .general-request-list footer { display: grid; justify-content: stretch; }
  .general-request-detail, .general-request-form-panel, .general-record-form { padding: 16px; }
  .general-action-form > div:last-child { display: grid; grid-template-columns: 1fr; }
  .general-action-form > div:last-child .button { width: 100%; }
  .general-record-list .table-wrap { overflow: visible; }
  .general-record-list table, .general-record-list tbody, .general-record-list tr, .general-record-list td { display: block; width: 100%; }
  .general-record-list thead { display: none; }
  .general-record-list tr { padding: 12px 16px; border-bottom: 1px solid #e7ecef; }
  .general-record-list td { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 10px; padding: 6px 0; border: 0; text-align: left; }
  .general-record-list td::before { content: attr(data-label); color: #98a2b3; font-size: 10px; font-weight: 700; }
  .inventory-adjust-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inventory-adjust-form input[name="movement_note"], .inventory-adjust-form .button { grid-column: 1 / -1; width: 100%; }
}

/* School operations */
.operations-header { display: flex; align-items: center; justify-content: space-between; gap: 28px; padding: 22px 24px; color: #fff; background: #17395f; border-radius: var(--radius-lg); box-shadow: 0 10px 28px rgba(23,57,95,.12); }
.operations-header > div:first-child { max-width: 720px; }
.operations-header .overline { color: #a8c9ef; }
.operations-header h2 { margin: 5px 0 8px; font-size: 20px; }
.operations-header > div:first-child > p:last-child { color: #cfdeed; font-size: 13px; }
.operations-live-state { min-width: 300px; display: grid; grid-template-columns: 44px minmax(0,1fr); align-items: center; gap: 12px; padding: 13px 15px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15); border-radius: var(--radius); }
.operations-live-state > span { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; color: #a9d8cb; background: rgba(255,255,255,.1); border-radius: var(--radius); }
.operations-live-state small, .operations-live-state strong, .operations-live-state p { display: block; }
.operations-live-state small { color: #a8c9ef; font-size: 12px; }
.operations-live-state strong { margin: 2px 0; overflow-wrap: anywhere; font-size: 13px; }
.operations-live-state p { color: #cfdeed; font-size: 12px; }
.operations-tabs { display: flex; align-items: center; gap: 4px; margin-top: 16px; padding: 5px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.operations-tabs a { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 7px 14px; color: var(--text-2); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; transition: color .2s ease, background .2s ease; }
.operations-tabs a svg { width: 16px; height: 16px; }
.operations-tabs a:hover { color: var(--primary); background: #f5f8fe; }
.operations-tabs a.active { color: #fff; background: #315f8f; }
.operations-metric-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin-top: 16px; }
.operations-metric-grid article { min-width: 0; display: grid; grid-template-columns: 40px minmax(0,1fr); align-items: center; gap: 11px; padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.operation-metric-icon { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #edf4fb; border-radius: var(--radius); }
.operation-metric-icon.green { color: #087c66; background: #eaf8f4; }
.operation-metric-icon.amber { color: #9c6800; background: #fff6df; }
.operation-metric-icon.violet { color: #586a7f; background: #eef1f5; }
.operation-metric-icon svg { width: 19px; height: 19px; }
.operations-metric-grid small, .operations-metric-grid strong, .operations-metric-grid p { display: block; }
.operations-metric-grid small { color: var(--muted); font-size: 12px; }
.operations-metric-grid strong { margin: 3px 0; overflow-wrap: anywhere; font-size: 13px; }
.operations-metric-grid p { color: var(--text-2); font-size: 12px; }
.operations-roadmap { margin-top: 16px; padding: 0 20px 20px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.operations-step-list { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 8px; }
.operations-step-list article { min-width: 0; display: grid; grid-template-columns: 30px minmax(0,1fr); gap: 9px; padding: 13px; background: #f8f9fb; border: 1px solid transparent; border-radius: var(--radius); }
.operations-step-list article > span { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: #6b7788; background: #e9edf2; border-radius: var(--radius-sm); font-size: 10px; font-weight: 700; }
.operations-step-list article > span svg { width: 15px; height: 15px; }
.operations-step-list article.done { background: #f3faf7; border-color: #d4ebe1; }
.operations-step-list article.done > span { color: #087c66; background: #dff3eb; }
.operations-step-list strong, .operations-step-list p, .operations-step-list em { display: block; }
.operations-step-list strong { font-size: 13px; }
.operations-step-list p { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.55; }
.operations-step-list em { grid-column: 2; margin-top: 6px; color: #607086; font-size: 12px; font-style: normal; font-weight: 700; }
.operations-step-list article.done em { color: #087c66; }
.time-rule-layout { display: grid; grid-template-columns: 286px minmax(0,1fr); align-items: start; gap: 16px; margin-top: 16px; }
.time-rule-history, .time-rule-summary, .time-rule-editor { overflow: hidden; }
.time-rule-list { display: grid; gap: 7px; padding: 0 14px 14px; }
.time-rule-list > a { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 10px; padding: 11px; border: 1px solid var(--line); border-radius: var(--radius); transition: border-color .2s ease, background .2s ease; }
.time-rule-list > a:hover { border-color: #b8cae1; background: #f8fafd; }
.time-rule-list > a.active { background: #f2f7fc; border-color: #9eb9d9; }
.time-rule-list > a > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #eaf1f8; border-radius: var(--radius-sm); }
.time-rule-list > a > span svg { width: 17px; height: 17px; }
.time-rule-list strong, .time-rule-list p, .time-rule-list small { display: block; }
.time-rule-list strong { overflow-wrap: anywhere; font-size: 11px; }
.time-rule-list p { margin-top: 3px; color: var(--text-2); font-size: 9px; }
.time-rule-list small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.time-rule-main { min-width: 0; display: grid; gap: 16px; }
.status-badge { padding: 4px 8px; color: #17643a; background: #eaf8ee; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; }
.status-badge.inactive { color: var(--muted); background: #f0f1f2; }
.rule-summary-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; padding: 0 18px 14px; }
.rule-summary-grid > div { padding: 12px; background: #f7f9fb; border: 1px solid #edf0f3; border-radius: var(--radius); }
.rule-summary-grid small, .rule-summary-grid strong, .rule-summary-grid p { display: block; }
.rule-summary-grid small { color: var(--muted); font-size: 9px; }
.rule-summary-grid strong { margin: 3px 0; font-size: 12px; }
.rule-summary-grid p { color: var(--text-2); font-size: 9px; }
.rule-period-preview { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 7px; padding: 14px 18px 18px; border-top: 1px solid var(--line); }
.rule-period-preview span { padding: 9px 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.rule-period-preview strong, .rule-period-preview small { display: block; }
.rule-period-preview strong { font-size: 10px; }
.rule-period-preview small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.permission-chip { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; color: #315f52; background: #edf7f3; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; }
.permission-chip svg { width: 14px; height: 14px; }
.time-rule-form { padding: 0 18px 18px; }
.operation-form-grid { display: grid; gap: 10px; }
.operation-form-grid.two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.operation-form-grid.three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.operation-form-grid.four { grid-template-columns: repeat(4,minmax(0,1fr)); }
.operation-form-grid + .operation-form-grid { margin-top: 10px; }
.operation-form-grid label > span, .period-editor-row label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.operation-form-grid input, .operation-form-grid select, .period-editor-row input { width: 100%; min-height: 40px; padding: 8px 10px; color: var(--text); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.operation-form-grid input:focus, .operation-form-grid select:focus, .period-editor-row input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.form-section-title { display: flex; align-items: center; gap: 10px; margin: 18px 0 10px; padding-top: 16px; border-top: 1px solid var(--line); }
.form-section-title > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #edf4fb; border-radius: var(--radius-sm); }
.form-section-title > span svg { width: 17px; height: 17px; }
.form-section-title > div { min-width: 0; flex: 1; }
.form-section-title strong, .form-section-title p { display: block; }
.form-section-title strong { font-size: 11px; }
.form-section-title p { margin-top: 2px; color: var(--muted); font-size: 9px; }
.period-editor-list { display: grid; gap: 7px; }
.period-editor-row { display: grid; grid-template-columns: 26px minmax(130px,1fr) 120px 120px 36px; align-items: end; gap: 8px; padding: 9px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.period-drag { height: 40px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); }
.period-drag svg { width: 16px; height: 16px; }
.period-remove { width: 36px; height: 40px; color: #b83232; }
.operation-form-submit { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.operation-form-submit > div { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 9px; }
.operation-form-submit > div svg { width: 15px; height: 15px; }
.permission-empty { display: flex; align-items: center; gap: 12px; padding: 18px; }
.permission-empty > svg { color: #607086; }
.permission-empty h2 { font-size: 13px; }
.permission-empty p { margin-top: 3px; color: var(--muted); font-size: 10px; }
.schedule-workspace { margin-top: 16px; }
.schedule-week-tabs { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 5px; margin-bottom: 10px; }
.schedule-week-tabs a { min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 40px; padding: 7px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); font-size: 10px; font-weight: 600; transition: color .2s ease, border-color .2s ease, background .2s ease; }
.schedule-week-tabs a small { min-width: 18px; padding: 1px 5px; color: var(--muted); background: #f0f2f5; border-radius: var(--radius-sm); font-size: 8px; text-align: center; }
.schedule-week-tabs a:hover { color: #315f8f; border-color: #b8cae1; }
.schedule-week-tabs a.active { color: #fff; background: #315f8f; border-color: #315f8f; }
.schedule-week-tabs a.active small { color: #315f8f; background: #fff; }
.schedule-layout { display: grid; grid-template-columns: minmax(0,1fr) 340px; align-items: start; gap: 16px; }
.schedule-list-panel, .schedule-editor { min-width: 0; overflow: hidden; }
.schedule-table table { min-width: 720px; }
.schedule-table td strong, .schedule-table td small { display: block; }
.schedule-table td small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.cycle-tag { display: inline-flex; padding: 4px 7px; color: #315f8f; background: #edf4fb; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; }
.schedule-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.schedule-actions form { display: inline-flex; }
.text-danger { padding: 3px 0; color: #b83232; background: transparent; font-size: 10px; cursor: pointer; }
.text-danger:hover { color: #8f2020; }
.schedule-editor { padding-bottom: 18px; }
.schedule-editor .form-stack { padding: 0 18px; }
.schedule-swap-panel { overflow: hidden; margin-bottom: 14px; }
.schedule-swap-heading { align-items: center; }
.schedule-swap-body { display: grid; gap: 12px; padding: 0 18px 18px; }
.schedule-swap-selected { display: grid; grid-template-columns: 40px minmax(0,1fr); align-items: center; gap: 11px; padding: 12px 14px; background: #f7fafc; border: 1px solid #dfe7ef; border-radius: var(--radius); }
.schedule-swap-selected > span { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e7f0f8; border-radius: var(--radius); }
.schedule-swap-selected > span svg { width: 18px; height: 18px; }
.schedule-swap-selected small, .schedule-swap-selected strong, .schedule-swap-selected p { display: block; }
.schedule-swap-selected small { color: var(--muted); font-size: 9px; }
.schedule-swap-selected strong { margin-top: 2px; font-size: 12px; }
.schedule-swap-selected p { margin-top: 3px; color: var(--text-2); font-size: 10px; }
.schedule-swap-form { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; }
.schedule-swap-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.schedule-swap-form select { width: 100%; min-width: 0; min-height: 40px; padding: 8px 10px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.schedule-swap-form select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.schedule-swap-errors { align-items: flex-start; }
.schedule-swap-errors strong { display: block; font-size: 10px; }
.schedule-swap-errors p { margin-top: 3px; font-size: 9px; }
.schedule-swap-preview-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.schedule-swap-preview-grid article { min-width: 0; padding: 13px 14px; background: #fff; border: 1px solid #dfe6ee; border-radius: var(--radius); }
.schedule-swap-preview-grid article > small, .schedule-swap-preview-grid article > strong { display: block; }
.schedule-swap-preview-grid article > small { color: var(--muted); font-size: 9px; }
.schedule-swap-preview-grid article > strong { margin-top: 3px; font-size: 11px; }
.schedule-swap-preview-grid article > p { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 8px; color: var(--muted); font-size: 10px; }
.schedule-swap-preview-grid article > p svg { width: 14px; height: 14px; color: #315f8f; }
.schedule-swap-preview-grid article > p b { color: #315f8f; }
.schedule-swap-confirm { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 12px; border-top: 1px solid var(--line); }
.schedule-swap-confirm p { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 9px; }
.schedule-swap-confirm p svg { width: 15px; height: 15px; flex: 0 0 auto; }
.schedule-planner-panel { overflow: hidden; margin-top: 16px; }
.schedule-planner-heading { align-items: center; }
.schedule-planner-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.schedule-planner-methods { display: grid; grid-template-columns: minmax(280px,.72fr) minmax(420px,1.28fr); gap: 14px; padding: 0 18px 18px; }
.schedule-planner-card { min-width: 0; display: flex; flex-direction: column; gap: 12px; padding: 16px; background: #f8fafc; border: 1px solid #e3e8ef; border-radius: var(--radius-lg); }
.schedule-planner-card-title { display: grid; grid-template-columns: 38px minmax(0,1fr); align-items: center; gap: 10px; }
.schedule-planner-card-title > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e9f1f8; border-radius: var(--radius); }
.schedule-planner-card-title svg { width: 18px; height: 18px; }
.schedule-planner-card-title strong, .schedule-planner-card-title p { display: block; }
.schedule-planner-card-title strong { font-size: 12px; }
.schedule-planner-card-title p { margin-top: 2px; color: var(--muted); font-size: 9px; line-height: 1.5; }
.schedule-planner-card > label > span, .auto-schedule-footer label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.schedule-planner-card input, .schedule-planner-card select { width: 100%; min-height: 40px; padding: 8px 10px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.schedule-planner-card input:focus, .schedule-planner-card select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.schedule-file-field input { padding: 7px; cursor: pointer; }
.schedule-file-field input::file-selector-button { margin-right: 9px; padding: 6px 10px; color: #315f8f; background: #edf4fb; border: 0; border-radius: var(--radius-sm); font-weight: 700; cursor: pointer; }
.auto-hours-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; max-height: 220px; overflow-y: auto; padding-right: 3px; }
.auto-hours-list label { display: grid; grid-template-columns: minmax(0,1fr) 56px; align-items: center; gap: 7px; padding: 8px 9px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.auto-hours-list label > span { min-width: 0; font-size: 9px; font-weight: 700; }
.auto-hours-list label small { display: block; margin-top: 2px; overflow: hidden; color: var(--muted); font-size: 8px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.auto-hours-list input { min-height: 34px; padding: 6px; text-align: center; }
.auto-schedule-footer { display: grid; grid-template-columns: minmax(160px,1fr) auto; align-items: end; gap: 10px; }
.schedule-rule-panel { background: #fbfcfd; border-top: 1px solid var(--line); }
.schedule-rule-heading { display: grid; grid-template-columns: minmax(190px,.55fr) minmax(0,1.45fr); align-items: center; gap: 18px; padding: 16px 18px; }
.schedule-rule-heading > div:first-child { display: grid; grid-template-columns: 38px minmax(0,1fr); align-items: center; gap: 10px; }
.schedule-rule-heading > div:first-child > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e9f1f8; border-radius: var(--radius); }
.schedule-rule-heading > div:first-child svg { width: 18px; height: 18px; }
.schedule-rule-heading strong, .schedule-rule-heading p { display: block; }
.schedule-rule-heading strong { font-size: 12px; }
.schedule-rule-heading p { margin-top: 2px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.schedule-rule-preferences { display: grid; grid-template-columns: repeat(3,minmax(130px,1fr)) auto; align-items: center; gap: 8px; }
.schedule-rule-preferences label { min-height: 52px; display: grid; grid-template-columns: 16px minmax(0,1fr); align-items: center; gap: 8px; padding: 8px 9px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; }
.schedule-rule-preferences input { width: 16px; height: 16px; accent-color: #315f8f; }
.schedule-rule-preferences label strong { font-size: 10px; }
.schedule-rule-preferences label small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; line-height: 1.4; }
.schedule-unavailable-area { padding: 14px 18px 16px; border-top: 1px solid var(--line); }
.schedule-unavailable-form { display: grid; grid-template-columns: minmax(220px,1.35fr) minmax(100px,.55fr) minmax(190px,1fr) auto; align-items: end; gap: 10px; }
.schedule-unavailable-form > div:first-child { grid-column: 1 / -1; }
.schedule-unavailable-form > div:first-child strong { display: block; font-size: 12px; }
.schedule-unavailable-form > div:first-child p { margin-top: 2px; color: var(--muted); font-size: 10px; }
.schedule-unavailable-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.schedule-unavailable-form select { width: 100%; min-width: 0; min-height: 38px; padding: 7px 9px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.schedule-unavailable-form select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.schedule-unavailable-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.schedule-unavailable-list > div:not(.schedule-unavailable-empty) { display: inline-flex; align-items: center; gap: 10px; padding: 7px 8px 7px 10px; background: #fff; border: 1px solid #dfe6ee; border-radius: var(--radius); }
.schedule-unavailable-list > div > span strong, .schedule-unavailable-list > div > span small { display: block; }
.schedule-unavailable-list > div > span strong { font-size: 10px; }
.schedule-unavailable-list > div > span small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.schedule-unavailable-list form, .schedule-unavailable-list button { display: inline-flex; }
.schedule-unavailable-list button { width: 26px; height: 26px; align-items: center; justify-content: center; color: #8f3030; background: #fff5f5; border: 0; border-radius: var(--radius-sm); cursor: pointer; transition: background .2s ease, transform .2s ease; }
.schedule-unavailable-list button:hover { background: #ffe8e8; transform: translateY(-1px); }
.schedule-unavailable-list button svg { width: 13px; height: 13px; }
.schedule-unavailable-empty { display: inline-flex; align-items: center; gap: 7px; padding: 8px 10px; color: var(--muted); background: #f5f7f9; border-radius: var(--radius); font-size: 10px; }
.schedule-unavailable-empty svg { width: 14px; height: 14px; }
.schedule-fixed-panel { border-top: 1px solid var(--line); background: #fff; }
.schedule-fixed-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 18px; background: #f7faf9; border-bottom: 1px solid #dfe9e6; }
.schedule-fixed-heading > div { min-width: 0; display: grid; grid-template-columns: 38px minmax(0,1fr); align-items: center; gap: 10px; }
.schedule-fixed-heading > div > span { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #087c69; background: #e6f4f0; border-radius: var(--radius); }
.schedule-fixed-heading svg { width: 18px; height: 18px; }
.schedule-fixed-heading strong, .schedule-fixed-heading p { display: block; }
.schedule-fixed-heading strong { font-size: 12px; }
.schedule-fixed-heading p { margin-top: 2px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.schedule-fixed-layout { display: grid; grid-template-columns: 1fr; align-items: start; gap: 14px; padding: 16px 18px 18px; }
.schedule-fixed-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(360px,1fr)); gap: 9px; }
.schedule-fixed-item { display: grid; grid-template-columns: 38px minmax(0,1fr) auto; align-items: start; gap: 11px; padding: 13px; background: #fff; border: 1px solid #dfe6ee; border-left: 3px solid #087c69; border-radius: var(--radius); }
.schedule-fixed-item.warn { border-left-color: #d99520; }
.schedule-fixed-icon { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #087c69; background: #eaf7f3; border-radius: var(--radius); }
.schedule-fixed-icon svg { width: 17px; height: 17px; }
.schedule-fixed-item header { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.schedule-fixed-item header strong { font-size: 12px; }
.schedule-fixed-item header em { padding: 3px 6px; color: #17643a; background: #e8f7ee; border-radius: var(--radius-sm); font-size: 9px; font-style: normal; font-weight: 700; }
.schedule-fixed-item.warn header em { color: #8a5b08; background: #fff5dc; }
.schedule-fixed-item p, .schedule-fixed-item small { display: block; margin-top: 4px; color: var(--text-2); font-size: 10px; line-height: 1.5; }
.schedule-fixed-item small { color: var(--muted); }
.schedule-fixed-item .schedule-fixed-note { color: #52606d; }
.schedule-fixed-actions { display: flex; gap: 5px; }
.schedule-fixed-actions form { display: inline-flex; }
.schedule-fixed-actions .icon-button { width: 30px; height: 30px; min-height: 30px; }
.schedule-fixed-actions .danger-soft { color: #b83232; background: #fff5f5; border-color: #f4d1d1; }
.schedule-fixed-empty { min-height: 126px; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 20px; color: var(--muted); background: #f8fafb; border: 1px dashed #ced8e2; border-radius: var(--radius); text-align: left; }
.schedule-fixed-empty > svg { width: 24px; height: 24px; color: #7890a7; }
.schedule-fixed-empty strong { display: block; color: var(--text-2); font-size: 12px; }
.schedule-fixed-empty p { margin-top: 3px; font-size: 10px; line-height: 1.5; }
.schedule-fixed-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; padding: 14px; background: #f8fafc; border: 1px solid #dfe6ee; border-radius: var(--radius-lg); }
.schedule-fixed-form > .schedule-fixed-form-heading, .schedule-fixed-form > .schedule-fixed-title, .schedule-fixed-form > .schedule-fixed-form-grid.thirds, .schedule-fixed-form > .schedule-fixed-periods, .schedule-fixed-form > label:last-of-type, .schedule-fixed-form > .schedule-fixed-help, .schedule-fixed-form > .button { grid-column: 1 / -1; }
.schedule-fixed-form-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding-bottom: 3px; }
.schedule-fixed-form-heading strong { display: block; font-size: 12px; }
.schedule-fixed-form-heading p { margin-top: 2px; color: var(--muted); font-size: 9px; line-height: 1.5; }
.schedule-fixed-form label > span, .schedule-fixed-periods legend { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 700; }
.schedule-fixed-form input:not([type="checkbox"]), .schedule-fixed-form select, .schedule-fixed-form textarea { width: 100%; min-width: 0; min-height: 38px; padding: 7px 9px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.schedule-fixed-form textarea { min-height: 64px; resize: vertical; }
.schedule-fixed-form input:focus, .schedule-fixed-form select:focus, .schedule-fixed-form textarea:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.schedule-fixed-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.schedule-fixed-form-grid.thirds { grid-template-columns: repeat(3,minmax(0,1fr)); }
.schedule-fixed-periods { min-width: 0; padding: 0; border: 0; }
.schedule-fixed-periods > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
.schedule-fixed-periods label { min-width: 0; display: grid; grid-template-columns: 16px minmax(0,1fr); align-items: center; gap: 7px; padding: 7px 8px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); cursor: pointer; }
.schedule-fixed-periods input { width: 15px; height: 15px; accent-color: #087c69; }
.schedule-fixed-periods strong, .schedule-fixed-periods small { display: block; }
.schedule-fixed-periods strong { font-size: 9px; }
.schedule-fixed-periods small { margin-top: 1px; color: var(--muted); font-size: 8px; }
.schedule-fixed-help { display: grid; grid-template-columns: 18px minmax(0,1fr); gap: 7px; padding: 9px 10px; color: #476862; background: #eef8f5; border-radius: var(--radius); font-size: 9px; line-height: 1.55; }
.schedule-fixed-help svg { width: 16px; height: 16px; }
.schedule-activity-label { display: inline-flex; align-items: center; margin-top: 4px; padding: 3px 6px; color: #087c69; background: #eaf7f3; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; }
.schedule-preview-block { border-top: 1px solid var(--line); }
.schedule-preview-summary { display: grid; grid-template-columns: 40px minmax(0,1fr) auto; align-items: center; gap: 11px; padding: 16px 18px; }
.preview-status { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #17643a; background: #e8f7ee; border-radius: var(--radius); }
.preview-status.error { color: #a32929; background: #fff0f0; }
.preview-status svg { width: 20px; height: 20px; }
.schedule-preview-summary strong { display: block; font-size: 13px; }
.schedule-preview-summary p { margin-top: 3px; color: var(--muted); font-size: 9px; }
.schedule-preview-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.schedule-preview-actions form { display: inline-flex; }
.schedule-draft-add-form { display: grid; grid-template-columns: minmax(240px,1.5fr) repeat(3,minmax(100px,.65fr)); align-items: end; gap: 10px; margin: 0 18px 14px; padding: 14px; background: #f8fafc; border: 1px solid #dfe6ee; border-radius: var(--radius-lg); }
.schedule-draft-add-heading { grid-column: 1 / -1; display: grid; grid-template-columns: 36px minmax(0,1fr); align-items: center; gap: 10px; padding-bottom: 2px; }
.schedule-draft-add-heading > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e9f1f8; border-radius: var(--radius); }
.schedule-draft-add-heading svg { width: 17px; height: 17px; }
.schedule-draft-add-heading strong { display: block; font-size: 11px; }
.schedule-draft-add-heading p { margin-top: 2px; color: var(--muted); font-size: 9px; line-height: 1.5; }
.schedule-draft-add-form > label:nth-of-type(5) { grid-column: span 2; }
.schedule-draft-add-form label > span, .schedule-draft-editor label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 9px; font-weight: 600; }
.schedule-draft-add-form input:not([type="checkbox"]), .schedule-draft-add-form select, .schedule-draft-editor input:not([type="checkbox"]), .schedule-draft-editor select { width: 100%; min-width: 0; min-height: 38px; padding: 7px 9px; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.schedule-draft-add-form input:focus, .schedule-draft-add-form select:focus, .schedule-draft-editor input:focus, .schedule-draft-editor select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.schedule-draft-lock { min-height: 38px; display: inline-flex; align-items: center; gap: 7px; padding: 0 9px; color: var(--text-2); background: #fff; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; white-space: nowrap; }
.schedule-draft-lock input { width: 15px; height: 15px; accent-color: #315f8f; }
.schedule-draft-lock span { margin: 0 !important; font-size: 9px; font-weight: 600; }
.schedule-preview-table table { width: 100%; min-width: 760px; table-layout: fixed; }
.schedule-preview-table th:nth-child(1) { width: 54px; }
.schedule-preview-table th:nth-child(2) { width: 17%; }
.schedule-preview-table th:nth-child(3) { width: 20%; }
.schedule-preview-table th:nth-child(4) { width: 10%; }
.schedule-preview-table th:nth-child(5) { width: 16%; }
.schedule-preview-table th:nth-child(6) { width: 18%; }
.schedule-preview-table th:nth-child(7) { width: 76px; }
.schedule-preview-table td { vertical-align: top; }
.schedule-preview-table td strong, .schedule-preview-table td small { display: block; }
.schedule-preview-table td small { margin-top: 2px; color: var(--muted); font-size: 8px; line-height: 1.45; }
.schedule-preview-table .preview-error-row { background: #fff8f8; }
.schedule-draft-row-actions { min-width: 76px; vertical-align: top; }
.schedule-draft-row-actions details { position: relative; }
.schedule-draft-row-actions summary { display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; padding: 4px 0; color: #315f8f; font-size: 9px; font-weight: 700; cursor: pointer; list-style: none; }
.schedule-draft-row-actions summary::-webkit-details-marker { display: none; }
.schedule-draft-row-actions summary svg { width: 13px; height: 13px; }
.schedule-draft-row-actions details[open] summary { color: #214b75; }
.schedule-draft-editor { width: min(560px,calc(100vw - 310px)); display: grid; grid-template-columns: 1fr; gap: 9px; margin: 8px 0 4px auto; padding: 12px; text-align: left; background: #f8fafc; border: 1px solid #d9e2ec; border-radius: var(--radius-lg); box-shadow: 0 8px 20px rgba(31,45,61,.08); transform: translateX(calc(-100% + 76px)); }
.schedule-draft-editor > form:first-child { display: grid; grid-template-columns: minmax(220px,1.5fr) repeat(2,minmax(110px,.7fr)); gap: 9px; align-items: end; }
.schedule-draft-editor > form:first-child label:nth-of-type(4), .schedule-draft-editor > form:first-child label:nth-of-type(5) { grid-column: span 1; }
.schedule-draft-editor > form:first-child .schedule-draft-lock { align-self: end; }
.schedule-draft-editor > form:first-child .button { justify-self: end; }
.schedule-draft-delete { display: flex; justify-content: flex-end; padding-top: 8px; border-top: 1px solid var(--line); }
.schedule-draft-delete .text-danger { display: inline-flex; align-items: center; gap: 4px; border: 0; }
.schedule-draft-delete svg { width: 13px; height: 13px; }
.unassigned-schedule-list { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 18px 14px; padding: 11px; color: #765313; background: #fff9ed; border: 1px solid #f1ddb4; border-radius: var(--radius); }
.unassigned-schedule-list strong { width: 100%; display: flex; align-items: center; gap: 6px; font-size: 10px; }
.unassigned-schedule-list strong svg { width: 15px; height: 15px; }
.unassigned-schedule-list span { padding: 5px 7px; background: #fff; border: 1px solid #f0dfbd; border-radius: var(--radius-sm); font-size: 9px; }
.schedule-preview-note { display: flex; align-items: flex-start; gap: 8px; padding: 12px 18px 16px; color: var(--muted); }
.schedule-preview-note svg { width: 15px; height: 15px; flex: 0 0 auto; }
.schedule-preview-note p { font-size: 9px; line-height: 1.6; }
.schedule-lock-state { display: inline-flex !important; align-items: center; gap: 3px; margin-top: 4px !important; color: #315f52 !important; }
.schedule-lock-state svg, .schedule-lock-button svg { width: 12px; height: 12px; }
.schedule-lock-button { display: inline-flex; align-items: center; gap: 3px; border: 0; cursor: pointer; }
.schedule-print-body { min-height: 100vh; color: #1d2129; background: #eef1f4; font-family: "Microsoft YaHei", system-ui, sans-serif; }
.schedule-print-shell { max-width: 1500px; margin: 0 auto; padding: 24px; }
.schedule-print-toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; padding: 12px 16px; background: #fff; border: 1px solid #dde2e8; border-radius: 8px; }
.schedule-print-toolbar > div { min-width: 180px; margin-right: auto; }
.schedule-print-toolbar strong { font-size: 14px; }
.schedule-print-toolbar p { margin-top: 2px; color: #86909c; font-size: 11px; }
.schedule-print-toolbar form { display: flex; gap: 8px; }
.schedule-print-toolbar select, .schedule-print-toolbar button { min-height: 36px; padding: 7px 10px; background: #fff; border: 1px solid #d8dde5; border-radius: 6px; }
.schedule-print-toolbar button { color: #fff; background: #315f8f; border-color: #315f8f; cursor: pointer; }
.schedule-print-paper { padding: 28px; background: #fff; box-shadow: 0 8px 24px rgba(31,45,61,.08); }
.schedule-print-title { margin-bottom: 20px; text-align: center; }
.schedule-print-title h1 { font-size: 24px; }
.schedule-print-title p { margin-top: 5px; color: #86909c; font-size: 12px; }
.schedule-print-table-wrap { overflow-x: auto; }
.schedule-print-table-wrap table { width: 100%; min-width: 900px; border-collapse: collapse; table-layout: fixed; }
.schedule-print-table-wrap th, .schedule-print-table-wrap td { padding: 8px; vertical-align: top; border: 1px solid #dfe3e8; }
.schedule-print-table-wrap thead th { background: #f1f4f7; font-size: 12px; }
.schedule-print-table-wrap tbody > tr > th { width: 100px; background: #f8f9fa; }
.schedule-print-table-wrap th strong, .schedule-print-table-wrap th small { display: block; }
.schedule-print-table-wrap th strong { font-size: 11px; }
.schedule-print-table-wrap th small { margin-top: 3px; color: #86909c; font-size: 9px; }
.schedule-print-table-wrap article { margin-bottom: 5px; padding: 7px; background: #f7fafc; border-left: 3px solid #315f8f; border-radius: 4px; }
.schedule-print-table-wrap article:last-child { margin-bottom: 0; }
.schedule-print-table-wrap article strong, .schedule-print-table-wrap article span, .schedule-print-table-wrap article small { display: block; }
.schedule-print-table-wrap article strong { font-size: 10px; }
.schedule-print-table-wrap article span, .schedule-print-table-wrap article small { margin-top: 2px; color: #4e5969; font-size: 8px; }
.conflict-check-note { display: flex; align-items: flex-start; gap: 8px; padding: 10px; color: #60491a; background: #fff9ed; border: 1px solid #f1ddb4; border-radius: var(--radius); }
.conflict-check-note svg { width: 16px; height: 16px; flex: 0 0 auto; color: #a76d00; }
.conflict-check-note p { font-size: 9px; line-height: 1.6; }
.attendance-workspace, .duty-workspace { display: grid; gap: 16px; margin-top: 16px; }
.attendance-workspace { grid-template-columns: 360px minmax(0,1fr); align-items: start; }
.attendance-primary-column { display: grid; gap: 16px; }
.attendance-checkin-card { overflow: hidden; padding: 20px; color: #fff; background: #244d70; border-radius: var(--radius-lg); box-shadow: 0 10px 26px rgba(36,77,112,.14); }
.attendance-checkin-card.completed { background: #246654; }
.attendance-checkin-heading { display: grid; grid-template-columns: 46px minmax(0,1fr); gap: 12px; }
.attendance-checkin-heading > span { width: 46px; height: 46px; display: inline-flex; align-items: center; justify-content: center; color: #b9d9f2; background: rgba(255,255,255,.1); border-radius: var(--radius); }
.attendance-checkin-card.completed .attendance-checkin-heading > span { color: #c5ebdc; }
.attendance-checkin-heading p { color: #b9d2e7; font-size: 9px; font-weight: 700; }
.attendance-checkin-heading h2 { margin: 3px 0 4px; font-size: 15px; }
.attendance-checkin-heading small { display: block; color: #d7e4ef; font-size: 9px; line-height: 1.55; }
.location-checkin-form { margin-top: 18px; }
.location-checkin-form.compact { margin-top: 12px; }
.location-privacy-note { display: flex; align-items: flex-start; gap: 8px; padding: 11px; color: #d7e8f5; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); border-radius: var(--radius); }
.location-privacy-note svg { width: 16px; height: 16px; flex: 0 0 auto; }
.location-privacy-note p { font-size: 9px; line-height: 1.6; }
.location-feedback { min-height: 22px; margin: 8px 0; color: #c5d9e9; font-size: 9px; }
.location-feedback.error { color: #ffd1d1; }
.location-feedback.success { color: #c8f0df; }
.attendance-result { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; margin-top: 18px; padding: 14px; background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.13); border-radius: var(--radius); }
.attendance-result strong { font-size: 18px; }
.attendance-result p { grid-column: 1 / -1; color: #d6ebe4; font-size: 9px; }
.attendance-exempt { display: flex; align-items: center; gap: 10px; margin-top: 18px; padding: 13px; background: rgba(255,255,255,.08); border-radius: var(--radius); }
.attendance-exempt svg { color: #c2d8e9; }
.attendance-exempt strong { display: block; font-size: 10px; }
.attendance-exempt p { margin-top: 2px; color: #d7e4ef; font-size: 9px; }
.attendance-rule-card { overflow: hidden; }
.attendance-rule-line { display: grid; grid-template-columns: 1fr 18px 1fr 18px 1fr; align-items: center; gap: 6px; padding: 0 16px 14px; }
.attendance-rule-line > span { min-width: 0; padding: 10px; text-align: center; background: #f7f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.attendance-rule-line > span svg { width: 16px; height: 16px; color: #315f8f; }
.attendance-rule-line > svg { width: 14px; height: 14px; color: var(--muted); }
.attendance-rule-line small, .attendance-rule-line strong { display: block; }
.attendance-rule-line small { color: var(--muted); font-size: 8px; }
.attendance-rule-line strong { margin-top: 2px; font-size: 11px; }
.attendance-location-rule { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 16px 16px; border-top: 1px solid var(--line); }
.attendance-location-rule span { display: inline-flex; align-items: center; gap: 5px; color: var(--text-2); font-size: 9px; }
.attendance-location-rule svg { width: 14px; height: 14px; color: #087c66; }
.attendance-overview-panel, .duty-overview-panel { min-width: 0; overflow: hidden; }
.operation-date-filter { display: flex; align-items: center; gap: 7px; }
.operation-date-filter input { min-height: 34px; padding: 6px 8px; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius-sm); outline: 0; }
.operation-date-filter input:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.operation-summary-strip { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; padding: 0 18px 14px; }
.operation-summary-strip > span { padding: 10px 12px; background: #f7f9fb; border-left: 3px solid #9aa6b5; border-radius: var(--radius-sm); }
.operation-summary-strip > span.normal { border-color: #24a36a; }
.operation-summary-strip > span.late { border-color: #e39a21; }
.operation-summary-strip > span.missing { border-color: #d95353; }
.operation-summary-strip > span.pending { border-color: #7395b7; }
.operation-summary-strip small, .operation-summary-strip strong { display: block; }
.operation-summary-strip small { color: var(--muted); font-size: 8px; }
.operation-summary-strip strong { margin-top: 2px; font-size: 16px; }
.operation-status { display: inline-flex; align-items: center; justify-content: center; padding: 4px 7px; color: #516070; background: #eef1f4; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; white-space: nowrap; }
.operation-status.normal { color: #17643a; background: #e8f7ee; }
.operation-status.late { color: #8b5e08; background: #fff4d9; }
.operation-status.missing { color: #a32929; background: #fff0f0; }
.operation-status.pending { color: #315f8f; background: #edf4fb; }
.operation-status-table table { min-width: 640px; }
.operation-status-table td strong, .operation-status-table td small { display: block; }
.operation-status-table td small { margin-top: 2px; color: var(--muted); font-size: 9px; }
.my-duty-panel { overflow: hidden; }
.my-duty-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; padding: 0 18px 18px; }
.my-duty-grid > article { min-width: 0; padding: 13px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.my-duty-grid > article.completed { background: #f2faf6; border-color: #d2ebdf; }
.my-duty-grid article header { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 9px; }
.my-duty-grid article header > span { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.my-duty-grid article.completed header > span { color: #087c66; background: #dcf2e8; }
.my-duty-grid article header svg { width: 17px; height: 17px; }
.my-duty-grid article header strong, .my-duty-grid article header p { display: block; }
.my-duty-grid article header strong { font-size: 11px; }
.my-duty-grid article header p { margin-top: 2px; color: var(--muted); font-size: 9px; }
.my-duty-grid article header em { padding: 3px 6px; color: #586a7f; background: #edf0f3; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; }
.my-duty-grid .location-feedback { color: var(--muted); }
.my-duty-grid .location-feedback.error { color: #b83232; }
.duty-result { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; padding-top: 11px; border-top: 1px solid #dce9e2; }
.duty-result strong { color: #246654; font-size: 12px; }
.duty-management-layout { display: grid; grid-template-columns: minmax(0,1fr) 340px; align-items: start; gap: 16px; }
.duty-roster-list, .duty-roster-editor { min-width: 0; overflow: hidden; }
.duty-week-tabs { margin: 0 18px 12px; }
.duty-roster-rows { display: grid; gap: 7px; padding: 0 18px 18px; }
.duty-roster-rows > article { display: grid; grid-template-columns: 36px minmax(0,1fr) 36px; align-items: center; gap: 10px; padding: 10px 11px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.duty-roster-rows > article > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.duty-roster-rows > article > span svg { width: 17px; height: 17px; }
.duty-roster-rows strong, .duty-roster-rows p, .duty-roster-rows small { display: block; }
.duty-roster-rows strong { font-size: 11px; }
.duty-roster-rows p { margin-top: 2px; color: var(--text-2); font-size: 9px; }
.duty-roster-rows small { margin-top: 2px; color: var(--muted); font-size: 8px; }
.duty-roster-rows .icon-button { width: 34px; height: 34px; color: #b83232; }
.duty-roster-editor { padding-bottom: 18px; }
.duty-roster-editor .form-stack { padding: 0 18px; }
.operations-tabs a em { min-width: 18px; padding: 1px 5px; color: #a32929; background: #fff0f0; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; text-align: center; }
.operations-tabs a.active em { color: #315f8f; background: #fff; }
.operation-rule-tip { min-height: 40px; display: flex; align-items: center; gap: 7px; padding: 8px 10px; color: #526274; background: #f4f7fb; border: 1px solid #dce5ef; border-radius: var(--radius); font-size: 9px; line-height: 1.55; }
.operation-rule-tip svg { flex: 0 0 auto; width: 16px; height: 16px; color: #315f8f; }
.lesson-checkin-panel, .lesson-alert-panel { overflow: hidden; }
.lesson-checkin-list, .lesson-alert-list { display: grid; gap: 10px; padding: 0 18px 18px; }
.lesson-checkin-card { min-width: 0; padding: 14px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.lesson-checkin-card.available { background: #f3faf7; border-color: #cbe7da; }
.lesson-checkin-card.completed { background: #eef9f4; border-color: #bfe3d1; }
.lesson-checkin-card.locked { background: #fafafa; }
.lesson-checkin-card > header { display: grid; grid-template-columns: 36px minmax(0,1fr) auto; align-items: center; gap: 10px; }
.lesson-checkin-card > header > span, .lesson-alert-card > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.lesson-checkin-card.completed > header > span { color: #087c66; background: #dff3e9; }
.lesson-checkin-card > header svg, .lesson-alert-card > span svg { width: 17px; height: 17px; }
.lesson-checkin-card strong, .lesson-checkin-card p, .lesson-alert-card strong, .lesson-alert-card p { display: block; overflow-wrap: anywhere; }
.lesson-checkin-card p, .lesson-alert-card p { margin-top: 3px; color: var(--muted); font-size: 9px; line-height: 1.55; }
.lesson-checkin-state { padding: 4px 7px; color: #64748b; background: #edf0f3; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; white-space: nowrap; }
.lesson-checkin-state.normal { color: #17643a; background: #e1f4ea; }
.lesson-checkin-state.missing { color: #9b5c13; background: #fff3dc; }
.lesson-checkin-form { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding-top: 11px; border-top: 1px solid #dce9e2; }
.lesson-checkin-form .location-feedback { margin: 0; color: #5f7b72; }
.lesson-checkin-result { display: flex; align-items: baseline; flex-wrap: wrap; gap: 9px; margin-top: 12px; padding-top: 11px; color: #246654; border-top: 1px solid #d4ebe1; }
.lesson-checkin-result strong { font-size: 13px; }
.lesson-checkin-result span { color: #5f7b72; font-size: 9px; }
.lesson-checkin-locked { display: flex; align-items: flex-start; gap: 8px; margin-top: 12px; padding-top: 11px; color: #64748b; border-top: 1px solid var(--line); font-size: 9px; line-height: 1.65; }
.lesson-checkin-locked svg { flex: 0 0 auto; width: 15px; height: 15px; color: #7d8ba0; }
.lesson-checkin-locked strong { display: inline; }
.lesson-alert-list { gap: 7px; }
.lesson-alert-card { display: grid; grid-template-columns: 36px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 11px; background: #fffaf0; border: 1px solid #f0dfb9; border-radius: var(--radius); }
.lesson-alert-card.escalated { background: #fff5f5; border-color: #efcaca; }
.lesson-alert-card.escalated > span { color: #a32929; background: #ffe5e5; }
.lesson-alert-card em { color: #9b6b20; font-size: 8px; font-style: normal; white-space: nowrap; }
.lesson-alert-resolve-form { display: grid; grid-template-columns: 190px minmax(0,1fr) auto; gap: 8px; margin-left: 46px; }
.lesson-alert-resolve-form input, .lesson-alert-resolve-form select { min-width: 0; min-height: 36px; padding: 7px 9px; color: var(--text); background: #fff; border: 1px solid #e3d5b6; border-radius: var(--radius); outline: 0; }
.lesson-alert-resolve-form input:focus, .lesson-alert-resolve-form select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.lesson-alert-route-note { display: flex; align-items: center; gap: 6px; margin-left: 46px; color: #8b5e08; font-size: 9px; line-height: 1.55; }
.lesson-alert-route-note svg { width: 14px; height: 14px; flex: 0 0 auto; }
.leave-workspace { display: grid; gap: 16px; margin-top: 16px; }
.replacement-confirmations, .leave-create-panel, .leave-request-list, .leave-impact-panel, .leave-reason-card, .leave-review-panel { overflow: hidden; }
.replacement-confirmation-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; padding: 0 18px 18px; }
.replacement-confirmation-grid > article { min-width: 0; padding: 14px; background: #f8fafc; border: 1px solid #dce5ef; border-radius: var(--radius); }
.replacement-confirmation-grid header { display: grid; grid-template-columns: 36px minmax(0,1fr); gap: 10px; }
.replacement-confirmation-grid header > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.replacement-confirmation-grid header svg { width: 17px; height: 17px; }
.replacement-confirmation-grid header strong, .replacement-confirmation-grid header p { display: block; }
.replacement-confirmation-grid header strong { font-size: 11px; }
.replacement-confirmation-grid header p, .replacement-confirmation-grid > article > p { color: var(--muted); font-size: 9px; }
.replacement-confirmation-grid h3 { margin: 11px 0 3px; font-size: 12px; }
.replacement-actions { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.replacement-reject-form { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px; }
.replacement-reject-form input { min-width: 0; padding: 7px 9px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.replacement-reject-form input:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.leave-create-form { display: grid; grid-template-columns: 150px repeat(2,minmax(190px,1fr)) 130px; align-items: end; gap: 10px; padding: 0 18px 18px; }
.leave-create-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.leave-create-form input, .leave-create-form select, .leave-create-form textarea { width: 100%; min-height: 40px; padding: 8px 10px; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.leave-create-form input:focus, .leave-create-form select:focus, .leave-create-form textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.leave-emergency-toggle { align-self: end; }
.leave-emergency-toggle > input { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); opacity: 0; pointer-events: none; }
.leave-emergency-toggle > span { min-height: 40px; display: flex !important; align-items: center; justify-content: center; gap: 6px; margin: 0 !important; padding: 8px 10px; color: #8b5e08 !important; background: #fff8e8; border: 1px solid #edd6a5; border-radius: var(--radius); cursor: pointer; }
.leave-emergency-toggle > span svg { width: 16px; height: 16px; }
.leave-emergency-toggle > input:checked + span { color: #a32929 !important; background: #fff0f0; border-color: #efb6b6; }
.leave-reason, .leave-create-submit { grid-column: 1 / -1; }
.leave-create-form textarea { min-height: 74px; resize: vertical; }
.leave-create-submit { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.leave-create-submit p { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 9px; }
.leave-create-submit p svg { width: 14px; height: 14px; }
.leave-management-layout { display: grid; grid-template-columns: 286px minmax(0,1fr); align-items: start; gap: 16px; }
.leave-list { display: grid; gap: 7px; padding: 0 14px 14px; }
.leave-list > a { display: grid; grid-template-columns: 36px minmax(0,1fr); gap: 10px; padding: 11px; border: 1px solid var(--line); border-radius: var(--radius); transition: border-color .2s ease, background .2s ease; }
.leave-list > a:hover { border-color: #b8cae1; background: #f8fafd; }
.leave-list > a.active { background: #f2f7fc; border-color: #9eb9d9; }
.leave-list-icon { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.leave-list-icon.approved { color: #087c66; background: #dcf2e8; }
.leave-list-icon.rejected { color: #b83232; background: #fff0f0; }
.leave-list-icon svg { width: 17px; height: 17px; }
.leave-list strong, .leave-list p, .leave-list small { display: block; }
.leave-list strong { overflow-wrap: anywhere; font-size: 10px; }
.leave-list p { margin-top: 3px; color: var(--text-2); font-size: 9px; }
.leave-list small { margin-top: 2px; color: var(--muted); font-size: 8px; }
.leave-detail-column { min-width: 0; display: grid; gap: 16px; }
.leave-detail-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 20px; color: #fff; background: #31546f; border-radius: var(--radius-lg); box-shadow: 0 9px 24px rgba(49,84,111,.12); }
.leave-detail-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.leave-detail-tags span, .leave-detail-tags em, .leave-detail-tags strong { padding: 4px 7px; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; }
.leave-detail-tags span { color: #d8e8f4; background: rgba(255,255,255,.1); }
.leave-detail-tags em { color: #ffe7b8; background: rgba(211,145,34,.2); }
.leave-detail-tags strong { color: #e0edf6; background: rgba(255,255,255,.12); }
.leave-detail-tags strong.approved { color: #c8f0df; }
.leave-detail-tags strong.rejected { color: #ffd1d1; }
.leave-detail-header h2 { margin: 8px 0 4px; font-size: 17px; }
.leave-detail-header > div > p { color: #d3e1eb; font-size: 9px; }
.leave-progress-ring { width: 68px; height: 68px; display: flex; flex-direction: column; align-items: center; justify-content: center; flex: 0 0 auto; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.14); border-radius: 50%; }
.leave-progress-ring strong { font-size: 18px; }
.leave-progress-ring small { color: #d3e1eb; font-size: 8px; }
.leave-reason-card > p { padding: 0 18px 18px; color: var(--text-2); font-size: 10px; line-height: 1.7; }
.leave-impact-list { display: grid; gap: 8px; padding: 0 18px 18px; }
.leave-impact-list > article { display: grid; grid-template-columns: 38px minmax(0,1fr) minmax(210px,280px); align-items: center; gap: 11px; padding: 11px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.leave-impact-list > article.confirmed, .leave-impact-list > article.approved { background: #f2faf6; border-color: #d2ebdf; }
.leave-impact-list > article.rejected { background: #fff7f7; border-color: #f0c7c7; }
.leave-impact-type { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.leave-impact-type svg { width: 18px; height: 18px; }
.leave-impact-copy > div { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.leave-impact-copy strong { font-size: 11px; }
.leave-impact-copy em { padding: 3px 6px; color: #586a7f; background: #edf0f3; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; font-weight: 700; }
.leave-impact-copy em.confirmed, .leave-impact-copy em.approved { color: #17643a; background: #e3f4eb; }
.leave-impact-copy em.rejected { color: #a32929; background: #fff0f0; }
.leave-impact-copy p, .leave-impact-copy small { display: block; }
.leave-impact-copy p { margin-top: 3px; color: var(--text-2); font-size: 9px; }
.leave-impact-copy small { margin-top: 2px; color: var(--muted); font-size: 8px; }
.leave-replacement-form { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px; }
.leave-replacement-form select { min-width: 0; min-height: 36px; padding: 6px 8px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.leave-replacement-form select:focus { border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.leave-no-impact { display: flex; align-items: center; gap: 10px; padding: 14px; color: #315f52; background: #f2faf6; border: 1px solid #d2ebdf; border-radius: var(--radius); }
.leave-no-impact svg { color: #087c66; }
.leave-no-impact strong { display: block; font-size: 11px; }
.leave-no-impact p { margin-top: 2px; color: #5f7b72; font-size: 9px; }
.leave-submit-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 18px; color: #315f52; background: #edf8f3; border: 1px solid #cbe7da; border-radius: var(--radius); }
.leave-submit-card > div { display: flex; align-items: center; gap: 10px; }
.leave-submit-card > div > svg { color: #087c66; }
.leave-submit-card strong { display: block; font-size: 11px; }
.leave-submit-card p { margin-top: 2px; color: #5f7b72; font-size: 9px; }
.leave-review-panel { padding-bottom: 18px; }
.leave-review-form { display: grid; gap: 10px; padding: 0 18px; }
.leave-review-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 10px; font-weight: 600; }
.leave-review-form textarea { width: 100%; padding: 9px 10px; background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); resize: vertical; outline: 0; }
.leave-review-form textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.leave-review-form > div { display: flex; justify-content: flex-end; gap: 8px; }
.leave-review-result { display: flex; align-items: center; gap: 11px; padding: 15px 17px; color: #315f52; background: #edf8f3; border: 1px solid #cbe7da; border-radius: var(--radius); }
.leave-review-result.rejected { color: #8f3030; background: #fff5f5; border-color: #efc9c9; }
.leave-review-result strong { display: block; font-size: 11px; }
.leave-review-result p { margin-top: 2px; font-size: 9px; opacity: .8; }

@media (max-width: 1180px) {
  .operations-metric-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .operations-step-list { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .operation-form-grid.four { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .schedule-layout { grid-template-columns: 1fr; }
  .schedule-planner-methods { grid-template-columns: 1fr; }
  .schedule-rule-heading { grid-template-columns: 1fr; align-items: stretch; }
  .schedule-draft-add-form { grid-template-columns: minmax(220px,1.4fr) repeat(3,minmax(100px,.65fr)); }
  .schedule-draft-add-form > label:nth-of-type(5) { grid-column: span 2; }
  .schedule-draft-editor { width: min(520px,calc(100vw - 120px)); }
  .schedule-draft-editor > form:first-child { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .schedule-editor { max-width: none; }
  .attendance-workspace { grid-template-columns: 320px minmax(0,1fr); }
  .my-duty-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .duty-management-layout { grid-template-columns: 1fr; }
  .leave-create-form { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .leave-emergency-toggle { align-self: end; }
}

@media (max-width: 900px) {
  .operations-header { align-items: flex-start; flex-direction: column; }
  .operations-live-state { width: 100%; min-width: 0; }
  .time-rule-layout { grid-template-columns: 1fr; }
  .time-rule-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .attendance-workspace { grid-template-columns: 1fr; }
  .leave-management-layout { grid-template-columns: 1fr; }
  .leave-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 700px) {
  .operations-header { padding: 18px; }
  .operations-header h2 { font-size: 18px; }
  .operations-tabs { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
  .operations-tabs a { min-width: 0; padding: 7px 5px; font-size: 12px; }
  .operations-metric-grid, .operations-step-list, .rule-summary-grid, .rule-period-preview, .time-rule-list { grid-template-columns: 1fr; }
  .operations-step-list article { min-height: 86px; }
  .operation-form-grid.two, .operation-form-grid.three, .operation-form-grid.four { grid-template-columns: 1fr; }
  .period-editor-row { grid-template-columns: 24px minmax(0,1fr) 36px; }
  .period-editor-row label:first-of-type { grid-column: 2; }
  .period-editor-row label:nth-of-type(2), .period-editor-row label:nth-of-type(3) { grid-column: 2 / -1; }
  .period-editor-row .period-remove { grid-column: 3; grid-row: 1; }
  .operation-form-submit { align-items: stretch; flex-direction: column; }
  .operation-form-submit .button { width: 100%; }
  .schedule-week-tabs { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .schedule-swap-body { padding: 0 12px 14px; }
  .schedule-swap-form, .schedule-swap-preview-grid { grid-template-columns: 1fr; }
  .schedule-swap-form .button { width: 100%; }
  .schedule-swap-confirm { align-items: stretch; flex-direction: column; }
  .schedule-swap-confirm .button { width: 100%; }
  .schedule-planner-heading, .schedule-preview-summary { align-items: stretch; grid-template-columns: 1fr; }
  .schedule-preview-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .schedule-preview-actions form, .schedule-preview-actions .button { width: 100%; }
  .schedule-preview-actions .button { justify-content: center; }
  .schedule-planner-links, .schedule-planner-links .button { width: 100%; }
  .schedule-planner-links .button { justify-content: center; }
  .schedule-planner-methods { padding: 0 12px 14px; }
  .auto-hours-list { grid-template-columns: 1fr; max-height: 280px; }
  .auto-schedule-footer { grid-template-columns: 1fr; }
  .schedule-rule-heading { padding: 14px 12px; }
  .schedule-fixed-heading { align-items: flex-start; flex-direction: column; padding: 14px 12px; }
  .schedule-fixed-heading form, .schedule-fixed-heading .button { width: 100%; }
  .schedule-fixed-heading .button { justify-content: center; }
  .schedule-fixed-layout { padding: 12px; }
  .schedule-fixed-list { grid-template-columns: 1fr; }
  .schedule-fixed-form { grid-template-columns: 1fr; }
  .schedule-fixed-form > * { grid-column: 1 !important; }
  .schedule-fixed-form-grid, .schedule-fixed-form-grid.thirds { grid-template-columns: 1fr; }
  .schedule-fixed-periods > div { grid-template-columns: 1fr; }
  .schedule-fixed-item { grid-template-columns: 34px minmax(0,1fr); }
  .schedule-fixed-icon { width: 34px; height: 34px; }
  .schedule-fixed-actions { grid-column: 2; justify-content: flex-end; }
  .lesson-checkin-card > header { grid-template-columns: 34px minmax(0,1fr); }
  .lesson-checkin-state { grid-column: 2; justify-self: start; margin-top: 6px; }
  .lesson-checkin-form { align-items: stretch; flex-direction: column; }
  .lesson-checkin-form .button { width: 100%; justify-content: center; }
  .lesson-alert-card { grid-template-columns: 34px minmax(0,1fr); }
  .lesson-alert-card em { grid-column: 2; justify-self: start; margin-top: 4px; }
  .lesson-alert-resolve-form { grid-template-columns: 1fr; margin-left: 0; }
  .lesson-alert-resolve-form .button { width: 100%; justify-content: center; }
  .lesson-alert-route-note { margin-left: 0; }
  .operation-rule-tip { align-items: flex-start; }
  .schedule-rule-preferences { grid-template-columns: 1fr; }
  .schedule-rule-preferences .button { width: 100%; }
  .schedule-unavailable-area { padding: 12px; }
  .schedule-unavailable-form { grid-template-columns: 1fr; }
  .schedule-unavailable-form .button { width: 100%; }
  .schedule-unavailable-list { display: grid; grid-template-columns: 1fr; }
  .schedule-unavailable-list > div:not(.schedule-unavailable-empty) { justify-content: space-between; }
  .auto-schedule-footer .button, .schedule-preview-summary .button { width: 100%; }
  .schedule-draft-add-form { grid-template-columns: 1fr; margin: 0 12px 12px; padding: 12px; }
  .schedule-draft-add-heading, .schedule-draft-add-form > label:nth-of-type(5) { grid-column: 1; }
  .schedule-draft-add-form .button { width: 100%; }
  .schedule-preview-table { overflow: visible; padding: 0 12px 12px; background: #f7f8fa; }
  .schedule-preview-table table { min-width: 0; display: block; table-layout: auto; }
  .schedule-preview-table thead { display: none; }
  .schedule-preview-table tbody { display: grid; gap: 10px; }
  .schedule-preview-table tr { display: grid; width: 100%; padding: 8px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .schedule-preview-table td { min-width: 0; display: grid; grid-template-columns: 86px minmax(0,1fr); align-items: start; gap: 10px; padding: 8px 0; border: 0; border-bottom: 1px solid #eef0f2; overflow-wrap: anywhere; text-align: left; }
  .schedule-preview-table td:last-child { border-bottom: 0; }
  .schedule-preview-table td::before { content: attr(data-label); color: var(--muted); font-size: 9px; font-weight: 700; }
  .schedule-preview-table td[colspan] { display: block; }
  .schedule-preview-table td[colspan]::before { display: none; }
  .schedule-preview-table td.align-right { text-align: left; }
  .schedule-draft-row-actions { min-width: 0; display: block !important; }
  .schedule-draft-row-actions::before { display: none; }
  .schedule-draft-row-actions details, .schedule-draft-row-actions summary { width: 100%; }
  .schedule-draft-row-actions summary { justify-content: center; min-height: 34px; color: #315f8f; background: #eef4fa; border-radius: var(--radius); }
  .schedule-draft-editor { width: 100%; margin-top: 8px; padding: 10px; box-shadow: none; transform: none; }
  .schedule-draft-editor > form:first-child { grid-template-columns: 1fr; }
  .schedule-draft-editor > form:first-child .button { width: 100%; justify-self: stretch; }
  .schedule-week-tabs a { flex-direction: column; gap: 2px; }
  .schedule-table table { min-width: 0; }
  .schedule-actions { justify-content: flex-start; }
  .attendance-rule-line { grid-template-columns: 1fr; }
  .attendance-rule-line > svg { margin: 0 auto; transform: rotate(90deg); }
  .operation-summary-strip, .my-duty-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .operation-date-filter { width: 100%; }
  .operation-date-filter input { min-width: 0; flex: 1; }
  .attendance-overview-panel .panel-heading, .duty-overview-panel .panel-heading { align-items: stretch; flex-direction: column; }
  .operation-status-table table { min-width: 0; }
  .duty-week-tabs { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .replacement-confirmation-grid, .leave-create-form, .leave-list { grid-template-columns: 1fr; }
  .replacement-actions, .replacement-reject-form { grid-template-columns: 1fr; }
  .replacement-actions .button { width: 100%; }
  .leave-create-submit, .leave-submit-card { align-items: stretch; flex-direction: column; }
  .leave-create-submit .button, .leave-submit-card .button { width: 100%; }
  .leave-impact-list > article { grid-template-columns: 38px minmax(0,1fr); }
  .leave-replacement-form { grid-column: 1 / -1; grid-template-columns: 1fr; }
  .leave-replacement-form .button { width: 100%; }
  .leave-detail-header { align-items: flex-start; }
  .leave-progress-ring { width: 60px; height: 60px; }
  .leave-review-form > div { display: grid; grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .schedule-print-shell { padding: 10px; }
  .schedule-print-toolbar { align-items: stretch; flex-direction: column; }
  .schedule-print-toolbar > div { margin-right: 0; }
  .schedule-print-toolbar form { flex-direction: column; }
  .schedule-print-paper { padding: 14px; }
}

@media print {
  @page { size: landscape; margin: 10mm; }
  .schedule-print-body { background: #fff; }
  .schedule-print-shell { max-width: none; padding: 0; }
  .schedule-print-toolbar { display: none; }
  .schedule-print-paper { padding: 0; box-shadow: none; }
  .schedule-print-table-wrap { overflow: visible; }
  .schedule-print-table-wrap table { min-width: 0; }
}

@media print {
  @page { size: A4; margin: 12mm; }
  .worksheet-print-page { padding: 0; background: #fff; }
  .print-toolbar { display: none !important; }
  .worksheet-paper { width: auto; min-height: 0; padding: 0; box-shadow: none; }
  .worksheet-paper-head h1 { font-size: 22px; }
  .worksheet-questions { gap: 6mm; }
  .print-student .answer-key { display: none; }
}

/* 巡课管理 */
.patrol-workspace { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr); gap: 16px; }
.patrol-workspace > *, .patrol-management-layout > *, .classroom-point-grid > * { min-width: 0; }
.patrol-scan-notice { border-color: #b7e5cf; background: #f1fbf6; }
.patrol-route-list { display: grid; gap: 16px; }
.patrol-route-block { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fbfcfe; }
.patrol-route-block > header { display: grid; grid-template-columns: 42px minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 16px; border-bottom: 1px solid var(--line); background: #fff; }
.patrol-period-icon { width: 42px; height: 42px; display: grid; place-items: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.patrol-route-block > header strong { display: block; font-size: 15px; }
.patrol-route-block > header p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.patrol-window { padding: 4px 8px; border-radius: var(--radius-sm); font-size: 12px; font-style: normal; font-weight: 600; }
.patrol-window.open { color: #087a2c; background: #eaf8ef; }
.patrol-window.waiting { color: #8b5b00; background: #fff7e6; }
.patrol-window.closed { color: var(--muted); background: #f2f3f5; }
.patrol-stop-list { display: grid; gap: 12px; padding: 16px; }
.patrol-stop { padding: 16px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; transition: border-color .2s ease, box-shadow .2s ease; }
.patrol-stop.scanned { border-color: #6e9cff; box-shadow: 0 0 0 3px rgba(22,93,255,.09); }
.patrol-stop.completed { background: #fbfefc; border-color: #cfe7d7; }
.patrol-stop-heading { display: flex; gap: 10px; align-items: center; }
.patrol-stop-heading > span { width: 36px; height: 36px; display: grid; place-items: center; color: var(--primary); background: var(--primary-soft); border-radius: var(--radius); }
.patrol-stop-heading > div { min-width: 0; flex: 1; }
.patrol-stop-heading strong { display: block; font-size: 14px; }
.patrol-stop-heading p { margin-top: 2px; color: var(--text-2); font-size: 12px; }
.photo-required { display: inline-flex; align-items: center; gap: 5px; padding: 4px 8px; color: #9c5c00; background: #fff4dd; border-radius: var(--radius-sm); font-size: 11px; font-style: normal; font-weight: 600; }
.photo-required svg { width: 14px; height: 14px; }
.patrol-record-result { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line); }
.patrol-record-result p { color: var(--text-2); font-size: 12px; }
.patrol-record-result a { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; color: var(--primary); font-size: 12px; font-weight: 600; }
.patrol-record-result a svg { width: 15px; height: 15px; }
.patrol-check-form { display: grid; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--line); }
.patrol-check-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 12px; font-weight: 600; }
.patrol-check-form input, .patrol-check-form select { width: 100%; height: 40px; padding: 8px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.patrol-check-form input:focus, .patrol-check-form select:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.patrol-check-form .input-with-icon input { padding-left: 36px; }
.patrol-check-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 12px; }
.patrol-photo-row { display: grid; grid-template-columns: minmax(260px,1fr) auto; gap: 16px; align-items: end; }
.patrol-photo-row > div { min-width: 210px; display: grid; gap: 6px; justify-items: end; }
.patrol-photo-row .location-feedback { max-width: 360px; margin: 0; text-align: right; }
.patrol-management-layout { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 16px; }
.patrol-roster-rows { display: grid; gap: 8px; margin-top: 14px; }
.patrol-roster-rows article { display: grid; grid-template-columns: 38px minmax(0,1fr) 40px; gap: 10px; align-items: center; padding: 11px 12px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.patrol-roster-rows article > span { width: 36px; height: 36px; display: grid; place-items: center; color: var(--secondary); background: #eaf8f8; border-radius: var(--radius); }
.patrol-roster-rows strong { display: block; font-size: 13px; }
.patrol-roster-rows p, .patrol-roster-rows small { display: block; color: var(--muted); font-size: 11px; }
.classroom-point-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.classroom-point-card { display: grid; grid-template-columns: 128px minmax(0,1fr); gap: 14px; align-items: center; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.point-qr { width: 128px; height: 128px; display: grid; place-items: center; color: var(--muted); background: #f7f8fa; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.point-qr canvas, .point-qr img { width: 128px !important; height: 128px !important; }
.point-info { min-width: 0; }
.point-info strong { display: block; font-size: 15px; }
.point-info p { color: var(--text-2); font-size: 12px; }
.point-info code { display: block; margin-top: 6px; overflow-wrap: anywhere; color: var(--primary-dark); font-size: 11px; }
.classroom-point-card form { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: end; padding-top: 12px; border-top: 1px solid var(--line); }
.classroom-point-card form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.classroom-point-card form input { width: 100%; height: 36px; padding: 7px 9px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.classroom-point-card form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.classroom-point-card form > div { display: flex; gap: 6px; }
.button.text { color: var(--text-2); background: transparent; }
.button.text:hover { color: var(--primary); background: var(--primary-soft); }
.operation-status.attention { color: #a45a00; background: #fff4dd; border-color: #f4d49c; }
.patrol-overview-panel .panel-heading { align-items: flex-end; }
.patrol-overview-table .attention-row { background: #fffbf3; }
.evidence-chip { display: inline-flex; align-items: center; gap: 4px; margin-right: 5px; padding: 3px 6px; color: var(--text-2); background: #f4f6f8; border-radius: var(--radius-sm); font-size: 10px; }
.evidence-chip svg { width: 13px; height: 13px; }
.patrol-note { display: block; max-width: 300px; margin-top: 5px; color: #965100; white-space: normal; }
.patrol-followup-section, .patrol-week-dashboard { min-width: 0; padding: 20px; background: #eef3f8; border: 1px solid #dce5ee; border-radius: var(--radius-lg); }
.patrol-followup-section.my-followups { background: #f7f9fc; }
.patrol-section-heading { display: flex; justify-content: space-between; gap: 24px; align-items: flex-end; margin-bottom: 16px; }
.patrol-section-heading h2 { margin-top: 3px; font-size: 18px; }
.patrol-section-heading > div > p:last-child { margin-top: 4px; color: var(--text-2); font-size: 12px; line-height: 1.6; }
.patrol-followup-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.patrol-followup-card { min-width: 0; padding: 16px; background: #fff; border: 1px solid #dce3ea; border-left: 4px solid #f0a43a; border-radius: var(--radius); box-shadow: 0 4px 14px rgba(27,48,74,.05); }
.patrol-followup-card.submitted { border-left-color: var(--primary); }
.patrol-followup-card.resolved, .patrol-followup-card.dismissed { border-left-color: var(--success); }
.patrol-followup-card > header { display: flex; gap: 10px; align-items: flex-start; }
.patrol-followup-icon { flex: 0 0 36px; width: 36px; height: 36px; display: grid; place-items: center; color: #9b5b00; background: #fff5df; border-radius: var(--radius); }
.patrol-followup-card.submitted .patrol-followup-icon { color: var(--primary); background: var(--primary-soft); }
.patrol-followup-card.resolved .patrol-followup-icon, .patrol-followup-card.dismissed .patrol-followup-icon { color: #087a2c; background: #eaf8ef; }
.patrol-followup-card > header > div { min-width: 0; flex: 1; }
.patrol-followup-card > header > div > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; align-items: center; }
.patrol-followup-card > header strong { font-size: 14px; }
.patrol-followup-card > header p { margin-top: 3px; color: var(--muted); font-size: 11px; }
.patrol-followup-status { display: inline-flex; width: fit-content; margin-top: 4px; padding: 3px 7px; color: #965100; background: #fff4dd; border-radius: var(--radius-sm); font-size: 10px; font-style: normal; font-weight: 700; }
.patrol-followup-status.submitted { color: var(--primary-dark); background: var(--primary-soft); }
.patrol-followup-status.resolved, .patrol-followup-status.dismissed { color: #087a2c; background: #eaf8ef; }
.patrol-followup-status.returned { color: #b42318; background: #fff0ee; }
.patrol-followup-issue { margin-top: 12px; padding: 12px; background: #f8fafc; border: 1px solid #e6ebf0; border-radius: var(--radius); }
.patrol-followup-issue small { color: var(--muted); font-size: 10px; }
.patrol-followup-issue p { margin-top: 4px; color: var(--text); font-size: 12px; line-height: 1.6; white-space: pre-wrap; }
.patrol-followup-issue span { display: inline-flex; align-items: center; gap: 5px; margin-top: 8px; color: var(--text-2); font-size: 10px; }
.patrol-followup-issue span svg { width: 13px; height: 13px; }
.patrol-return-note, .patrol-review-result { display: flex; gap: 9px; margin-top: 10px; padding: 10px 12px; background: #fff4f2; border-radius: var(--radius); }
.patrol-return-note > svg, .patrol-review-result > svg { flex: 0 0 16px; width: 16px; height: 16px; color: #b42318; }
.patrol-return-note strong, .patrol-return-note span, .patrol-review-result strong, .patrol-review-result span { display: block; font-size: 11px; line-height: 1.5; }
.patrol-return-note span, .patrol-review-result span { color: var(--text-2); }
.patrol-review-result { background: #eef9f2; }
.patrol-review-result > svg { color: #087a2c; }
.patrol-response-form, .patrol-assignment-form, .patrol-review-form { display: grid; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.patrol-response-form { grid-template-columns: repeat(2,minmax(0,1fr)); }
.patrol-response-form .button { grid-column: 1 / -1; justify-self: end; }
.patrol-response-form label > span, .patrol-assignment-form label > span, .patrol-review-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 11px; font-weight: 600; }
.patrol-response-form textarea, .patrol-assignment-form textarea, .patrol-assignment-form select, .patrol-assignment-form input, .patrol-review-form input, .patrol-dismiss-form input { width: 100%; padding: 9px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; }
.patrol-response-form textarea:focus, .patrol-assignment-form textarea:focus, .patrol-assignment-form select:focus, .patrol-assignment-form input:focus, .patrol-review-form input:focus, .patrol-dismiss-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.patrol-assignment-form { grid-template-columns: minmax(0,1fr) 140px auto; align-items: end; }
.patrol-assignment-form .issue-field { grid-column: 1 / -1; }
.patrol-response-readonly { display: grid; gap: 8px; margin-top: 12px; padding: 12px; background: #f8fafc; border-radius: var(--radius); }
.patrol-response-readonly p { display: grid; gap: 3px; }
.patrol-response-readonly small { color: var(--muted); font-size: 10px; }
.patrol-response-readonly span { color: var(--text-2); font-size: 12px; line-height: 1.6; white-space: pre-wrap; }
.patrol-review-form > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.patrol-dismiss-form { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; align-items: center; margin-top: 10px; }
.patrol-followup-empty { grid-column: 1 / -1; min-height: 180px; background: #fff; border: 1px dashed #ccd7e2; border-radius: var(--radius); }
.patrol-week-dashboard { background: #f7f9fc; }
.patrol-week-dashboard .operation-date-filter label > span { display: block; margin-bottom: 4px; color: var(--muted); font-size: 10px; font-weight: 600; }
.patrol-week-metrics { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 8px; margin-bottom: 12px; }
.patrol-week-metrics span { min-width: 0; padding: 12px; background: #fff; border: 1px solid #e1e7ed; border-radius: var(--radius); }
.patrol-week-metrics small { display: block; color: var(--muted); font-size: 10px; }
.patrol-week-metrics strong { display: block; margin-top: 4px; color: var(--text); font-size: 22px; }
.patrol-week-metrics .attention strong, .patrol-week-metrics .missing strong { color: #b45f06; }
.patrol-week-metrics .followup strong { color: var(--primary); }
.patrol-week-metrics .resolved strong { color: #087a2c; }
.patrol-week-layout { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr) 300px; gap: 12px; }
.patrol-week-layout > * { min-width: 0; }
.patrol-week-table .panel-heading, .patrol-issue-summary .panel-heading { margin-bottom: 10px; }
.patrol-week-table h3, .patrol-issue-summary h3 { font-size: 15px; }
.patrol-week-table td small { display: block; color: var(--muted); font-size: 10px; }
.patrol-issue-row { display: grid; grid-template-columns: 32px minmax(0,1fr) auto; gap: 9px; align-items: center; padding: 10px 0; border-top: 1px solid var(--line); }
.patrol-issue-row > span { width: 32px; height: 32px; display: grid; place-items: center; color: #a45a00; background: #fff4dd; border-radius: var(--radius); }
.patrol-issue-row strong, .patrol-issue-row small { display: block; font-size: 11px; }
.patrol-issue-row small { margin-top: 2px; color: var(--muted); }
.patrol-issue-row em { min-width: 26px; text-align: right; color: #a45a00; font-size: 18px; font-style: normal; font-weight: 700; }

@media (max-width: 1180px) {
  .patrol-management-layout { grid-template-columns: minmax(0,1fr); }
  .classroom-point-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .patrol-followup-grid, .patrol-week-layout { grid-template-columns: minmax(0,1fr); }
}

@media (max-width: 700px) {
  .patrol-route-block > header { grid-template-columns: 38px minmax(0,1fr); }
  .patrol-window { grid-column: 2; justify-self: start; }
  .patrol-stop-heading { align-items: flex-start; }
  .photo-required { margin-left: 46px; }
  .patrol-check-grid, .patrol-photo-row { grid-template-columns: minmax(0,1fr); }
  .patrol-photo-row > div { min-width: 0; justify-items: stretch; }
  .patrol-photo-row .location-feedback { max-width: none; text-align: left; }
  .patrol-week-tabs { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .classroom-point-grid { grid-template-columns: minmax(0,1fr); }
  .classroom-point-card { grid-template-columns: 96px minmax(0,1fr); }
  .point-qr, .point-qr canvas, .point-qr img { width: 96px !important; height: 96px !important; }
  .classroom-point-card form { grid-template-columns: 1fr; }
  .classroom-point-card form > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .patrol-overview-panel .panel-heading { align-items: stretch; flex-direction: column; }
  .patrol-overview-table { max-width: 100%; }
  .patrol-overview-table table { width: 100%; table-layout: fixed; }
  .patrol-overview-table th, .patrol-overview-table td { overflow-wrap: anywhere; }
  .patrol-followup-section, .patrol-week-dashboard { padding: 14px; }
  .patrol-section-heading { align-items: stretch; flex-direction: column; gap: 12px; }
  .patrol-followup-grid, .patrol-response-form, .patrol-assignment-form, .patrol-dismiss-form { grid-template-columns: minmax(0,1fr); }
  .patrol-assignment-form .issue-field, .patrol-response-form .button { grid-column: auto; }
  .patrol-response-form .button, .patrol-assignment-form .button { width: 100%; justify-self: stretch; }
  .patrol-review-form > div { display: grid; grid-template-columns: minmax(0,1fr); }
  .patrol-week-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .patrol-week-dashboard .operation-date-filter { width: 100%; }
  .patrol-week-dashboard .operation-date-filter label { flex: 1; }
  .patrol-week-dashboard .operation-date-filter input { width: 100%; }
  .patrol-week-table .table-wrap { overflow: visible; }
  .patrol-week-table table, .patrol-week-table tbody, .patrol-week-table tr, .patrol-week-table td { display: block; width: 100%; }
  .patrol-week-table thead { display: none; }
  .patrol-week-table tbody { display: grid; gap: 8px; }
  .patrol-week-table tr { padding: 10px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .patrol-week-table td { display: grid; grid-template-columns: 76px minmax(0,1fr); gap: 8px; padding: 5px 0; border: 0; text-align: right; }
  .patrol-week-table td::before { content: attr(data-label); color: var(--muted); font-size: 10px; font-weight: 600; text-align: left; }
  .patrol-week-table td:first-child { display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px; padding-bottom: 9px; border-bottom: 1px solid var(--line); text-align: left; }
  .patrol-week-table td:first-child::before { display: none; }
  .patrol-week-table td:first-child small { margin-left: auto; }
}

/* 第二十三阶段：签到与值班补签审批 */
.supplement-workspace { display: grid; gap: 16px; margin-top: 16px; }
.supplement-intro-band { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 24px; color: #fff; background: #203f5e; border-radius: var(--radius-lg); box-shadow: 0 10px 24px rgba(32,63,94,.12); }
.supplement-intro-band .overline { color: #a9cde5; }
.supplement-intro-band h2 { margin: 3px 0 5px; font-size: 17px; }
.supplement-intro-band p:last-child { color: #d7e5ef; font-size: 10px; line-height: 1.6; }
.supplement-date-filter { flex: 0 0 auto; padding: 10px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.14); border-radius: var(--radius); }
.supplement-date-filter label > span { display: block; margin-bottom: 4px; color: #d7e5ef; font-size: 9px; font-weight: 600; }
.supplement-date-filter input { color: var(--text); background: #fff; }
.supplement-date-filter .button { align-self: flex-end; background: #fff; }
.supplement-apply-grid { display: grid; grid-template-columns: 360px minmax(0,1fr); align-items: start; gap: 16px; }
.supplement-apply-card { overflow: hidden; padding: 18px; }
.supplement-apply-card > header { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 11px; align-items: center; }
.supplement-card-icon { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius); }
.supplement-card-icon svg { width: 19px; height: 19px; }
.supplement-apply-card header small { color: #315f8f; font-size: 8px; font-weight: 700; }
.supplement-apply-card header h2 { margin: 2px 0; font-size: 14px; }
.supplement-apply-card header p { color: var(--muted); font-size: 9px; }
.supplement-eligibility { display: flex; align-items: flex-start; gap: 7px; margin-top: 14px; padding: 10px; border: 1px solid var(--line); border-radius: var(--radius); font-size: 9px; line-height: 1.55; }
.supplement-eligibility svg { width: 15px; height: 15px; flex: 0 0 auto; }
.supplement-eligibility.available { color: #17643a; background: #f0faf5; border-color: #cce7d9; }
.supplement-eligibility.unavailable { color: #665329; background: #fffaf0; border-color: #ecdfbf; }
.supplement-application-form { display: grid; gap: 10px; margin-top: 14px; }
.supplement-application-form label > span { display: block; margin-bottom: 5px; color: var(--text-2); font-size: 9px; font-weight: 700; }
.supplement-application-form textarea, .supplement-review-form input { width: 100%; padding: 9px 10px; color: var(--text); background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); outline: 0; resize: vertical; }
.supplement-application-form textarea:focus, .supplement-review-form input:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22,93,255,.08); }
.supplement-file-field { display: block; padding: 10px; background: #f8f9fb; border: 1px dashed #bdc8d4; border-radius: var(--radius); }
.supplement-file-field input { width: 100%; color: var(--text-2); font-size: 9px; }
.supplement-file-field small { display: block; margin-top: 5px; color: var(--muted); font-size: 8px; line-height: 1.5; }
.supplement-duty-panel { overflow: hidden; }
.supplement-duty-list { display: grid; gap: 10px; padding: 0 18px 18px; }
.supplement-duty-list > article { padding: 12px; background: #f8f9fb; border: 1px solid var(--line); border-radius: var(--radius); }
.supplement-duty-list article > header { display: grid; grid-template-columns: 36px minmax(0,1fr) auto; align-items: center; gap: 10px; }
.supplement-duty-list article > header > span { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; color: #315f8f; background: #e8f0f8; border-radius: var(--radius-sm); }
.supplement-duty-list article > header svg { width: 17px; height: 17px; }
.supplement-duty-list header strong { display: block; font-size: 11px; }
.supplement-duty-list header p { margin-top: 2px; color: var(--muted); font-size: 9px; }
.supplement-state { max-width: 190px; padding: 4px 7px; border-radius: var(--radius-sm); font-size: 8px; font-style: normal; line-height: 1.45; text-align: right; }
.supplement-state.available { color: #17643a; background: #e8f7ee; }
.supplement-state.unavailable { color: #665329; background: #fff4d9; }
.supplement-application-form.compact { grid-template-columns: minmax(0,1fr) 220px auto; align-items: end; padding-top: 11px; border-top: 1px solid var(--line); }
.supplement-leader-note { display: grid; grid-template-columns: 44px minmax(0,1fr) auto; align-items: center; gap: 12px; padding: 15px 18px; background: #eef7f4; border: 1px solid #cfe6dd; border-radius: var(--radius-lg); }
.supplement-leader-note > span { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; color: #087c66; background: #fff; border-radius: var(--radius); }
.supplement-leader-note strong { display: block; font-size: 12px; }
.supplement-leader-note p { margin-top: 3px; color: var(--text-2); font-size: 9px; }
.supplement-leader-note em { color: #087c66; font-size: 11px; font-style: normal; font-weight: 700; }
.supplement-history-panel { min-width: 0; overflow: hidden; }
.supplement-table-wrap table { min-width: 980px; }
.supplement-table-wrap td strong, .supplement-table-wrap td small { display: block; }
.supplement-table-wrap td small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.supplement-reason { max-width: 280px; margin-bottom: 6px; color: var(--text-2); font-size: 9px; line-height: 1.55; white-space: normal; }
.supplement-status { display: inline-flex; padding: 4px 7px; border-radius: var(--radius-sm); font-size: 9px; font-weight: 700; white-space: nowrap; }
.supplement-status.pending { color: #8b5e08; background: #fff4d9; }
.supplement-status.approved { color: #17643a; background: #e8f7ee; }
.supplement-status.rejected { color: #a32929; background: #fff0f0; }
.supplement-review-form { width: 250px; margin-left: auto; }
.supplement-review-form input { min-height: 34px; font-size: 9px; }
.supplement-review-form > div { display: flex; justify-content: flex-end; gap: 6px; margin-top: 6px; }
.platform-muted { color: var(--muted); font-size: 9px; }
.operation-summary-strip > span.supplemented { border-color: #087c66; }

@media (max-width: 1180px) {
  .supplement-apply-grid { grid-template-columns: 320px minmax(0,1fr); }
  .supplement-application-form.compact { grid-template-columns: 1fr 190px; }
  .supplement-application-form.compact .button { grid-column: 1 / -1; justify-self: end; }
}

@media (max-width: 900px) {
  .supplement-intro-band { align-items: stretch; flex-direction: column; }
  .supplement-date-filter { width: 100%; }
  .supplement-apply-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .supplement-intro-band { padding: 18px; }
  .supplement-date-filter { display: grid; grid-template-columns: minmax(0,1fr) auto; }
  .supplement-date-filter label { min-width: 0; }
  .supplement-duty-list article > header { grid-template-columns: 36px minmax(0,1fr); }
  .supplement-state { grid-column: 2; max-width: none; justify-self: start; text-align: left; }
  .supplement-application-form.compact { grid-template-columns: 1fr; }
  .supplement-application-form.compact .button { grid-column: auto; width: 100%; }
  .supplement-leader-note { grid-template-columns: 40px minmax(0,1fr); }
  .supplement-leader-note em { grid-column: 2; }
  .supplement-history-panel .panel-heading { align-items: flex-start; }
  .supplement-table-wrap { overflow: visible; padding: 0 12px 12px; background: #f7f8fa; }
  .supplement-table-wrap table { min-width: 0; display: block; }
  .supplement-table-wrap thead { display: none; }
  .supplement-table-wrap tbody { display: grid; gap: 10px; }
  .supplement-table-wrap tr { display: grid; padding: 8px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
  .supplement-table-wrap td { min-width: 0; display: grid; grid-template-columns: 86px minmax(0,1fr); align-items: start; gap: 10px; padding: 8px 0; border: 0; border-bottom: 1px solid #eef0f2; overflow-wrap: anywhere; }
  .supplement-table-wrap td:last-child { border-bottom: 0; }
  .supplement-table-wrap td::before { content: attr(data-label); color: var(--muted); font-size: 9px; font-weight: 700; }
  .supplement-table-wrap td[colspan] { display: block; }
  .supplement-table-wrap td[colspan]::before { display: none; }
  .supplement-table-wrap td.align-right { text-align: left; }
  .supplement-reason { max-width: none; }
  .supplement-review-form { width: 100%; }
  .supplement-review-form > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .supplement-review-form .button { width: 100%; }
}

/* Reports and exports */
.report-actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.test-detail-header .report-actions a { margin-bottom: 0; }
.profile-actions { display: grid; justify-items: end; gap: 10px; }
.patrol-report-actions { display: grid; justify-items: end; gap: 8px; }
.patrol-report-actions .report-actions { justify-content: flex-end; }
.report-print-page { min-height: 100vh; padding: 24px; color: #1d2129; background: #edf0f3; font-family: "Microsoft YaHei", system-ui, -apple-system, sans-serif; }
.report-print-toolbar { width: min(210mm, 100%); display: flex; justify-content: flex-end; gap: 8px; margin: 0 auto 16px; }
.report-sheet { width: min(210mm, 100%); min-height: 297mm; margin: 0 auto; padding: 18mm 16mm; background: #fff; box-shadow: 0 10px 30px rgba(29, 33, 41, .1); }
.report-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; padding-bottom: 18px; border-bottom: 2px solid #1d4f91; }
.report-heading p { color: #1d4f91; font-size: 12px; font-weight: 700; }
.report-heading h1 { margin: 5px 0; font-size: 26px; line-height: 1.2; }
.report-heading span { color: #6b7280; font-size: 12px; }
.report-heading em { padding: 5px 8px; color: #1d4f91; background: #edf4ff; border-radius: 6px; font-size: 10px; font-style: normal; font-weight: 700; white-space: nowrap; }
.report-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 18px 0 24px; }
.report-summary-grid.patrol { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.report-summary-grid > div { min-width: 0; padding: 12px; background: #f6f8fb; border: 1px solid #e5e8ed; border-radius: 8px; }
.report-summary-grid small, .report-summary-grid strong { display: block; overflow-wrap: anywhere; }
.report-summary-grid small { color: #6b7280; font-size: 10px; }
.report-summary-grid strong { margin-top: 4px; color: #1d2129; font-size: 15px; }
.report-section { margin-top: 24px; }
.report-section-title { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid #dfe3e8; }
.report-section-title h2 { font-size: 16px; }
.report-section-title span { color: #6b7280; font-size: 10px; }
.report-review { margin-bottom: 12px; padding: 14px; border: 1px solid #dfe3e8; border-radius: 8px; break-inside: avoid; }
.report-review header { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.report-review header strong { font-size: 13px; }
.report-review header small { color: #6b7280; font-size: 10px; }
.report-review p { margin-top: 7px; color: #374151; font-size: 11px; line-height: 1.65; }
.report-review p b { display: inline-block; min-width: 70px; color: #1d2129; }
.report-record { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 14px; padding: 12px 0; border-bottom: 1px solid #edf0f3; break-inside: avoid; }
.report-record > time { color: #6b7280; font-size: 10px; }
.report-record header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.report-record header strong { font-size: 12px; }
.report-record header span { color: #1d4f91; font-size: 10px; }
.report-record p { margin: 5px 0; color: #374151; font-size: 11px; line-height: 1.65; }
.report-record small { display: block; color: #6b7280; font-size: 9px; }
.report-empty { padding: 24px; color: #6b7280; background: #f7f8fa; border: 1px dashed #cfd5dc; border-radius: 8px; text-align: center; font-size: 11px; }
.report-table { width: 100%; border-collapse: collapse; font-size: 10px; }
.report-table th, .report-table td { padding: 8px 6px; border: 1px solid #dfe3e8; text-align: center; }
.report-table th { color: #374151; background: #f2f5f8; font-weight: 700; }
.report-issue-list { display: grid; gap: 8px; }
.report-issue-list p { display: flex; justify-content: space-between; gap: 16px; padding: 10px 12px; background: #fff8ec; border-left: 3px solid #d99019; font-size: 11px; }
.report-note { margin-top: 20px; padding: 10px 12px; color: #566170; background: #f6f8fb; border-radius: 8px; font-size: 10px; }
.report-footer { margin-top: 28px; padding-top: 10px; color: #86909c; border-top: 1px solid #e5e8ed; font-size: 9px; text-align: right; }

@media (max-width: 700px) {
  .page-toolbar .report-actions, .test-detail-header .report-actions, .profile-actions, .patrol-report-actions { width: 100%; justify-items: stretch; }
  .report-actions .button { flex: 1; }
  .profile-tags { justify-content: flex-start; }
  .report-print-page { padding: 0; background: #fff; }
  .report-print-toolbar { width: 100%; margin: 0; padding: 12px; }
  .report-print-toolbar .button { flex: 1; }
  .report-sheet { width: 100%; min-height: 0; padding: 20px 16px; box-shadow: none; }
  .report-heading { align-items: flex-start; flex-direction: column; gap: 10px; }
  .report-summary-grid, .report-summary-grid.patrol { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-record { grid-template-columns: 1fr; gap: 5px; }
  .report-review header, .report-record header { align-items: flex-start; flex-direction: column; gap: 4px; }
  .report-table thead { display: none; }
  .report-table, .report-table tbody, .report-table tr, .report-table td { display: block; width: 100%; }
  .report-table tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 10px; padding: 8px; border: 1px solid #dfe3e8; border-radius: 8px; }
  .report-table td { padding: 6px; border: 0; text-align: left; }
  .report-table td::before { display: block; margin-bottom: 2px; color: #86909c; font-size: 9px; }
  .report-table td:nth-child(1)::before { content: "日期"; }
  .report-table td:nth-child(2)::before { content: "星期"; }
  .report-table td:nth-child(3)::before { content: "应巡"; }
  .report-table td:nth-child(4)::before { content: "完成"; }
  .report-table td:nth-child(5)::before { content: "正常"; }
  .report-table td:nth-child(6)::before { content: "异常"; }
  .report-table td:nth-child(7)::before { content: "漏巡"; }
  .report-table td:nth-child(8)::before { content: "待巡"; }
}

@media print {
  @page { size: A4; margin: 12mm; }
  .report-print-page { padding: 0; background: #fff; }
  .report-print-toolbar { display: none !important; }
  .report-sheet { width: 100%; min-height: 0; padding: 0; box-shadow: none; }
  .report-heading { break-after: avoid; }
  .report-section-title, .report-table thead { break-after: avoid; }
}

/* 校内消息与每日提醒中心 */
.notification-button { text-decoration: none; }
.notification-count { position: absolute; top: 3px; right: 2px; min-width: 17px; height: 17px; padding: 0 4px; border: 2px solid #fff; border-radius: 9px; color: #fff; background: #e5484d; font-size: 10px; font-weight: 700; line-height: 13px; text-align: center; }
.message-overview-band { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; padding: 24px 32px; border: 1px solid #dce5f4; border-radius: 12px; background: #f7faff; }
.message-overview-band h2 { margin: 4px 0 8px; color: #172033; font-size: 24px; line-height: 1.25; }
.message-overview-band p { margin: 0; color: #667085; }
.message-overview-stats { display: flex; gap: 8px; }
.message-overview-stats span { min-width: 104px; padding: 12px 16px; border-left: 1px solid #d6e0ef; }
.message-overview-stats strong, .message-overview-stats small { display: block; }
.message-overview-stats strong { color: #165dff; font-size: 24px; }
.message-overview-stats small { margin-top: 2px; color: #667085; }
.message-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.message-page-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; align-items: start; gap: 16px; }
.message-list-panel { min-width: 0; padding: 0; overflow: hidden; }
.message-list-panel > .panel-heading { margin: 0; padding: 20px 24px; border-bottom: 1px solid #edf0f5; }
.school-notice-list article { border-bottom: 1px solid #edf0f5; transition: background .2s ease, box-shadow .2s ease; }
.school-notice-list article:last-child { border-bottom: 0; }
.school-notice-list article:hover, .school-notice-list article.selected { background: #f7f9fc; }
.school-notice-list article.selected { box-shadow: inset 3px 0 #165dff; }
.school-notice-list article.unread { background: #f5f9ff; }
.school-notice-list article > a { display: grid; grid-template-columns: 42px minmax(0, 1fr) 20px; align-items: center; gap: 14px; padding: 18px 24px; color: inherit; text-decoration: none; }
.notice-type-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 8px; color: #2764c5; background: #eaf2ff; }
.notice-type-icon svg { width: 20px; height: 20px; }
.school-notice-list article.important .notice-type-icon { color: #b54708; background: #fff4e5; }
.school-notice-list header { display: flex; align-items: center; gap: 8px; }
.school-notice-list header strong { color: #1d2939; font-size: 15px; }
.school-notice-list header em { padding: 2px 6px; border-radius: 6px; color: #165dff; background: #eaf2ff; font-size: 11px; font-style: normal; }
.school-notice-list header em.pinned { color: #067647; background: #ecfdf3; }
.school-notice-list header em.scheduled { color: #7a5af8; background: #f4f3ff; }
.school-notice-list p { margin: 5px 0 8px; color: #667085; line-height: 1.55; }
.school-notice-list footer { display: flex; flex-wrap: wrap; gap: 8px 16px; color: #98a2b3; font-size: 12px; }
.school-notice-list article > a > svg { width: 18px; color: #98a2b3; }
.message-side-column { display: grid; gap: 16px; }
.notice-detail-panel { padding: 24px; }
.notice-detail-panel > header { display: flex; gap: 14px; padding-bottom: 18px; border-bottom: 1px solid #edf0f5; }
.notice-detail-panel > header > span { display: grid; flex: 0 0 42px; place-items: center; width: 42px; height: 42px; border-radius: 8px; color: #2764c5; background: #eaf2ff; }
.notice-detail-panel.important > header > span { color: #b54708; background: #fff4e5; }
.notice-detail-panel header small { color: #165dff; font-weight: 700; }
.notice-detail-panel header h2 { margin: 4px 0 6px; color: #172033; font-size: 18px; line-height: 1.35; }
.notice-detail-panel header p { margin: 0; color: #98a2b3; font-size: 12px; }
.notice-delivery-state { margin-left: auto; padding: 4px 8px; border-radius: 6px; color: #027a48; background: #ecfdf3; font-size: 11px; font-style: normal; white-space: nowrap; }
.notice-delivery-state.scheduled { color: #6941c6; background: #f4f3ff; }
.notice-delivery-state.expired { color: #667085; background: #f2f4f7; }
.notice-detail-content { min-height: 120px; padding: 20px 0; color: #344054; line-height: 1.8; overflow-wrap: anywhere; }
.notice-read-state { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; border-radius: 8px; color: #14804a; background: #edf9f2; font-size: 13px; }
.notice-read-state svg { width: 17px; }
.notice-publisher-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 16px; padding: 12px; border: 1px solid #e4e7ec; border-radius: 8px; background: #fafbfc; }
.notice-publisher-summary.with-ack { grid-template-columns: repeat(4, 1fr); }
.notice-publisher-summary span { text-align: center; }
.notice-publisher-summary strong, .notice-publisher-summary small { display: block; }
.notice-publisher-summary strong { color: #172033; font-size: 18px; }
.notice-publisher-summary small { color: #667085; font-size: 11px; }
.notice-detail-panel > form:last-child { margin-top: 12px; text-align: right; }
.message-guide-panel { padding: 32px 24px; text-align: center; }
.message-guide-panel > span { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 12px; border-radius: 8px; color: #2764c5; background: #eaf2ff; }
.message-guide-panel h2 { margin: 0 0 6px; color: #172033; font-size: 18px; }
.message-guide-panel p { margin: 0; color: #667085; }
.notice-compose-panel { padding: 20px; }
.notice-compose-panel > .panel-heading > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; color: #fff; background: #165dff; }
.notice-compose-panel > .form-stack { padding: 0; }
.notice-compose-grid { display: grid; grid-template-columns: 1fr; gap: 12px; }
.notice-compose-grid > *, .notice-option-box, .notice-option-box label > span { min-width: 0; }
.notice-compose-grid label > small { margin-top: 4px; color: #98a2b3; font-size: 11px; }
.notice-option-box { display: grid; align-content: center; gap: 8px; padding: 10px 12px; border: 1px solid #e4e7ec; border-radius: 8px; background: #fafbfc; }
.notice-option-box label { display: flex; align-items: flex-start; gap: 8px; }
.notice-option-box input[type="checkbox"] { flex: 0 0 16px; width: 16px; min-height: 16px; margin-top: 3px; padding: 0; }
.notice-option-box span, .notice-option-box strong, .notice-option-box small { display: block; }
.notice-option-box strong { color: #344054; font-size: 13px; }
.notice-option-box small { color: #98a2b3; font-size: 11px; }
.notice-attachment-picker { margin: 0; padding: 12px; border: 1px solid #dce5f4; border-radius: 8px; }
.notice-attachment-picker legend { padding: 0 6px; color: #344054; font-size: 12px; font-weight: 700; }
.notice-attachment-picker > div { display: grid; max-height: 190px; overflow-y: auto; gap: 6px; }
.notice-attachment-picker label { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 6px; background: #f8fafc; }
.notice-attachment-picker label span, .notice-attachment-picker label strong, .notice-attachment-picker label small { display: block; min-width: 0; }
.notice-attachment-picker label strong { overflow: hidden; color: #344054; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.notice-attachment-picker label small { color: #98a2b3; font-size: 11px; }
.notice-attachment-picker > a { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; color: #165dff; font-size: 12px; font-weight: 700; }
.notice-attachment-picker > a svg { width: 15px; }
.notice-no-attachment { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 1px dashed #cfd8e6; border-radius: 8px; color: #667085; background: #fafbfc; }
.notice-no-attachment > svg { width: 18px; }
.notice-no-attachment p { flex: 1; margin: 0; font-size: 12px; }
.notice-no-attachment a { color: #165dff; font-size: 12px; font-weight: 700; }
.notice-attachment-list { display: grid; gap: 8px; margin: 16px 0; padding-top: 14px; border-top: 1px solid #edf0f5; }
.notice-attachment-list > strong { display: flex; align-items: center; gap: 6px; color: #344054; font-size: 13px; }
.notice-attachment-list > strong svg { width: 16px; }
.notice-attachment-list > a { display: grid; grid-template-columns: 32px minmax(0, 1fr) 18px; align-items: center; gap: 10px; padding: 10px; border: 1px solid #e4e7ec; border-radius: 8px; color: inherit; background: #fafbfc; }
.notice-attachment-list > a > span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 6px; color: #165dff; background: #eaf2ff; }
.notice-attachment-list > a svg { width: 16px; }
.notice-attachment-list b, .notice-attachment-list small { display: block; }
.notice-attachment-list b { overflow: hidden; color: #344054; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.notice-attachment-list small { margin-top: 2px; color: #98a2b3; font-size: 11px; }
.notice-read-state.confirmed { color: #067647; background: #ecfdf3; }
.notice-recipient-details { margin-top: 12px; border: 1px solid #e4e7ec; border-radius: 8px; }
.notice-recipient-details summary { display: flex; justify-content: space-between; padding: 10px 12px; color: #475467; cursor: pointer; font-size: 12px; font-weight: 700; }
.notice-recipient-details > div { max-height: 250px; overflow-y: auto; border-top: 1px solid #e4e7ec; }
.notice-recipient-details article { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid #f2f4f7; }
.notice-recipient-details article:last-child { border-bottom: 0; }
.notice-recipient-avatar { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: #175cd3; background: #eff8ff; font-size: 12px; font-weight: 700; }
.notice-recipient-details article strong, .notice-recipient-details article small { display: block; }
.notice-recipient-details article strong { color: #344054; font-size: 12px; }
.notice-recipient-details article small { color: #98a2b3; font-size: 10px; }
.notice-recipient-details article em { padding: 3px 6px; border-radius: 6px; color: #667085; background: #f2f4f7; font-size: 10px; font-style: normal; }
.notice-recipient-details article em.read { color: #175cd3; background: #eff8ff; }
.notice-recipient-details article em.confirmed { color: #067647; background: #ecfdf3; }
.notice-audience-value[hidden] { display: none; }
.notice-compose-tip { display: flex; gap: 8px; padding: 10px 12px; border-radius: 8px; color: #526071; background: #f6f8fb; font-size: 12px; line-height: 1.55; }
.notice-compose-tip svg { flex: 0 0 16px; width: 16px; color: #14804a; }
.notice-compose-tip p { margin: 0; }
.daily-action-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr); gap: 16px; margin-bottom: 16px; }
.daily-action-layout.single { grid-template-columns: 1fr; }
.daily-action-panel, .dashboard-notice-panel { padding: 20px; }
.daily-action-panel > .panel-heading > span { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 8px; color: #165dff; background: #edf3ff; }
.daily-action-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.daily-action-list > a { display: grid; grid-template-columns: 38px minmax(0, 1fr) 18px; align-items: center; gap: 10px; min-height: 70px; padding: 12px; border: 1px solid #e4e7ec; border-radius: 8px; color: inherit; text-decoration: none; transition: border-color .2s ease, background .2s ease, transform .2s ease; }
.daily-action-list > a:hover { border-color: #a9c5f5; background: #f8fbff; transform: translateY(-1px); }
.daily-action-list > a > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; color: #2764c5; background: #eaf2ff; }
.daily-action-list > a.important > span { color: #b54708; background: #fff4e5; }
.daily-action-list > a svg { width: 18px; }
.daily-action-list strong { display: block; color: #1d2939; font-size: 14px; }
.daily-action-list p { margin: 3px 0 0; color: #667085; font-size: 12px; line-height: 1.4; }
.daily-action-list > a > svg { color: #98a2b3; }
.daily-action-empty { display: flex; align-items: center; gap: 12px; grid-column: 1 / -1; min-height: 82px; padding: 16px; border: 1px dashed #cfd8e6; border-radius: 8px; color: #667085; background: #fafbfc; }
.daily-action-empty > svg { width: 28px; color: #14804a; }
.daily-action-empty strong { color: #344054; }
.daily-action-empty p { margin: 3px 0 0; }
.dashboard-notice-list { display: grid; gap: 4px; }
.dashboard-notice-list > a { display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 10px; padding: 10px; border-radius: 8px; color: inherit; text-decoration: none; }
.dashboard-notice-list > a:hover, .dashboard-notice-list > a.unread { background: #f5f9ff; }
.dashboard-notice-list > a > span { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 8px; color: #2764c5; background: #eaf2ff; }
.dashboard-notice-list svg { width: 17px; }
.dashboard-notice-list strong { display: block; color: #344054; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dashboard-notice-list p { margin: 3px 0 0; color: #98a2b3; font-size: 12px; }
.dashboard-notice-empty { display: grid; place-items: center; min-height: 100px; color: #98a2b3; text-align: center; }
.dashboard-notice-empty svg { width: 26px; }
.dashboard-notice-empty p { margin: 6px 0 0; font-size: 12px; }

@media (max-width: 1080px) {
  .message-page-grid { grid-template-columns: minmax(0, 1fr) 340px; }
  .daily-action-layout { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .message-overview-band { align-items: flex-start; padding: 20px 16px; }
  .message-overview-band h2 { font-size: 20px; }
  .message-overview-stats { display: none; }
  .message-toolbar { align-items: stretch; flex-direction: column; }
  .message-toolbar form .button { width: 100%; }
  .message-page-grid { grid-template-columns: 1fr; }
  .message-list-panel > .panel-heading { padding: 16px; }
  .school-notice-list article > a { grid-template-columns: 38px minmax(0, 1fr) 16px; gap: 10px; padding: 14px 16px; }
  .notice-type-icon { width: 38px; height: 38px; }
  .school-notice-list footer { display: grid; gap: 2px; }
  .message-side-column { grid-row: 1; }
  .notice-detail-panel, .notice-compose-panel { padding: 16px; }
  .notice-compose-grid { grid-template-columns: 1fr; }
  .notice-publisher-summary.with-ack { grid-template-columns: repeat(2, 1fr); }
  .notice-detail-panel > header { flex-wrap: wrap; }
  .notice-delivery-state { margin-left: 56px; }
  .daily-action-panel, .dashboard-notice-panel { padding: 16px; }
  .daily-action-list { grid-template-columns: 1fr; }
  .daily-action-list > a { min-height: 64px; }
  .notification-count { top: 1px; right: 0; }
}

/* 校内安全文件与学校资料库 */
.file-overview-band { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; padding: 24px 32px; border: 1px solid #d9e4df; border-radius: 12px; background: #f6faf8; }
.file-overview-band h2 { margin: 4px 0 8px; color: #17251f; font-size: 24px; line-height: 1.25; }
.file-overview-band p { margin: 0; color: #66756d; }
.file-storage-meter { width: min(290px, 34%); padding: 14px 16px; border: 1px solid #d8e2dd; border-radius: 8px; background: #fff; }
.file-storage-meter span { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.file-storage-meter strong { color: #176b4b; font-size: 18px; }
.file-storage-meter small { color: #7a8a82; font-size: 11px; }
.file-storage-progress { display: block; width: 100%; height: 7px; margin-top: 10px; overflow: hidden; border: 0; border-radius: 6px; background: #edf1ef; appearance: none; }
.file-storage-progress::-webkit-progress-bar { background: #edf1ef; }
.file-storage-progress::-webkit-progress-value { border-radius: 6px; background: #21875e; transition: width .2s ease; }
.file-storage-progress::-moz-progress-bar { border-radius: 6px; background: #21875e; }
.file-view-tabs { display: flex; gap: 4px; margin-bottom: 16px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.file-view-tabs a { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 38px; padding: 8px 14px; border-radius: 6px; color: #5d6a64; text-decoration: none; transition: color .2s ease, background .2s ease, box-shadow .2s ease; }
.file-view-tabs a:hover { color: #176b4b; background: #f4f8f6; }
.file-view-tabs a.active { color: #176b4b; background: #edf7f2; box-shadow: inset 0 0 0 1px #cfe6da; font-weight: 700; }
.file-view-tabs svg { width: 17px; }
.file-workspace-grid { display: grid; grid-template-columns: minmax(0, 1fr) 390px; align-items: start; gap: 16px; }
.file-main-column, .file-side-column { min-width: 0; display: grid; gap: 16px; }
.file-search-panel { padding: 16px; }
.file-search-form { display: grid; grid-template-columns: minmax(200px, 1.5fr) repeat(3, minmax(112px, .6fr)) auto; align-items: end; gap: 10px; }
.file-search-form label { min-width: 0; }
.file-search-form label > span { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 11px; font-weight: 700; }
.file-keyword-field > div { position: relative; }
.file-keyword-field > div > svg { position: absolute; top: 50%; left: 11px; width: 16px; color: #8a9891; transform: translateY(-50%); pointer-events: none; }
.file-keyword-field input { padding-left: 36px; }
.file-list-panel { min-width: 0; padding: 0; overflow: hidden; }
.file-list-panel > .panel-heading { margin: 0; padding: 18px 22px; border-bottom: 1px solid #e8edeb; }
.school-file-list article { border-bottom: 1px solid #e8edeb; transition: background .2s ease, box-shadow .2s ease; }
.school-file-list article:last-child { border-bottom: 0; }
.school-file-list article:hover, .school-file-list article.selected { background: #f6faf8; }
.school-file-list article.selected { box-shadow: inset 3px 0 #21875e; }
.school-file-list article > a { display: grid; grid-template-columns: 48px minmax(0, 1fr) 18px; align-items: center; gap: 14px; padding: 17px 22px; color: inherit; text-decoration: none; }
.file-extension-icon { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid #d2ded8; border-radius: 8px; color: #176b4b; background: #edf7f2; font-size: 10px; font-weight: 800; }
.file-extension-icon.pdf { color: #b33a3a; border-color: #f0d1d1; background: #fff1f1; }
.file-extension-icon.doc, .file-extension-icon.docx { color: #285ca8; border-color: #d3e0f3; background: #eef5ff; }
.file-extension-icon.xls, .file-extension-icon.xlsx, .file-extension-icon.csv { color: #18724a; border-color: #cde5d8; background: #edf8f2; }
.file-extension-icon.ppt, .file-extension-icon.pptx { color: #a34b24; border-color: #efd8cd; background: #fff4ef; }
.school-file-list header { display: flex; align-items: center; min-width: 0; gap: 8px; }
.school-file-list header strong { min-width: 0; overflow: hidden; color: #1f2d26; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.school-file-list header em { display: inline-flex; align-items: center; gap: 3px; padding: 2px 6px; border-radius: 6px; color: #176b4b; background: #e8f5ee; font-size: 10px; font-style: normal; white-space: nowrap; }
.school-file-list header em svg, .favorite-mark { width: 12px; }
.favorite-mark { flex: 0 0 12px; color: #d28a18; fill: #fff0bf; }
.school-file-list p { margin: 5px 0 8px; overflow: hidden; color: #69776f; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.school-file-list footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; color: #98a39d; font-size: 11px; }
.school-file-list article > a > svg { width: 17px; color: #98a39d; }
.file-empty { min-height: 260px; }
.file-detail-panel { padding: 22px; }
.file-detail-panel > header { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 13px; padding-bottom: 16px; border-bottom: 1px solid #e8edeb; }
.file-detail-panel header small { color: #21875e; font-size: 11px; font-weight: 700; }
.file-detail-panel header h2 { margin: 4px 0 6px; color: #1f2d26; font-size: 18px; line-height: 1.35; overflow-wrap: anywhere; }
.file-detail-panel header p { margin: 0; color: #8a9891; font-size: 11px; }
.file-detail-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 16px 0; overflow: hidden; border: 1px solid #e1e8e4; border-radius: 8px; background: #e1e8e4; }
.file-detail-meta span { min-width: 0; padding: 10px 12px; background: #fafcfb; }
.file-detail-meta small, .file-detail-meta strong { display: block; }
.file-detail-meta small { color: #8a9891; font-size: 10px; }
.file-detail-meta strong { margin-top: 3px; overflow: hidden; color: #35443c; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.file-detail-note { margin-bottom: 16px; padding: 12px; border-left: 3px solid #82b69e; border-radius: 0 8px 8px 0; background: #f4f8f6; }
.file-detail-note small { color: #75837c; font-size: 10px; font-weight: 700; }
.file-detail-note p { margin: 4px 0 0; color: #45534c; font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.file-detail-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 8px; }
.file-detail-actions .button { width: 100%; }
.file-withdraw-form { margin-top: 12px; text-align: right; }
.file-forward-panel, .file-compose-panel { padding: 20px; }
.file-forward-panel > .panel-heading > span, .file-compose-panel > .panel-heading > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; color: #fff; background: #21875e; }
.file-guide-panel { padding: 30px 22px; text-align: center; }
.file-guide-panel > span { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 12px; border-radius: 8px; color: #21875e; background: #edf7f2; }
.file-guide-panel h2 { margin: 0 0 6px; font-size: 18px; }
.file-guide-panel p { margin: 0; color: var(--muted); }
.file-upload-field input[type="file"] { min-height: 46px; padding: 7px; border: 1px dashed #afc9bc; background: #f8fbf9; cursor: pointer; }
.file-upload-field input[type="file"]::file-selector-button { min-height: 30px; margin-right: 9px; padding: 6px 10px; border: 0; border-radius: 6px; color: #176b4b; background: #e6f3ec; font-weight: 700; cursor: pointer; }
.file-upload-field small { display: block; margin-top: 5px; color: #8a9891; font-size: 10px; }
.file-classification-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.file-library-check { display: flex !important; align-items: flex-start; gap: 9px; padding: 10px 12px; border: 1px solid #d8e6df; border-radius: 8px; background: #f7faf8; cursor: pointer; }
.file-library-check input { flex: 0 0 auto; margin-top: 3px; }
.file-library-check strong, .file-library-check small { display: block; }
.file-library-check strong { color: #365046; font-size: 12px; }
.file-library-check small { margin-top: 2px; color: #7d8c84; font-size: 10px; }
.file-security-tip { display: flex; gap: 8px; padding: 10px 12px; border-radius: 8px; color: #5f6c65; background: #f2f5f3; font-size: 11px; line-height: 1.55; }
.file-security-tip svg { flex: 0 0 16px; width: 16px; color: #21875e; }
.file-security-tip p { margin: 0; }

@media (max-width: 1180px) {
  .file-workspace-grid { grid-template-columns: minmax(0, 1fr) 350px; }
  .file-search-form { grid-template-columns: minmax(200px, 1fr) repeat(2, minmax(110px, .55fr)); }
  .file-search-form label:nth-of-type(4) { grid-column: 1; }
}

@media (max-width: 900px) {
  .file-overview-band { align-items: stretch; flex-direction: column; }
  .file-storage-meter { width: 100%; }
  .file-workspace-grid { grid-template-columns: 1fr; }
  .file-side-column { grid-row: 1; }
  .file-search-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .file-search-form .file-keyword-field { grid-column: 1 / -1; }
}

@media (max-width: 700px) {
  .file-overview-band { padding: 20px 16px; }
  .file-overview-band h2 { font-size: 20px; }
  .file-view-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .file-search-form { grid-template-columns: 1fr; }
  .file-search-form .file-keyword-field, .file-search-form label:nth-of-type(4) { grid-column: auto; }
  .file-search-form .button { width: 100%; }
  .school-file-list article > a { grid-template-columns: 42px minmax(0, 1fr) 15px; gap: 10px; padding: 14px 16px; }
  .school-file-list .file-extension-icon { width: 42px; height: 42px; }
  .school-file-list footer { display: grid; justify-content: stretch; }
  .file-detail-panel, .file-forward-panel, .file-compose-panel { padding: 16px; }
  .file-classification-grid, .file-detail-actions { grid-template-columns: 1fr; }
}
/* School AI quota and responsibility management */
.responsibility-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.responsibility-grid label{position:relative;min-width:0;cursor:pointer}.responsibility-grid input{position:absolute;opacity:0;pointer-events:none}.responsibility-grid span{min-height:44px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid #e5e6eb;border-radius:8px;background:#f7f8fa;color:#4e5969;font-size:14px;transition:.2s ease}.responsibility-grid svg{width:16px;height:16px;opacity:0}.responsibility-grid input:checked+span{border-color:#94bfff;background:#eef5ff;color:#165dff;font-weight:700}.responsibility-grid input:checked+span svg{opacity:1}
.school-ai-overview{display:grid;grid-template-columns:minmax(320px,1.2fr) minmax(360px,1fr);gap:24px;padding:24px;margin-bottom:24px;border:1px solid #dbe7fb;border-radius:12px;background:#fff;box-shadow:0 4px 18px rgba(29,33,41,.06)}.school-ai-overview-copy{display:flex;align-items:center;gap:16px}.school-ai-overview-copy>span{width:52px;height:52px;display:grid;place-items:center;border-radius:12px;background:#165dff;color:#fff}.school-ai-overview-copy svg{width:25px;height:25px}.school-ai-overview-copy p,.school-ai-overview-copy small{margin:0;color:#86909c}.school-ai-overview-copy strong{display:block;margin:4px 0;color:#1d2129;font-size:32px;line-height:1.2}.school-ai-overview-copy strong em{margin-left:6px;color:#4e5969;font-size:14px;font-style:normal;font-weight:500}.school-ai-metrics{display:grid;grid-template-columns:repeat(3,1fr);align-items:stretch;border:1px solid #e5e6eb;border-radius:8px;overflow:hidden}.school-ai-metrics div{display:flex;flex-direction:column;justify-content:center;padding:16px;border-right:1px solid #e5e6eb;background:#f7f8fa}.school-ai-metrics div:last-child{border-right:0}.school-ai-metrics span{color:#86909c;font-size:12px}.school-ai-metrics strong{margin-top:4px;color:#1d2129;font-size:18px}
.school-ai-workspace{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(480px,1.2fr);gap:24px;margin-bottom:24px}.school-ai-request-form,.school-ai-role-form,.school-ai-direct-form{display:grid;gap:16px}.school-ai-form-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(130px,.5fr);gap:16px}.school-ai-request-form label,.school-ai-role-form label,.school-ai-direct-form label,.school-ai-pending-list label{display:grid;gap:8px;color:#4e5969;font-size:14px}.school-ai-request-form textarea,.school-ai-direct-form textarea{resize:vertical}.school-ai-grant-list{display:grid;gap:8px}.school-ai-grant-list article{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f0f1f2}.school-ai-grant-list article:last-child{border-bottom:0}.grant-status{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#fff7e8;color:#ff7d00}.grant-status.approved{background:#e8ffea;color:#00b42a}.grant-status.rejected{background:#fff0f0;color:#f53f3f}.grant-status svg{width:18px;height:18px}.school-ai-grant-list strong{display:block;color:#1d2129;font-size:14px}.school-ai-grant-list p,.school-ai-grant-list small{display:block;margin:3px 0 0;color:#86909c;font-size:12px;line-height:1.5}.school-ai-grant-list em{color:#1d2129;font-size:16px;font-style:normal;font-weight:700}.school-ai-grant-list b{padding:4px 8px;border-radius:6px;background:#fff7e8;color:#ff7d00;font-size:12px}.school-ai-grant-list b.approved{background:#e8ffea;color:#00b42a}.school-ai-grant-list b.rejected{background:#fff0f0;color:#f53f3f}
.school-ai-management{margin-bottom:24px}.school-ai-management-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:24px}.school-ai-management-grid>form{padding:20px;border:1px solid #e5e6eb;border-radius:8px;background:#f7f8fa}.school-ai-management-grid h3{margin:0 0 4px;color:#1d2129;font-size:16px}.role-limit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.role-limit-grid label>div{position:relative}.role-limit-grid input{width:100%;padding-right:34px}.role-limit-grid em{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#86909c;font-size:12px;font-style:normal}.school-ai-pending-list{display:grid;gap:12px;margin-top:24px}.school-ai-pending-list form{display:grid;grid-template-columns:minmax(260px,1fr) 120px minmax(180px,.65fr) auto;align-items:end;gap:12px;padding:16px;border:1px solid #e5e6eb;border-radius:8px}.school-ai-pending-list p{margin:4px 0 0;color:#86909c;font-size:12px;line-height:1.5}.school-ai-pending-list form>div:last-child{display:flex;gap:8px}
@media (max-width:980px){.school-ai-overview,.school-ai-workspace,.school-ai-management-grid{grid-template-columns:1fr}.school-ai-pending-list form{grid-template-columns:1fr 120px minmax(180px,1fr) auto}}
@media (max-width:640px){.responsibility-grid,.role-limit-grid{grid-template-columns:1fr}.school-ai-overview{padding:16px}.school-ai-overview-copy strong{font-size:24px}.school-ai-metrics{grid-template-columns:1fr}.school-ai-metrics div{border-right:0;border-bottom:1px solid #e5e6eb}.school-ai-metrics div:last-child{border-bottom:0}.school-ai-form-grid{grid-template-columns:1fr}.school-ai-grant-list article{grid-template-columns:36px minmax(0,1fr) auto}.school-ai-grant-list b{grid-column:2/4;justify-self:start}.school-ai-management-grid>form{padding:16px}.school-ai-pending-list form{grid-template-columns:1fr}.school-ai-pending-list form>div:last-child{justify-content:flex-end}}
.grant-status.expired,.school-ai-grant-list b.expired{background:#f2f3f5;color:#86909c}

/* Subscription after-sales finance */
.after-sales-finance{overflow:hidden;margin-top:24px}.finance-user-notice{display:flex;gap:12px;margin:0 24px 20px;padding:14px 16px;color:#7a4b00;background:#fff9ed;border:1px solid #f3d79e;border-radius:8px}.finance-user-notice>svg{flex:0 0 20px}.finance-user-notice p{margin:0}.finance-user-notice strong,.finance-user-notice span{display:block}.finance-user-notice strong{font-size:14px}.finance-user-notice span{margin-top:4px;font-size:12px;line-height:1.65}.finance-request-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 24px 24px}.finance-request-card{display:grid;align-content:start;gap:14px;padding:18px;border:1px solid #e5e6eb;border-radius:8px;background:#f8fafb}.finance-request-card>header{display:flex;align-items:center;gap:12px}.finance-request-card>header>span{display:grid;flex:0 0 40px;place-items:center;width:40px;height:40px;color:#b45f06;background:#fff4df;border-radius:8px}.finance-request-card>header>span.invoice{color:#165dff;background:#eef4ff}.finance-request-card>header svg{width:19px}.finance-request-card h3,.finance-request-card p{margin:0}.finance-request-card h3{font-size:16px}.finance-request-card p{margin-top:3px;color:#86909c;font-size:12px}.finance-request-card label>span{display:block;margin-bottom:7px;color:#4e5969;font-size:13px;font-weight:700}.finance-request-card input,.finance-request-card select,.finance-request-card textarea{width:100%;min-height:42px;padding:9px 11px;color:#1d2129;background:#fff;border:1px solid #d9dde4;border-radius:8px;outline:0;transition:.2s ease}.finance-request-card textarea{resize:vertical;line-height:1.6}.finance-request-card input:focus,.finance-request-card select:focus,.finance-request-card textarea:focus{border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.finance-inline-fields{display:grid;grid-template-columns:.7fr 1.3fr;gap:12px}.finance-request-card>.button{justify-self:end}.finance-request-history{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #eef0f2}.finance-request-history>section{min-width:0;padding:20px 24px}.finance-request-history>section+section{border-left:1px solid #eef0f2}.finance-request-history>section>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.finance-request-history h3{margin:0;font-size:15px}.finance-request-history>section>header span{color:#86909c;font-size:12px}.finance-request-history article{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:start;gap:10px;padding:12px 0;border-bottom:1px solid #f2f3f5}.finance-request-history article>span{display:grid;place-items:center;width:34px;height:34px;color:#b45f06;background:#fff4df;border-radius:8px}.finance-request-history article>span.issued,.finance-request-history article>span.refunded,.finance-request-history article>span.approved{color:#008a1e;background:#e8ffea}.finance-request-history article>span.rejected,.finance-request-history article>span.cancelled{color:#86909c;background:#f2f3f5}.finance-request-history svg{width:16px}.finance-request-history strong,.finance-request-history p,.finance-request-history small{display:block}.finance-request-history strong{font-size:13px}.finance-request-history p{margin:3px 0 0;color:#4e5969;font-size:11px}.finance-request-history small{margin-top:4px;color:#86909c;font-size:10px;line-height:1.55}.finance-request-history .button{min-height:32px;padding:5px 7px}.finance-history-empty{margin:0;padding:20px;color:#86909c;text-align:center;font-size:12px}
@media(max-width:900px){.finance-request-grid,.finance-request-history{grid-template-columns:1fr}.finance-request-history>section+section{border-top:1px solid #eef0f2;border-left:0}}
@media(max-width:640px){.finance-user-notice{margin-inline:16px}.finance-request-grid{padding-inline:16px}.finance-inline-fields{grid-template-columns:1fr}.finance-request-card>.button{width:100%}.finance-request-history>section{padding-inline:16px}.finance-request-history article{grid-template-columns:34px minmax(0,1fr)}.finance-request-history article form{grid-column:2}.finance-request-history article form .button{width:auto}}

/* Unified feedback center */
.feedback-top-link{text-decoration:none}.feedback-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:24px;padding:8px 0 4px}.feedback-intro>div:first-child{max-width:680px}.feedback-intro h2{margin:6px 0 8px;color:#1d2129;font-size:24px;line-height:1.3}.feedback-intro>div:first-child>p:last-child{margin:0;color:#4e5969;font-size:14px;line-height:1.7}.feedback-summary{display:grid;grid-template-columns:repeat(3,112px);gap:8px}.feedback-summary article{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border:1px solid #e5e6eb;border-radius:8px}.feedback-summary article>span{display:grid;flex:0 0 32px;place-items:center;width:32px;height:32px;color:#165dff;background:#eef4ff;border-radius:8px}.feedback-summary svg{width:16px}.feedback-summary small,.feedback-summary strong{display:block}.feedback-summary small{color:#86909c;font-size:11px}.feedback-summary strong{margin-top:2px;color:#1d2129;font-size:20px}.feedback-workspace{display:grid;grid-template-columns:minmax(380px,.82fr) minmax(520px,1.18fr);gap:24px;align-items:start}.feedback-form-panel,.feedback-history-panel{overflow:hidden}.feedback-form{display:grid;gap:16px;padding:0 24px 24px}.feedback-form-row{display:grid;grid-template-columns:minmax(160px,.55fr) minmax(260px,1.45fr);gap:16px}.feedback-form label>span{display:block;margin-bottom:7px;color:#4e5969;font-size:13px;font-weight:700}.feedback-form input,.feedback-form select,.feedback-form textarea{width:100%;min-height:42px;padding:9px 11px;color:#1d2129;background:#f8fafb;border:1px solid #d9dde4;border-radius:8px;outline:0;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.feedback-form textarea{min-height:132px;resize:vertical;line-height:1.65}.feedback-form input:focus,.feedback-form select:focus,.feedback-form textarea:focus{background:#fff;border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.feedback-form label>small{display:block;margin-top:6px;color:#86909c;font-size:11px;line-height:1.6}.feedback-upload{display:flex;align-items:center;gap:12px;padding:14px;border:1px dashed #bdc8da;border-radius:8px;background:#f8fafc;cursor:pointer;transition:border-color .2s ease,background .2s ease}.feedback-upload:hover{border-color:#7ea6ff;background:#f2f7ff}.feedback-upload input{position:absolute;width:1px;height:1px;min-height:0;opacity:0}.feedback-upload>svg{flex:0 0 24px;color:#4773ad}.feedback-upload>span strong,.feedback-upload>span small{display:block}.feedback-upload>span strong{color:#334155;font-size:13px}.feedback-upload>span small{margin-top:3px;color:#86909c;font-size:11px;line-height:1.5}.feedback-submit-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:4px}.feedback-submit-bar p{display:flex;align-items:flex-start;gap:7px;max-width:350px;margin:0;color:#86909c;font-size:11px;line-height:1.55}.feedback-submit-bar p svg{flex:0 0 15px;margin-top:1px;color:#00b42a}.feedback-ticket-list{display:grid;padding:0 24px 24px}.feedback-ticket{padding:18px 0;border-bottom:1px solid #eef0f3}.feedback-ticket:first-child{padding-top:0}.feedback-ticket:last-child{border-bottom:0}.feedback-ticket[data-current-ticket]{margin:0 -12px;padding:16px 12px;background:#f7faff;border:1px solid #dbe8ff;border-radius:8px}.feedback-ticket>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.feedback-ticket>header>div{min-width:0}.feedback-ticket>header strong{display:block;margin-top:7px;color:#1d2129;font-size:15px;line-height:1.45}.feedback-category{display:inline-flex;align-items:center;gap:5px;color:#4e5969;font-size:11px;font-weight:700}.feedback-category svg{width:14px;color:#4773ad}.feedback-status{flex:0 0 auto;padding:4px 7px;color:#4e5969;background:#f2f3f5;border-radius:6px;font-size:10px;font-style:normal;font-weight:700}.feedback-status.accepted,.feedback-status.in_progress{color:#165dff;background:#eef4ff}.feedback-status.resolved{color:#087c26;background:#effbf2}.feedback-status.declined{color:#6b7280;background:#eceff3}.feedback-ticket>p{margin:10px 0 0;color:#4e5969;font-size:13px;line-height:1.7}.feedback-ticket-meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;color:#86909c;font-size:10px}.feedback-ticket-meta a{display:inline-flex;align-items:center;gap:4px;color:#165dff}.feedback-ticket-meta svg{width:12px}.feedback-ticket>aside{display:flex;align-items:flex-start;gap:10px;margin-top:12px;padding:12px;background:#f3f8f6;border-left:3px solid #00b42a;border-radius:0 8px 8px 0}.feedback-ticket>aside>svg{flex:0 0 17px;margin-top:1px;color:#16845a}.feedback-ticket>aside strong{color:#28433b;font-size:11px}.feedback-ticket>aside p{margin:3px 0 0;color:#536963;font-size:12px;line-height:1.6}.feedback-ticket>aside small{display:block;margin-top:4px;color:#84938f;font-size:10px}.feedback-ticket>aside.waiting{background:#f7f8fa;border-left-color:#cbd1d8}.feedback-ticket>aside.waiting>svg{color:#86909c}
.feedback-form-row{grid-template-columns:minmax(120px,.65fr) minmax(0,1.35fr)}.feedback-form label{min-width:0}.feedback-submit-bar{align-items:stretch;flex-direction:column;gap:10px}.feedback-submit-bar p{max-width:none}.feedback-submit-bar .button{width:100%}
@media(max-width:1180px){.feedback-intro{align-items:flex-start;flex-direction:column}.feedback-workspace{grid-template-columns:1fr}.feedback-summary{width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.feedback-intro h2{font-size:20px}.feedback-summary{grid-template-columns:1fr}.feedback-form-row{grid-template-columns:1fr}.feedback-form,.feedback-ticket-list{padding-inline:16px}.feedback-submit-bar{align-items:stretch;flex-direction:column}.feedback-submit-bar .button{width:100%}.feedback-ticket>header{gap:10px}.feedback-ticket-meta{display:grid;grid-template-columns:1fr 1fr}.feedback-top-link span{display:none}}

.feedback-conversation{display:grid;gap:8px;margin-top:14px;padding:12px;background:#f8fafc;border:1px solid #e5eaf0;border-radius:8px}.feedback-conversation>strong{color:#334155;font-size:12px}.feedback-message{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;padding:9px 10px;background:#fff;border:1px solid #e5eaf0;border-radius:8px}.feedback-message.user{border-left:3px solid #7ea6ff}.feedback-message.platform{border-left:3px solid #5da58c}.feedback-message>span{color:#536579;font-size:12px;font-weight:700}.feedback-message p{margin:0;color:#4e5969;font-size:13px;line-height:1.6}.feedback-message small{display:block;margin-top:4px;color:#86909c;font-size:11px}.feedback-followup-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;margin-top:12px}.feedback-followup-form textarea{width:100%;min-height:70px;padding:9px 11px;color:#1d2129;background:#fff;border:1px solid #d9dde4;border-radius:8px;resize:vertical;outline:0;line-height:1.6;transition:.2s ease}.feedback-followup-form textarea:focus{border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.feedback-followup-form .button{white-space:nowrap}
@media(max-width:680px){.feedback-followup-form{grid-template-columns:1fr}.feedback-followup-form .button{width:100%}.feedback-message{grid-template-columns:1fr}}

/* Unified classroom point: repairs, safety checks and asset inventory */
.classroom-service-panel,.classroom-point-context{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border:1px solid #cfe0fa;background:#f7faff}.classroom-service-context,.classroom-point-context{min-width:0}.classroom-service-context{display:flex;align-items:center;gap:16px}.classroom-service-context>span,.classroom-point-context>span{flex:0 0 44px;width:44px;height:44px;display:grid;place-items:center;border-radius:10px;background:#e8f1ff;color:#165dff}.classroom-service-context svg,.classroom-point-context>span svg{width:21px}.classroom-service-context h2,.classroom-point-context h2{margin:2px 0 4px;color:#1d2129;font-size:18px}.classroom-service-context p,.classroom-point-context p{margin:0;color:#86909c;font-size:12px}.classroom-service-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.classroom-point-context{margin-bottom:24px;border-radius:8px}.classroom-point-context>div{flex:1;min-width:0}.classroom-point-context .text-link{white-space:nowrap}.general-linked-context{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.general-linked-context span{display:grid;grid-template-columns:22px minmax(0,1fr);gap:2px 8px;padding:10px 12px;border:1px solid #dbe7fb;border-radius:8px;background:#f7faff}.general-linked-context svg{grid-row:1/3;width:17px;color:#165dff}.general-linked-context strong,.general-linked-context small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.general-linked-context strong{color:#1d2129;font-size:12px}.general-linked-context small{color:#86909c;font-size:10px}
.asset-check-workspace{display:grid;gap:24px}.asset-check-workspace>*{width:100%;min-width:0}.asset-point-picker{display:grid;grid-template-columns:minmax(280px,1fr) minmax(260px,.7fr) auto;align-items:end;gap:24px;padding:24px}.asset-point-picker h2{margin:4px 0;color:#1d2129;font-size:18px}.asset-point-picker p{margin:0;color:#86909c;font-size:12px}.asset-point-picker label,.asset-check-card label{display:grid;min-width:0;gap:6px;color:#4e5969;font-size:12px}.asset-point-picker select,.asset-check-card input,.asset-check-card select{width:100%;min-width:0}.asset-check-panel,.asset-check-history{padding:24px}.asset-check-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.asset-check-card{display:grid;min-width:0;gap:12px;padding:16px;border:1px solid #e5e6eb;border-radius:8px;background:#fff;transition:.2s ease}.asset-check-card:hover{border-color:#b9d0f4;box-shadow:0 4px 14px rgba(29,33,41,.06)}.asset-check-card header{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px}.asset-check-card header>span{width:40px;height:40px;display:grid;place-items:center;border-radius:8px;background:#eef5ff;color:#165dff}.asset-check-card header svg{width:18px}.asset-check-card header strong,.asset-check-card header p{display:block;margin:0}.asset-check-card header strong{color:#1d2129;font-size:14px}.asset-check-card header p{margin-top:3px;color:#86909c;font-size:11px}.asset-check-fields{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:12px}.asset-check-card .button{justify-self:end}.asset-check-state{display:inline-flex;padding:4px 8px;border-radius:6px;background:#e8ffea;color:#00b42a;font-size:11px;font-weight:700}.asset-check-state.missing,.asset-check-state.damaged{background:#fff0f0;color:#f53f3f}.asset-check-state.relocated{background:#fff7e8;color:#ff7d00}
@media (max-width:1000px){.classroom-service-panel,.classroom-point-context{align-items:stretch;flex-direction:column}.classroom-service-actions{justify-content:flex-start}.asset-point-picker{grid-template-columns:1fr 1fr}.asset-point-picker>div{grid-column:1/-1}.asset-check-list{grid-template-columns:1fr}}
@media (max-width:640px){.classroom-service-panel,.classroom-point-context,.asset-point-picker,.asset-check-panel,.asset-check-history{padding:16px}.classroom-service-actions{display:grid;grid-template-columns:1fr;width:100%}.classroom-service-actions .button{width:100%}.classroom-point-context .text-link{align-self:flex-start}.general-linked-context,.asset-point-picker,.asset-check-fields{grid-template-columns:1fr}.asset-point-picker>div{grid-column:auto}.asset-point-picker .button{width:100%}.asset-check-card{padding:14px}.asset-check-card header{grid-template-columns:36px minmax(0,1fr)}.asset-check-card header>span{width:36px;height:36px}.asset-check-card header em{grid-column:2;justify-self:start}.asset-check-card .button{width:100%}}
/* Legal documents and account data rights */
.agreement-line a{color:#165dff;font-weight:700;text-decoration:none;margin:0 2px}.agreement-line a:hover{text-decoration:underline}.legal-page{min-height:100vh;margin:0;background:#f2f3f5;color:#1d2129;font-family:"Microsoft YaHei",system-ui,-apple-system,sans-serif}.legal-topbar{height:72px;padding:0 40px;background:#fff;border-bottom:1px solid #e5e6eb;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.legal-topbar>a{display:flex;align-items:center;gap:12px;color:#1d2129;text-decoration:none}.legal-topbar>a>span:last-child{display:flex;flex-direction:column;gap:2px}.legal-topbar>a strong{font-size:16px}.legal-topbar>a small{font-size:12px;color:#86909c}.legal-topbar nav{display:flex;gap:8px}.legal-topbar nav a{padding:10px 14px;border-radius:8px;color:#4e5969;font-size:14px;text-decoration:none;transition:.2s ease}.legal-topbar nav a:hover,.legal-topbar nav a.active{background:#e8f3ff;color:#165dff}.legal-shell{width:min(920px,calc(100% - 48px));margin:40px auto 64px}.legal-heading{padding:32px 0;border-bottom:1px solid #c9cdd4}.legal-heading>p{margin:0 0 12px;color:#165dff;font-size:12px;font-weight:800}.legal-heading h1{margin:0;font-size:32px;line-height:1.2}.legal-heading>span{display:block;margin-top:10px;color:#86909c;font-size:13px}.legal-heading>strong{display:block;margin-top:24px;max-width:720px;color:#4e5969;font-size:16px;line-height:1.7;font-weight:500}.legal-content{background:#fff;margin-top:24px;border:1px solid #e5e6eb;border-radius:12px;box-shadow:0 4px 18px rgba(29,33,41,.05)}.legal-content section{display:grid;grid-template-columns:48px 1fr;gap:20px;padding:28px 32px;border-bottom:1px solid #f2f3f5}.legal-content section:last-child{border-bottom:0}.legal-content section>span{width:40px;height:40px;border-radius:8px;background:#e8f3ff;color:#165dff;display:grid;place-items:center;font-size:13px;font-weight:800}.legal-content h2{margin:4px 0 14px;font-size:18px}.legal-content p{margin:0 0 12px;color:#4e5969;font-size:15px;line-height:1.8}.legal-content p:last-child{margin-bottom:0}.legal-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:24px;padding:20px 24px;background:#fff7e8;border:1px solid #ffdfad;border-radius:8px}.legal-footer p{margin:0;color:#7a4b00;font-size:13px;line-height:1.7}.legal-footer a{display:inline-flex;align-items:center;gap:6px;flex:none;color:#165dff;font-weight:700;text-decoration:none}.legal-footer svg{width:16px;height:16px}
.profile-panel-icon.data-rights{background:#e8f3ff;color:#165dff}.data-rights-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.data-rights-links>a{min-width:0;padding:14px;border:1px solid #e5e6eb;border-radius:8px;display:flex;align-items:center;gap:10px;color:#1d2129;text-decoration:none;transition:.2s ease}.data-rights-links>a:hover{border-color:#94bfff;background:#f7fbff;transform:translateY(-1px)}.data-rights-links>a>svg:first-child{width:20px;color:#165dff}.data-rights-links>a>svg:last-child{width:14px;color:#86909c}.data-rights-links span{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.data-rights-links strong{font-size:14px}.data-rights-links small{color:#86909c;font-size:12px;white-space:normal}.data-rights-request{border:1px solid #e5e6eb;border-radius:8px;overflow:hidden}.data-rights-request>summary{padding:16px;display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;background:#f7f8fa}.data-rights-request>summary::-webkit-details-marker{display:none}.data-rights-request>summary>svg:first-child{color:#f53f3f}.data-rights-request>summary>svg:last-child{margin-left:auto}.data-rights-request>summary span{display:flex;flex-direction:column;gap:4px}.data-rights-request>summary strong{font-size:14px}.data-rights-request>summary small{color:#86909c;font-size:12px}.data-rights-request form{padding:20px}.data-rights-warning{display:flex;gap:12px;padding:14px;background:#fff7e8;border:1px solid #ffdfad;border-radius:8px;color:#7a4b00}.data-rights-warning>svg{width:20px;flex:none}.data-rights-warning p{margin:0;display:flex;flex-direction:column;gap:4px}.data-rights-warning strong{font-size:13px}.data-rights-warning span{font-size:12px;line-height:1.6}.data-request-current{display:flex;align-items:flex-start;gap:14px;padding:16px;border:1px solid #94bfff;background:#f7fbff;border-radius:8px}.data-request-current>.status{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;background:#e8f3ff;color:#165dff;font-size:12px;font-weight:700;flex:none}.data-request-current>.status svg{width:15px}.data-request-current>div{min-width:0;flex:1}.data-request-current strong{font-size:14px}.data-request-current p{margin:6px 0;color:#4e5969;font-size:13px;line-height:1.6}.data-request-current small{color:#165dff;font-size:12px}.data-request-history{margin-top:20px}.data-request-history h3{margin:0 0 10px;font-size:14px}.data-request-history article{display:grid;grid-template-columns:72px 1fr auto;gap:12px;padding:12px 0;border-top:1px solid #f2f3f5;align-items:start}.data-request-history article>span{padding:4px 6px;border-radius:6px;text-align:center;background:#f2f3f5;color:#4e5969;font-size:12px;font-weight:700}.data-request-history article>span.completed{background:#e8ffea;color:#008a1e}.data-request-history article>span.rejected{background:#fff1f0;color:#cb2634}.data-request-history strong{font-size:13px}.data-request-history p{margin:4px 0;color:#4e5969;font-size:12px;line-height:1.5}.data-request-history small{color:#165dff;font-size:12px}.data-request-history time{color:#86909c;font-size:12px}
@media(max-width:760px){.legal-topbar{height:auto;padding:16px 20px;align-items:flex-start;gap:16px}.legal-topbar nav{max-width:58%;flex-wrap:wrap;justify-content:flex-end}.legal-topbar nav a{padding:6px 8px;font-size:12px}.legal-shell{width:calc(100% - 24px);margin:20px auto 40px}.legal-heading{padding:20px 4px}.legal-heading h1{font-size:24px}.legal-content section{grid-template-columns:36px 1fr;gap:12px;padding:20px 16px}.legal-content section>span{width:32px;height:32px}.legal-footer{align-items:flex-start;flex-direction:column}.data-rights-links{grid-template-columns:1fr}.data-request-current{flex-wrap:wrap}.data-request-history article{grid-template-columns:64px 1fr}.data-request-history time{grid-column:2}.data-rights-request form{padding:16px}}
@media(max-width:760px){.legal-topbar{align-items:stretch;flex-direction:column;gap:14px}.legal-topbar>a strong{white-space:nowrap}.legal-topbar nav{max-width:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.legal-topbar nav a{padding:8px 4px;text-align:center}}

/* Subscription order foundation */
.billing-summary{justify-content:flex-start}.billing-summary>div:nth-child(2){min-width:0;flex:1}.billing-safety-mark{display:flex;align-items:center;gap:10px;margin-left:auto;padding-left:24px;border-left:1px solid #e5e6eb}.billing-safety-mark>svg{width:20px;color:#00a870}.billing-safety-mark span{display:flex;flex-direction:column;gap:3px}.billing-safety-mark strong{color:#1d2129;font-size:13px}.billing-safety-mark small{color:#86909c;font-size:12px}.subscription-stage-note{display:flex;align-items:flex-start;gap:12px;margin:0 0 24px;padding:16px 18px;color:#7a4b00;background:#fff9ed;border:1px solid #f5d89b;border-radius:8px}.subscription-stage-note>svg{flex:0 0 20px;margin-top:2px}.subscription-stage-note strong{display:block;font-size:14px}.subscription-stage-note p{margin:4px 0 0;font-size:13px;line-height:1.65}.subscription-plan-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:28px 0 16px}.subscription-plan-heading h2{margin:4px 0 6px;color:#1d2129;font-size:24px}.subscription-plan-heading>div>p:last-child{margin:0;color:#4e5969;font-size:14px;line-height:1.6}.subscription-plan-heading>span{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;color:#a35b00;background:#fff7e8;border-radius:6px;font-size:12px;font-weight:700}.subscription-plan-heading>span svg{width:15px}.subscription-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}.subscription-plan-card{position:relative;min-width:0;overflow:hidden;background:#fff;border:1px solid #dfe3e8;border-radius:8px;box-shadow:0 2px 8px rgba(29,33,41,.04);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.subscription-plan-card:hover{border-color:#b9cef5;box-shadow:0 8px 22px rgba(29,33,41,.07);transform:translateY(-2px)}.subscription-plan-card.recommended{border-top:3px solid #165dff}.subscription-plan-card>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 18px 14px;border-bottom:1px solid #eef0f3}.subscription-plan-card>header>div{display:flex;align-items:center;gap:12px}.subscription-plan-card>header>div>span{display:grid;place-items:center;width:42px;height:42px;color:#165dff;background:#eef4ff;border-radius:8px;font-size:18px;font-weight:800}.subscription-plan-card>header p{margin:0}.subscription-plan-card>header strong,.subscription-plan-card>header small{display:block}.subscription-plan-card>header strong{color:#1d2129;font-size:16px}.subscription-plan-card>header small{margin-top:3px;color:#86909c;font-size:12px}.subscription-plan-card>header>em{padding:4px 7px;color:#087c66;background:#eaf8f4;border-radius:6px;font-size:11px;font-style:normal;font-weight:700}.subscription-plan-card>form{display:grid;gap:16px;padding:16px 18px 18px}.subscription-scope-prices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.subscription-scope-prices>span{padding:9px 6px;text-align:center;background:#f7f8fa;border-radius:6px}.subscription-scope-prices small,.subscription-scope-prices strong{display:block}.subscription-scope-prices small{color:#86909c;font-size:11px}.subscription-scope-prices strong{margin-top:4px;color:#1d2129;font-size:14px}.subscription-subject-picker{margin:0;padding:0;border:0}.subscription-subject-picker legend,.subscription-order-note>span{display:block;margin-bottom:7px;color:#4e5969;font-size:12px;font-weight:700}.subscription-subject-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.subscription-subject-picker legend{grid-column:1/-1}.subscription-subject-picker label{cursor:pointer}.subscription-subject-picker input{position:absolute;opacity:0;pointer-events:none}.subscription-subject-picker span{display:flex;align-items:center;justify-content:center;gap:5px;min-height:38px;color:#4e5969;background:#fff;border:1px solid #d9dde4;border-radius:8px;font-size:13px;font-weight:700;transition:.2s ease}.subscription-subject-picker span svg{width:16px}.subscription-subject-picker input:checked+span{color:#165dff;background:#eef4ff;border-color:#8fb5ff;box-shadow:0 0 0 2px rgba(22,93,255,.06)}.subscription-school-price{display:flex;align-items:flex-end;flex-wrap:wrap;gap:6px 12px;padding:14px;background:#f3f8f6;border:1px solid #d6e8e2;border-radius:8px}.subscription-school-price small{width:100%;color:#4e5969;font-size:12px}.subscription-school-price strong{color:#176b58;font-size:24px}.subscription-school-price span{padding-bottom:3px;color:#6b817b;font-size:12px}.subscription-order-note input{width:100%;min-height:40px;padding:8px 10px;color:#1d2129;background:#f8fafb;border:1px solid #d9dde4;border-radius:8px;outline:0;transition:.2s ease}.subscription-order-note input:focus{background:#fff;border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.subscription-order-submit{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef0f3}.subscription-order-submit p{margin:0}.subscription-order-submit small,.subscription-order-submit strong{display:block}.subscription-order-submit small{color:#86909c;font-size:11px}.subscription-order-submit strong{margin-top:2px;color:#1d2129;font-size:18px}.subscription-order-submit .button{min-width:128px}.subscription-managed-note{display:flex;align-items:center;gap:16px;margin:24px 0;padding:20px;background:#fff;border:1px solid #e5e6eb;border-radius:8px}.subscription-managed-note>span{display:grid;flex:0 0 44px;place-items:center;width:44px;height:44px;color:#165dff;background:#eef4ff;border-radius:8px}.subscription-managed-note strong{font-size:15px}.subscription-managed-note p{margin:5px 0 0;color:#4e5969;font-size:13px;line-height:1.6}.subscription-order-history{overflow:hidden;margin-top:24px}.subscription-order-list{display:grid;padding:0 24px 20px}.subscription-order-list>article{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid #eef0f3}.subscription-order-list>article:last-child{border-bottom:0}.subscription-order-state{display:grid;place-items:center;width:38px;height:38px;color:#6b7280;background:#f2f3f5;border-radius:8px}.subscription-order-state svg{width:18px}.subscription-order-state.pending_payment{color:#b55d00;background:#fff7e8}.subscription-order-state.paid{color:#008a45;background:#eaf8f2}.subscription-order-main{min-width:0}.subscription-order-main>div{display:flex;align-items:center;gap:8px}.subscription-order-main strong{color:#1d2129;font-size:14px}.subscription-order-main em{padding:3px 6px;color:#6b7280;background:#f2f3f5;border-radius:6px;font-size:10px;font-style:normal;font-weight:700}.subscription-order-main em.pending_payment{color:#b55d00;background:#fff7e8}.subscription-order-main em.paid{color:#008a45;background:#eaf8f2}.subscription-order-main p{margin:4px 0;color:#4e5969;font-size:12px}.subscription-order-main small{display:block;color:#86909c;font-size:12px;line-height:1.55}.subscription-order-main blockquote{margin:7px 0 0;padding-left:9px;color:#4e5969;border-left:2px solid #8fb5ff;font-size:12px}.subscription-order-amount{text-align:right}.subscription-order-amount small,.subscription-order-amount strong,.subscription-order-amount time{display:block}.subscription-order-amount small,.subscription-order-amount time{color:#86909c;font-size:11px}.subscription-order-amount strong{margin:3px 0;color:#1d2129;font-size:17px}.subscription-order-list form{justify-self:end}.subscription-order-list .button.text{color:#b42318}.principle-note{margin-top:24px}
@media(max-width:1100px){.subscription-plan-grid{grid-template-columns:1fr}.subscription-plan-card>form{grid-template-columns:minmax(0,1fr) minmax(280px,.7fr)}.subscription-plan-card>form>.subscription-order-submit{grid-column:1/-1}.subscription-order-history{margin-top:20px}}
@media(max-width:760px){.billing-summary{align-items:flex-start;flex-wrap:wrap}.billing-safety-mark{width:100%;margin-left:62px;padding:12px 0 0;border-top:1px solid #e5e6eb;border-left:0}.subscription-plan-heading{align-items:flex-start;flex-direction:column}.subscription-plan-heading h2{font-size:20px}.subscription-plan-grid{grid-template-columns:1fr}.subscription-plan-card>form{grid-template-columns:1fr;padding:16px}.subscription-plan-card>form>.subscription-order-submit{grid-column:auto}.subscription-order-list{padding-inline:16px}.subscription-order-list>article{grid-template-columns:38px minmax(0,1fr) auto}.subscription-order-amount{grid-column:2;text-align:left}.subscription-order-list form{grid-column:3;grid-row:2;align-self:end}.subscription-order-submit{align-items:stretch;flex-direction:column}.subscription-order-submit .button{width:100%}}
@media(max-width:420px){.subscription-scope-prices,.subscription-subject-picker{grid-template-columns:1fr}.subscription-subject-picker legend{grid-column:auto}.subscription-order-list>article{grid-template-columns:36px minmax(0,1fr)}.subscription-order-amount,.subscription-order-list form{grid-column:2}.subscription-order-list form{grid-row:auto;justify-self:start}.billing-safety-mark{margin-left:0}}

/* Restrained platform recommendations */
.platform-recommendation{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:16px;margin-bottom:24px;padding:18px 20px;border:1px solid #dbe5f5;border-left:4px solid #165dff;border-radius:8px;background:#fff;box-shadow:0 3px 12px rgba(29,33,41,.04)}
.platform-recommendation.green{border-color:#d6e9df;border-left-color:#21875e}.platform-recommendation.orange{border-color:#f0dfbe;border-left-color:#d58115}
.platform-recommendation-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:8px;color:#165dff;background:#eef4ff}.platform-recommendation.green .platform-recommendation-icon{color:#21875e;background:#edf7f2}.platform-recommendation.orange .platform-recommendation-icon{color:#b66a0e;background:#fff6e8}.platform-recommendation-icon svg{width:21px}
.platform-recommendation small,.platform-recommendation strong,.platform-recommendation p{display:block}.platform-recommendation small{margin-bottom:4px;color:#165dff;font-size:11px;font-weight:800}.platform-recommendation.green small{color:#21875e}.platform-recommendation.orange small{color:#a75e07}.platform-recommendation strong{color:#1d2129;font-size:16px}.platform-recommendation p{margin:4px 0 0;color:#667085;font-size:12px;line-height:1.6}.platform-recommendation>a{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:#165dff;font-size:13px;font-weight:800}.platform-recommendation>a svg{width:16px}
.school-recommendation-setting{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px;padding:20px 24px}.school-recommendation-setting>div{display:flex;align-items:flex-start;gap:14px;min-width:0}.school-recommendation-setting>div>span{display:grid;flex:0 0 42px;place-items:center;width:42px;height:42px;border-radius:8px;color:#165dff;background:#eef4ff}.school-recommendation-setting h2{margin:0;color:#1d2129;font-size:16px}.school-recommendation-setting p{max-width:720px;margin:5px 0 0;color:#667085;font-size:12px;line-height:1.65}.school-recommendation-setting form{display:flex;align-items:center;gap:12px}.recommendation-switch{display:flex;align-items:center;gap:8px;cursor:pointer}.recommendation-switch input{position:absolute;opacity:0}.recommendation-switch span{position:relative;width:38px;height:22px;border-radius:12px;background:#c9cdd4;transition:.2s ease}.recommendation-switch span:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:.2s ease}.recommendation-switch input:checked+span{background:#165dff}.recommendation-switch input:checked+span:after{transform:translateX(16px)}.recommendation-switch b{white-space:nowrap;color:#4e5969;font-size:12px}
@media(max-width:760px){.platform-recommendation{grid-template-columns:42px minmax(0,1fr);padding:16px}.platform-recommendation>a{grid-column:2}.platform-recommendation-icon{width:40px;height:40px}.school-recommendation-setting{align-items:stretch;flex-direction:column;padding:16px}.school-recommendation-setting form{justify-content:space-between;flex-wrap:wrap}.school-recommendation-setting form .button{width:auto}}

/* 低负担反馈：在当前页面快速报告现象，详细说明仍保留为选填。 */
.quick-feedback-panel[hidden] { display: none; }
.quick-feedback-panel { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 24px; }
.quick-feedback-backdrop { position: absolute; inset: 0; background: rgba(20, 31, 48, .42); backdrop-filter: blur(2px); }
.quick-feedback-dialog { position: relative; width: min(620px, 100%); max-height: min(720px, calc(100vh - 48px)); overflow: auto; background: #fff; border: 1px solid #dfe4ec; border-radius: 12px; box-shadow: 0 18px 48px rgba(20, 31, 48, .2); }
.quick-feedback-dialog > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 22px 24px 16px; border-bottom: 1px solid #eef0f3; }
.quick-feedback-dialog header small { color: #667085; font-size: 12px; }
.quick-feedback-dialog header h2 { margin: 5px 0 6px; color: #1d2129; font-size: 20px; }
.quick-feedback-dialog header p { margin: 0; color: #667085; font-size: 13px; line-height: 1.6; }
.quick-feedback-dialog form { display: grid; gap: 16px; padding: 20px 24px 22px; }
.quick-feedback-dialog fieldset { margin: 0; padding: 0; border: 0; }
.quick-feedback-dialog legend, .quick-feedback-detail > span { display: block; margin-bottom: 8px; color: #344054; font-size: 13px; font-weight: 700; }
.quick-feedback-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.quick-feedback-options label { cursor: pointer; }
.quick-feedback-options input { position: absolute; opacity: 0; pointer-events: none; }
.quick-feedback-options label > span { min-height: 82px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; padding: 10px 11px; color: #344054; background: #f8fafc; border: 1px solid #dfe4ec; border-radius: 8px; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.quick-feedback-options label > span:hover { border-color: #9db9ef; background: #f5f8ff; }
.quick-feedback-options input:checked + span { color: #164b99; background: #edf4ff; border-color: #6f9bea; box-shadow: 0 0 0 2px rgba(22, 93, 255, .08); }
.quick-feedback-options svg { width: 18px; height: 18px; color: #5278ad; }
.quick-feedback-options strong { font-size: 13px; }
.quick-feedback-options small { color: #667085; font-size: 11px; line-height: 1.4; }
.quick-feedback-detail textarea { width: 100%; min-height: 76px; resize: vertical; padding: 10px 11px; color: #1d2129; background: #f8fafc; border: 1px solid #dfe4ec; border-radius: 8px; outline: 0; font: inherit; font-size: 13px; }
.quick-feedback-detail textarea:focus { background: #fff; border-color: #7ea6ff; box-shadow: 0 0 0 3px rgba(22, 93, 255, .08); }
.quick-feedback-upload { display: flex; align-items: center; gap: 10px; padding: 11px 12px; color: #667085; background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 8px; cursor: pointer; }
.quick-feedback-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.quick-feedback-upload > svg { width: 20px; color: #5278ad; }
.quick-feedback-upload strong, .quick-feedback-upload small { display: block; }
.quick-feedback-upload strong { color: #344054; font-size: 13px; }
.quick-feedback-upload small { margin-top: 2px; font-size: 11px; }
.quick-feedback-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding-top: 4px; border-top: 1px solid #eef0f3; }
.quick-feedback-dialog footer p { display: flex; align-items: center; gap: 6px; margin: 0; color: #667085; font-size: 12px; line-height: 1.5; }
.quick-feedback-dialog footer p svg { width: 15px; color: #21875e; }
.quick-feedback-dialog footer > div { display: flex; gap: 8px; }
.feedback-resolution-confirm { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 14px; padding: 12px 14px; color: #155e75; background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; }
.feedback-resolution-confirm p, .feedback-confirmed-note { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12px; line-height: 1.5; }
.feedback-resolution-confirm p svg, .feedback-confirmed-note svg { width: 16px; color: #0284c7; }
.feedback-resolution-confirm > div { display: flex; gap: 8px; flex: 0 0 auto; }
.feedback-confirmed-note { margin-top: 14px; padding: 9px 12px; color: #176b58; background: #edf7f2; border: 1px solid #cfe9dc; border-radius: 7px; }
.feedback-confirmed-note svg { color: #21875e; }
body.quick-feedback-open { overflow: hidden; }
@media(max-width:600px){.quick-feedback-panel{padding:0; align-items:end}.quick-feedback-dialog{max-height:calc(100vh - 20px);border-radius:12px 12px 0 0}.quick-feedback-dialog > header,.quick-feedback-dialog form{padding-right:16px;padding-left:16px}.quick-feedback-options{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-feedback-options label > span{min-height:74px}.quick-feedback-dialog footer{align-items:stretch;flex-direction:column}.quick-feedback-dialog footer > div{display:grid;grid-template-columns:1fr 1fr}.quick-feedback-dialog footer .button{width:100%;}}
@media(max-width:600px){.feedback-resolution-confirm{align-items:stretch;flex-direction:column}.feedback-resolution-confirm > div{display:grid;grid-template-columns:1fr 1fr}.feedback-resolution-confirm .button{width:100%;}}

/* 微信登录：未配置时保持说明态，已绑定时提供清晰的解绑安全边界。 */
.login-provider-divider{display:flex;align-items:center;gap:12px;margin:20px 0 12px;color:#a0a7b1;font-size:11px}.login-provider-divider:before,.login-provider-divider:after{content:"";height:1px;flex:1;background:#e5e6eb}.wechat-login-button{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 14px;color:#087c26;background:#f2fbf4;border:1px solid #bfe5c6;border-radius:8px;text-decoration:none;transition:background .2s ease,border-color .2s ease,transform .2s ease}.wechat-login-button:hover{background:#e8f7eb;border-color:#8ed09b;transform:translateY(-1px)}.wechat-login-button>svg{width:19px;height:19px}.wechat-login-button span{font-size:14px;font-weight:700}.wechat-login-button small{margin-left:auto;color:#5b8062;font-size:11px}.login-provider-note{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;color:#667085;background:#f7f8fa;border:1px solid #e5e6eb;border-radius:8px;font-size:12px;line-height:1.6}.login-provider-note>svg{width:16px;height:16px;flex:none;margin-top:2px;color:#86909c}.profile-provider-note{margin:0 22px 18px}.profile-panel-icon.wechat{color:#087c26;background:#e8f7eb}.wechat-connected-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;margin:0 22px 18px;padding:12px 14px;background:#f7fbf8;border:1px solid #d7eadb;border-radius:8px}.wechat-connected-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;color:#087c26;background:#e8f7eb;border-radius:8px}.wechat-connected-icon svg{width:18px;height:18px}.wechat-connected-row strong,.wechat-connected-row p{display:block}.wechat-connected-row strong{font-size:13px}.wechat-connected-row p{margin-top:3px;color:var(--muted);font-size:12px}.wechat-connected-row em{padding:4px 7px;color:#087c26;background:#e8f7eb;border-radius:6px;font-size:11px;font-style:normal;font-weight:700}.wechat-unbind-form{border-top:1px solid #f2f3f5;padding-top:18px}.wechat-unbind-form .button{white-space:nowrap}
@media(max-width:520px){.wechat-login-button{align-items:flex-start;flex-wrap:wrap}.wechat-login-button small{width:100%;margin-left:29px}.wechat-connected-row{grid-template-columns:36px minmax(0,1fr);margin-right:14px;margin-left:14px}.wechat-connected-row em{grid-column:2;justify-self:start}.profile-provider-note{margin-right:14px;margin-left:14px}.wechat-unbind-form .profile-form-actions{align-items:flex-start;flex-direction:column}.wechat-unbind-form .button{width:100%}}

/* 第七十七阶段：教师端逐页可读性修正 */
.topbar-title p { font-size: 13px; }
.button.compact,
.subject-badge,
.count-chip,
.curriculum-edition,
td small,
td code { font-size: 12px; }

/* 今日教学：课堂信息和操作说明属于高频正文。 */
.today-hero-metrics small,
.today-toolbar > div span,
.today-manual-picker small { font-size: 13px; }
.today-lesson small,
.today-lesson p,
.today-resource-empty { font-size: 13px; }
.today-lesson .subject-badge,
.today-lesson .button.compact { font-size: 12px; }

/* 备课作业：教师备课时需要连续阅读，不使用微型说明字。 */
.preparation-metrics small,
.preparation-toolbar span,
.preparation-manual-picker small { font-size: 13px; }
.preparation-card small,
.preparation-card p,
.preparation-homework-queue p { font-size: 13px; }
.preparation-card .subject-badge,
.preparation-card .button.compact { font-size: 12px; }

/* 私人待办和班级日常：表单标签清楚，状态仍保持紧凑。 */
.planner-overview p,
.planner-metric p,
.planner-list-head p,
.planner-item-copy > p { font-size: 13px; }
.planner-filters a,
.planner-category,
.priority-tag,
.planner-item-copy footer,
.planner-form-note strong,
.planner-form-note span { font-size: 12px; }
.planner-form label > span { font-size: 13px; }
.daily-anchor-nav a,
.daily-saved-state { font-size: 12px; }

/* 测试复盘：流程说明和教材版本是复盘依据。 */
.process-strip small,
.file-drop small,
.import-summary small,
.test-detail-header a,
.test-detail-header p,
.test-detail-header small,
.analysis-metrics p,
.empty-inline p { font-size: 12px; }

/* 校内文件：筛选条件、文件限制和安全说明需要直接读清。 */
.file-storage-meter small,
.file-extension-icon,
.school-file-list header em,
.school-file-list footer,
.file-detail-panel header small,
.file-detail-panel header p,
.file-detail-meta small,
.file-detail-meta strong,
.file-detail-note small,
.file-upload-field small,
.file-library-check small,
.file-security-tip { font-size: 12px; }
.file-search-form label > span { font-size: 13px; }

/* 后勤服务：事项名称、地点和安全说明按业务表单标准显示。 */
.general-affairs-metrics small,
.general-request-list footer,
.general-request-detail > header small,
.general-request-detail > header p,
.general-detail-grid small,
.general-detail-grid strong,
.general-detail-note small,
.general-scene-photo span,
.general-update-list strong,
.general-update-list small,
.general-photo-field small,
.general-record-list td small,
.general-dashboard-links small { font-size: 12px; }
.general-request-filter label > span,
.general-action-form label > span,
.general-request-form label > span,
.general-record-form label > span { font-size: 13px; }
.general-update-list p { font-size: 13px; }

/* 意见反馈：隐私提醒、处理状态和平台回复不能缩成角标。 */
.feedback-summary small,
.feedback-form label > small,
.feedback-upload > span small,
.feedback-submit-bar p,
.feedback-category,
.feedback-status,
.feedback-ticket-meta,
.feedback-ticket > aside strong,
.feedback-ticket > aside small { font-size: 12px; }
.feedback-ticket > aside p { font-size: 13px; }

/* 校长首页与工作部署：趋势和薄弱点是决策信息，不作为装饰小字。 */
.notification-count { font-size: 12px; }
.leader-pulse strong small,
.leader-pulse p,
.subsection-heading p,
.subsection-heading > span,
.leader-weak-list > a p,
.task-list p,
.leader-quick-links small,
.management-loop small,
.school-quality-heading > span,
.school-quality-filter label > span,
.school-quality-metrics small,
.quality-section-title p,
.quality-section-title em,
.quality-class-table td small,
.quality-state,
.school-weak-list small,
.school-weak-list em,
.quality-note { font-size: 12px; }

/* 教学任务：任务状态、负责人和复盘要求均需直接读清。 */
.task-navigation-list p,
.task-navigation-list small,
.task-detail-tags span,
.task-detail-tags em,
.task-detail-title > div > p,
.task-deadline span,
.effect-scope,
.task-effect-metrics span,
.task-update-timeline header em,
.task-update-timeline header time,
.task-update-timeline article section b,
.task-form-note { font-size: 12px; }
.task-update-timeline article section p { font-size: 13px; }

/* 教学进度：锁定提示、导入结果和每周计划按业务正文显示。 */
.teaching-form-submit p,
.teaching-import-summary strong,
.teaching-import-summary p,
.teaching-import-table td small,
.teaching-plan-rows strong,
.teaching-plan-rows p,
.teaching-plan-rows .locked,
.permission-chip { font-size: 12px; }

/* 人员管理：角色、账号、任教范围和表单说明是核心资料。 */
.staff-import-rules strong,
.staff-import-rules p,
.staff-filter-form label > span,
.staff-editor-form label > span,
.password-reset-form label > span,
.staff-name-line em,
.staff-main > p,
.staff-main > small,
.staff-login span,
.staff-login strong,
.staff-section-heading p,
.grade-scope-grid span,
.assignment-head,
.assignment-row strong,
.assignment-row small,
.staff-status-form p,
.staff-self-note { font-size: 12px; }
@media (max-width: 520px) {
  .assignment-head span { font-size: 12px; }
}

/* 数据安全：备份状态和恢复风险说明必须清晰可核对。 */
.backup-health small,
.backup-health p,
.backup-action-card header p,
.backup-coverage span,
.automatic-status-list span,
.automatic-status-list strong,
.offsite-reminder,
.restore-permission,
.history-count,
.restore-upload-rules strong,
.restore-upload-rules small,
.restore-readonly-note strong,
.restore-readonly-note p,
.restore-preview-heading p,
.restore-preview-heading small,
.restore-summary-grid span,
.restore-warning strong,
.restore-warning span,
.restore-confirm-form label > span,
.backup-record-main strong,
.backup-record-main em,
.backup-record-main p,
.backup-record-main small { font-size: 12px; }

/* 校内消息：发布时间、置顶和回执提示属于发布依据。 */
.message-overview-stats small,
.notice-compose-grid label > small,
.notice-option-box small { font-size: 12px; }
.privacy-hint span,
.evidence { font-size: 12px; }

/* Role-based testing center */
.school-onboarding-card{margin-bottom:24px;overflow:hidden;background:#fff;border:1px solid #d7e3ee;border-radius:10px;box-shadow:0 5px 18px rgba(25,52,77,.06)}
.school-onboarding-card>header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 22px;background:#f5f9fc;border-bottom:1px solid #e0e8ef}.school-onboarding-card>header>div:first-child{display:flex;align-items:flex-start;gap:13px;min-width:0}.school-onboarding-card>header>div:first-child>span{display:grid;flex:0 0 42px;place-items:center;width:42px;height:42px;color:#285f9c;background:#e5eff9;border-radius:8px}.school-onboarding-card>header svg{width:21px}.school-onboarding-card>header small{display:block;margin-bottom:3px;color:#567797;font-size:12px;font-weight:800}.school-onboarding-card>header h2{margin:0;color:#24364a;font-size:18px}.school-onboarding-card>header p{margin:5px 0 0;color:#68798b;font-size:13px;line-height:1.55}.school-onboarding-progress{display:grid;grid-template-columns:auto auto;align-items:end;gap:0 8px;min-width:190px}.school-onboarding-progress strong{color:#24364a;font-size:25px}.school-onboarding-progress span{padding-bottom:3px;color:#738396;font-size:12px}.school-onboarding-progress progress{grid-column:1/-1;width:100%;height:7px;margin-top:7px;border:0;border-radius:4px;accent-color:#248568}
.school-onboarding-card.ready-for-trial>header{background:#f1f8f5;border-bottom-color:#d8e9e2}.school-onboarding-card.ready-for-trial>header>div:first-child>span{color:#197255;background:#dff1e9}.school-onboarding-card.ready-for-trial .school-onboarding-progress progress{accent-color:#248568}.school-onboarding-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;padding:6px 22px 16px}.school-onboarding-steps>a,.school-onboarding-steps>div{display:grid;grid-template-columns:36px minmax(0,1fr) 16px;align-items:center;gap:11px;min-height:92px;padding:14px 2px;border-bottom:1px solid #edf1f4}.school-onboarding-steps>a:nth-last-child(-n+2),.school-onboarding-steps>div:nth-last-child(-n+2){border-bottom:0}.school-onboarding-steps>a>span,.school-onboarding-steps>div>span{display:grid;place-items:center;width:34px;height:34px;color:#476987;background:#edf3f8;border-radius:8px}.school-onboarding-steps>a.complete>span{color:#197255;background:#e7f6ef}.school-onboarding-steps>div.blocked{cursor:not-allowed;opacity:.7}.school-onboarding-steps>div.blocked>span{color:#7f8d98;background:#f0f2f4}.school-onboarding-steps>a>span svg,.school-onboarding-steps>div>span svg{width:17px}.school-onboarding-steps>a>svg,.school-onboarding-steps>div>svg{width:15px;color:#a4afba}.school-onboarding-steps strong,.school-onboarding-steps p,.school-onboarding-steps small{display:block}.school-onboarding-steps strong{color:#2d4054;font-size:14px}.school-onboarding-steps strong em{display:inline-block;margin-left:6px;padding:2px 5px;color:#7a6127;background:#fff7df;border:1px solid #ebdaa6;border-radius:4px;font-size:10px;font-style:normal;vertical-align:1px}.school-onboarding-steps p{margin:3px 0 4px;color:#697a8c;font-size:12px;line-height:1.5}.school-onboarding-steps small{color:#8a98a6;font-size:12px}.school-onboarding-steps>a.complete small{color:#248568}.school-onboarding-steps>a:hover strong{color:#165dff}
@media(max-width:760px){.school-onboarding-card{border-radius:8px}.school-onboarding-card>header{align-items:flex-start;flex-direction:column;padding:17px 16px}.school-onboarding-progress{width:100%}.school-onboarding-steps{grid-template-columns:1fr;padding:4px 16px 12px}.school-onboarding-steps>a:nth-last-child(2),.school-onboarding-steps>div:nth-last-child(2){border-bottom:1px solid #edf1f4}.school-onboarding-steps>a:last-child,.school-onboarding-steps>div:last-child{border-bottom:0}}

/* 学校首次开通：校长按依赖顺序完成学校试用所需的基础设置。 */
.onboarding-hero{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:16px;padding:26px 28px;color:#fff;background:#234a68;border:1px solid #234a68;border-radius:8px}.onboarding-hero.ready{background:#225d50;border-color:#225d50}.onboarding-hero>div:first-child{max-width:780px}.onboarding-hero .overline{margin:0 0 5px;color:#bcd5e5;font-size:12px;font-weight:700}.onboarding-hero.ready .overline{color:#bfe1d7}.onboarding-hero h2{margin:0;color:#fff;font-size:24px;line-height:1.35}.onboarding-hero p:last-child{margin:8px 0 0;color:#dce9f1;font-size:14px;line-height:1.7}.onboarding-hero.ready p:last-child{color:#d9eee8}.onboarding-hero-progress{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:1px 9px;min-width:220px;padding:16px 18px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:8px}.onboarding-hero-progress strong{font-size:30px;line-height:1}.onboarding-hero-progress span{padding-bottom:2px;color:#dce9f1;font-size:12px}.onboarding-hero-progress progress{grid-column:1/-1;width:100%;height:7px;margin-top:9px;border:0;border-radius:4px;accent-color:#72c8aa}
.onboarding-next{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px;margin-bottom:16px;padding:15px 17px;background:#eef5fb;border:1px solid #ccdeec;border-left:4px solid #2c6795;border-radius:8px}.onboarding-next>span{display:grid;place-items:center;width:42px;height:42px;color:#255f8d;background:#fff;border:1px solid #d5e3ee;border-radius:8px}.onboarding-next>span svg{width:20px}.onboarding-next small,.onboarding-next strong,.onboarding-next p{display:block}.onboarding-next small{color:#5f7c93;font-size:12px;font-weight:700}.onboarding-next strong{margin-top:2px;color:#203a50;font-size:16px}.onboarding-next p{margin:3px 0 0;color:#667b8c;font-size:13px;line-height:1.5}.onboarding-next .button{white-space:nowrap}
.onboarding-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(310px,.55fr);align-items:start;gap:16px}.onboarding-step-list{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:8px}.onboarding-step-list article{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:112px;padding:17px 18px;border-bottom:1px solid var(--line)}.onboarding-step-list article:last-child{border-bottom:0}.onboarding-step-list article.complete{background:#fbfefd}.onboarding-step-list article.blocked{background:#fafbfc}.onboarding-step-number{display:grid;place-items:center;width:34px;height:34px;color:#3d627e;background:#edf3f7;border:1px solid #dce6ed;border-radius:50%;font-size:13px;font-weight:800}.onboarding-step-number svg{width:17px}.onboarding-step-list article.complete .onboarding-step-number{color:#fff;background:#288063;border-color:#288063}.onboarding-step-list article.blocked .onboarding-step-number{color:#8996a1;background:#f0f2f4;border-color:#e0e4e7}.onboarding-step-copy{min-width:0}.onboarding-step-copy>div{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.onboarding-step-copy strong{color:#263d50;font-size:15px}.onboarding-step-copy em{padding:3px 6px;color:#7a6127;background:#fff7df;border:1px solid #ebdaa6;border-radius:4px;font-size:11px;font-style:normal;font-weight:700}.onboarding-step-copy p{margin:5px 0 4px;color:#627586;font-size:13px;line-height:1.55}.onboarding-step-copy small{color:#718494;font-size:12px}.onboarding-step-copy>span{display:flex;align-items:center;gap:5px;margin-top:6px;color:#8b6d2b;font-size:12px;line-height:1.45}.onboarding-step-copy>span svg{width:14px;flex:0 0 14px}.onboarding-step-list article.complete .onboarding-step-copy small{color:#26745c}.onboarding-step-list article.blocked .onboarding-step-copy strong,.onboarding-step-list article.blocked .onboarding-step-copy p,.onboarding-step-list article.blocked .onboarding-step-copy small{color:#87949e}.onboarding-step-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px;max-width:220px}.onboarding-step-actions .button{white-space:nowrap}
.onboarding-side{display:grid;gap:14px}.onboarding-profile-panel{scroll-margin-top:18px}.onboarding-profile-panel .panel-heading{padding-bottom:14px}.onboarding-profile-panel .form-stack{padding:0 18px 18px}.profile-panel-icon{display:grid;place-items:center;width:34px;height:34px;color:#31658d;background:#edf4f9;border-radius:7px}.profile-panel-icon svg{width:18px}.onboarding-school-name{padding:11px 12px;background:#f6f8fa;border:1px solid var(--line);border-radius:7px}.onboarding-school-name small,.onboarding-school-name strong{display:block}.onboarding-school-name small{color:var(--muted);font-size:12px}.onboarding-school-name strong{margin-top:3px;color:var(--text);font-size:14px}.onboarding-current-logo{display:flex;align-items:center;gap:11px;padding:10px 12px;background:#f8fafb;border:1px solid var(--line);border-radius:7px}.onboarding-current-logo img{width:46px;height:46px;object-fit:contain;background:#fff;border:1px solid #e4e8eb;border-radius:6px}.onboarding-current-logo strong,.onboarding-current-logo small{display:block}.onboarding-current-logo strong{font-size:13px}.onboarding-current-logo small{margin-top:3px;color:var(--muted);font-size:12px}.onboarding-profile-panel .file-drop.compact{min-height:92px}.onboarding-privacy-note,.onboarding-support{display:flex;align-items:flex-start;gap:11px;padding:14px 15px;border-radius:8px}.onboarding-privacy-note{color:#315d56;background:#eef7f4;border:1px solid #cfe4de}.onboarding-support{color:#425d74;background:#f2f6fa;border:1px solid #d9e4ed}.onboarding-privacy-note>svg,.onboarding-support>svg{width:19px;flex:0 0 19px;margin-top:1px}.onboarding-privacy-note strong,.onboarding-support strong{display:block;font-size:13px}.onboarding-privacy-note p,.onboarding-support p{margin:4px 0 0;font-size:12px;line-height:1.6}.onboarding-privacy-note p{color:#58766f}.onboarding-support p{color:#687c8c}
@media(max-width:1040px){.onboarding-layout{grid-template-columns:minmax(0,1fr) 300px}.onboarding-step-list article{grid-template-columns:36px minmax(0,1fr)}.onboarding-step-actions{grid-column:2;justify-content:flex-start;max-width:none}}
@media(max-width:820px){.onboarding-hero{align-items:flex-start;flex-direction:column;padding:22px}.onboarding-hero-progress{width:100%}.onboarding-layout{grid-template-columns:1fr}.onboarding-side{grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-profile-panel{grid-column:1/-1}}
@media(max-width:520px){.onboarding-hero{gap:18px;padding:19px 16px}.onboarding-hero h2{font-size:20px}.onboarding-hero p:last-child{font-size:13px}.onboarding-hero-progress{min-width:0;padding:13px 14px}.onboarding-hero-progress strong{font-size:26px}.onboarding-next{grid-template-columns:40px minmax(0,1fr);padding:13px}.onboarding-next>span{width:38px;height:38px}.onboarding-next .button{grid-column:1/-1;width:100%}.onboarding-step-list article{grid-template-columns:32px minmax(0,1fr);gap:11px;min-height:0;padding:15px 13px}.onboarding-step-number{width:30px;height:30px}.onboarding-step-copy strong{font-size:14px}.onboarding-step-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;max-width:none}.onboarding-step-actions .button{width:100%;min-width:0;padding-inline:9px}.onboarding-step-actions .button:only-child{grid-column:1/-1}.onboarding-side{grid-template-columns:1fr}.onboarding-profile-panel .form-stack{padding:0 14px 15px}.onboarding-privacy-note,.onboarding-support{padding:13px}}

/* 政教工作台：复用学校运行数据，但把岗位重点独立呈现。 */
.moral-affairs-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 30px;margin-bottom:18px;background:#173f55;border:0;color:#fff}
.moral-affairs-hero h2{margin:5px 0 6px;font-size:24px}.moral-affairs-hero p:last-child{max-width:720px;margin:0;color:#d6e8e8;font-size:14px;line-height:1.7}.moral-affairs-hero .overline{color:#9ed3c5}.moral-affairs-hero-icon{display:grid;place-items:center;width:66px;height:66px;color:#b8ead9;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:14px}.moral-affairs-hero-icon svg{width:30px;height:30px}.moral-affairs-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.moral-affairs-metric{display:flex;align-items:center;gap:13px;padding:18px;text-decoration:none}.moral-affairs-metric>span{display:grid;place-items:center;width:40px;height:40px;color:#246b62;background:#e8f5f0;border-radius:10px}.moral-affairs-metric small,.moral-affairs-metric strong,.moral-affairs-metric p{display:block}.moral-affairs-metric small{color:var(--muted);font-size:12px}.moral-affairs-metric strong{margin-top:3px;color:var(--text);font-size:25px}.moral-affairs-metric p{margin-top:4px;color:#2d7c6c;font-size:11px}.moral-affairs-metric p svg{width:12px;vertical-align:-2px}.moral-affairs-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:18px}.moral-affairs-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px 24px;padding:0 20px 18px}.moral-affairs-links a{display:grid;grid-template-columns:24px minmax(0,1fr) 16px;align-items:center;gap:10px;min-height:70px;color:var(--text);border-bottom:1px solid var(--line);text-decoration:none}.moral-affairs-links a>svg:first-child{color:#28776b}.moral-affairs-links strong,.moral-affairs-links small{display:block}.moral-affairs-links strong{font-size:14px}.moral-affairs-links small{margin-top:3px;color:var(--muted);font-size:12px}.moral-affairs-links a>svg:last-child{color:#9aa7b3;width:15px}.moral-affairs-note{padding:0 20px 20px}.moral-affairs-note .panel-heading>i{color:#2d7c6c}.moral-affairs-note ul{display:grid;gap:12px;margin:4px 0 0;padding-left:19px;color:var(--text-2);font-size:13px;line-height:1.6}.daily-readonly-note{display:flex;align-items:flex-start;gap:10px;margin:0 18px 14px;padding:12px 14px;color:#315f70;background:#edf7f8;border:1px solid #cde5e5;border-radius:8px}.daily-readonly-note>svg{width:18px;color:#2e7b7e}.daily-readonly-note strong,.daily-readonly-note span{display:block}.daily-readonly-note strong{font-size:13px}.daily-readonly-note span{margin-top:3px;color:#5a7881;font-size:12px;line-height:1.5}
@media(max-width:900px){.moral-affairs-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.moral-affairs-grid{grid-template-columns:1fr}}
@media(max-width:600px){.moral-affairs-hero{align-items:flex-start;padding:22px 18px}.moral-affairs-hero h2{font-size:20px}.moral-affairs-hero-icon{width:50px;height:50px;flex:0 0 50px}.moral-affairs-links{grid-template-columns:1fr;padding:0 16px 12px}.moral-affairs-metric{padding:14px}.moral-affairs-metric strong{font-size:22px}}

/* 学生德育：班级评比、操行、卫生值日和报告使用同一套低疲劳工作界面。 */
.moral-education-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;padding:28px 30px;color:#fff;background:#214b46;border:1px solid #214b46;border-radius:8px}.moral-education-hero>div:first-child{max-width:820px}.moral-education-hero .overline{margin:0 0 6px;color:#b9ded4;font-size:12px}.moral-education-hero h2{margin:0 0 8px;font-size:24px;line-height:1.35}.moral-education-hero>div:first-child>p:last-child{margin:0;color:#dcece8;font-size:14px;line-height:1.7}.moral-hero-period{min-width:150px;padding-left:22px;border-left:1px solid rgba(255,255,255,.25)}.moral-hero-period span,.moral-hero-period small{display:block;color:#cce3dd;font-size:12px}.moral-hero-period strong{display:block;margin:4px 0;color:#fff;font-size:32px;line-height:1}.moral-section-nav{display:flex;align-items:center;gap:2px;margin:14px 0 16px;padding:5px;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:auto}.moral-section-nav a{display:flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:0 14px;color:var(--text-2);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;border-radius:6px}.moral-section-nav a:hover{color:#214b46;background:#eef6f3}.moral-section-nav svg{width:16px}.moral-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.moral-overview-card{display:flex;align-items:center;gap:12px;padding:16px}.moral-overview-card>span{display:grid;place-items:center;width:38px;height:38px;color:#365f5a;background:#edf5f2;border-radius:8px}.moral-overview-card>span svg{width:19px}.moral-overview-card small{display:block;color:var(--muted);font-size:12px}.moral-overview-card p{margin:3px 0 0;color:var(--text-2);font-size:12px}.moral-overview-card p strong{margin-right:3px;color:var(--text);font-size:23px}.moral-overview-card.warning>span{color:#9a5b0a;background:#fff5df}.moral-overview-card.danger>span{color:#b33a3a;background:#fff0f0}.moral-overview-card.success>span{color:#28724c;background:#edf8f1}.moral-panel{margin-bottom:16px}.moral-panel-heading{align-items:flex-end}.moral-panel-heading>div>p{max-width:720px}.moral-inline-filter{display:flex;align-items:flex-end;gap:8px}.moral-inline-filter label{display:grid;gap:4px}.moral-inline-filter label>span{color:var(--muted);font-size:12px}.moral-inline-filter input,.moral-inline-filter select{height:34px;min-width:138px;padding:0 9px;border:1px solid var(--line);border-radius:6px;background:#fff}.moral-ranking-list{padding:0 18px}.moral-ranking-row{display:grid;grid-template-columns:38px minmax(0,1fr) 92px;align-items:center;gap:12px;min-height:68px;border-bottom:1px solid var(--line)}.moral-ranking-row:last-child{border-bottom:0}.moral-ranking-row.winner{margin:8px 0;padding:0 12px;background:#f0f8f4;border:1px solid #cde5d7;border-radius:8px}.moral-rank{display:grid;place-items:center;width:30px;height:30px;color:#64717a;background:#eef1f3;border-radius:7px}.moral-ranking-row:first-child .moral-rank,.moral-ranking-row.winner .moral-rank{color:#fff;background:#b88a24}.moral-ranking-row>div p{display:flex;align-items:center;gap:8px;margin:0;color:var(--text);font-size:14px;font-weight:700}.moral-ranking-row>div p em{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;color:#8b6516;background:#fff8df;border:1px solid #ead69a;border-radius:5px;font-size:11px;font-style:normal}.moral-ranking-row>div p em svg{width:13px}.moral-ranking-row>div small{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}.moral-ranking-row>span{text-align:right}.moral-ranking-row>span strong{display:block;color:#214b46;font-size:22px}.moral-ranking-row>span small{color:var(--muted);font-size:11px}.moral-publication{display:flex;align-items:flex-start;gap:12px;margin:10px 18px 16px;padding:14px 16px;color:#65501d;background:#fffaf0;border:1px solid #ead9ae;border-radius:8px}.moral-publication>svg{width:20px;flex:0 0 20px}.moral-publication strong,.moral-publication p,.moral-publication small{display:block}.moral-publication p{margin:4px 0;color:#6c6044;font-size:13px;line-height:1.6}.moral-publication small{color:#8c7d5d;font-size:12px}.moral-publish-form{display:flex;align-items:flex-end;gap:10px;padding:14px 18px;border-top:1px solid var(--line)}.moral-publish-form label{display:grid;flex:1;gap:5px}.moral-publish-form label span{color:var(--text-2);font-size:12px}.moral-publish-form input{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:6px}.moral-two-column{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:16px}.moral-panel .panel-heading>svg{width:20px;color:#3e756e}.moral-form{display:grid;gap:13px;padding:18px}.moral-form.compact{padding:16px}.moral-form h3{margin:0 0 2px;font-size:16px}.moral-form label{display:grid;gap:6px}.moral-form label>span{color:var(--text-2);font-size:13px;font-weight:600}.moral-form label>small{color:var(--muted);font-size:12px}.moral-form input:not([type=checkbox]),.moral-form select,.moral-form textarea{width:100%;min-height:40px;padding:9px 11px;color:var(--text);background:#fff;border:1px solid #d8dde3;border-radius:6px;font:inherit}.moral-form textarea{line-height:1.6;resize:vertical}.moral-form input:focus,.moral-form select:focus,.moral-form textarea:focus{outline:0;border-color:#6ca69f;box-shadow:0 0 0 3px rgba(70,132,124,.12)}.moral-form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.moral-score-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.moral-score-grid label{grid-template-columns:minmax(96px,.6fr) 80px minmax(130px,1fr);align-items:center;padding:10px;background:#f8faf9;border:1px solid var(--line);border-radius:7px}.moral-score-grid label>span small{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:400}.moral-score-grid input{min-width:0}.count-badge{display:grid;place-items:center;min-width:28px;height:28px;padding:0 8px;color:#7a510b;background:#fff3d6;border-radius:6px;font-size:13px;font-weight:700}.moral-review-list{display:grid;gap:10px;padding:14px}.moral-review-list article{padding:13px;border:1px solid var(--line);border-radius:7px}.moral-review-list header{display:flex;align-items:center;justify-content:space-between;gap:12px}.moral-review-list header strong,.moral-review-list header small{display:block}.moral-review-list header small{margin-top:3px;color:var(--muted);font-size:12px}.moral-review-list header em{color:#214b46;font-size:16px;font-style:normal;font-weight:700}.moral-review-list article>p{margin:9px 0;color:var(--text-2);font-size:13px;line-height:1.55}.moral-review-list form{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px}.moral-review-list input{min-width:0;height:34px;padding:0 9px;border:1px solid var(--line);border-radius:6px}.moral-role-note{display:flex;align-items:flex-start;gap:10px;margin:16px;padding:14px;color:#315f5a;background:#eff7f5;border:1px solid #d1e6e1;border-radius:8px}.moral-role-note svg{width:18px;flex:0 0 18px}.moral-role-note strong,.moral-role-note span{display:block}.moral-role-note strong{font-size:13px}.moral-role-note span{margin-top:4px;color:#5c7773;font-size:12px;line-height:1.6}.moral-conduct-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);border-bottom:1px solid var(--line)}.moral-conduct-form{border-right:1px solid var(--line)}.moral-checkbox{display:flex!important;align-items:flex-start;gap:9px;padding:11px 12px;background:#f7f9f9;border:1px solid var(--line);border-radius:7px}.moral-checkbox input{margin-top:3px}.moral-checkbox strong,.moral-checkbox small{display:block}.moral-checkbox strong{font-size:13px}.moral-checkbox small{margin-top:2px;color:var(--muted);font-size:12px;font-weight:400}.moral-attention-panel{padding:18px}.moral-attention-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.moral-attention-panel h3{margin:0;font-size:16px}.moral-attention-panel header p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.moral-attention-panel header>span{display:grid;place-items:center;width:30px;height:30px;color:#9a5b0a;background:#fff4dd;border-radius:7px;font-weight:700}.moral-attention-panel>div>a{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 0;color:var(--text);border-bottom:1px solid var(--line);text-decoration:none}.moral-attention-panel>div>a>span{display:grid;place-items:center;width:34px;height:34px;color:#315f5a;background:#eaf3f1;border-radius:8px;font-weight:700}.moral-attention-panel a strong,.moral-attention-panel a small{display:block}.moral-attention-panel a strong{font-size:13px}.moral-attention-panel a small{margin-top:2px;color:var(--muted);font-size:11px}.moral-attention-panel a em{color:#b34b3f;font-size:13px;font-style:normal;font-weight:700}.moral-record-table-wrap{width:100%;overflow:visible}.moral-record-table{width:100%;table-layout:fixed}.moral-record-table th:nth-child(1){width:15%}.moral-record-table th:nth-child(2){width:35%}.moral-record-table th:nth-child(3){width:10%}.moral-record-table th:nth-child(4){width:17%}.moral-record-table th:nth-child(5){width:23%}.moral-record-table td{vertical-align:top}.moral-record-table td>strong,.moral-record-table td>small{display:block}.moral-record-table td>small{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5;overflow-wrap:anywhere}.moral-kind{display:inline-flex;margin-bottom:5px;padding:3px 6px;border-radius:4px;font-size:11px;font-weight:700}.moral-kind.positive,.moral-kind.reward{color:#267248;background:#ebf7ef}.moral-kind.negative,.moral-kind.discipline{color:#a64038;background:#fff0ef}.moral-points{font-size:17px}.moral-points.positive{color:#237447}.moral-points.negative{color:#b13d36}.moral-table-review{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:5px}.moral-table-review input{min-width:0;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:5px}.status-badge.pending{color:#8a5b08;background:#fff1d1}.status-badge.confirmed{color:#267248;background:#eaf7ee}.status-badge.rejected{color:#a64038;background:#fff0ef}.moral-hygiene-grid{align-items:start}.moral-duty-list,.moral-hygiene-list{display:grid;padding:0 16px 14px}.moral-duty-list article,.moral-hygiene-list article{display:flex;align-items:flex-start;gap:11px;padding:12px 0;border-top:1px solid var(--line)}.moral-duty-list time{display:grid;place-items:center;width:40px;height:38px;color:#315f5a;background:#edf5f3;border-radius:7px;font-size:12px;font-weight:700}.moral-duty-list strong,.moral-duty-list p,.moral-hygiene-list strong,.moral-hygiene-list p,.moral-hygiene-list small{display:block}.moral-duty-list strong,.moral-hygiene-list strong{font-size:13px}.moral-duty-list p,.moral-hygiene-list p{margin:3px 0 0;color:var(--muted);font-size:12px}.moral-hygiene-list>article>span{display:grid;place-items:center;width:44px;height:40px;color:#257047;background:#ebf7ef;border-radius:7px;font-size:13px;font-weight:700}.moral-hygiene-list>article>span.pass{color:#7a5a12;background:#fff6dd}.moral-hygiene-list>article>span.failed{color:#a74039;background:#fff0ef}.moral-hygiene-list small{margin-top:4px;color:#a74039;font-size:12px;line-height:1.5}.moral-report-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.moral-report-strip article{display:flex;align-items:center;gap:10px;padding:18px;background:#fff}.moral-report-strip svg{width:20px;color:#3a756e}.moral-report-strip strong,.moral-report-strip small{display:block}.moral-report-strip strong{font-size:21px}.moral-report-strip small{margin-top:2px;color:var(--muted);font-size:12px}.moral-report-note{display:flex;align-items:center;gap:12px;padding:16px 18px}.moral-report-note>svg{width:24px;color:#3a756e}.moral-report-note>div{flex:1}.moral-report-note strong{font-size:14px}.moral-report-note p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.moral-settings{margin-bottom:18px}.moral-settings summary{display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:10px;padding:16px 18px;cursor:pointer;list-style:none}.moral-settings summary::-webkit-details-marker{display:none}.moral-settings summary>span{display:grid;place-items:center;width:36px;height:36px;color:#315f5a;background:#edf5f3;border-radius:8px}.moral-settings summary strong,.moral-settings summary small{display:block}.moral-settings summary strong{font-size:14px}.moral-settings summary small{margin-top:3px;color:var(--muted);font-size:12px}.moral-settings form{padding:18px;border-top:1px solid var(--line)}.moral-settings form>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr) 110px);gap:8px}.moral-settings label{display:grid;gap:4px}.moral-settings label span{color:var(--muted);font-size:11px}.moral-settings input{min-width:0;height:38px;padding:0 9px;border:1px solid var(--line);border-radius:6px}.moral-settings button{margin-top:14px}
@media(max-width:1100px){.moral-overview-grid,.moral-report-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.moral-two-column,.moral-conduct-layout{grid-template-columns:1fr}.moral-conduct-form{border-right:0;border-bottom:1px solid var(--line)}.moral-score-grid{grid-template-columns:1fr}.moral-settings form>div{grid-template-columns:repeat(2,minmax(0,1fr) 100px)}}
@media(max-width:700px){.moral-education-hero{align-items:flex-start;padding:22px 18px}.moral-education-hero h2{font-size:20px}.moral-hero-period{min-width:82px;padding-left:14px}.moral-hero-period strong{font-size:27px}.moral-section-nav{justify-content:flex-start}.moral-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.moral-overview-card{padding:12px;gap:8px}.moral-overview-card>span{width:34px;height:34px}.moral-overview-card p strong{font-size:20px}.moral-panel-heading{align-items:flex-start}.moral-panel-heading,.moral-publish-form{flex-direction:column}.moral-inline-filter{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.moral-inline-filter label:last-of-type:nth-child(2){grid-column:auto}.moral-inline-filter input,.moral-inline-filter select{width:100%;min-width:0}.moral-inline-filter button{align-self:end}.moral-ranking-list{padding:0 12px}.moral-ranking-row{grid-template-columns:30px minmax(0,1fr) 65px}.moral-ranking-row>span strong{font-size:18px}.moral-publish-form{align-items:stretch}.moral-form-row{grid-template-columns:1fr}.moral-score-grid label{grid-template-columns:minmax(82px,.6fr) 70px minmax(110px,1fr)}.moral-review-list form,.moral-table-review{grid-template-columns:1fr 1fr}.moral-review-list form input,.moral-table-review input{grid-column:1/-1}.moral-record-table thead{display:none}.moral-record-table,.moral-record-table tbody,.moral-record-table tr,.moral-record-table td{display:block;width:100%}.moral-record-table tr{padding:12px 14px;border-bottom:1px solid var(--line)}.moral-record-table td{padding:5px 0;border:0}.moral-record-table td:nth-child(3){position:absolute;right:14px;margin-top:-46px;width:auto}.moral-report-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.moral-report-note{align-items:flex-start;flex-wrap:wrap}.moral-report-note>div{min-width:calc(100% - 40px)}.moral-settings form>div{grid-template-columns:minmax(0,1fr) 90px}.moral-settings summary{padding:14px}.moral-settings summary>div small{line-height:1.45}}
@media(max-width:430px){.moral-education-hero{display:block}.moral-hero-period{display:grid;grid-template-columns:1fr auto;align-items:end;margin-top:16px;padding:12px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.25)}.moral-hero-period strong{grid-column:2;grid-row:1/3}.moral-overview-grid{grid-template-columns:1fr}.moral-score-grid label{grid-template-columns:1fr 72px}.moral-score-grid label input:last-child{grid-column:1/-1}.moral-inline-filter{grid-template-columns:1fr}.moral-report-strip{grid-template-columns:1fr 1fr}.moral-settings form>div{grid-template-columns:1fr 82px}}

.moral-score-grid label>span small,.moral-settings label span{font-size:12px}
.moral-insight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.moral-insight-grid>section{min-width:0;padding:18px}
.moral-insight-grid>section+section{border-left:1px solid var(--line)}
.moral-insight-grid header,.moral-term-summary header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.moral-insight-grid h3,.moral-term-summary h3{margin:0;color:var(--text);font-size:15px}
.moral-insight-grid header p,.moral-term-summary header p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.55}
.moral-insight-grid header>span{padding:4px 7px;color:#315f5a;background:#edf5f3;border-radius:5px;font-size:12px;font-weight:700;white-space:nowrap}
.moral-compact-ranking{display:grid}
.moral-compact-ranking article{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:48px;border-top:1px solid var(--line)}
.moral-compact-ranking article>strong{display:grid;place-items:center;width:25px;height:25px;color:#52645f;background:#edf1f0;border-radius:5px;font-size:12px}
.moral-compact-ranking article:first-child>strong{color:#fff;background:#b88a24}
.moral-compact-ranking b,.moral-compact-ranking small{display:block}
.moral-compact-ranking b{font-size:13px}
.moral-compact-ranking small{margin-top:2px;color:var(--muted);font-size:12px;font-weight:400}
.moral-compact-ranking em{color:#214b46;font-size:13px;font-style:normal;font-weight:700}
.moral-distribution{display:grid;gap:11px;padding-top:3px}
.moral-distribution article p{display:flex;justify-content:space-between;gap:10px;margin:0 0 5px;color:var(--text-2);font-size:12px}
.moral-distribution article p strong{font-size:13px}
.moral-distribution progress{display:block;width:100%;height:8px;overflow:hidden;border:0;border-radius:4px;background:#edf0f1;appearance:none;accent-color:#3d8377}
.moral-distribution progress::-webkit-progress-bar{background:#edf0f1;border-radius:4px}
.moral-distribution progress::-webkit-progress-value{background:#3d8377;border-radius:4px}
.moral-distribution progress::-moz-progress-bar{background:#3d8377;border-radius:4px}
.moral-distribution article.stable progress{accent-color:#6d9f89}
.moral-distribution article.stable progress::-webkit-progress-value,.moral-distribution article.stable progress::-moz-progress-bar{background:#6d9f89}
.moral-distribution article.attention progress{accent-color:#c99535}
.moral-distribution article.attention progress::-webkit-progress-value,.moral-distribution article.attention progress::-moz-progress-bar{background:#c99535}
.moral-distribution article.priority progress{accent-color:#c35c52}
.moral-distribution article.priority progress::-webkit-progress-value,.moral-distribution article.priority progress::-moz-progress-bar{background:#c35c52}
.moral-term-summary{padding:16px 18px;border-bottom:1px solid var(--line)}
.moral-term-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.moral-term-list span{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px;background:#f7f9f8;border:1px solid var(--line);border-radius:6px}
.moral-term-list b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.moral-term-list em{color:#315f5a;font-size:11px;font-style:normal;white-space:nowrap}
.moral-term-empty{margin:0;color:var(--muted);font-size:12px}
@media(max-width:900px){.moral-insight-grid{grid-template-columns:1fr}.moral-insight-grid>section+section{border-top:1px solid var(--line);border-left:0}.moral-term-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:430px){.moral-insight-grid>section{padding:15px 14px}.moral-term-summary{padding:15px 14px}.moral-term-list{grid-template-columns:1fr}}

/* 登录页辅助文字在手机端保持可读，不改变主表单密度。 */
@media(max-width:600px){.login-help-row,.auth-footnote,.role-login-note span,.login-provider-note,.wechat-login-button small{font-size:12px}.role-login-note{font-size:12px}}

/* Role-based testing center */
.testing-center{margin-bottom:24px;overflow:hidden;background:#fff;border:1px solid #dce4ef;border-radius:12px;box-shadow:0 4px 18px rgba(34,58,84,.06)}
.testing-center-head{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 24px;background:#f6f9fd;border-bottom:1px solid #e3e9f1}.testing-center-title{display:flex;align-items:flex-start;gap:14px;min-width:0}.testing-center-title>span{display:grid;flex:0 0 44px;place-items:center;width:44px;height:44px;color:#285f9c;background:#e7f0fa;border-radius:8px}.testing-center-title>span svg{width:22px}.testing-center-title small{display:block;margin-bottom:3px;color:#557391;font-size:11px;font-weight:800}.testing-center-title h2{margin:0;color:#24364a;font-size:18px}.testing-center-title p{margin:5px 0 0;color:#68798b;font-size:13px;line-height:1.6}.testing-progress{display:grid;grid-template-columns:auto auto;align-items:end;gap:0 7px;min-width:180px}.testing-progress strong{color:#24364a;font-size:24px}.testing-progress span{padding-bottom:3px;color:#7b8a9a;font-size:11px}.testing-progress progress{grid-column:1/-1;width:100%;height:7px;margin-top:6px;overflow:hidden;border:0;border-radius:4px;background:#dce5ee}.testing-progress progress::-webkit-progress-bar{background:#dce5ee}.testing-progress progress::-webkit-progress-value{background:#248568}.testing-progress progress::-moz-progress-bar{background:#248568}
.testing-summary{display:flex;align-items:center;gap:10px 18px;padding:12px 24px;color:#66788a;background:#fff;border-bottom:1px solid #edf0f4;font-size:12px}.testing-summary span{display:inline-flex;align-items:center;gap:5px}.testing-summary svg{width:15px}.testing-summary .passed{color:#197255}.testing-summary .issue{color:#b44f42}.testing-summary p{margin:0 0 0 auto;color:#8793a0;font-size:11px}.testing-task-list{padding:0 24px 20px}.testing-task{border-bottom:1px solid #edf0f4}.testing-task:last-child{border-bottom:0}.testing-task>details>summary{display:grid;grid-template-columns:30px minmax(0,1fr) auto 18px;align-items:center;gap:12px;padding:16px 0;cursor:pointer;list-style:none}.testing-task>details>summary::-webkit-details-marker,.testing-issue-form>summary::-webkit-details-marker{display:none}.testing-task-number{display:grid;place-items:center;width:28px;height:28px;color:#58718a;background:#edf2f7;border-radius:7px;font-size:12px;font-weight:800}.testing-task>details>summary strong,.testing-task>details>summary small{display:block}.testing-task>details>summary strong{color:#2f4053;font-size:14px}.testing-task>details>summary small{margin-top:3px;color:#8a97a5;font-size:11px}.testing-task>details>summary em{padding:4px 7px;color:#657587;background:#eef2f6;border-radius:6px;font-size:10px;font-style:normal;font-weight:800}.testing-task.passed>details>summary em{color:#197255;background:#eaf7f1}.testing-task.issue>details>summary em{color:#ae493d;background:#fff0ee}.testing-task>details>summary>svg{width:16px;color:#8b98a5;transition:transform .2s ease}.testing-task>details[open]>summary>svg{transform:rotate(180deg)}
.testing-task-body{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:16px;padding:0 0 18px 42px}.testing-task-body>section,.testing-task-body>aside{padding:14px 16px;background:#f8fafc;border:1px solid #e4eaf0;border-radius:8px}.testing-task-body h3{margin:0 0 9px;color:#536579;font-size:12px}.testing-task-body ol{display:grid;gap:6px;margin:0;padding-left:20px;color:#3e5063;font-size:13px;line-height:1.6}.testing-task-body>aside p{margin:0 0 12px;color:#3e5063;font-size:13px;line-height:1.65}.testing-task-actions{grid-column:1/-1;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.testing-pass{color:#176f54!important;background:#eaf7f1!important;border-color:#b9dfd0!important}.testing-issue-form{position:relative}.testing-issue-form>summary{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 11px;color:#9d4b41;background:#fff;border:1px solid #e6c7c2;border-radius:8px;cursor:pointer;font-size:12px;font-weight:700}.testing-issue-form>summary svg{width:15px}.testing-issue-form>form{display:grid;grid-template-columns:150px minmax(280px,1fr) auto auto;align-items:end;gap:10px;width:min(900px,calc(100vw - 340px));margin-top:10px;padding:14px;background:#fff8f7;border:1px solid #ecd6d2;border-radius:8px}.testing-issue-form label>span{display:block;margin-bottom:5px;color:#695b59;font-size:11px;font-weight:700}.testing-issue-form select,.testing-issue-form textarea{width:100%;min-height:38px;padding:8px 9px;color:#344054;background:#fff;border:1px solid #d8dce2;border-radius:8px;outline:0}.testing-issue-form textarea{resize:vertical;line-height:1.55}.testing-issue-form select:focus,.testing-issue-form textarea:focus{border-color:#7ea6ff;box-shadow:0 0 0 3px rgba(22,93,255,.08)}.testing-upload{display:flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:8px 10px;color:#52677d;background:#fff;border:1px dashed #aab7c4;border-radius:8px;cursor:pointer;white-space:nowrap}.testing-upload input{position:absolute;width:1px;height:1px;opacity:0}.testing-upload svg{width:15px}.testing-ticket-link{display:inline-flex;align-items:center;gap:5px;color:#2b65a1;font-size:12px;font-weight:700;text-decoration:none}.testing-ticket-link svg{width:14px}.feedback-test-badge{display:inline-flex;margin-left:6px;padding:3px 6px;color:#285f9c;background:#e9f2fb;border-radius:6px;font-size:10px;font-weight:800}
@media(max-width:1100px){.testing-issue-form>form{grid-template-columns:150px minmax(240px,1fr);width:100%}.testing-issue-form>form .button{justify-self:start}}
@media(max-width:760px){.testing-center{border-radius:8px}.testing-center-head{align-items:flex-start;flex-direction:column;padding:18px 16px}.testing-progress{width:100%}.testing-summary{align-items:flex-start;flex-wrap:wrap;padding:12px 16px}.testing-summary p{width:100%;margin:0}.testing-task-list{padding:0 16px 12px}.testing-task>details>summary{grid-template-columns:28px minmax(0,1fr) 16px;gap:9px}.testing-task>details>summary em{grid-column:2;justify-self:start}.testing-task>details>summary>svg{grid-column:3;grid-row:1}.testing-task-body{grid-template-columns:1fr;padding-left:0}.testing-task-actions{align-items:stretch;flex-direction:column}.testing-task-actions>form,.testing-task-actions>form .button,.testing-issue-form,.testing-issue-form>summary{width:100%}.testing-issue-form>summary{justify-content:center}.testing-issue-form>form{grid-template-columns:1fr;width:100%}.testing-issue-form>form .button{width:100%}.testing-upload{width:100%}}

/* 第七十八阶段：按页面修正辅助文字与交互反馈，保留角标和状态标签的紧凑尺寸。 */
/* 登录与密码找回：说明文字面向所有年龄段用户，桌面和手机统一可读。 */
.login-help-row,
.role-login-note span,
.recovery-target small,
.recovery-restart,
.wechat-login-button small { font-size: 13px; }
.auth-form label > small,
.login-provider-note { font-size: 13px; }

/* 侧栏品牌区：保持浅色体系，用背景层次和当前项指示建立识别度。 */
.sidebar-head { background: #fbfcff; box-shadow: inset 0 -1px 0 #eef1f5; }
.app-brand.school-brand em,
.organization-chip small,
.nav-group > p,
.sidebar-foot small { font-size: 12px; }
.side-nav a.active { box-shadow: inset 0 0 0 1px #dce7ff; }

/* 教师成果包：标题、数据依据和学生变化均属于正文，不使用9至11px微型字。 */
.portfolio-create-panel label,
.portfolio-editor-form label,
.portfolio-source-note,
.portfolio-history-list strong,
.portfolio-history-list p,
.portfolio-empty p,
.portfolio-document-heading p,
.portfolio-metric-grid small,
.portfolio-text-section > span small,
.portfolio-save-bar p,
.portfolio-ai-strip strong,
.portfolio-ai-strip small,
.portfolio-ai-strip em,
.portfolio-confirm-bar p,
.portfolio-student-list strong,
.portfolio-student-list small,
.portfolio-student-list em,
.portfolio-welcome > div strong,
.portfolio-welcome > div small { font-size: 12px; }
.portfolio-status,
.portfolio-student-group .panel-heading > span { font-size: 11px; }

/* 班级日常与到校签到：时间、规则和结果说明必须能直接读清。 */
.daily-anchor-nav a,
.daily-saved-state { font-size: 12px; }
.attendance-checkin-heading p,
.attendance-checkin-heading small,
.attendance-result p,
.attendance-exempt strong,
.attendance-exempt p,
.attendance-rule-line strong,
.attendance-location-rule span { font-size: 12px; }

/* 测试复盘与角色验收：流程说明提高可读性，状态角标保持紧凑。 */
.test-detail-header a,
.test-detail-header p,
.test-detail-header small,
.testing-center-title small,
.testing-progress span,
.testing-summary p,
.testing-task > details > summary small,
.testing-task-body h3,
.testing-issue-form label > span { font-size: 12px; }
.test-detail-tabs em,
.testing-task > details > summary em,
.feedback-test-badge { font-size: 11px; }

@media (max-width: 600px) {
  .sidebar-head { background: #fff; box-shadow: none; }
  .login-help-row,
  .role-login-note span,
  .recovery-target small,
  .recovery-restart,
  .wechat-login-button small { font-size: 13px; }
}

.onboarding-step-copy em { font-size: 12px; }
.school-onboarding-steps strong em { font-size: 12px; }

.subscription-plan-unavailable {
  display: grid;
  gap: 16px;
  padding: 16px 18px 18px;
}
