/* Shared operational rhythm; domain/status colours remain module-owned. */
.portal-ui .band-manager-shell { display: grid; grid-template-columns: minmax(0, 1fr); }
.portal-ui .band-manager-main { min-width: 0; }
.portal-ui .band-manager-panel { border-radius: 0; box-shadow: none; border-inline: 0; background: transparent; }
.portal-ui .band-manager-nav { position: static; border-radius: 0; box-shadow: none; }
.portal-ui .band-rules-table--points { min-width: 1080px; table-layout: fixed; }
.portal-ui .band-rules-table--points .band-rules-col--alias { width: 8%; }
.portal-ui .band-rules-table--points .band-rules-col--name { width: 28%; }
.portal-ui .band-rules-table--points .band-rules-col--range { width: 19%; }
.portal-ui .band-rules-table--points .band-rules-col--points { width: 7%; }
.portal-ui .band-rules-table--points .band-rules-col--overall { width: 21%; }
.portal-ui .band-rules-table--points .band-rules-col--action { width: 17%; }
.portal-ui .band-rules-table--points th { white-space: normal; }
.portal-ui .subject-graph-point { fill: var(--brand); }
.portal-ui .subject-graph-line { stroke: var(--brand); }
.student-report-dialog { width: min(420px, calc(100vw - 32px)); padding: 24px; border: 1px solid #d9e0e7; border-radius: 8px; text-align: center; background: white; color: #202a35; }
.student-report-dialog::backdrop { background: rgba(20, 30, 40, .5); }
.student-report-symbol { width: 42px; height: 42px; margin: 0 auto; border: 4px solid #d9e0e7; border-top-color: var(--brand); border-radius: 50%; animation: report-download-spin 1s linear infinite; }
.student-report-dialog:is(.is-ready, .is-error) .student-report-symbol { animation: none; border: 0; display: grid; place-items: center; background: #dcfce7; color: #166534; font-size: 26px; }
.student-report-dialog.is-ready .student-report-symbol::after { content: '\2713'; }
.student-report-dialog.is-error .student-report-symbol { background: #fee2e2; color: #991b1b; }
.student-report-dialog.is-error .student-report-symbol::after { content: '!'; }
@keyframes report-download-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .student-report-symbol { animation: none; } }
@media (max-width: 720px) {
  .portal-ui .band-rules-table-wrap { overflow-x: auto; }
  .portal-ui .band-rules-table { display: table !important; min-width: 1080px !important; width: 1080px !important; }
  .portal-ui .band-rules-table thead { display: table-header-group !important; }
  .portal-ui .band-rules-table tbody { display: table-row-group !important; }
  .portal-ui .band-rules-table tr { display: table-row !important; margin: 0; border: 0; box-shadow: none; }
  .portal-ui .band-rules-table :is(th, td) { display: table-cell !important; padding: 10px; }
  .portal-ui .band-rules-table td::before { display: none !important; }
  .portal-ui .score-table { min-width: 360px; table-layout: fixed; }
  .portal-ui .score-table:has(.score-col-points) { min-width: 420px; }
  .portal-ui .score-table :is(td, th) { white-space: normal; overflow-wrap: anywhere; }
  .portal-ui .score-col-subject { width: 40%; }
  .portal-ui .score-col-score { width: 22%; }
  .portal-ui .score-col-points { width: 18%; }
  .portal-ui .score-table:has(.score-col-points) th:nth-child(3) { white-space: nowrap; }
}
.portal-ui {
  --portal-radius: 8px;
  --portal-line: #d9e0e7;
  --portal-ink: #202a35;
  background: #f5f7fa;
  color: var(--portal-ink);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.5;
}
.portal-ui :where(button, input, select, textarea, a, [tabindex]):focus-visible {
  outline: 3px solid var(--brand);
  outline-offset: 3px;
}
.portal-ui :where(button, input, select, textarea) {
  font: inherit;
  max-width: 100%;
}
.portal-ui :where(button, .btn, .button, .tt-btn, .student-home-action) {
  min-height: 40px;
}
.portal-ui :where(button:disabled, input:disabled, select:disabled) {
  cursor: not-allowed;
}
.portal-ui :where(h1, h2, h3, .brand, .panel__title) {
  font-family: inherit;
  letter-spacing: 0;
  overflow-wrap: anywhere;
}
.portal-ui :where(.admin-page-hero, .teacher-home-hero, .student-hero, .student-home-panel) {
  border-radius: 0;
  box-shadow: none;
  padding: 20px 0;
  background: transparent;
  color: var(--portal-ink);
  border: 0;
  border-bottom: 1px solid var(--portal-line);
}
.portal-ui :where(.admin-page-hero, .teacher-home-hero, .student-hero, .student-home-head) h2 {
  font-size: 26px;
  line-height: 1.25;
  color: var(--brand-dark);
}
.portal-ui :where(.teacher-home-card, .student-action-card, .student-result-card, .student-home-action) {
  border-radius: var(--portal-radius);
}
.portal-ui :where(.table-wrap, .student-table-wrap, .settings-table-wrap, .student-detail-table-wrap) {
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
}
.portal-ui :where(.registry-table, .data-table, .table) :where(th, td) {
  vertical-align: top;
}
.portal-ui :where(.admin-page-actions, .tt-card-head-actions, .panel__head) {
  flex-wrap: wrap;
  gap: 10px;
}
.portal-ui :where(.teacher-home, .student-dashboard, .dashboard-grid, .tt-main, .page__inner) {
  min-width: 0;
}
.portal-ui .tt-app {
  --tt-radius-lg: 8px;
  --tt-radius-md: 6px;
}
.portal-ui .tt-section-head {
  border-radius: 0;
  box-shadow: none;
}
.portal-ui .tt-section-head h2 { font-size: 24px; letter-spacing: 0; }
.portal-ui .tt-dash-hero {
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--portal-line);
}
.portal-ui .tt-dash-hero h1 { font-size: 26px; line-height: 1.3; }
.portal-ui #exams-tabs { border-radius: 0; box-shadow: none; border: 0; padding-inline: 0; }
.portal-ui #exams-tabs .tab-panel[hidden] { display: none; }
.portal-ui #exams-tabs form label { display: grid; gap: 6px; min-width: 0; }
.finance-ui .panel {
  border-radius: 0;
  box-shadow: none;
  border-inline: 0;
  border-top: 0;
  border-bottom: 1px solid var(--portal-line);
}
.finance-ui .panel__title { font-size: 20px; line-height: 1.3; }
.student-exams-table { min-width: 0; overflow-x: auto; }
.student-assessment-table { min-width: 1100px; table-layout: fixed; }
.student-assessment-col--assessment { width: 21%; }
.student-assessment-col--term { width: 9%; }
.student-assessment-col--total { width: 10%; }
.student-assessment-col--average { width: 11%; }
.student-assessment-col--competency { width: 15%; }
.student-assessment-col--benchmark { width: 14%; }
.student-assessment-col--action { width: 9%; }
.student-assessment-col--report { width: 11%; }
.student-assessment-table :where(.student-assessment-number-cell, .student-assessment-number-heading) { text-align: center; font-variant-numeric: tabular-nums; }
.student-assessment-table .student-assessment-number-heading { white-space: normal; overflow-wrap: normal; line-height: 1.4; }
.student-assessment-table .student-assessment-number-cell { font-weight: 700; color: var(--brand-dark); }
.comment-work-toolbar { display: flex; flex-wrap: wrap; flex-shrink: 0; align-items: flex-end; gap: 8px; padding: 10px 18px; border-bottom: 1px solid #e2e8f0; }
.comment-work-toolbar label { display: grid; gap: 4px; font-size: 12px; flex: 1 1 130px; min-width: 0; }
.comment-work-toolbar select { width: 100%; min-width: 0; font-size: 16px; }
.comment-card__header > div { min-width: 0; overflow-wrap: anywhere; }
.comment-card__header .comment-status { flex-shrink: 0; }
.comment-card__summary { display: flex; flex-wrap: wrap; gap: 6px; }
.comment-card__summary > span { flex: 1 1 70px; padding: 7px 9px; border-bottom: 1px solid #e2e8f0; }
.comment-card__summary small { display: block; color: #64748b; font-size: 11px; }
.comment-card__summary strong { font-size: 15px; font-variant-numeric: tabular-nums; }
.comment-score__band { grid-column: 1 / -1; color: #64748b; font-size: 11px; }
.comment-card { min-width: 0; }
.comment-card textarea { box-sizing: border-box; min-height: 80px; font-size: 16px; }
@media (max-width: 480px) {
  .comment-modal__body { padding: 10px 10px 0; }
  .comment-card { padding: 10px; }
  .comment-card__subject-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 110px), 1fr)); }
}
.merit-analytics-actions :is(.merit-pdf-options, .merit-pdf-download) {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin: 0; padding: 0; min-width: 0;
}
:is(.merit-pdf-options, .merit-pdf-download) label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
:is(.merit-pdf-options, .merit-pdf-download) input[type=checkbox] { width: 16px; height: 16px; margin: 0; }
:is(.merit-pdf-options, .merit-pdf-download) button { width: auto; min-height: 34px; padding: 6px 12px; font-size: 13px; }
@media (max-width: 720px) {
  .portal-ui :where(.admin-page-hero, .teacher-home-hero, .student-hero, .student-home-head) h2 {
    font-size: 22px;
  }
  .portal-ui :where(.teacher-profile, .student-home-head, .tt-card-head) {
    flex-wrap: wrap;
    gap: 12px;
  }
  .portal-ui :where(.admin-page-actions, .tt-card-head-actions) {
    max-width: 100%;
  }
  .portal-ui :where(.registry-table, .data-table, .table) { font-size: 14px; }
  .portal-ui :where(input, select, textarea) { font-size: 16px; }
}
