/* Canonical neutral text roles. Status chips, actions, charts and dark headers keep their own colors. */
:root {
  --text-title: #245c55;
  --text-label: #79572f;
  --text-value: #253642;
  --text-support: #5c696b;
}

body, .board-modal, .center-shell, .personnel-dialog, .assigned-dialog, .account-shell, .receipt-shell { color: var(--text-value); }

/* Light-surface page, section and dialog headings. */
:is(.board-hero,.board-modal-head,.center-hero,.center-panel>header,.panel-head,.personnel-dialog>header,.hazard-ledger-title,.personal-section-head,.assigned-dialog-head,.account-shell>header,.account-shell>.card,.receipt-shell,.entry) :is(h1,h2,h3),
.hazard-record-dialog .hazard-detail h3,
.todo-hub-main h3,
.student-score-teaching-group>header h3,
.student-score-group>header :is(h3,h4),
.quality-assessment-panel>header h3,
.performance-ledger-panel>header h3,
.jz-ledger-panel>header h3,
.monthly-report-panel>header h3,
.monthly-report-card>header h4,
.student-recent-scores h3,
.dorm-group-section>header h2,
.dorm-teacher-card>header strong,
.assigned-dialog [data-assigned-detail]>h3 {
  color: var(--text-title);
}

/* Field names, metadata captions and light table column headings. */
:is(.board-detail-meta,.todo-hub-meta)>div>span,
.board-detail-meta>div>span,
.todo-hub-meta>span,
.hazard-record-dialog .hazard-detail-grid span,
.hazard-record-dialog .hazard-detail-copy span,
.hazard-detail-grid span,
.hazard-detail-copy span,
:is(.board-instructor-config,.board-automation-status,.license-reminder-head)>div>span,
.personal-score>span,
.jz-ledger-stats span,
.student-detail-intro>span,
:is(.student-score-picker-summary,.performance-item-picker-summary,.jz-item-picker-summary)>div>span,
:is(.personnel-dialog,.assigned-dialog,.account-shell,.receipt-shell,.entry,.user-form,.handover-form,.plan-form,.student-score-form,.student-quick-grid,.jz-entry-form,.performance-entry-form,.performance-export-fields,.quality-metric-grid,.quality-rule-fields,.quality-custom-fields,.quality-summary-toolbar,.supervision-filters,.hazard-edit-dialog .hazard-form,.hazard-ledger-filters) label,
:is(.personnel-dialog,.assigned-dialog,.user-fieldset) legend,
:is(.hazard-table,.center-table,.ledger-table-scroll,.student-score-table,.performance-table,.quality-summary-table,.monthly-report-archive-table,.assigned-table,.assigned-scene-table) th {
  color: var(--text-label);
}

/* Readable facts, dates, names and prose stay separate from the field name. */
.hazard-record-dialog .hazard-detail-grid b,
.hazard-record-dialog .hazard-detail-copy p,
.hazard-detail-grid b,
.hazard-detail-copy p,
.board-detail-meta>div>b,
.todo-hub-meta>b,
.todo-hub-main>p,
:is(.board-instructor-config,.board-automation-status,.license-reminder-head)>div>b,
.personal-score>strong,
.board-card-copy,
.assigned-copy,
:is(.handling-shell,.receipt-shell) #taskContent,
:is(.student-score-picker-summary,.performance-item-picker-summary,.jz-item-picker-summary)>div>strong,
:is(.personnel-dialog,.assigned-dialog,.account-shell,.receipt-shell,.entry,.board-modal,.center-shell,.hazard-form) :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
:is(.student-score-option,.performance-picker-option,.jz-picker-option)>label:first-child {
  color: var(--text-value);
}

/* Supporting prose only: never overwrite live status or validation colors. */
.board-modal-head p,
.board-card-meta,
.hazard-detail-code,
.hazard-ledger-title p,
.hazard-source-archive small,
.board-inline-note,
.center-note,
.personal-note,
.personal-section-head>span,
.personal-score p,
.student-quick-optional,
.student-score-teaching-group>header>span,
.student-score-group>header>span,
:is(.student-score-picker-summary,.performance-item-picker-summary,.jz-item-picker-summary)>div>small,
:is(.account-shell,.assigned-dialog,.receipt-shell,.entry) input::placeholder,
:is(.personnel-dialog,.board-modal,.center-shell,.hazard-form) :is(input,textarea)::placeholder {
  color: var(--text-support);
}

/* Neutral prose/data cells and inline field names in student record details. */
:is(.hazard-table,.center-table,.ledger-table-scroll,.student-score-table,.performance-table,.quality-summary-table,.monthly-report-archive-table) td,
.student-score-events>div>span,
.student-score-wide-details .student-score-events b,
.board-process-note { color: var(--text-value); }
.student-score-events .text-field-label,
.student-score-wide-details .student-score-events .text-field-label { display:inline; color: var(--text-label); font-weight:600; }
