:root {
  --green-950: #2f3c4c;
  --green-900: #36485a;
  --green-800: #45586c;
  --green-700: #566476;
  --green-100: #e8f9fa;
  --orange-600: #ed6e31;
  --orange-500: #fd8549;
  --orange-100: #fff1ea;
  --cyan-500: #8ae0e5;
  --cyan-100: #e8f9fa;
  --cream: #f6fdfe;
  --white: #ffffff;
  --ink: #2f3c4c;
  --muted: #566476;
  --border: #e9eaec;
  --danger: #b42318;
  --danger-bg: #fff1f0;
  --success: #26734d;
  --success-bg: #ebf7f0;
  --shadow: 0 12px 34px rgba(47, 60, 76, .09);
  --radius: 14px;
}

* { box-sizing: border-box; }
html { font-size: 16px; }
body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: "Nunito Sans", Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.5;
}
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, .btn { cursor: pointer; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 258px 1fr; }
.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 24px 18px max(24px, env(safe-area-inset-bottom));
  color: #fff;
  background: linear-gradient(180deg, var(--green-950), var(--green-900));
}
.sidebar-brand { display: flex; flex: 0 0 auto; align-items: center; gap: 12px; padding: 0 8px 24px; border-bottom: 1px solid rgba(255,255,255,.12); }
.sidebar-brand strong, .sidebar-brand small { display: block; }
.sidebar-brand strong { letter-spacing: .01em; }
.sidebar-brand small { color: rgba(255,255,255,.65); font-size: .78rem; margin-top: 1px; }
.brand-logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 52px;
  height: 55px;
}
.brand-logo img { display: block; width: 100%; height: 100%; object-fit: contain; }
.sidebar-brand .brand-logo {
  padding: 5px;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 8px 20px rgba(15,27,39,.18);
}
.nav-list {
  display: grid;
  flex: 1 1 auto;
  align-content: start;
  gap: 5px;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 24px 4px 24px 0;
  scrollbar-color: rgba(255,255,255,.28) transparent;
  scrollbar-width: thin;
}
.nav-list::-webkit-scrollbar { width: 7px; }
.nav-list::-webkit-scrollbar-track { background: transparent; }
.nav-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,.28); border-radius: 999px; }
.nav-list::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.42); }
.nav-list a { display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: 10px; color: rgba(255,255,255,.76); font-size: .92rem; }
.nav-list a:hover, .nav-list a.is-active { color: #fff; background: rgba(138,224,229,.14); }
.nav-icon { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 8px; background: rgba(255,255,255,.08); font-size: .74rem; font-weight: 800; }
.nav-list a.is-active .nav-icon { color: var(--green-950); background: var(--cyan-500); }
.sidebar-foot { flex: 0 0 auto; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.12); }
.user-chip { display: flex; align-items: center; gap: 10px; }
.user-chip strong, .user-chip small { display: block; }
.user-chip strong { font-size: .86rem; }
.user-chip small { color: rgba(255,255,255,.58); font-size: .72rem; }
.avatar { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: var(--green-950); background: #fff; font-size: .8rem; font-weight: 800; }
.link-button { display: block; border: 0; background: transparent; color: rgba(255,255,255,.7); padding: 12px 0 0 44px; font-size: .8rem; }
.link-button:hover { color: #fff; }

.main-area { min-width: 0; }
.topbar { min-height: 96px; display: flex; align-items: center; gap: 18px; padding: 22px 34px; background: rgba(255,255,255,.88); border-bottom: 1px solid var(--border); backdrop-filter: blur(8px); }
.topbar h1 { margin: 1px 0 0; font-family: "Be Vietnam Pro", Inter, ui-sans-serif, sans-serif; font-size: 1.55rem; letter-spacing: -.025em; }
.eyebrow { margin: 0; color: var(--orange-600); font-size: .7rem; letter-spacing: .14em; font-weight: 800; }
.topbar-date { margin-left: auto; color: var(--muted); font-size: .85rem; }
.menu-button { display: none; border: 0; background: var(--green-100); color: var(--green-900); border-radius: 9px; padding: 8px 10px; }
.page-content { padding: 30px 34px 48px; }

.page-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.page-actions .muted { margin: 0; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 40px; padding: 9px 15px; border: 1px solid transparent; border-radius: 9px; font-weight: 700; font-size: .86rem; }
.btn-primary { color: #fff; background: var(--orange-500); }
.btn-primary:hover { background: var(--orange-600); }
.btn-secondary { color: var(--green-900); background: #fff; border-color: var(--border); }
.btn-secondary:hover { border-color: var(--green-700); }
.btn-danger { color: var(--danger); background: var(--danger-bg); border-color: #ffd2ce; }
.btn-small { min-height: 32px; padding: 6px 10px; font-size: .78rem; }
.btn-wide { width: 100%; }

.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 24px; }
.stat-card { position: relative; overflow: hidden; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); }
.stat-card::after { content: ""; position: absolute; right: -22px; bottom: -28px; width: 88px; height: 88px; border-radius: 50%; background: var(--cyan-100); }
.stat-card.orange::after { background: var(--orange-100); }
.stat-card span { display: block; color: var(--muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.stat-card strong { display: block; margin-top: 6px; color: var(--green-950); font-size: 1.75rem; letter-spacing: -.04em; }
.stat-card small { color: var(--muted); font-size: .76rem; }

.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 20px; border-bottom: 1px solid var(--border); }
.card-head h2, .card-head h3 { margin: 0; font-size: 1rem; }
.card-body { padding: 20px; }
.settings-form-stack { display: grid; gap: 20px; }
.branding-settings-grid { display: grid; grid-template-columns: minmax(0,1.4fr) minmax(280px,.8fr); gap: 28px; }
.logo-upload-panel { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 22px; }
.school-logo-preview { height: 130px; display: grid; place-items: center; padding: 14px; background: #f8fcfd; border: 1px solid var(--border); border-radius: 14px; }
.school-logo-preview img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }
.colour-settings { display: grid; gap: 12px; }
.principal-signature-settings { grid-column: 1 / -1; display: grid; grid-template-columns: 220px minmax(0,1fr); align-items: center; gap: 22px; padding-top: 18px; border-top: 1px solid var(--border); }
.principal-signature-preview { height: 100px; display: grid; place-items: center; padding: 10px 14px; background: #fff; border: 1px solid var(--border); border-radius: 12px; }
.principal-signature-preview img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }
.colour-input { display: flex; align-items: center; gap: 12px; min-height: 50px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 9px; background: #fff; }
.colour-input input { width: 56px; height: 34px; padding: 0; border: 0; background: transparent; }
.colour-input code { color: var(--muted); }
.numbering-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.numbering-grid fieldset { display: grid; gap: 13px; margin: 0; padding: 20px; border: 1px solid var(--border); border-radius: 12px; }
.numbering-grid legend { padding: 0 8px; font-weight: 800; }
.numbering-grid .check-row { grid-template-columns: auto 1fr; justify-content: start; align-items: center; }
.number-preview { margin: 2px 0 0; padding: 12px; background: var(--green-100); border-radius: 9px; color: var(--green-900); }
.section-subtitle { margin: 26px 0 14px; font-size: 1rem; }
.prefix-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.sticky-save { position: sticky; bottom: 18px; z-index: 10; justify-content: flex-end; padding: 14px; background: rgba(255,255,255,.94); border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow); }

.table-wrap { overflow-x: auto; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--border); vertical-align: middle; }
th { color: var(--muted); background: #f8fcfd; font-size: .72rem; letter-spacing: .055em; text-transform: uppercase; }
td { font-size: .86rem; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #f5fcfd; }
.text-right { text-align: right; }
.text-center { text-align: center; }
.amount-positive { color: var(--success); font-weight: 700; }
.amount-negative { color: var(--danger); font-weight: 700; }

.badge { display: inline-flex; align-items: center; min-height: 25px; padding: 3px 9px; border-radius: 999px; background: #edf1ef; color: #47524d; font-size: .72rem; font-weight: 700; }
.badge-success { color: var(--success); background: var(--success-bg); }
.badge-warning { color: #8a4b08; background: #fff4dd; }
.badge-danger { color: var(--danger); background: var(--danger-bg); }
.badge-info { color: #295f86; background: #eaf5fb; }

.form-card { max-width: 980px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px 20px; }
.form-grid h2, .form-grid .form-section { grid-column: 1 / -1; }
.form-grid h2 { margin: 15px 0 0; padding-top: 15px; border-top: 1px solid var(--border); font-size: 1rem; }
.form-grid h2:first-of-type { margin-top: 0; padding-top: 0; border-top: 0; }
label { display: grid; gap: 6px; color: var(--green-900); font-size: .82rem; font-weight: 700; }
label small { color: var(--muted); font-weight: 400; }
[data-homework-only][hidden], [data-school-class][hidden] { display: none; }
input, select, textarea { width: 100%; border: 1px solid #d4dce3; border-radius: 9px; background: #fff; color: var(--ink); padding: 10px 11px; outline: none; }
input:focus, select:focus, textarea:focus { border-color: var(--orange-500); box-shadow: 0 0 0 3px rgba(253,133,73,.18); }
input[type="checkbox"], input[type="radio"] { flex: 0 0 18px; width: 18px; min-width: 18px; height: 18px; margin: 0; padding: 0; border-radius: 4px; accent-color: var(--orange-500); box-shadow: none; }
input[type="radio"] { border-radius: 50%; }
.date-input { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.date-picker-field { position: relative; display: block; width: 100%; min-width: 0; }
.date-picker-field > .date-input { padding-right: 50px; }
.date-picker-icon { position: absolute; z-index: 1; top: 1px; right: 1px; bottom: 1px; display: grid; width: 44px; place-items: center; border-left: 1px solid #e2e7eb; border-radius: 0 8px 8px 0; background: #fff; color: var(--green-900); pointer-events: none; }
.date-picker-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.date-picker-native { position: absolute; z-index: 2; top: 1px; right: 1px; bottom: 1px; width: 44px; height: auto; margin: 0; padding: 0; border: 0 !important; outline: 0 !important; box-shadow: none !important; border-radius: 0 8px 8px 0; background: transparent !important; color: transparent; opacity: 0; appearance: none; -webkit-appearance: none; -moz-appearance: none; cursor: pointer; }
.date-picker-native::-webkit-calendar-picker-indicator { width: 100%; height: 100%; margin: 0; padding: 0; cursor: pointer; }
.date-picker-field:focus-within > .date-picker-icon { color: var(--orange-600); }
textarea { min-height: 100px; resize: vertical; }
.field-full { grid-column: 1 / -1; }
.checkbox-field { display: flex; align-items: center; gap: 8px; }
.checkbox-field input { width: 18px; }
.form-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 9px; padding-top: 8px; }
.filter-bar { display: grid; grid-template-columns: minmax(220px, 1fr) repeat(2, minmax(150px, 220px)) auto; gap: 10px; margin-bottom: 16px; }
.learner-filter-bar { grid-template-columns: minmax(220px, 1fr) repeat(3, minmax(145px, 210px)) auto; }
.hr-filter-bar { grid-template-columns: minmax(280px, 420px) 180px 220px auto; justify-content: start; align-items: end; }
.day-visitor-filter-bar { grid-template-columns: 180px 180px 210px auto auto; justify-content: start; align-items: end; }
.legal-filter-bar { grid-template-columns: 180px 260px auto; justify-content: start; align-items: end; }
.day-visit-capture-form { grid-template-columns: repeat(2, minmax(260px, 420px)); justify-content: start; max-width: 880px; }
.law-firm-form { grid-template-columns: repeat(2, minmax(260px, 400px)); justify-content: start; max-width: 840px; }
.compact-inline-form { display: grid; grid-template-columns: minmax(260px, 420px) auto; align-items: end; justify-content: start; gap: 10px; }
.legal-import-action { display: grid; grid-template-columns: minmax(150px, 210px) auto; gap: 8px; align-items: center; justify-content: end; }
.legal-import-action select { min-height: 32px; padding: 6px 9px; font-size: .78rem; }
.learner-checks { display: flex; flex-wrap: wrap; gap: 4px; }
.reverse-control { position: relative; min-width: 92px; }
.reverse-control summary { cursor: pointer; color: var(--danger); font-size: .78rem; font-weight: 800; list-style: none; }
.reverse-control summary::-webkit-details-marker { display: none; }
.reverse-control form { position: absolute; z-index: 8; right: 0; top: 26px; display: grid; gap: 8px; width: 230px; padding: 12px; background: #fff; border: 1px solid #ffd2ce; border-radius: 10px; box-shadow: var(--shadow); }
.reverse-control input { min-width: 0; }
.class-editor { position: relative; display: inline-block; text-align: left; }
.class-editor > summary { list-style: none; }
.class-editor > summary::-webkit-details-marker { display: none; }
.class-editor > form { position: absolute; z-index: 12; top: 38px; right: 0; width: min(640px, 82vw); padding: 18px; background: #fff; border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow); }
.homework-class-create { display: block; min-width: 0; max-width: 100%; }
.homework-class-create > summary { display: inline-flex; list-style: none; }
.homework-class-create > summary::-webkit-details-marker { display: none; }
.homework-class-create > form { position: static; width: 100%; min-width: 0; max-width: 100%; margin-top: 16px; padding: 18px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.inline-delete { display: inline-block; margin-left: 5px; }
.statement-actions { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.dashboard-payments, .attendance-by-class { grid-column: 1 / -1; }
.dashboard-stats { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.dashboard-stats.dashboard-stats-compact { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dashboard-stats .stat-card { padding: 18px; }
.dashboard-stats .stat-card strong { font-size: clamp(1.35rem, 1.7vw, 1.75rem); }
.dashboard-chart-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(310px, .85fr); gap: 20px; margin-bottom: 20px; }
.dashboard-chart-grid-balanced { grid-template-columns: minmax(330px, .9fr) minmax(0, 1.35fr); }
.dashboard-chart-grid.dashboard-single-card { grid-template-columns: minmax(0, 1fr); }
.dashboard-chart-card { min-width: 0; }
.dashboard-chart-card .card-head { align-items: flex-start; }
.billing-mode-toggle { display: inline-flex; align-items: center; gap: 8px; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; font-weight: inherit; cursor: pointer; text-align: left; }
.billing-mode-toggle:hover { color: var(--green-900); }
.billing-mode-toggle:focus-visible { outline: 2px solid var(--cyan-500); outline-offset: 4px; border-radius: 2px; }
.billing-mode-toggle span { font-size: .7em; color: var(--green-900); }
.billing-mode-label { display: block; margin-top: 5px; color: var(--muted); }
.chart-summary { display: flex; flex-wrap: wrap; gap: 10px 24px; margin-bottom: 18px; }
.chart-summary > span { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: .8rem; }
.chart-summary strong { color: var(--ink); }
.legend-swatch { display: inline-block; width: 11px; height: 11px; border-radius: 3px; }
.legend-swatch.billed, .billing-bar.billed { background: var(--green-900); }
.legend-swatch.paid, .billing-bar.paid { background: var(--cyan-500); }
.billing-chart { display: grid; grid-template-columns: repeat(6, minmax(48px, 1fr)); align-items: end; gap: 12px; height: 225px; padding: 14px 10px 0; border-bottom: 1px solid #cfd8dd; background: repeating-linear-gradient(to bottom, transparent 0, transparent 49px, #edf1f3 50px); }
.billing-month { display: grid; grid-template-rows: 180px auto; align-items: end; gap: 7px; height: 100%; text-align: center; }
.billing-month > strong { color: var(--muted); font-size: .75rem; }
.billing-bars { display: flex; align-items: end; justify-content: center; gap: 5px; height: 100%; }
.billing-bar { position: relative; display: block; width: min(30%, 28px); min-width: 12px; border-radius: 5px 5px 0 0; transition: filter .15s ease, transform .15s ease; }
.billing-bar:hover { z-index: 4; filter: brightness(.94); transform: scaleX(1.08); }
.billing-bar:hover::after { content: attr(data-value); position: absolute; z-index: 6; left: 50%; bottom: calc(100% + 7px); transform: translateX(-50%); padding: 5px 8px; color: #fff; background: var(--green-950); border-radius: 6px; box-shadow: var(--shadow); font-size: .7rem; font-weight: 800; white-space: nowrap; }
.chart-note { margin: 12px 0 0; text-align: center; }
.account-health-body { display: grid; justify-items: center; gap: 18px; }
.account-age-donut { position: relative; display: grid; place-items: center; width: 198px; height: 198px; border-radius: 50%; background: conic-gradient(#69c8c9 0 var(--current-end), #f0df78 var(--current-end) var(--age30-end), #f2bd75 var(--age30-end) var(--age60-end), #e88f7f var(--age60-end) var(--age90-end), #ad6d79 var(--age90-end) 100%); }
.account-age-donut.is-empty { background: #e6edef; }
.account-age-donut::after { content: ""; position: absolute; width: 122px; height: 122px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1px var(--border); }
.account-age-donut > div { position: relative; z-index: 1; max-width: 108px; text-align: center; }
.account-age-donut strong, .account-age-donut span { display: block; }
.account-age-donut strong { font-size: 1rem; line-height: 1.2; }
.account-age-donut span { margin-top: 4px; color: var(--muted); font-size: .67rem; text-transform: uppercase; letter-spacing: .06em; }
.account-health-legend { width: 100%; display: grid; gap: 7px; }
.account-health-legend > div { display: grid; grid-template-columns: 12px 1fr auto; align-items: center; gap: 8px; font-size: .8rem; }
.health-dot { width: 10px; height: 10px; border-radius: 50%; }
.health-dot.current { background: #69c8c9; }
.health-dot.age30 { background: #f0df78; }
.health-dot.age60 { background: #f2bd75; }
.health-dot.age90 { background: #e88f7f; }
.health-dot.age120 { background: #ad6d79; }
.account-age-legend strong { font-variant-numeric: tabular-nums; }
.health-money { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.health-money span { padding: 11px; color: var(--muted); background: #f8fcfd; border-radius: 9px; font-size: .7rem; }
.health-money strong { display: block; margin-top: 3px; color: var(--ink); font-size: .82rem; }
.attendance-total { display: flex; align-items: baseline; gap: 9px; margin-bottom: 13px; }
.attendance-total strong { font-size: 1.85rem; }
.attendance-total span { color: var(--muted); font-size: .8rem; }
.attendance-stack { display: flex; overflow: hidden; width: 100%; height: 14px; margin-bottom: 13px; background: #edf1f3; border-radius: 999px; }
.attendance-stack span { display: block; min-width: 0; }
.attendance-stack .present, .attendance-legend i.present { background: var(--success); }
.attendance-stack .absent, .attendance-legend i.absent { background: var(--danger); }
.attendance-stack .late, .attendance-legend i.late { background: var(--orange-500); }
.attendance-stack .excused, .attendance-legend i.excused { background: var(--cyan-500); }
.attendance-stack .not-captured, .attendance-legend i.not-captured { background: #d8e0e4; }
.attendance-legend { display: flex; flex-wrap: wrap; gap: 7px 14px; margin-bottom: 18px; }
.attendance-legend span { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-size: .72rem; }
.attendance-legend i { width: 8px; height: 8px; border-radius: 50%; }
.attendance-legend strong { color: var(--ink); }
.attendance-page-actions h2 { margin: 4px 0 6px; }
.attendance-page-actions p:last-child { margin: 0; }
.attendance-filter-bar { grid-template-columns: minmax(250px, 300px) auto; justify-content: start; align-items: center; margin-bottom: 22px; }
.attendance-register-filter { grid-template-columns: minmax(200px, 1fr) minmax(250px, 300px) auto auto; }
.attendance-date-nav { display: grid; grid-template-columns: 42px minmax(0, 1fr) 42px; gap: 7px; align-items: center; }
.attendance-day-button { padding: 8px; font-size: 1.25rem; line-height: 1.2; min-height: 40px; }
.attendance-class-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: 20px; }
.attendance-class-card { display: block; min-width: 0; color: var(--ink); transition: border-color .15s, box-shadow .15s; }
.attendance-class-card:hover, .attendance-class-card:focus-visible { border-color: var(--green-800); box-shadow: 0 5px 18px rgba(16,47,39,.12); outline: 2px solid var(--green-800); outline-offset: 2px; }
.attendance-class-card .card-head { align-items: start; gap: 12px; }
.attendance-class-card .card-head h2 { overflow-wrap: anywhere; }
.attendance-class-card .badge { flex-shrink: 0; }
.attendance-class-card .attendance-total { margin-bottom: 13px; }
.attendance-class-card .attendance-legend { margin-bottom: 16px; }
.attendance-class-open { color: var(--green-800); font-size: .8rem; font-weight: 800; }
@media (max-width: 1100px) {
  .attendance-register-filter { grid-template-columns: minmax(200px, 1fr) minmax(250px, 300px); }
}
@media (max-width: 700px) {
  .filter-bar.attendance-filter-bar { grid-template-columns: 1fr; width: 100%; }
  .attendance-class-grid { grid-template-columns: 1fr; gap: 16px; }
}
.attention-list { display: grid; gap: 7px; padding-top: 15px; border-top: 1px solid var(--border); }
.attention-list a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 10px; background: #f8fcfd; border-radius: 8px; font-size: .78rem; }
.attention-list a:hover { background: var(--cyan-100); }
.attention-list strong { display: grid; place-items: center; min-width: 27px; height: 27px; padding: 0 7px; color: var(--green-950); background: #fff; border: 1px solid var(--border); border-radius: 999px; }
.class-size-list { display: grid; gap: 12px; }
.class-size-row { display: grid; grid-template-columns: minmax(135px, .8fr) minmax(140px, 1.5fr) 34px; align-items: center; gap: 12px; font-size: .78rem; }
.class-size-row > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.class-size-row > div { overflow: hidden; height: 10px; background: #eef2f3; border-radius: 999px; }
.class-size-row i { display: block; height: 100%; background: linear-gradient(90deg, var(--green-800), var(--cyan-500)); border-radius: inherit; }
.class-size-row > strong { text-align: right; }
.dashboard-detail-grid { margin-top: 20px; }
.dashboard-birthdays { margin-top: 20px; }
.birthday-date { display: inline-flex; min-width: 56px; justify-content: center; padding: 5px 8px; color: var(--green-950); background: var(--cyan-100); border-radius: 999px; font-weight: 800; }

.report-section { margin-bottom: 28px; }
.report-section-title { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.report-section-title h2 { margin: 2px 0; }
.report-section-icon { display: grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; color: var(--green-950); background: var(--cyan-500); border-radius: 13px; box-shadow: 0 8px 20px rgba(18,60,51,.1); font-size: 1.15rem; font-weight: 900; }
.report-section-icon.orange { color: #fff; background: var(--orange-500); }
.report-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.report-card { display: grid; grid-template-columns: minmax(190px, .75fr) minmax(260px, 1.25fr); align-items: start; gap: 20px; min-width: 0; padding: 20px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.report-card-wide { grid-column: 1 / -1; grid-template-columns: minmax(200px, .55fr) minmax(0, 1.45fr); }
.report-card h3 { margin: 0 0 6px; }
.report-card p { margin: 0; color: var(--muted); font-size: .8rem; line-height: 1.45; }
.report-form { display: grid; gap: 10px; min-width: 0; }
.report-form-wide { grid-template-columns: repeat(3, minmax(150px, 1fr)) auto; align-items: end; }
.report-form-wide .checkbox-field { align-self: center; }
.report-form .btn { justify-self: end; }
.report-action-row { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 9px; }
.report-print { padding: 28px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.report-print-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 2px solid var(--green-900); }
.report-print-head .brand-logo { width: 68px; height: 72px; margin-bottom: 8px; }
.report-print-head h2 { margin: 4px 0 0; }
.report-print-head .text-right strong, .report-print-head .text-right span { display: block; }
.report-print-table { border-radius: 8px; box-shadow: none; }
.report-print-table th, .report-print-table td { font-size: .76rem; }

.alert { position: relative; margin-bottom: 18px; padding: 12px 44px 12px 14px; border: 1px solid; border-radius: 10px; font-size: .86rem; }
.alert-success { color: var(--success); background: var(--success-bg); border-color: #c6e7d3; }
.alert-error { color: var(--danger); background: var(--danger-bg); border-color: #ffd2ce; }
.alert-info { color: #295f86; background: #eaf5fb; border-color: #cce5f2; }
.alert button { position: absolute; top: 7px; right: 10px; border: 0; background: transparent; color: inherit; font-size: 1.2rem; }
.muted { color: var(--muted); }
.help-text { color: var(--muted); font-size: .78rem; }
.empty-state { max-width: 540px; margin: 60px auto; padding: 34px; text-align: center; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.empty-state h1 { margin: 14px 0 8px; }
.empty-icon { display: grid; place-items: center; width: 54px; height: 54px; margin: auto; border-radius: 50%; background: var(--orange-100); color: var(--orange-600); font-size: 1.4rem; font-weight: 900; }

.profile-head { display: flex; align-items: center; gap: 18px; margin-bottom: 20px; }
.profile-badge { display: grid; place-items: center; width: 62px; height: 62px; border-radius: 16px; background: var(--cyan-100); color: var(--green-900); font-size: 1.3rem; font-weight: 900; }
.profile-head h2 { margin: 0; }
.profile-head p { margin: 3px 0 0; color: var(--muted); }
.detail-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 24px; }
.detail-item span { display: block; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; }
.detail-item strong { display: block; margin-top: 3px; font-size: .9rem; }

.user-detail-grid { display: grid; grid-template-columns: minmax(300px, .8fr) minmax(440px, 1.2fr); align-items: start; gap: 20px; }
.user-detail-grid .form-actions { padding-top: 2px; }
.role-list { display: grid; gap: 12px; }
.role-row { display: grid; grid-template-columns: 50px minmax(240px, 1fr) 90px 100px minmax(150px, auto); align-items: center; gap: 16px; padding: 17px 19px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.role-mark { display: grid; place-items: center; width: 46px; height: 46px; color: var(--green-950); background: var(--cyan-100); border-radius: 12px; font-weight: 900; }
.role-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.role-main h2 { margin: 0; font-size: 1rem; }
.role-main p { margin: 3px 0 0; color: var(--muted); font-size: .78rem; }
.role-stat span, .role-stat strong { display: block; }
.role-stat span { color: var(--muted); font-size: .67rem; letter-spacing: .06em; text-transform: uppercase; }
.role-stat strong { margin-top: 2px; font-size: 1rem; }
.role-action { justify-self: end; }
.role-audit-note { margin-top: 18px; }
.permission-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 18px; padding-bottom: 92px; }
.permission-group-count { color: var(--muted); font-size: .72rem; }
.permission-grid { display: grid; gap: 10px; }
.permission-option { display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: start; gap: 11px; padding: 13px; background: #f8fcfd; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
.permission-option:hover { border-color: var(--cyan-500); }
.permission-option:has(input:checked) { background: var(--cyan-100); border-color: rgba(138,224,229,.95); }
.permission-option input { margin-top: 2px; }
.permission-option strong, .permission-option small, .permission-option code { display: block; }
.permission-option small { margin-top: 2px; color: var(--muted); font-weight: 400; line-height: 1.4; }
.permission-option code { width: fit-content; margin-top: 7px; padding: 2px 6px; color: var(--green-700); background: #fff; border: 1px solid var(--border); border-radius: 5px; font-size: .66rem; }
.permission-save-bar { position: fixed; z-index: 14; right: 24px; bottom: 22px; left: 282px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 18px; background: rgba(255,255,255,.96); border: 1px solid var(--border); border-radius: 13px; box-shadow: 0 18px 50px rgba(47,60,76,.18); backdrop-filter: blur(8px); }
.permission-save-bar p { margin: 0; color: var(--muted); font-size: .78rem; }

.setup-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 0 0 22px;
  padding: 0;
  list-style: none;
}
.setup-steps li { position: relative; display: grid; grid-template-columns: 38px 1fr; grid-template-rows: auto auto; column-gap: 10px; padding: 14px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.setup-steps li > span { grid-row: 1 / 3; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; color: var(--muted); background: #eef3f5; font-weight: 900; }
.setup-steps li strong { align-self: end; font-size: .86rem; }
.setup-steps li small { color: var(--muted); font-size: .72rem; }
.setup-steps li.is-current { border-color: rgba(253,133,73,.55); box-shadow: 0 0 0 3px rgba(253,133,73,.1); }
.setup-steps li.is-current > span { color: #fff; background: var(--orange-500); }
.setup-steps li.is-done > span { color: var(--green-950); background: var(--cyan-500); }
.setup-steps-compact { margin-bottom: 20px; }

.family-form-card { margin: 0 auto; }
.family-table td { min-width: 120px; }
.family-table td:nth-child(3), .family-table td:nth-child(4) { min-width: 220px; }
.family-sort-link { display: inline-flex; align-items: center; gap: 5px; color: inherit; text-decoration: none; white-space: nowrap; }
.family-sort-link:hover, .family-sort-link:focus-visible { color: var(--green-900); text-decoration: underline; }
.family-sort-indicator { color: var(--orange-600); font-size: .9rem; line-height: 1; }
.family-table th.text-right .family-sort-link { justify-content: flex-end; }
.table-names { display: block; max-width: 310px; }
.family-table td small { display: block; margin-top: 4px; color: var(--muted); font-size: .72rem; }

.family-sticky-header { margin-bottom: 20px; }
.family-sticky-header .family-workspace-tabs { margin-bottom: 0; }
@media (min-width: 781px) {
  .family-sticky-header {
    position: sticky;
    z-index: 12;
    top: 0;
    margin: -30px -34px 20px;
    padding: 30px 34px 14px;
    background: rgba(246,253,254,.97);
    border-bottom: 1px solid rgba(47,60,76,.08);
    box-shadow: 0 12px 24px rgba(47,60,76,.04);
    backdrop-filter: blur(10px);
  }
}
.family-hero { display: grid; grid-template-columns: auto minmax(220px, 1fr) auto; align-items: center; gap: 18px; margin-bottom: 20px; padding: 22px; color: var(--ink); background: linear-gradient(135deg, #fff 20%, var(--cyan-100)); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.family-hero h2 { margin: 3px 0 7px; font-size: 1.5rem; }
.family-avatar, .person-avatar { display: grid; place-items: center; color: var(--green-950); background: var(--cyan-500); font-weight: 900; }
.family-avatar { width: 66px; height: 66px; border-radius: 18px; font-size: 1.45rem; }
.employee-avatar-photo { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.employee-avatar-photo[hidden] { display: none; }
.family-workspace-tabs { display: flex; align-items: center; gap: 6px; margin: 0 0 20px; padding: 7px; overflow-x: auto; background: #fff; border: 1px solid var(--border); border-radius: 13px; box-shadow: var(--shadow); }
.family-workspace-tab { flex: 0 0 auto; min-width: 112px; padding: 10px 16px; color: var(--muted); border: 1px solid transparent; border-radius: 9px; font-size: .86rem; font-weight: 800; text-align: center; }
.family-workspace-tab:hover { color: var(--green-900); background: var(--cyan-100); }
.family-workspace-tab.is-active { color: #fff; background: var(--green-900); box-shadow: 0 6px 16px rgba(47,60,76,.16); }
.family-tab-panel { min-width: 0; }
.family-tab-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; padding: 18px 20px; }
.family-tab-toolbar h2 { margin: 3px 0; font-size: 1.05rem; }
.family-tab-toolbar p:last-child { margin: 0; font-size: .8rem; }
.family-tab-table { border: 0; border-radius: 0 0 var(--radius) var(--radius); box-shadow: none; }
.family-tab-intro { margin-top: 0; }
.family-billing-stats { margin-bottom: 20px; }
.family-account-stat { font-size: 1.2rem !important; letter-spacing: -.015em !important; }
.family-billing-profile { margin-bottom: 20px; }
.billing-profile-form { grid-template-columns: repeat(3,minmax(0,1fr)); }
.billing-profile-form .form-actions { grid-column: 1 / -1; }
.family-billing-section { margin-bottom: 20px; }
#billing-history { scroll-margin-top: 300px; }
.billing-history-tabs { display: flex; align-items: stretch; gap: 2px; overflow-x: auto; padding: 0 18px; background: #f9fdfe; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); scrollbar-width: thin; }
.billing-history-tab { flex: 0 0 auto; padding: 13px 15px 11px; color: var(--muted); border-bottom: 3px solid transparent; font-size: .82rem; font-weight: 800; white-space: nowrap; }
.billing-history-tab:hover { color: var(--green-900); background: var(--cyan-100); }
.billing-history-tab.is-active { color: var(--green-900); background: #fff; border-bottom-color: var(--cyan-500); }
.billing-history-subpanel { padding: 18px 20px 20px; }
.billing-history-subpanel-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.billing-history-subpanel-head p { margin: 0; }
.billing-history-subpanel .family-note-list { margin-top: 0; }
.billing-history-subpanel .family-tab-table { border: 1px solid var(--border); border-radius: 10px; overflow: auto; }
.family-quick-actions { display: flex; gap: 10px; }
.quick-action { display: grid; grid-template-columns: 34px auto; grid-template-rows: auto auto; column-gap: 10px; min-width: 165px; padding: 12px; background: #fff; border: 1px solid var(--border); border-radius: 11px; }
.quick-action:hover { border-color: var(--orange-500); transform: translateY(-1px); }
.quick-action > span { grid-row: 1 / 3; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; color: #fff; background: var(--orange-500); font-size: 1.2rem; font-weight: 900; }
.quick-action strong { font-size: .82rem; }
.quick-action small { color: var(--muted); font-size: .69rem; }

.setup-panel { margin-bottom: 20px; padding: 20px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.setup-panel h3 { margin: 3px 0 16px; }
.setup-panel .setup-steps { margin-bottom: 0; }

.family-people-grid .card-head { align-items: flex-start; }
.family-people-grid .card-head .eyebrow, .card-head .eyebrow { margin-bottom: 3px; }
.person-row { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.person-row:first-child { padding-top: 0; }
.person-row:last-child { padding-bottom: 0; border-bottom: 0; }
.person-avatar { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 12px; font-size: .78rem; }
.person-main { min-width: 0; flex: 1; }
.person-main > strong, .person-main > span { display: block; }
.person-main > span { overflow: hidden; color: var(--muted); font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.badge-row { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.person-row-link { border-radius: 10px; transition: background .15s ease; }
.person-row-link:hover { margin-inline: -8px; padding-inline: 8px; background: var(--cyan-100); }
.open-arrow { color: var(--green-800); font-size: .76rem; white-space: nowrap; }
.person-actions { display: grid; justify-items: end; gap: 6px; }
.guardian-contact-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: start; padding: 14px 0; border-bottom: 1px solid var(--border); }
.guardian-contact-row:first-child { padding-top: 0; }
.guardian-contact-row:last-child { padding-bottom: 0; border-bottom: 0; }
.guardian-contact { min-width: 0; }
.guardian-contact > summary.person-row { padding: 0; border: 0; border-radius: 8px; list-style: none; cursor: pointer; align-items: start; }
.guardian-contact > summary::-webkit-details-marker { display: none; }
.guardian-contact > summary:hover { background: #f5fbfc; }
.guardian-contact > summary:focus-visible { outline: 2px solid var(--green-800); outline-offset: 4px; }
.guardian-contact .person-main > .badge-row { display: flex; white-space: normal; overflow: visible; }
.guardian-contact .person-main > strong { overflow-wrap: anywhere; }
.guardian-contact .person-main > .guardian-shared-warning { margin-top: 8px; padding: 8px 10px; border: 1px solid #eddaad; border-radius: 8px; background: #fffaf0; color: #80551f; font-size: .72rem; line-height: 1.45; white-space: normal; overflow: visible; }
.guardian-details-toggle { flex: 0 0 auto; color: var(--green-800); font-size: .72rem; font-weight: 800; }
.guardian-details-toggle::after { content: ' ▾'; display: inline-block; transition: transform .15s; }
.guardian-contact[open] .guardian-details-toggle::after { transform: rotate(180deg); }
.guardian-contact-expanded { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 10px; background: #f8fcfd; }
.guardian-contact-details { margin: 0; display: grid; gap: 8px; font-size: .78rem; }
.guardian-contact-details > div { display: grid; grid-template-columns: minmax(85px,.7fr) minmax(0,1.3fr); gap: 10px; }
.guardian-contact-details dt { color: var(--muted); font-weight: 700; }
.guardian-contact-details dd { margin: 0; overflow-wrap: anywhere; white-space: pre-line; }
.guardian-linked-accounts { margin-top: 13px; padding-top: 10px; border-top: 1px solid var(--border); font-size: .76rem; }
.guardian-linked-accounts ul { margin: 6px 0 0; padding-left: 18px; overflow-wrap: anywhere; }
.guardian-linked-accounts a { text-decoration: underline; }
@media (max-width: 1280px) {
  .guardian-contact-row { grid-template-columns: 1fr; }
  .guardian-contact-row .person-actions { display: flex; flex-wrap: wrap; justify-content: end; }
}
.inline-empty { padding: 16px; text-align: center; background: #f8fcfd; border: 1px dashed #cfdce1; border-radius: 11px; }
.inline-empty p { margin: 4px 0 0; color: var(--muted); font-size: .8rem; }
.inline-setting-form { display: grid; grid-template-columns: minmax(240px, 440px) auto; align-items: end; gap: 12px; }
.role-options { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.role-option { display: flex; align-items: flex-start; gap: 10px; padding: 13px; border: 1px solid var(--border); border-radius: 10px; background: #f8fcfd; }
.role-option input { margin-top: 2px; }
.role-option > span { min-width: 0; }
.role-option span strong, .role-option span small { display: block; }
.role-option span small { color: var(--muted); font-weight: 400; }
.readonly-field { min-height: 43px; padding: 10px 11px; color: var(--green-950); background: #f3f7f8; border: 1px solid #d4dce3; border-radius: 9px; font-weight: 800; }
.guardian-form { display: grid; gap: 18px; max-width: 1040px; }
.guardian-form-section { overflow: hidden; }
.guardian-form-section .card-head { padding: 18px 22px 14px; background: linear-gradient(90deg, #fff, #f8fcfd); }
.guardian-form-section .card-body { padding: 22px; }
.guardian-form-section h2 { margin: 2px 0 0; font-size: 1.05rem; }
.identity-document-layout { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(300px, 1fr); align-items: stretch; gap: 20px; }
.identity-type-option { min-height: 74px; }
.shared-email-option { background: #fff9f4; border-color: rgba(253,133,73,.42); }
.guardian-form-actions { position: sticky; bottom: 16px; z-index: 8; padding: 14px; background: rgba(255,255,255,.96); border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow); }

.settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; max-width: 980px; }
.settings-link { display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 14px; padding: 20px; color: var(--ink); background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.settings-link:hover { border-color: var(--orange-500); transform: translateY(-1px); }
.settings-link > span { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; color: var(--green-950); background: var(--cyan-100); font-weight: 900; }
.settings-link strong, .settings-link small { display: block; }
.settings-link small { margin-top: 3px; color: var(--muted); }
.settings-link b { color: var(--orange-600); font-size: 1.2rem; }
.price-row { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)) auto; align-items: end; gap: 12px; padding: 14px 0; border-top: 1px solid var(--border); }
.tuition-summary { display: grid; gap: 10px; }
.tuition-summary-row { display: grid; grid-template-columns: minmax(170px, 1fr) minmax(180px, 1fr) minmax(160px, auto) auto; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.tuition-summary-row:last-child { border-bottom: 0; }
.tuition-summary-row small { color: var(--muted); }

.help-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 430px); align-items: end; gap: 28px; margin-bottom: 20px; padding: 28px; color: #fff; background: linear-gradient(135deg, var(--green-950), var(--green-800)); border-radius: 18px; box-shadow: var(--shadow); }
.help-hero h2 { margin: 5px 0 7px; font-size: clamp(1.7rem, 3vw, 2.35rem); letter-spacing: -.04em; }
.help-hero p:not(.eyebrow) { max-width: 670px; margin: 0; color: rgba(255,255,255,.76); }
.help-search { color: #fff; }
.help-search input { min-height: 48px; color: var(--ink); background: #fff; border-color: transparent; }
.help-search input:focus { border-color: var(--cyan-500); box-shadow: 0 0 0 3px rgba(138,224,229,.24); }
.help-start { margin-bottom: 16px; }
.help-start .card-head h2 { margin-top: 2px; }
.help-start-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; padding: 20px; }
.help-start-steps > div { position: relative; display: grid; grid-template-columns: 38px 1fr; grid-template-rows: auto auto; column-gap: 10px; padding: 8px 18px 8px 0; }
.help-start-steps > div:not(:last-child)::after { content: "→"; position: absolute; top: 17px; right: 7px; color: var(--orange-500); font-weight: 900; }
.help-start-steps span { grid-row: 1 / 3; display: grid; place-items: center; width: 38px; height: 38px; color: var(--green-950); background: var(--cyan-500); border-radius: 11px; font-weight: 900; }
.help-start-steps strong, .help-start-steps small { display: block; }
.help-start-steps strong { align-self: end; font-size: .84rem; }
.help-start-steps small { color: var(--muted); font-size: .72rem; line-height: 1.35; }
.help-quick-links { position: sticky; z-index: 7; top: 0; display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 20px; padding: 10px; background: rgba(246,253,254,.94); border: 1px solid var(--border); border-radius: 12px; backdrop-filter: blur(8px); }
.help-quick-links a { padding: 7px 11px; color: var(--green-800); background: #fff; border: 1px solid var(--border); border-radius: 8px; font-size: .78rem; font-weight: 800; }
.help-quick-links a:hover { color: var(--green-950); border-color: var(--cyan-500); background: var(--cyan-100); }
.help-empty { padding: 22px; color: var(--muted); background: #fff; border: 1px dashed #cfdce1; border-radius: 12px; text-align: center; }
.help-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 20px; }
.help-topic { scroll-margin-top: 78px; }
.help-topic[hidden], .help-start[hidden], .help-faq[hidden] { display: none; }
.help-topic-head { display: grid; grid-template-columns: 46px 1fr; align-items: center; gap: 13px; padding: 18px 20px; border-bottom: 1px solid var(--border); }
.help-topic-head > span { display: grid; place-items: center; width: 46px; height: 46px; color: var(--green-950); background: var(--cyan-100); border-radius: 13px; font-size: 1rem; font-weight: 900; }
.help-topic:nth-child(3n+2) .help-topic-head > span { background: var(--orange-100); }
.help-topic-head h2 { margin: 2px 0 0; font-size: 1.04rem; }
.help-steps, .help-list { margin: 0; padding: 18px 26px 5px 43px; }
.help-steps li, .help-list li { margin-bottom: 10px; padding-left: 3px; color: var(--muted); font-size: .84rem; }
.help-steps li::marker { color: var(--orange-600); font-weight: 900; }
.help-list li::marker { color: var(--cyan-500); }
.help-steps strong, .help-list strong { color: var(--ink); }
.help-note, .help-warning { display: grid; gap: 2px; margin: 10px 20px; padding: 12px 13px; border-radius: 10px; }
.help-note { background: var(--cyan-100); }
.help-warning { color: #7a4112; background: #fff4dd; }
.help-note strong, .help-warning strong { font-size: .78rem; }
.help-note span, .help-warning span { color: var(--muted); font-size: .75rem; }
.help-warning span { color: #7a562f; }
.help-link { display: inline-block; margin: 8px 20px 18px; color: var(--green-800); font-size: .8rem; font-weight: 900; }
.help-link:hover { color: var(--orange-600); }
.help-links { display: flex; flex-wrap: wrap; }
.help-faq { scroll-margin-top: 78px; margin-top: 20px; }
.help-faq-list { padding: 5px 20px 20px; }
.help-faq details { border-bottom: 1px solid var(--border); }
.help-faq details:last-child { border-bottom: 0; }
.help-faq summary { padding: 15px 30px 15px 0; cursor: pointer; color: var(--ink); font-size: .86rem; font-weight: 800; }
.help-faq details[open] summary { color: var(--orange-600); }
.help-faq details p { margin: -3px 0 15px; color: var(--muted); font-size: .82rem; }
.note-composer { margin-bottom: 18px; }
.note-composer > summary { display: inline-flex; width: auto; list-style: none; cursor: pointer; }
.note-composer > summary::-webkit-details-marker { display: none; }
.note-composer form { margin-top: 14px; padding: 16px; background: #f5faf9; border: 1px solid var(--border); border-radius: 12px; }
.family-note-list { display: grid; gap: 12px; }
.family-note-row { display: grid; grid-template-columns: 155px minmax(0,1fr) auto; gap: 14px; align-items: start; padding: 16px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.family-note-row p { margin: 0; white-space: normal; line-height: 1.55; }
.note-date { display: grid; gap: 7px; justify-items: start; }
.note-meta { grid-column: 2 / -1; display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--muted); font-size: .75rem; }
.note-detail-text { margin: 0 0 20px; padding: 16px; background: #f5faf9; border-left: 4px solid var(--orange-500); border-radius: 0 10px 10px 0; line-height: 1.6; }
.audit-timeline { display: grid; gap: 0; }
.audit-event { position: relative; display: grid; grid-template-columns: 18px 1fr; gap: 10px; padding-bottom: 18px; }
.audit-event:not(:last-child)::before { content: ''; position: absolute; left: 5px; top: 12px; bottom: 0; width: 2px; background: var(--border); }
.audit-dot { position: relative; z-index: 1; width: 12px; height: 12px; margin-top: 3px; border-radius: 50%; background: var(--orange-500); }
.audit-event p { margin: 3px 0 7px; color: var(--muted); font-size: .78rem; }
.audit-event summary { cursor: pointer; color: var(--green-800); font-weight: 800; font-size: .78rem; }
.audit-device-cell { min-width: 230px; white-space: normal; }
.audit-device-summary { display: block; margin-top: 4px; color: var(--muted); font-size: .75rem; line-height: 1.45; }
.audit-device-details { margin-top: 6px; font-size: .72rem; }
.audit-device-details summary { cursor: pointer; color: var(--green-800); font-weight: 700; }
.audit-device-details p { margin: 6px 0; }
.audit-device-details code { display: block; max-width: 320px; white-space: normal; overflow-wrap: anywhere; font-size: .68rem; }
.import-notes-table td:nth-child(4) { min-width: 360px; white-space: normal; }

.mass-invoice-builder { margin-bottom: 20px; }
.mass-builder-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr); gap: 30px; }
.mass-target-column, .mass-detail-column { min-width: 0; }
.mass-target-column h3, .mass-detail-column h3 { margin: 0 0 12px; font-size: .95rem; }
.mass-target-column h3:not(:first-child) { margin-top: 24px; }
.segmented-control { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 14px; padding: 5px; background: #f1f7f8; border: 1px solid var(--border); border-radius: 12px; }
.segmented-control label { position: relative; display: block; cursor: pointer; }
.segmented-control input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.segmented-control span { display: grid; place-items: center; min-height: 42px; padding: 8px 10px; color: var(--muted); border: 1px solid transparent; border-radius: 9px; font-size: .78rem; font-weight: 800; text-align: center; }
.segmented-control input:checked + span { color: #fff; background: var(--green-800); box-shadow: 0 5px 14px rgba(47,60,76,.16); }
.segmented-control input:focus-visible + span { outline: 3px solid rgba(253,133,73,.25); }
.mass-target-panel[hidden] { display: none; }
.mass-target-panel .alert { margin: 0; padding-right: 14px; }
.option-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; max-height: 280px; overflow-y: auto; padding: 14px; background: #f8fcfd; border: 1px solid var(--border); border-radius: 11px; }
.option-checklist > strong, .option-checklist > p { grid-column: 1 / -1; }
.option-checklist .checkbox-field { padding: 8px 9px; background: #fff; border: 1px solid var(--border); border-radius: 8px; font-size: .78rem; }
.choice-stack { display: grid; gap: 9px; }
.choice-card { display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: start; gap: 11px; padding: 13px 14px; cursor: pointer; background: #fff; border: 1px solid var(--border); border-radius: 11px; }
.choice-card:has(input:checked) { border-color: var(--orange-500); box-shadow: 0 0 0 3px rgba(253,133,73,.12); }
.choice-card strong, .choice-card small { display: block; }
.choice-card strong { color: var(--ink); font-size: .82rem; }
.choice-card small { margin-top: 2px; line-height: 1.35; }
.choice-card.is-disabled { cursor: not-allowed; opacity: .48; }
.compact-form-grid { grid-template-columns: 1fr; }
.compact-form-grid .field-full { grid-column: auto; }
.mass-items-card { margin-bottom: 20px; }
.mass-item-list { display: grid; gap: 10px; }
.mass-item-row { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(130px, 180px) minmax(90px, 120px) auto; align-items: end; gap: 10px; padding: 13px; background: #f8fcfd; border: 1px solid var(--border); border-radius: 11px; }
.mass-live-total { display: flex; align-items: center; justify-content: flex-end; gap: 18px; margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--border); }
.mass-live-total span { color: var(--muted); font-size: .78rem; font-weight: 700; }
.mass-live-total strong { font-size: 1.2rem; }
.mass-builder-actions { margin-bottom: 6px; }
.mass-cancel-draft { margin-top: 14px; }
.mass-cancel-draft .link-button { padding: 0; }
.mass-reverse-card { margin-top: 20px; border-color: #ffd2ce; }
.mass-batch-stats .stat-compact { font-size: 1.15rem; letter-spacing: -.02em; }
.mass-batch-table td:nth-child(4) { min-width: 190px; }
.mass-report-print-head { margin-bottom: 16px; }

.auth-page, .installer-page { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at top right, rgba(253,133,73,.22) 0, transparent 34%), radial-gradient(circle at bottom left, rgba(138,224,229,.42) 0, transparent 42%), var(--cream); }
.auth-card, .installer-card { width: min(100%, 460px); background: #fff; border: 1px solid var(--border); border-radius: 20px; padding: 34px; box-shadow: 0 24px 70px rgba(47,60,76,.14); }
.installer-card { width: min(100%, 760px); }
.auth-card .brand-logo, .installer-card .brand-logo { width: 76px; height: 80px; margin-bottom: 18px; }
.auth-card h1, .installer-card h1 { margin: 4px 0 8px; letter-spacing: -.04em; }
.auth-card form { display: grid; gap: 16px; margin-top: 24px; }

.receipt { max-width: 780px; margin: 0 auto; padding: 34px; background: #fff; border: 1px solid var(--border); }
.receipt-header { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 2px solid var(--green-900); }
.receipt-header .brand-logo { width: 74px; height: 78px; margin-bottom: 8px; }
.receipt-total { margin: 28px 0; padding: 18px; background: var(--cyan-100); border-radius: 12px; text-align: right; }
.receipt-total strong { font-size: 1.7rem; }
.fundraiser-form { margin-bottom: 20px; }
.fundraiser-form > summary { width: fit-content; list-style: none; }
.fundraiser-form > summary::-webkit-details-marker { display: none; }
.fundraiser-form > summary::after { content: "▾"; }
.fundraiser-form[open] > summary::after { content: "▴"; }
.fundraiser-form > summary:focus-visible { outline: 3px solid var(--cyan-500); outline-offset: 3px; }
.fundraiser-form > .card { margin-top: 12px; }
.fundraiser-learner-choice { display: grid; gap: 8px; min-width: 0; }
.fundraiser-learner-choice > small { overflow-wrap: anywhere; }

.print-only { display: none; }
.statement-toolbar { display: grid; grid-template-columns: auto minmax(420px, 1fr) auto; align-items: end; }
.statement-period-form { display: grid; grid-template-columns: minmax(145px, 190px) minmax(145px, 190px) auto; justify-content: center; align-items: end; gap: 9px; }
.statement-document { max-width: 1120px; margin: 0 auto; padding: 38px; background: #fff; border: 1px solid var(--border); border-radius: 18px; box-shadow: var(--shadow); }
.statement-header { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr); gap: 34px; padding-bottom: 26px; border-bottom: 3px solid var(--green-900); }
.statement-school { display: flex; align-items: flex-start; gap: 18px; }
.statement-school .brand-logo { width: 86px; height: 90px; }
.statement-school h2, .statement-title-block h1 { margin: 3px 0 7px; color: var(--green-950); letter-spacing: -.035em; }
.statement-school h2 { font-size: 1.45rem; }
.statement-school p:not(.eyebrow) { margin: 2px 0; color: var(--muted); font-size: .78rem; }
.statement-title-block { text-align: right; }
.statement-title-block h1 { font-size: 2rem; }
.statement-title-block dl { display: grid; gap: 5px; margin: 13px 0 0; }
.statement-title-block dl div { display: grid; grid-template-columns: 105px 1fr; gap: 12px; }
.statement-title-block dt { color: var(--muted); font-size: .72rem; }
.statement-title-block dd { margin: 0; font-size: .78rem; font-weight: 800; }
.statement-account-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 22px 0; }
.statement-info-panel { padding: 18px; background: #f8fcfd; border: 1px solid var(--border); border-radius: 12px; }
.statement-info-panel h3 { margin: 4px 0 12px; font-size: 1rem; }
.statement-contact { display: grid; gap: 2px; margin-top: 11px; }
.statement-contact strong { font-size: .84rem; }
.statement-contact span, .statement-learner-list span { color: var(--muted); font-size: .74rem; }
.statement-learner-list { display: grid; gap: 10px; margin-top: 10px; }
.statement-learner-list > div { display: grid; padding-bottom: 9px; border-bottom: 1px solid var(--border); }
.statement-learner-list > div:last-child { padding-bottom: 0; border-bottom: 0; }
.statement-learner-list strong { font-size: .82rem; }
.statement-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 10px; }
.statement-section-heading h3 { margin: 3px 0 0; font-size: .95rem; }
.statement-section-heading > strong { font-size: .82rem; }
.statement-table { border-radius: 10px; box-shadow: none; }
.statement-table table { min-width: 850px; }
.statement-table th, .statement-table td { padding: 10px 11px; font-size: .75rem; }
.statement-table th:nth-child(1) { width: 100px; }
.statement-table th:nth-child(2) { width: 135px; }
.statement-table th:nth-child(4), .statement-table th:nth-child(5), .statement-table th:nth-child(6) { width: 118px; }
.statement-table th:nth-child(7) { width: 80px; }
.statement-table td small { display: block; margin-top: 3px; color: var(--danger); }
.statement-opening-row td { background: var(--cyan-100); }
.statement-reversed-row td { color: #8b9298; text-decoration: line-through; background: #fafafa; }
.statement-reversed-row td:nth-child(3), .statement-reversed-row td:last-child { text-decoration: none; }
.statement-closing-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); gap: 26px; margin-top: 24px; align-items: start; }
.statement-payment-panel { padding: 18px; background: #f8fcfd; border-left: 4px solid var(--cyan-500); border-radius: 0 10px 10px 0; }
.statement-payment-panel dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 18px; margin: 12px 0; }
.statement-payment-panel dl div { display: grid; grid-template-columns: 95px 1fr; gap: 8px; }
.statement-payment-panel dt { color: var(--muted); font-size: .72rem; }
.statement-payment-panel dd { margin: 0; font-size: .76rem; font-weight: 800; }
.statement-payment-panel p:not(.eyebrow) { margin: 8px 0 0; color: var(--muted); font-size: .75rem; }
.statement-summary-panel { display: grid; gap: 0; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
.statement-summary-panel > div { display: flex; justify-content: space-between; gap: 18px; padding: 11px 14px; border-bottom: 1px solid var(--border); }
.statement-summary-panel > div:last-child { border-bottom: 0; }
.statement-summary-panel span { color: var(--muted); font-size: .78rem; }
.statement-summary-panel strong { font-size: .84rem; }
.statement-summary-panel .statement-total { padding-block: 15px; color: #fff; background: var(--green-900); }
.statement-summary-panel .statement-total span { color: rgba(255,255,255,.8); }
.statement-summary-panel .statement-total strong { font-size: 1.1rem; }
.statement-summary-panel .statement-credit { background: #ecfdf3; }
.statement-summary-panel .statement-credit span { color: #166534; font-weight: 800; }
.statement-summary-panel .statement-credit strong { color: #166534; }
.statement-summary-panel .statement-year-outstanding { background: #f8fafc; }
.statement-summary-panel .statement-year-outstanding span,
.statement-summary-panel .statement-year-outstanding strong { color: var(--green-900); font-weight: 900; }
.statement-summary-panel .statement-projection-note { margin: 0; padding: 8px 14px; color: var(--muted); background: #fff8e8; border-bottom: 0; font-size: .68rem; line-height: 1.35; }
.statement-footer { margin-top: 24px; padding-top: 14px; color: var(--muted); border-top: 1px solid var(--border); font-size: .72rem; text-align: center; }
.mass-statement-toolbar { align-items: center; }
.mass-statement-summary { margin-bottom: 22px; }
.mass-statement-summary .detail-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.mass-statement-pack { display: grid; gap: 28px; }
.mass-statement-class-group { display: grid; gap: 28px; min-width: 0; }
.mass-statement-class-cover { display: flex; min-height: 180px; align-items: center; justify-content: center; padding: 34px; text-align: center; border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(180deg,#fff,#f8fbfa); }
.mass-statement-class-cover-inner { display: grid; justify-items: center; gap: 8px; }
.mass-statement-class-cover h1 { margin: 4px 0 0; color: var(--green-900); font-size: 2.35rem; line-height: 1.05; }
.mass-statement-class-meta { margin: 0; color: var(--muted); font-size: 1rem; font-weight: 800; }
.mass-statement-class-count { margin: 10px 0 0; color: var(--muted); font-size: .82rem; font-weight: 700; }
.mass-statement-item { min-width: 0; }
.mass-statement-item .statement-document { margin-inline: auto; }

@media (max-width: 1050px) {
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grid-3 { grid-template-columns: 1fr; }
  .dashboard-chart-grid, .dashboard-chart-grid-balanced { grid-template-columns: 1fr; }
  .report-grid { grid-template-columns: 1fr; }
  .report-card-wide { grid-column: auto; }
  .family-hero { grid-template-columns: auto 1fr; }
  .family-quick-actions { grid-column: 1 / -1; }
  .user-detail-grid, .permission-groups { grid-template-columns: 1fr; }
  .help-grid { grid-template-columns: 1fr; }
  .help-start-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .help-start-steps > div:nth-child(2)::after { display: none; }
  .role-row { grid-template-columns: 46px minmax(220px, 1fr) 80px 90px; }
  .role-action { grid-column: 2 / -1; justify-self: start; }
  .statement-toolbar { grid-template-columns: 1fr; align-items: stretch; }
  .statement-period-form { justify-content: start; }
  .prefix-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 780px) {
  .app-shell { display: block; }
  .sidebar { position: fixed; z-index: 20; width: 258px; transform: translateX(-105%); transition: transform .2s ease; }
  .sidebar.is-open { transform: translateX(0); }
  .menu-button { display: block; }
  .topbar { padding: 18px; min-height: 82px; }
  .topbar-date { display: none; }
  .page-content { padding: 20px 16px 40px; }
  .grid-2, .form-grid, .detail-list, .setup-steps, .role-options, .settings-grid, .price-row, .tuition-summary-row, .identity-document-layout { grid-template-columns: 1fr; }
  .mass-statement-summary .detail-list { grid-template-columns: 1fr; }
  .dashboard-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filter-bar, .hr-filter-bar, .day-visitor-filter-bar, .legal-filter-bar { grid-template-columns: 1fr; width: 100%; }
  .day-visit-capture-form, .law-firm-form, .compact-inline-form, .legal-import-action { grid-template-columns: 1fr; max-width: none; }
  .field-full, .form-grid h2, .form-grid .form-section, .form-actions { grid-column: auto; }
  .page-actions { align-items: flex-start; flex-direction: column; }
  .family-hero { grid-template-columns: 1fr; }
  .family-avatar { width: 54px; height: 54px; }
  .family-sticky-header { margin-bottom: 20px; }
  .family-workspace-tabs { margin-inline: -4px; }
  .family-workspace-tab { min-width: 96px; }
  #billing-history { scroll-margin-top: 20px; }
  .billing-history-tabs { margin-inline: -1px; padding-inline: 8px; }
  .billing-history-subpanel { padding: 16px; }
  .billing-history-subpanel-head { align-items: stretch; flex-direction: column; }
  .family-tab-toolbar { align-items: stretch; flex-direction: column; }
  .family-tab-toolbar .actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .billing-profile-form { grid-template-columns: 1fr; }
  .billing-profile-form .form-actions { grid-column: auto; }
  .family-quick-actions { width: 100%; flex-direction: column; }
  .person-row { align-items: flex-start; }
  .person-actions { justify-items: start; }
  .family-note-row { grid-template-columns: 1fr; }
  .note-meta { grid-column: 1; }
  .class-editor > form { position: fixed; top: 92px; right: 16px; left: 16px; width: auto; max-height: calc(100vh - 110px); overflow-y: auto; }
  .inline-setting-form { grid-template-columns: 1fr; }
  .report-card, .report-card-wide { grid-template-columns: 1fr; }
  .report-form-wide { grid-template-columns: 1fr; }
  .report-form .btn { width: 100%; justify-self: stretch; }
  .report-action-row { display: grid; grid-template-columns: 1fr; }
  .statement-period-form { grid-template-columns: 1fr; width: 100%; }
  .statement-account-grid, .statement-closing-grid { grid-template-columns: 1fr; }
  .statement-document { padding: 22px; }
  .statement-header { grid-template-columns: 1fr; }
  .statement-title-block { text-align: left; }
  .role-row { grid-template-columns: 46px 1fr; }
  .role-stat { grid-column: 2; }
  .role-action { grid-column: 2; }
  .permission-save-bar { right: 16px; bottom: 14px; left: 16px; align-items: stretch; flex-direction: column; }
  .help-hero { grid-template-columns: 1fr; padding: 22px; }
  .help-quick-links { position: static; }
  .mass-builder-grid, .mass-item-row { grid-template-columns: 1fr; }
  .branding-settings-grid, .numbering-grid, .prefix-grid, .principal-signature-settings { grid-template-columns: 1fr; }
  .logo-upload-panel { grid-template-columns: 1fr; }
  .segmented-control, .option-checklist { grid-template-columns: 1fr; }
  .option-checklist > strong, .option-checklist > p { grid-column: auto; }
  .mass-item-row .btn { justify-self: start; }
}

@media (max-width: 520px) {
  .stats-grid { grid-template-columns: 1fr; }
  .dashboard-stats { grid-template-columns: 1fr; }
  .billing-chart { gap: 6px; padding-inline: 2px; }
  .health-money { grid-template-columns: 1fr; }
  .class-size-row { grid-template-columns: minmax(110px, 1fr) minmax(90px, 1fr) 28px; gap: 8px; }
  .auth-card, .installer-card { padding: 24px; border-radius: 15px; }
  .receipt { padding: 20px; }
  .report-print { padding: 16px; }
  .report-print-head { flex-direction: column; }
  .help-start .card-head { align-items: flex-start; flex-direction: column; }
  .help-start-steps { grid-template-columns: 1fr; }
  .help-start-steps > div:not(:last-child)::after { content: "↓"; top: auto; right: auto; bottom: -5px; left: 14px; }
  .family-tab-toolbar .actions { grid-template-columns: 1fr; }
}

@media print {
  @page { size: A4 portrait; margin: 12mm; }
  .sidebar, .topbar, .page-actions, .no-print, .alert { display: none !important; }
  .app-shell { display: block; min-height: 0; }
  .page-content { padding: 0; }
  body { background: #fff; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .receipt, .table-wrap, .card { border: 0; box-shadow: none; }
  .receipt { max-width: none; margin: 0; padding: 0; font-size: 10pt; line-height: 1.35; break-inside: avoid; page-break-inside: avoid; }
  .receipt-header { gap: 16px; padding-bottom: 12px; break-inside: avoid; }
  .receipt-header > div { min-width: 0; }
  .receipt-header .brand-logo { width: 48px; height: 52px; margin-bottom: 4px; }
  .receipt-header h2 { margin: 4px 0; font-size: 14pt; overflow-wrap: anywhere; }
  .receipt-header p { margin: 4px 0; }
  .receipt .receipt-details { margin-top: 14px !important; }
  /* A4's printable width must not inherit the narrow-screen single column. */
  .receipt .detail-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 18px; }
  .receipt .detail-item { min-width: 0; break-inside: avoid; }
  .receipt .detail-item span { font-size: 7.5pt; }
  .receipt .detail-item strong { margin-top: 2px; font-size: 9pt; overflow-wrap: anywhere; }
  .receipt .receipt-cash { margin-top: 14px !important; }
  .receipt .receipt-cash h3 { margin: 0 0 8px; font-size: 10pt; break-after: avoid; }
  .receipt-closing { break-inside: avoid; page-break-inside: avoid; }
  .receipt .receipt-total { margin: 16px 0 10px; padding: 12px; border-radius: 0; break-inside: avoid; }
  .receipt .receipt-total strong { font-size: 17pt; }
  .receipt .help-text { font-size: 8pt; }
  .receipt .receipt-footer { margin: 8px 0 0 !important; break-before: avoid; break-inside: avoid; }
  .receipt .alert { display: block !important; margin: 12px 0 !important; padding: 10px; break-inside: avoid; }
  .report-print { padding: 0; border: 0; box-shadow: none; }
  .report-print-table { overflow: visible; }
  .report-print-table table { min-width: 0; }
  .report-print-table th, .report-print-table td { padding: 5px 6px; font-size: 8pt; }
  .print-only { display: inline !important; }
  .statement-document { max-width: none; margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; }
  .statement-header { grid-template-columns: minmax(0, 1.2fr) minmax(230px, .8fr) !important; gap: 20px; padding-bottom: 16px; }
  .statement-title-block { text-align: right; }
  .statement-school .brand-logo { width: 58px; height: 61px; }
  .statement-school h2 { font-size: 15pt; }
  .statement-title-block h1 { font-size: 19pt; }
  .statement-account-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px; margin: 14px 0; }
  .statement-info-panel { padding: 10px; break-inside: avoid; }
  .statement-section-heading { margin-bottom: 6px; }
  .statement-table { overflow: visible; }
  .statement-table table { min-width: 0; }
  .statement-table th, .statement-table td { padding: 5px 6px; font-size: 7.5pt; }
  .statement-table thead { display: table-header-group; }
  .statement-table tr { break-inside: avoid; }
  .statement-closing-grid { grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr) !important; gap: 16px; margin-top: 16px; break-inside: avoid; }
  .statement-payment-panel { padding: 11px; }
  .statement-summary-panel > div { padding: 7px 10px; }
  .statement-footer { break-inside: avoid; }
  .mass-statement-pack { display: block; }
  .mass-statement-class-group { display: block; }
  .mass-statement-class-cover { min-height: 260mm; padding: 0; border: 0; border-radius: 0; background: #fff; break-inside: avoid; page-break-inside: avoid; break-after: page; page-break-after: always; }
  .mass-statement-class-cover h1 { font-size: 34pt; }
  .mass-statement-class-meta { font-size: 14pt; }
  .mass-statement-class-count { margin-top: 14px; font-size: 10pt; }
  .mass-statement-class-group + .mass-statement-class-group .mass-statement-class-cover { break-before: page; page-break-before: always; }
  .mass-statement-item + .mass-statement-item { break-before: page; page-break-before: always; }
  .mass-batch-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .mass-batch-stats .stat-card { padding: 9px; box-shadow: none; }
  .mass-batch-stats .stat-card strong { font-size: 11pt; }
  .mass-batch-stats .stat-card small { font-size: 7pt; }
  .mass-batch-stats .stat-card::after { display: none; }
  .mass-report-print-head { display: flex !important; }
  .mass-report-print-head .brand-logo { width: 52px; height: 55px; }
  .mass-reverse-card { display: none !important; }
}
/* Communications */
.email-builder-card{margin-bottom:20px}.email-audience-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:28px}.email-segments{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:8px;background:#f6fafb;border:2px solid #c7d6da;box-shadow:0 4px 14px rgba(47,60,76,.05)}.email-segments span{min-height:48px;background:#fff;border:1px solid #d3dfe2}.email-segments label:hover span{color:var(--green-800);border-color:var(--cyan-500)}.email-segments input:checked+span{border-color:var(--green-800);box-shadow:0 5px 14px rgba(47,60,76,.18)}.email-target-panel{margin-top:18px;max-height:360px;overflow:auto}.email-target-panel[hidden]{display:none!important}.family-email-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px}.field-label{display:block;font-weight:700;margin-bottom:8px}.email-toolbar{display:flex;gap:6px;padding:8px;border:1px solid var(--border);border-bottom:0;border-radius:12px 12px 0 0;background:#f5f8f7}.email-toolbar button,.token-button{border:1px solid var(--border);background:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;color:var(--ink)}.email-toolbar button:hover,.token-button:hover{border-color:var(--orange);color:var(--orange)}.email-editor{min-height:260px;border:1px solid var(--border);border-radius:0 0 12px 12px;padding:18px;background:#fff;line-height:1.6;outline:none}.email-editor:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(244,119,43,.12)}.token-list{display:flex;flex-wrap:wrap;gap:8px}.token-button code{display:block;font-size:.72rem;color:var(--muted);margin-top:2px}.email-message-preview{margin:20px 0}.email-preview-body{max-width:760px;padding:22px;background:#f7faf9;border:1px solid var(--border);border-radius:12px;line-height:1.65}.email-attachment-chip{display:inline-block;margin-top:18px;padding:10px 14px;border-radius:10px;background:#fff3eb;color:#a9410d;font-weight:700}.email-final-card{margin-top:20px}.email-final-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-bottom:20px}.email-final-grid form{display:flex;flex-direction:column;gap:12px}.code-block{display:block;padding:14px;overflow-wrap:anywhere;background:#102f27;color:#fff;border-radius:10px}.inline-form{display:flex;align-items:end;gap:12px}.inline-form label{flex:1}.btn:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:1200px){.email-segments{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.email-audience-grid,.email-final-grid{grid-template-columns:1fr}.email-segments{grid-template-columns:repeat(2,minmax(0,1fr))}.family-email-list{grid-template-columns:1fr}.inline-form{align-items:stretch;flex-direction:column}}
.tuition-assignment-form { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: 20px 24px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--border); }
.tuition-assignment-heading { grid-column: 1 / -1; }
.tuition-assignment-heading h3 { margin: 3px 0 0; }
.tuition-assignment-fields { display: grid; align-content: start; gap: 17px; }
.tuition-discount-panel { min-width: 0; margin: 0; padding: 18px; border: 1px solid #cfe1e4; border-radius: 12px; background: #f6fbfc; }
.tuition-discount-panel legend { padding: 0 8px; color: var(--green-900); font-size: .82rem; font-weight: 800; }
.tuition-discount-panel > .muted { margin: 8px 0 15px; font-size: .78rem; }
.tuition-override-toggle { min-height: 38px; padding: 9px 10px; border: 1px solid #d7e4e7; border-radius: 9px; background: #fff; }
.tuition-discount-inputs { display: grid; gap: 14px; transition: opacity .15s ease; }
.tuition-discount-inputs.is-disabled { opacity: .5; }
.tuition-assignment-form .form-actions { grid-column: 1 / -1; }

.pagination-bar{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap;margin:14px 0 24px;padding:12px 14px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 7px 20px rgba(16,47,39,.05)}
.pagination-summary{margin:0 auto 0 0;color:var(--muted);font-size:.84rem;font-weight:700}
.pagination-size{display:flex;align-items:center;margin:0}
.pagination-size label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.82rem;font-weight:700}
.pagination-size select{width:auto;min-width:76px;padding:8px 28px 8px 10px}
.pagination-pages{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.pagination-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:36px;padding:7px 10px;color:var(--ink);background:#fff;border:1px solid var(--border);border-radius:8px;font-size:.82rem;font-weight:800;text-decoration:none}
.pagination-link:hover{color:var(--orange-500);border-color:var(--orange-500);background:#fff8f3}
.pagination-link.is-current{color:#fff;background:var(--green-900);border-color:var(--green-900)}
.pagination-link.is-disabled{color:#a2adb1;background:#f4f7f7;cursor:not-allowed}
.pagination-ellipsis{padding:0 3px;color:var(--muted)}
@media(max-width:780px){.pagination-bar{align-items:stretch;flex-direction:column}.pagination-summary{margin-right:0}.pagination-size label{justify-content:space-between}.pagination-pages{justify-content:center}.pagination-link{flex:1 0 auto}.tuition-assignment-form{grid-template-columns:1fr}}

/* Staged import record review */
.import-review-summary{margin:20px 0}.import-progress{height:12px;overflow:hidden;border:1px solid #cbdde0;border-radius:999px;background:#edf4f5}.import-progress>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan-500),var(--green-900));transition:width .2s ease}.import-review-totals{display:flex;gap:22px;flex-wrap:wrap;margin:14px 0 18px;color:var(--muted);font-size:.84rem}.import-review-totals strong{color:var(--ink);font-size:1rem}.import-review-totals.compact{margin-bottom:24px}.import-role-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.import-role-progress>div{display:grid;gap:3px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:#f8fbfb}.import-role-progress span{color:var(--muted);font-size:.75rem;font-weight:800;text-transform:uppercase}.import-role-progress strong{font-size:.95rem}.import-role-progress small{color:var(--muted);font-size:.7rem}.import-review-workspace{max-width:1180px;margin:0 auto}.import-record-form{margin-top:24px}.import-record-sections{display:grid;gap:20px}.import-record-section{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#fff}.import-record-section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 18px;border-bottom:1px solid var(--border);background:linear-gradient(90deg,#f2fbfc,#fff8f3)}.import-record-section-head .eyebrow{margin:0 0 3px}.import-record-section-head h3{margin:0;font-size:1rem}.import-record-section-head>span{padding:4px 9px;border-radius:999px;background:#fff;color:var(--muted);font-size:.72rem;font-weight:800}.import-record-section-hint{margin:0;padding:12px 18px 0;font-size:.78rem}.import-record-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;padding:16px 18px 18px}.import-record-field{display:grid;align-content:start;gap:7px;padding:12px;border:1px solid transparent;border-radius:11px;background:#f8fbfb}.import-record-field>span{font-size:.78rem;font-weight:800}.import-record-field textarea{resize:vertical}.import-record-field small{color:#9a4c10;font-weight:700}.import-record-field.is-changed{border-color:#f4b17f;background:#fff7f1}.import-exclude-record{margin-top:24px;padding:15px;border:1px solid #efb8b8;border-radius:11px;background:#fff7f7;color:var(--danger)}.import-review-actions{display:flex;align-items:center;justify-content:space-between;margin-top:22px}.import-review-actions>div{display:flex;gap:8px}.import-review-save-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1000px){.import-role-progress{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:780px){.import-role-progress,.import-record-fields{grid-template-columns:1fr}.import-review-actions{align-items:stretch;flex-direction:column-reverse}.import-review-actions .btn{width:100%}}
.import-record-field.is-readonly{border-color:#d9e3e6;background:#f2f5f6}.import-record-field.is-readonly input,.import-record-field.is-readonly textarea{cursor:not-allowed;background:#e9eef0;color:#52606b}.import-record-field .readonly-note{color:#60727d}
.import-review-totals.compact{margin-bottom:8px}.import-review-audit{margin:0 0 24px;font-size:.78rem}.import-outcome{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 20px;padding:17px 18px;border:1px solid var(--border);border-left-width:5px;border-radius:13px;background:#f8fbfb}.import-outcome .eyebrow{margin:0 0 4px}.import-outcome h3{margin:0 0 5px;font-size:1.02rem}.import-outcome p:last-child{margin:0;color:var(--muted);font-size:.8rem}.import-outcome>span{flex:0 0 auto;padding:6px 10px;border-radius:999px;font-size:.72rem;font-weight:900}.import-outcome-active{border-left-color:#35a56b;background:#f2fbf6}.import-outcome-active>span{background:#dff4e8;color:#17663e}.import-outcome-historical{border-left-color:#d39a35;background:#fffaf0}.import-outcome-historical>span{background:#ffedc8;color:#805208}.import-outcome-review{border-left-color:#df7d38;background:#fff7f1}.import-outcome-review>span{background:#ffe4d1;color:#934311}.import-outcome-excluded{border-left-color:var(--danger);background:#fff6f6}.import-outcome-excluded>span{background:#ffe0df;color:var(--danger)}
.import-family-workspace{max-width:1180px;margin:0 auto 20px}.import-family-head{align-items:flex-start;background:linear-gradient(135deg,#fff 30%,#effbfc)}.import-family-head h2{margin:2px 0 5px}.import-family-head p:last-child{margin:0;color:var(--muted);font-size:.82rem}.import-family-progress-copy{display:flex;justify-content:space-between;gap:16px;margin:8px 0 16px;color:var(--muted);font-size:.8rem}.import-family-progress-copy strong{color:var(--ink)}.import-family-sections{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px}.import-family-section{display:grid;gap:4px;min-height:92px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#f8fbfb;color:var(--ink);text-decoration:none;transition:.16s ease}.import-family-section:hover{border-color:var(--orange);transform:translateY(-1px)}.import-family-section>span{font-size:.72rem;font-weight:900;text-transform:uppercase}.import-family-section>strong{font-size:1.25rem}.import-family-section>small{color:var(--muted);font-size:.68rem}.import-family-section.is-current{border:2px solid var(--orange);background:#fff7f1;box-shadow:0 4px 14px rgba(244,119,43,.12)}.import-family-section.is-complete:not(.is-current){border-color:#b9dfc9;background:#f2fbf6}.import-family-section.is-complete:not(.is-current)>small{color:#17663e}.import-family-section.is-empty{opacity:.55;background:#f4f6f6}.import-family-help{margin:14px 0 0;font-size:.76rem}.import-global-review-totals{padding:10px 12px;border-radius:10px;background:#f6fafb}.import-review-workspace>.card-head p{margin:4px 0 0}
.import-family-head-actions{display:grid;justify-items:end;gap:9px;min-width:190px}.import-family-head-actions small{max-width:250px;color:var(--muted);font-size:.7rem;text-align:right}.import-family-head-actions .btn:disabled{cursor:not-allowed;opacity:.5}
@media(max-width:1000px){.import-family-sections{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:650px){.import-family-head{flex-direction:column}.import-family-head-actions{justify-items:start;width:100%}.import-family-head-actions small{text-align:left}.import-family-sections{grid-template-columns:repeat(2,minmax(0,1fr))}.import-family-progress-copy{flex-direction:column;gap:3px}}
.import-family-record-list{margin-top:18px;overflow:hidden;border:1px solid var(--border);border-radius:13px;background:#fff}.import-family-record-list-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-bottom:1px solid var(--border);background:#f6fafb}.import-family-record-list-head .eyebrow{margin:0 0 3px}.import-family-record-list-head h3{margin:0;font-size:.95rem}.import-family-record-list-head>span{color:var(--muted);font-size:.75rem;font-weight:800}.import-family-record-rows{display:grid}.import-family-record-row{display:grid;grid-template-columns:minmax(190px,1fr) auto auto auto 70px;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--border);color:var(--ink);text-decoration:none}.import-family-record-row:last-child{border-bottom:0}.import-family-record-row:hover{background:#fff8f3}.import-family-record-row.is-current{background:#fff4eb;box-shadow:inset 4px 0 0 var(--orange)}.import-family-record-main{display:grid;gap:2px}.import-family-record-main small{color:var(--muted);font-size:.72rem}.import-family-record-amount{white-space:nowrap}.import-family-record-open{color:var(--orange);font-size:.72rem;font-weight:900;text-align:right}.import-link-fields-note{margin-top:12px}.import-link-fields-note strong{display:inline}
@media(max-width:760px){.import-family-record-row{grid-template-columns:minmax(0,1fr) auto}.import-family-record-row>.badge,.import-family-record-amount{justify-self:start}.import-family-record-open{grid-column:2;grid-row:1 / span 2}.import-family-record-list-head{align-items:flex-start}}
@media(max-width:780px){.import-outcome{align-items:flex-start;flex-direction:column}.import-outcome>span{align-self:flex-start}}
.import-record-purpose{margin:0 0 18px}
.import-record-decisions{display:grid;gap:8px;margin-top:24px}.import-record-decisions>p{margin:0 0 10px;padding-left:4px}.import-record-decisions .import-exclude-record{margin-top:0}.import-flag-record{padding:15px;border:1px solid #efc36d;border-radius:11px;background:#fffaf0;color:#805208}.import-outcome-flagged{border-left-color:#df7d38;background:#fff7f1}.import-outcome-flagged>span{background:#ffe4d1;color:#934311}.import-flagged-summary{margin:20px 0;border-color:#efc36d}.import-flagged-summary>.card-head{background:#fffaf0}.import-flagged-summary>.card-head p:last-child{margin:5px 0 0}
.family-medical-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.family-medical-summary{padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--surface-soft,#f7fbfc)}.family-medical-editor{margin-top:18px}.family-medical-editor form{margin-top:16px;padding-top:18px;border-top:1px solid var(--border)}@media(max-width:760px){.family-medical-grid{grid-template-columns:1fr}}
.import-validation-summary{margin:0 0 18px}.import-validation-summary ul{margin:8px 0 0;padding-left:20px}.import-record-field.has-error,.import-record-field.has-client-error{border-color:#d33f49;background:#fff4f4}.import-record-field [aria-invalid="true"]{border-color:#d33f49;box-shadow:0 0 0 3px rgba(211,63,73,.12)}.import-record-field .field-error-message{color:#b4232e;font-weight:800}

/* Daily bank transaction import and allocation */
.bank-upload-card{margin-bottom:20px}.bank-account-badges{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}.bank-upload-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:24px;align-items:start}.bank-upload-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:14px}.bank-import-rules{display:grid;gap:7px;padding:16px 18px;border:1px solid #cfe1e4;border-radius:12px;background:#f5fbfc}.bank-import-rules span{position:relative;padding-left:17px;color:var(--muted);font-size:.78rem;line-height:1.4}.bank-import-rules span::before{content:"✓";position:absolute;left:0;color:var(--success);font-weight:900}.bank-stats-grid{margin-top:20px}.bank-toolbar{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:0 0 16px}.bank-account-filter{min-width:290px}.bank-account-filter label{gap:4px}.bank-table-wrap{overflow:visible}.bank-transaction-table{min-width:850px}.bank-transaction-summary{cursor:pointer;outline:none;transition:background .14s ease}.bank-transaction-summary:hover,.bank-transaction-summary:focus,.bank-transaction-summary.is-open{background:#effafb}.bank-transaction-summary:focus{box-shadow:inset 4px 0 0 var(--orange-500)}.bank-transaction-summary.is-allocated{background:#f7fbf8}.bank-expand-icon{display:inline-grid;place-items:center;width:25px;height:25px;margin-right:8px;border-radius:50%;background:#edf4f5;color:var(--green-900);font-size:1.25rem;font-weight:900;transition:transform .15s ease}.bank-transaction-summary.is-open .bank-expand-icon{transform:rotate(90deg);background:var(--cyan-100)}.bank-transaction-detail>td{padding:0;background:#f8fbfc}.bank-transaction-detail[hidden]{display:none}.bank-allocation-form{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:20px;padding:22px;border-top:2px solid var(--cyan-500)}.bank-suggestion-panel,.bank-family-picker-panel{padding:18px;border:1px solid var(--border);border-radius:13px;background:#fff}.bank-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.bank-panel-heading h3{margin:3px 0 0;font-size:1rem}.bank-panel-heading>strong{white-space:nowrap}.bank-suggestion-list{display:grid;gap:8px}.bank-suggestion{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:12px 13px;border:1px solid var(--border);border-radius:10px;background:#f8fbfb;color:var(--ink);text-align:left;cursor:pointer}.bank-suggestion:hover{border-color:var(--cyan-500);background:#f2fbfc}.bank-suggestion.is-selected{border:2px solid var(--orange-500);padding:11px 12px;background:#fff7f1;box-shadow:0 4px 12px rgba(253,133,73,.1)}.bank-suggestion span:first-child{display:grid;gap:3px}.bank-suggestion small{color:var(--muted);font-size:.7rem}.bank-no-suggestion{padding:14px;background:#fffaf0}.bank-family-picker-panel{display:grid;align-content:start;gap:15px}.bank-family-picker-panel>.btn{width:100%;margin-top:3px}.bank-duplicate-warning{display:grid;gap:8px;margin:0}.bank-duplicate-warning .checkbox-field{margin-top:5px;color:inherit}.bank-allocation-result{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;border-top:2px solid #9ad4b2;background:#f3fbf6}.bank-allocation-result h3{margin:3px 0 5px}.bank-allocation-result p:last-child{margin:0}.bank-empty-state{padding-block:34px}.bank-import-history{margin-top:20px}.bank-import-history>summary{cursor:pointer;list-style:none}.bank-import-history>summary::-webkit-details-marker{display:none}.bank-import-history[open]>summary{background:#f8fcfd}.bank-import-history .table-wrap{overflow-x:auto}.bank-import-history table{min-width:900px}
@media(max-width:1000px){.bank-upload-body,.bank-allocation-form{grid-template-columns:1fr}.bank-upload-form{grid-template-columns:1fr}.bank-upload-form .btn{justify-self:start}.bank-table-wrap{overflow-x:auto}}
@media(max-width:780px){.bank-toolbar{align-items:stretch;flex-direction:column}.bank-account-filter{width:100%;min-width:0}.bank-allocation-result{align-items:flex-start;flex-direction:column}.bank-account-badges{justify-content:flex-start}.bank-upload-card .card-head{align-items:flex-start;flex-direction:column}}

/* Human resources and payroll */
.hr-form-stack{display:grid;gap:20px}.hr-stats{grid-template-columns:repeat(auto-fit,minmax(185px,1fr))}.stat-card .stat-text{font-size:1.15rem}.hr-hero,.hr-payroll-hero{margin-bottom:0}.hr-tab-panel{padding-top:20px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.details-list{display:grid;gap:0;margin:0}.details-list>div{display:grid;grid-template-columns:minmax(145px,.7fr) minmax(0,1.3fr);gap:18px;padding:11px 0;border-bottom:1px solid var(--border)}.details-list>div:last-child{border-bottom:0}.details-list dt{color:var(--muted);font-size:.76rem;font-weight:800;text-transform:uppercase}.details-list dd{margin:0;font-weight:650;overflow-wrap:anywhere}.preserve-lines{white-space:pre-wrap}.empty-state.compact{min-height:0;padding:28px}.hr-note{padding:18px 0;border-bottom:1px solid var(--border)}.hr-note:first-child{padding-top:0}.hr-note:last-child{border-bottom:0}.hr-note.is-archived{opacity:.65}.inline-details>summary{list-style:none;cursor:pointer}.inline-details>summary::-webkit-details-marker{display:none}.inline-edit{display:flex;align-items:end;gap:8px;min-width:420px;margin-top:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#f8fbfb}.work-day-fieldset{min-width:0;margin:0;padding:12px 14px 13px;border:1px solid var(--border);border-radius:10px}.work-day-fieldset legend{padding:0 5px;color:var(--ink);font-size:.78rem;font-weight:800}.work-day-options{display:flex;flex-wrap:wrap;gap:9px 16px;margin-bottom:7px}.work-day-options .checkbox-field{min-width:102px}.work-schedule-summary{display:grid;gap:5px;padding:14px 16px;border:1px solid #cfe1e4;border-radius:10px;background:#f5fbfc}.work-schedule-summary span{color:var(--muted);font-size:.78rem;line-height:1.45}.employment-end-fields{padding:14px;border:1px solid #f0d1c0;border-radius:10px;background:#fff8f4}.employment-end-note{align-self:center;margin:0}.payroll-entry-table{overflow-x:auto}.payroll-entry-table table{min-width:2750px}.payroll-entry-table th,.payroll-entry-table td{padding:9px 8px;vertical-align:top}.payroll-entry-table .payroll-input{min-width:105px;padding:8px}.payroll-entry-table textarea{min-width:190px;min-height:62px}.payroll-entry-table td:first-child{position:sticky;left:0;z-index:1;min-width:220px;background:#fff;box-shadow:5px 0 8px rgba(16,47,39,.04)}
@media(max-width:900px){.detail-grid{grid-template-columns:1fr}.inline-edit{align-items:stretch;flex-direction:column;min-width:260px}.hr-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.hr-stats{grid-template-columns:1fr}.details-list>div{grid-template-columns:1fr;gap:4px}}
.payroll-control-history{margin-bottom:20px}.hr-approval-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:18px}.hr-approval-stage{display:grid;gap:4px;padding:13px;border:1px solid var(--border);border-radius:11px;background:#f7f9f9}.hr-approval-stage>span{color:var(--muted);font-size:.7rem;font-weight:900;text-transform:uppercase}.hr-approval-stage>strong{font-size:.86rem}.hr-approval-stage>small{color:var(--muted);font-size:.7rem}.hr-approval-stage.is-complete{border-color:#b9dfc9;background:#f2fbf6}.hr-approval-stage.is-complete>span{color:#17663e}
@media(max-width:900px){.hr-approval-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.hr-approval-grid{grid-template-columns:1fr}}

/* HR holiday calendar */
.holiday-calendar-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.holiday-month{min-width:0}.holiday-month .card-head{padding:13px 16px}.holiday-month .card-head h3{margin:0}.holiday-month-body{padding:12px}.holiday-weekdays,.holiday-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.holiday-weekdays{margin-bottom:5px}.holiday-weekdays span{padding:4px 0;color:var(--muted);font-size:.66rem;font-weight:900;text-align:center;text-transform:uppercase}.holiday-day{display:grid;align-content:start;min-height:54px;padding:5px;border:1px solid #e4ecee;border-radius:7px;background:#fff;overflow:hidden}.holiday-day strong{font-size:.76rem}.holiday-day small{display:block;margin-top:3px;font-size:.58rem;line-height:1.15;overflow-wrap:anywhere}.holiday-day.weekend{background:#f4f6f6;color:#879398}.holiday-day.public-holiday{border-color:#8ccfd5;background:#edfafa;color:#164f55}.holiday-day.special-holiday{border-color:#efc36d;background:#fff8e9;color:#805208}.holiday-key{display:inline-block;width:11px;height:11px;border:1px solid transparent;border-radius:3px;vertical-align:-1px}.holiday-key.public-holiday{border-color:#8ccfd5;background:#edfafa}.holiday-key.special-holiday{border-color:#efc36d;background:#fff8e9}.check-row{display:flex!important;align-items:flex-start!important;gap:10px!important}.check-row input[type=checkbox]{width:auto;margin-top:3px}.check-row span{display:grid;gap:3px}.check-row small{display:block}.leave-setup-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.leave-recalc-panel{border:2px solid #cfe1e4}.leave-recalc-panel.is-stale{border-color:#efc36d}.leave-config-summary{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:1200px){.holiday-calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.holiday-calendar-grid{grid-template-columns:1fr}.holiday-day{min-height:48px;padding:4px}.holiday-day small{font-size:.55rem}}

/* v1.13.6: HR academic year comes from Settings and is a compact inline selector. */
.hr-page-intro { display: grid; gap: 10px; min-width: 0; }
.hr-page-intro > .muted { margin: 0; }
.hr-year-picker { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hr-year-picker label { margin: 0; font-size: .76rem; font-weight: 900; letter-spacing: .02em; }
.hr-year-picker select { width: auto; min-width: 145px; max-width: 190px; min-height: 38px; padding-top: 7px; padding-bottom: 7px; }
.hr-year-manage { font-size: .76rem; font-weight: 800; }

.academic-year-create-grid { display: grid; grid-template-columns: 150px 190px 190px minmax(170px,1fr) auto; align-items: end; gap: 14px; }
.academic-year-create-grid label { min-width: 0; }
.academic-year-current { min-height: 42px; align-self: end; padding: 0 4px 10px; white-space: nowrap; }
.academic-year-add { min-height: 42px; white-space: nowrap; }

@media (max-width: 860px) {
  .academic-year-create-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .academic-year-current { padding-bottom: 10px; }
  .academic-year-add { justify-self: start; }
}
@media (max-width: 650px) {
  .hr-year-picker { align-items: stretch; }
  .hr-year-picker label { width: 100%; }
  .hr-year-picker select { width: 100%; max-width: none; }
  .academic-year-create-grid { grid-template-columns: 1fr; }
  .academic-year-current { min-height: auto; padding: 4px 0; }
  .academic-year-add { width: 100%; }
}

/* Finance daily payment-flow / cash-up reconciliation */
.finance-cashup-filter-bar { grid-template-columns: 180px 180px auto auto; justify-content: start; align-items: end; max-width: 690px; }
.finance-cashup-period { display: grid; justify-items: end; gap: 3px; text-align: right; }
.finance-cashup-period span { color: var(--muted); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.finance-cashup-period strong { color: var(--green-950); font-size: .9rem; }
.cashup-summary-grid { display: grid; grid-template-columns: repeat(6, minmax(130px, 1fr)); gap: 10px; margin-top: 18px; }
.cashup-summary-card { min-width: 0; padding: 13px 14px; border: 1px solid var(--border); border-radius: 11px; background: #f8fcfd; }
.cashup-summary-card.is-total { background: var(--green-100); }
.cashup-summary-card span, .cashup-summary-card small { display: block; color: var(--muted); font-size: .7rem; font-weight: 700; }
.cashup-summary-card span { text-transform: uppercase; letter-spacing: .04em; }
.cashup-summary-card strong { display: block; margin: 4px 0 2px; color: var(--green-950); font-size: 1.1rem; }
.finance-cashup-note { margin: 15px 0 0; }
.cashup-method-section { border-top: 1px solid var(--border); }
.cashup-method-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 16px 20px; background: #fbfdfd; }
.cashup-method-head h3 { margin: 0 0 3px; font-size: .95rem; }
.cashup-method-head span { color: var(--muted); font-size: .72rem; }
.cashup-method-head > strong { color: var(--green-950); font-size: 1.05rem; }
.cashup-table td { padding-top: 11px; padding-bottom: 11px; }
.cashup-table tfoot td { border-top: 2px solid var(--border); border-bottom: 0; background: #f8fcfd; }
.cashup-subtotal-row td:first-child { text-align: right; }
.cashup-subtotal-row small { display: block; margin-top: 2px; color: var(--muted); font-weight: 400; }
.cashup-grand-total { display: flex; align-items: center; justify-content: flex-end; gap: 22px; padding: 18px 20px; border-top: 2px solid var(--green-900); background: var(--green-100); }
.cashup-grand-total span { color: var(--green-900); font-size: .82rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.cashup-grand-total strong { color: var(--green-950); font-size: 1.35rem; }
.is-reversed-row { opacity: .62; }

@media (max-width: 1180px) {
  .cashup-summary-grid { grid-template-columns: repeat(3, minmax(130px, 1fr)); }
}

@media (max-width: 780px) {
  .finance-cashup-filter-bar { grid-template-columns: 1fr; max-width: none; }
  .finance-cashup-period { justify-items: start; text-align: left; }
  .cashup-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cashup-method-head { align-items: flex-start; }
  .cashup-grand-total { justify-content: space-between; }
}

/* v1.13.31 learner billing setup: tuition + Additional Fees */
.learner-billing-head{align-items:flex-start;gap:18px}.learner-billing-head .actions{align-items:center;flex-wrap:wrap}.billing-total-chip{display:grid;gap:2px;min-width:150px;padding:9px 12px;border:1px solid #cfe1e4;border-radius:10px;background:#f6fbfc;text-align:right}.billing-total-chip span{color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.billing-total-chip strong{color:var(--green-950);font-size:1.15rem}.learner-billing-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:18px}.learner-billing-summary>div{display:grid;gap:5px;padding:13px 14px;border:1px solid var(--border);border-radius:10px;background:#fbfdfd}.learner-billing-summary>div.is-total{border-color:#c7e4e7;background:#eefafb}.learner-billing-summary span{color:var(--muted);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.learner-billing-summary strong{font-size:1.05rem}.learner-billing-note{margin-bottom:22px}.billing-config-block{padding:20px 0;border-top:1px solid var(--border)}.billing-config-block:first-of-type{border-top:0}.billing-config-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.billing-config-heading h3{margin:2px 0 0}.billing-config-heading>.muted{max-width:520px;text-align:right}.billing-add-control{margin-top:16px}.billing-add-control>summary{display:inline-flex;list-style:none;cursor:pointer}.billing-add-control>summary::-webkit-details-marker{display:none}.billing-add-control[open]>summary{margin-bottom:4px}.billing-fee-table table{min-width:900px}.additional-fee-assignment-form{display:grid;gap:18px;margin-top:18px;padding:18px;border:1px solid #d8e6e8;border-radius:12px;background:#fbfdfd}.additional-fee-fields{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(150px,.5fr) minmax(170px,.65fr) minmax(170px,.65fr);gap:16px}.additional-fee-fields .field-full{grid-column:1/-1}.additional-fee-assignment-form .form-actions{margin-top:0}.billing-frequency-help{margin:15px 0 0;padding-top:12px;border-top:1px dashed var(--border)}
@media(max-width:980px){.learner-billing-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.additional-fee-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.billing-config-heading{flex-direction:column}.billing-config-heading>.muted{text-align:left}}
@media(max-width:650px){.learner-billing-summary{grid-template-columns:1fr}.additional-fee-fields{grid-template-columns:1fr}.additional-fee-fields .field-full{grid-column:auto}.billing-total-chip{width:100%;text-align:left}.learner-billing-head .actions{width:100%}}

/* v1.13.36 — granular Roles & Permissions matrix */
.permission-super-admin-card { max-width: 920px; }
.permission-matrix-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:16px 18px; margin-bottom:18px; }
.permission-matrix-toolbar > div:first-child { display:grid; gap:3px; }
.permission-matrix-toolbar small { color:var(--muted); }
.permission-pages { display:grid; gap:16px; padding-bottom:94px; }
.permission-page { overflow:hidden; }
.permission-page-summary { display:grid; grid-template-columns:24px minmax(0,1fr) auto 22px; align-items:center; gap:12px; padding:17px 18px; cursor:pointer; list-style:none; }
.permission-page-summary::-webkit-details-marker { display:none; }
.permission-page[open] .permission-page-summary { border-bottom:1px solid var(--border); }
.permission-parent-check { display:flex; align-items:center; justify-content:center; }
.permission-parent-check input, .permission-section-toggle input, .permission-action input { width:17px; height:17px; accent-color:var(--green-900); }
.permission-page-title { display:grid; gap:3px; }
.permission-page-title > strong { font-size:1rem; }
.permission-page-title > small { color:var(--muted); line-height:1.35; }
.permission-page-count { min-width:54px; padding:4px 8px; text-align:center; color:var(--green-900); background:var(--cyan-100); border:1px solid var(--border); border-radius:999px; font-size:.72rem; font-weight:800; }
.permission-chevron { color:var(--muted); font-size:1.1rem; transition:transform .18s ease; }
.permission-page[open] .permission-chevron { transform:rotate(180deg); }
.permission-page-body { display:grid; gap:0; }
.permission-section { padding:16px 18px 18px; }
.permission-section + .permission-section { border-top:1px solid var(--border); }
.permission-section-head { margin-bottom:11px; }
.permission-section-toggle { display:inline-grid; grid-template-columns:20px minmax(0,1fr); gap:9px; align-items:start; cursor:pointer; }
.permission-section-toggle > span { display:grid; gap:1px; }
.permission-section-toggle small { color:var(--muted); font-size:.72rem; }
.permission-action-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.permission-action { display:grid; grid-template-columns:20px minmax(0,1fr); align-items:start; gap:10px; padding:12px 13px; background:#f8fcfd; border:1px solid var(--border); border-radius:10px; cursor:pointer; }
.permission-action:hover { border-color:var(--cyan-500); }
.permission-action:has(input:checked) { background:var(--cyan-100); border-color:rgba(138,224,229,.95); }
.permission-action > span { min-width:0; }
.permission-action strong, .permission-action small, .permission-action code { display:block; }
.permission-action small { margin-top:2px; color:var(--muted); line-height:1.4; }
.permission-action code { width:fit-content; max-width:100%; overflow-wrap:anywhere; margin-top:7px; padding:2px 6px; color:var(--green-700); background:#fff; border:1px solid var(--border); border-radius:5px; font-size:.65rem; }
@media (max-width: 900px) {
  .permission-action-grid { grid-template-columns:1fr; }
  .permission-matrix-toolbar { align-items:stretch; flex-direction:column; }
}
@media (max-width: 640px) {
  .permission-page-summary { grid-template-columns:22px minmax(0,1fr) auto; }
  .permission-chevron { display:none; }
  .permission-page-count { font-size:.66rem; min-width:48px; }
  .permission-page-summary, .permission-section { padding-left:14px; padding-right:14px; }
}

/* v1.13.42 payment allocation */
.payment-allocation-panel{margin:4px 0 0;padding:16px;border:1px solid var(--border);border-radius:12px;background:#f8fbfc}.payment-allocation-panel legend{padding:0 6px;color:var(--ink);font-size:.82rem;font-weight:900}.payment-allocation-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px}.payment-allocation-panel>[data-specific-allocation-fields]{display:grid;gap:6px}.payment-allocation-empty{margin:2px 0 0}.payment-allocation-panel select:disabled{opacity:.6}.bank-family-picker-panel .payment-allocation-panel{margin:0;background:#fff}.bank-family-picker-panel .payment-allocation-choices{grid-template-columns:1fr}.bank-family-picker-panel .choice-card{padding:10px 11px}
@media(max-width:780px){.payment-allocation-choices{grid-template-columns:1fr}}

/* v1.13.45 linked payment visibility + allocation preview */
.allocation-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 12px}.allocation-summary-item{padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:#f8fcfd}.allocation-summary-item span{display:block;margin-bottom:4px;color:var(--muted);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.allocation-summary-item strong{display:block;font-size:1rem;color:var(--ink)}.allocation-summary-item.has-remainder{background:#fff8f2;border-color:rgba(253,133,73,.35)}.allocation-preview{margin-top:12px;padding:13px;border:1px solid rgba(138,224,229,.95);border-radius:10px;background:#eefbfd}.allocation-preview .allocation-summary-grid{margin-bottom:10px}.allocation-preview-message{margin:0;color:var(--ink);font-size:.82rem;line-height:1.5}.allocation-remainder-note{margin:10px 0 0}
@media(max-width:900px){.allocation-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.allocation-summary-grid{grid-template-columns:1fr}}

/* v1.13.48 Academics / progress reports */
.settings-link-card{display:block;color:var(--ink);text-decoration:none;transition:.16s ease}.settings-link-card:hover{border-color:var(--orange-500);transform:translateY(-1px)}.settings-link-card h2{margin:4px 0 8px}.settings-link-card p:last-child{margin-bottom:0}.academics-mark-grid{max-height:68vh}.academics-mark-grid table{min-width:max-content}.academics-mark-grid th{min-width:115px;max-width:160px;vertical-align:bottom}.academics-mark-grid th small{display:block;margin-top:5px;max-width:150px;color:var(--muted);font-size:.65rem;line-height:1.25;text-transform:none;letter-spacing:0;white-space:normal}.academics-mark-grid .academics-sticky-col{position:sticky;left:0;z-index:3;min-width:240px;background:#fff;box-shadow:5px 0 8px rgba(16,47,39,.05)}.academics-mark-grid thead .academics-sticky-col{z-index:5;background:#f6fafb}.academics-mark-grid .mark-input{width:62px;min-width:62px;padding:8px;text-align:center}.academic-comment-form textarea{min-width:290px}.academic-comment-form input[type=number]{max-width:110px}

/* v1.13.52 Amazon SES delivery tracking */
.email-log-stats,.email-detail-stats{margin-bottom:18px}.email-log-filter-bar{display:grid;grid-template-columns:150px 150px 180px minmax(240px,1fr) auto auto;gap:10px;align-items:end;margin-bottom:16px}.email-status-note{display:inline-block;max-width:280px;margin-top:5px;line-height:1.35}.email-event-timeline{padding:4px 22px 22px}.email-event-item{position:relative;display:grid;grid-template-columns:18px 150px minmax(0,1fr);gap:12px;padding:15px 0}.email-event-item:not(:last-child)::before{content:"";position:absolute;left:8px;top:29px;bottom:-15px;width:2px;background:var(--border)}.email-event-dot{z-index:1;width:12px;height:12px;margin-top:5px;border:3px solid #fff;border-radius:50%;background:var(--cyan-500);box-shadow:0 0 0 2px var(--border)}.email-event-time{padding-top:2px;color:var(--muted);font-size:.78rem}.email-event-content{min-width:0}.email-event-content p{margin:7px 0 0;line-height:1.5}.email-click-link{display:block;margin-top:8px;padding:7px 9px;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:7px;background:#f7faf9;font-size:.72rem}.email-delivery-summary{margin:20px 0}.email-delivery-error{margin-top:16px}.email-tracking-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.email-tracking-grid>div{display:grid;gap:5px;padding:13px 14px;border:1px solid var(--border);border-radius:10px;background:#f8fcfd}.email-tracking-grid span{color:var(--muted);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.email-tracking-webhook{grid-column:1/-1}.email-tracking-webhook code{overflow-wrap:anywhere}.email-suppression-table table{min-width:850px}
@media(max-width:980px){.email-log-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.email-log-filter-bar label:nth-child(4){grid-column:1/-1}.email-tracking-grid{grid-template-columns:1fr}.email-tracking-webhook{grid-column:auto}}
@media(max-width:650px){.email-log-filter-bar{grid-template-columns:1fr}.email-log-filter-bar label:nth-child(4){grid-column:auto}.email-event-timeline{padding-left:14px;padding-right:14px}.email-event-item{grid-template-columns:18px minmax(0,1fr)}.email-event-time{grid-column:2}.email-event-content{grid-column:2}.email-event-item:not(:last-child)::before{bottom:-28px}}

/* v1.13.53 family email composer */
.family-email-context{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px;padding:14px 16px;border:1px solid #cfe1e4;border-radius:12px;background:#f5fbfc}.family-email-context>div{display:grid;gap:3px}.family-email-context strong{font-size:.95rem}.family-recipient-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.family-recipient-card{min-height:84px}.family-recipient-email{margin-top:4px!important;font-size:.78rem!important;overflow-wrap:anywhere}.family-recipient-meta{display:flex!important;flex-wrap:wrap;gap:5px;margin-top:8px!important}.family-recipient-meta .badge{font-size:.62rem}.family-recipient-card.is-disabled input{pointer-events:none}
@media(max-width:900px){.family-recipient-grid{grid-template-columns:1fr}.family-email-context{align-items:flex-start;flex-direction:column}}

/* v1.13.58: richer bank-allocation reference context */
.bank-suggestion-copy{display:grid;gap:3px;min-width:0;flex:1}.bank-suggestion-reason{color:var(--muted);font-size:.7rem}.bank-suggestion-context{display:grid;gap:2px;margin-top:3px;color:var(--muted);font-size:.72rem;line-height:1.35}.bank-suggestion-context b{color:var(--ink);font-weight:700}.bank-suggestion-badges{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;flex:0 0 auto}.bank-readonly-suggestions{padding:18px 22px 22px;border-top:1px solid #d9e7df;background:#fbfefd}.bank-readonly-suggestions .bank-panel-heading{margin-bottom:12px}.bank-suggestion-readonly{cursor:default;background:#fff}.bank-suggestion-readonly:hover{border-color:var(--border);background:#fff}.bank-suggestion-readonly.is-allocated-match{border-color:#9ad4b2;background:#f3fbf6}.bank-suggestion-readonly.is-allocated-match:hover{border-color:#9ad4b2;background:#f3fbf6}
@media(max-width:680px){.bank-suggestion{align-items:flex-start;flex-direction:column}.bank-suggestion-badges{justify-content:flex-start}.bank-suggestion-context{font-size:.7rem}}

/* v1.13.59 — historical bank allocation date filter */
.bank-toolbar-main{display:flex;align-items:end;gap:12px;flex-wrap:wrap;min-width:0}.bank-history-filter{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.bank-history-filter label{gap:4px;min-width:150px}.bank-history-filter input[type=date]{min-width:150px}.bank-history-filter .btn{white-space:nowrap}
@media(max-width:980px){.bank-toolbar{align-items:stretch;flex-wrap:wrap}.bank-toolbar-main{width:100%}.bank-account-filter{margin-left:auto}}
@media(max-width:780px){.bank-toolbar-main,.bank-history-filter{align-items:stretch;flex-direction:column;width:100%}.bank-history-filter label,.bank-history-filter input[type=date],.bank-history-filter .btn{width:100%;min-width:0}.bank-account-filter{margin-left:0}}

/* v1.13.63 — shared support ticket work queue */
.nav-label{min-width:0}.nav-count{margin-left:auto;display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--orange-500);color:#fff;font-size:.68rem;font-weight:900;line-height:1}.ticket-order-note{margin:5px 0 0;color:var(--muted);font-size:.78rem}.ticket-stats{margin-bottom:18px}.ticket-filter-bar{display:grid;grid-template-columns:180px 170px minmax(220px,280px) minmax(260px,1fr) auto auto;gap:10px;align-items:end;margin-bottom:16px}.ticket-table{min-width:1120px}.ticket-row td:first-child{border-left:5px solid transparent}.ticket-row-urgent td{background:#fff8f7}.ticket-row-urgent td:first-child{border-left-color:#d92d20}.ticket-row-high td{background:#fffaf2}.ticket-row-high td:first-child{border-left-color:#f79009}.ticket-row-normal td{background:#f8fcff}.ticket-row-normal td:first-child{border-left-color:#2e90fa}.ticket-row-low td{background:#fbfbfb}.ticket-row-low td:first-child{border-left-color:#98a2b3}.ticket-row-closed td{background:#f3fbf6}.ticket-row-closed td:first-child{border-left-color:#32a36b}.ticket-row:hover td{filter:brightness(.99)}.ticket-queue-number{width:72px;font-weight:900;color:var(--muted);white-space:nowrap}.ticket-title-cell{min-width:260px}.ticket-title-cell strong,.ticket-title-cell span,.ticket-title-cell small{display:block}.ticket-title-cell span{margin-top:2px;font-weight:700}.ticket-title-cell small{margin-top:3px;color:var(--muted)}.ticket-priority-badge.ticket-priority-urgent{color:#b42318;background:#fff0ee}.ticket-priority-badge.ticket-priority-high{color:#b54708;background:#fff4e5}.ticket-priority-badge.ticket-priority-normal{color:#175cd3;background:#eff8ff}.ticket-priority-badge.ticket-priority-low{color:#475467;background:#f2f4f7}.ticket-create-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:20px;align-items:start}.ticket-create-card{max-width:none}.ticket-priority-guide{position:sticky;top:20px}.ticket-guide-item{display:grid;gap:3px;padding:13px 14px;margin-bottom:9px;border-left:5px solid;border-radius:9px;background:#f8fafb}.ticket-guide-item:last-child{margin-bottom:0}.ticket-guide-item span{color:var(--muted);font-size:.78rem}.ticket-guide-urgent{border-color:#d92d20;background:#fff8f7}.ticket-guide-high{border-color:#f79009;background:#fffaf2}.ticket-guide-normal{border-color:#2e90fa;background:#f8fcff}.ticket-guide-closed{border-color:#32a36b;background:#f3fbf6}.ticket-detail-banner{margin-bottom:20px;border-left:6px solid transparent}.ticket-detail-banner.ticket-row-urgent{border-left-color:#d92d20}.ticket-detail-banner.ticket-row-high{border-left-color:#f79009}.ticket-detail-banner.ticket-row-normal{border-left-color:#2e90fa}.ticket-detail-banner.ticket-row-low{border-left-color:#98a2b3}.ticket-detail-banner.ticket-row-closed{border-left-color:#32a36b;background:#f9fdfb}.ticket-done-mark{display:inline-flex;align-items:center;gap:5px;padding:7px 11px;border-radius:999px;background:var(--success-bg);color:var(--success);font-weight:900}.ticket-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);gap:28px}.ticket-description-panel h3{margin:0 0 10px;font-size:.9rem}.ticket-description{margin:0;line-height:1.7;overflow-wrap:anywhere}.ticket-meta-list{margin:0}.ticket-work-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:20px;align-items:start}.ticket-timeline{display:grid;gap:0}.ticket-update{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:0 0 20px}.ticket-update:not(:last-child)::before{content:"";position:absolute;left:7px;top:16px;bottom:0;width:2px;background:var(--border)}.ticket-update-dot{z-index:1;width:14px;height:14px;margin-top:3px;border:3px solid #fff;border-radius:50%;background:var(--cyan-500);box-shadow:0 0 0 2px var(--border)}.ticket-update-created .ticket-update-dot{background:var(--orange-500)}.ticket-update strong,.ticket-update small{display:block}.ticket-update small{margin-top:2px;color:var(--muted);font-size:.72rem}.ticket-update p{margin:8px 0 0;padding:11px 13px;border-radius:9px;background:#f8fbfc;line-height:1.55;overflow-wrap:anywhere}.ticket-comment-form{margin-top:8px;padding-top:18px;border-top:1px solid var(--border)}.ticket-comment-form .form-actions{padding-top:10px}.ticket-manager-card{position:sticky;top:20px}.ticket-manage-fields{display:grid;gap:14px}.ticket-manager-note{margin:14px 0 0;color:var(--muted);font-size:.76rem;line-height:1.5}
@media(max-width:1100px){.ticket-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.ticket-filter-bar label:nth-child(4){grid-column:1/-1}.ticket-create-layout,.ticket-work-grid,.ticket-detail-grid{grid-template-columns:1fr}.ticket-priority-guide,.ticket-manager-card{position:static}}
@media(max-width:700px){.ticket-filter-bar{grid-template-columns:1fr}.ticket-filter-bar label:nth-child(4){grid-column:auto}.ticket-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Parent-facing invoice document */
.invoice-admin-actions form{margin:0}.invoice-sheet{max-width:980px;margin:0 auto 36px;background:#fff;border:1px solid #dfe8e5;border-radius:18px;padding:34px 38px;color:#263747;box-shadow:0 16px 38px rgba(35,55,70,.08)}.invoice-head{display:flex;align-items:flex-start;justify-content:space-between;gap:30px;padding-bottom:24px;border-bottom:3px solid var(--accent,#fd8549)}.invoice-brand{display:flex;align-items:center;gap:20px;min-width:0}.invoice-logo{width:92px;height:92px;object-fit:contain}.invoice-kicker{display:block;font-size:11px;font-weight:800;letter-spacing:2px;color:var(--accent,#fd8549);margin-bottom:5px}.invoice-brand h1{margin:0;font-size:24px;line-height:1.15}.invoice-title-block{text-align:right;display:grid;gap:4px}.invoice-title-block h2{margin:0;font-size:34px;line-height:1}.invoice-title-block strong{font-size:16px}.invoice-title-block span{font-size:13px;color:#6d7b86}.invoice-title-block .invoice-void{color:#b42318;font-weight:800;letter-spacing:.8px}.invoice-party-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:26px 0}.invoice-party-card{border:1px solid #dfe8e5;border-radius:12px;padding:18px 20px;min-height:150px;background:#fbfdfd}.invoice-party-card h3{margin:0 0 10px;font-size:17px}.invoice-party-card p{margin:4px 0;font-size:13px;line-height:1.35}.invoice-card-label{display:block;font-size:10px;font-weight:800;letter-spacing:1.5px;color:var(--accent,#fd8549);text-transform:uppercase;margin-bottom:5px}.invoice-lines-wrap{border:1px solid #dfe8e5;border-radius:12px 12px 0 0;overflow:hidden}.invoice-lines{width:100%;border-collapse:collapse}.invoice-lines th{background:#2f3c4c;color:#fff;font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:12px 14px}.invoice-lines td{padding:13px 14px;border-bottom:1px solid #e3eae8;font-size:13px;vertical-align:top}.invoice-lines tbody tr:last-child td{border-bottom:0}.invoice-total-row{margin-left:auto;width:min(360px,100%);display:flex;align-items:center;justify-content:space-between;padding:16px 18px;background:#f5f8f7;border:1px solid #dfe8e5;border-top:0;border-radius:0 0 12px 12px;font-size:16px;text-transform:uppercase}.invoice-total-row strong{font-size:22px}.invoice-bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:32px}.invoice-bottom-grid h3{font-size:12px;text-transform:uppercase;letter-spacing:1.3px;color:var(--accent,#fd8549);margin:0 0 10px}.invoice-bottom-grid p{font-size:13px;line-height:1.5;margin:4px 0}.invoice-banking p{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #edf1f0;padding:5px 0}.invoice-banking p span{color:#6d7b86}.invoice-source-note{color:#6d7b86;font-size:11px!important}.invoice-footer{margin-top:28px;padding-top:14px;border-top:1px solid #dfe8e5;color:#6d7b86;font-size:11px;text-align:center}
@media(max-width:760px){.invoice-sheet{padding:24px 18px;border-radius:12px}.invoice-head{display:block}.invoice-title-block{text-align:left;margin-top:22px}.invoice-party-grid,.invoice-bottom-grid{grid-template-columns:1fr}.invoice-logo{width:72px;height:72px}.invoice-lines-wrap{overflow-x:auto}.invoice-lines{min-width:620px}}
@media print{.invoice-sheet{max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;padding:10mm 8mm}.invoice-source-note{display:none!important}.invoice-head{break-inside:avoid}.invoice-party-grid,.invoice-total-row,.invoice-bottom-grid{break-inside:avoid}}

/* v1.13.82: Bank Allocation tracing tickets and Super Admin non-payment removal. */
.bank-trace-status{margin:0;padding:18px 22px;border-top:2px solid #e8a11b;border-bottom:1px solid var(--border);background:#fffaf0}.bank-trace-status.is-closed{border-top-color:#69b98a;background:#f3fbf6}.bank-trace-status-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.bank-trace-status-head h3{margin:3px 0 5px;font-size:1rem}.bank-trace-status-head p:last-child{margin:0}.bank-trace-feedback{margin-top:14px;padding-top:12px;border-top:1px solid rgba(0,0,0,.08)}.bank-trace-feedback>strong{display:block;margin-bottom:7px}.bank-trace-comment{padding:9px 0;border-top:1px dashed var(--border)}.bank-trace-comment:first-of-type{border-top:0}.bank-trace-comment span{display:block;color:var(--muted);font-size:.72rem}.bank-trace-comment p{margin:4px 0 0;white-space:normal}.bank-ignore-control{margin-top:2px;border:1px solid #efc7c7;border-radius:10px;background:#fff8f8}.bank-ignore-control>summary{cursor:pointer;padding:10px 12px;color:var(--danger);font-size:.78rem;font-weight:800;list-style:none}.bank-ignore-control>summary::-webkit-details-marker{display:none}.bank-ignore-fields{display:grid;gap:10px;padding:0 12px 12px}.bank-ignore-fields p{margin:0}.bank-ignore-fields label{gap:4px}.bank-ignore-fields .btn{justify-self:start}.bank-family-picker-panel>[data-bank-trace-submit]{width:100%}@media(max-width:760px){.bank-trace-status-head{display:grid}.bank-trace-status-head .actions{justify-content:flex-start}}
/* Manual cash capture: denominations are only available for cash payments. */
.cash-breakdown { border:1px solid var(--border, #d8e2e6); border-radius:10px; padding:16px; margin:8px 0; }
.cash-breakdown legend { font-weight:700; padding:0 8px; }
.cash-denomination-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(105px,1fr)); gap:10px; }
.cash-denomination-grid label { display:block; }
.cash-denomination-grid input { width:100%; }
.cash-breakdown-summary { display:flex; align-items:end; gap:24px; flex-wrap:wrap; margin-top:16px; }
.cash-breakdown-summary p { margin:0 0 9px; font-weight:700; }

/* Payment arrangement marker and family-note reminders. */
.payment-arrangement-flag { padding:16px; border:1px solid var(--border); border-radius:10px; background:#f8fafb; }
.payment-arrangement-flag > small { display:block; margin-top:8px; }
.arrangement-toggle { position:relative; display:flex; align-items:center; gap:12px; cursor:pointer; }
.arrangement-toggle input { position:absolute; width:1px; height:1px; opacity:0; }
.arrangement-toggle-track { position:relative; width:44px; height:25px; flex:0 0 44px; border-radius:14px; background:#8c98a3; transition:background .15s; }
.arrangement-toggle-track::after { content:''; position:absolute; width:19px; height:19px; left:3px; top:3px; background:#fff; border-radius:50%; transition:transform .15s; }
.arrangement-toggle input:checked + .arrangement-toggle-track { background:var(--green-900); }
.arrangement-toggle input:checked + .arrangement-toggle-track::after { transform:translateX(19px); }
.arrangement-toggle input:focus-visible + .arrangement-toggle-track { outline:3px solid var(--cyan-500); outline-offset:3px; }
.follow-up-fields { display:flex; align-items:center; flex-wrap:wrap; gap:16px; padding:12px; border:1px solid var(--border); border-radius:9px; }
.follow-up-fields > label { margin:0; }
.follow-up-fields input:disabled { opacity:.55; }
.note-follow-up-status { margin:8px 0; }
.note-follow-up-editor { margin:8px 0; }
.note-follow-up-editor > summary { cursor:pointer; font-weight:700; }
.note-follow-up-editor > form { margin-top:10px; }
.note-follow-up-action { margin:8px 0; }
.follow-up-filters { display:flex; align-items:flex-end; flex-wrap:wrap; }
.follow-up-filters > label { margin:0; flex:1 1 145px; }
.follow-up-table { min-width:950px; }
.follow-up-table td { vertical-align:top; }
.follow-up-table small { display:block; margin-top:6px; }
.follow-up-note { min-width:260px; max-width:420px; overflow-wrap:anywhere; white-space:normal; }
.family-note-row > .note-follow-up, .family-note-row > .actions { grid-column:2 / -1; }
@media(max-width:780px) { .family-note-row > .note-follow-up, .family-note-row > .actions { grid-column:1; } }

/* Family Billing: focused sections, concise activity and responsive controls. */
.billing-section-tabs { display:flex; gap:4px; flex-wrap:wrap; margin-bottom:20px; padding:4px; border:1px solid var(--border); border-radius:12px; background:#f9fdfe; }
.billing-section-tabs .billing-history-tab { border-radius:8px 8px 0 0; }
.family-billing-stats { grid-template-columns:repeat(3,minmax(0,1fr)); }
.billing-difference { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px; border:1px solid var(--border); border-radius:12px; background:#effafb; margin-bottom:20px; }
.billing-difference p { margin:5px 0 0; }
.billing-advanced { margin-bottom:20px; }
.billing-advanced > summary { cursor:pointer; padding:18px 20px; font-weight:800; }
.billing-advanced[open] > summary { border-bottom:1px solid var(--border); }
.billing-row-actions { min-width:110px; }
.billing-row-actions > summary { cursor:pointer; color:var(--green-900); padding:6px 0; font-size:.8rem; font-weight:750; }
.billing-row-actions > .statement-actions, .billing-row-actions > .actions { display:grid; gap:8px; padding-block:8px; min-width:145px; }
.billing-row-actions .reverse-control form { display:grid; gap:8px; padding:10px 0; }
#billing-history .filter-bar { padding:16px 20px; margin:0; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); align-items:end; }
#billing-history .filter-bar > label { min-width:120px; }
@media(max-width:760px) { .family-billing-stats { grid-template-columns:1fr; } .billing-difference { flex-direction:column; align-items:flex-start; } .billing-section-tabs .billing-history-tab { padding-inline:10px; } }

.family-tab-panel .notice { padding:16px 18px; margin-bottom:20px; border:1px solid #cce5f2; border-radius:10px; background:#eaf5fb; color:#295f86; }
.family-tab-panel .notice-warning { border-color:#eddaad; background:#fffaf0; color:#80551f; }
.family-tab-panel .notice p { margin:5px 0 0; }
