@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap");

:root {
  --bg: #f3f6fb;
  --sidebar: #0b1d55;
  --sidebar-2: #112b73;
  --panel: rgba(255, 255, 255, 0.86);
  --panel-strong: #ffffff;
  --text: #0f172a;
  --muted: #64748b;
  --line: rgba(15, 23, 42, 0.10);
  --blue: #2563eb;
  --blue-dark: #1d4ed8;
  --cyan: #38bdf8;
  --green: #16a34a;
  --orange: #f59e0b;
  --red: #dc2626;
  --purple: #7c3aed;
  --shadow: 0 22px 70px rgba(15, 23, 42, 0.10);
  --soft-shadow: 0 12px 30px rgba(15, 23, 42, 0.07);
  --radius-xl: 30px;
  --radius-lg: 22px;
  --radius-md: 14px;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  font-family: "Poppins", -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", sans-serif;
  background:
    radial-gradient(circle at 5% 0%, rgba(56, 189, 248, .18), transparent 32%),
    radial-gradient(circle at 100% 100%, rgba(37, 99, 235, .16), transparent 36%),
    var(--bg);
}
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }

.hidden { display: none !important; }
.glass-card {
  background: var(--panel);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
  backdrop-filter: blur(22px);
  -webkit-backdrop-filter: blur(22px);
}
.auth-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}
.auth-panel {
  width: min(100%, 520px);
  border-radius: var(--radius-xl);
  padding: 38px;
}
.auth-logo { width: 168px; max-width: 70%; margin-bottom: 24px; }
.auth-panel h1 { font-size: clamp(34px, 6vw, 54px); letter-spacing: -.05em; margin: 0 0 12px; line-height: .98; }
.auth-panel p { color: var(--muted); line-height: 1.55; margin-bottom: 24px; }
.app-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 292px minmax(0, 1fr);
  gap: 24px;
  padding: 24px;
}
.sidebar {
  position: sticky;
  top: 24px;
  height: calc(100vh - 48px);
  border-radius: var(--radius-xl);
  background: linear-gradient(180deg, var(--sidebar), var(--sidebar-2));
  color: white;
  padding: 26px 22px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.sidebar-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; }
.sidebar-brand img { width: 150px; max-height: 58px; object-fit: contain; }
.sidebar-school { margin-bottom: 20px; }
.sidebar-school .label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.55); font-weight: 800; }
.sidebar-school strong { display: block; font-size: 18px; margin-top: 4px; }
.nav-list { display: flex; flex-direction: column; gap: 8px; overflow-y: auto; padding-right: 4px; }
.nav-section { margin: 16px 14px 6px; color: rgba(255,255,255,.55); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; }
.nav-list a {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 14px; border-radius: 16px;
  color: rgba(255,255,255,.88); font-weight: 650;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
.nav-list a:hover { background: rgba(255,255,255,.10); transform: translateX(2px); }
.nav-list a.active { background: rgba(255,255,255,.16); color: #fff; }
.nav-list .icon { width: 24px; text-align: center; opacity: .92; }
.sidebar-footer { margin-top: auto; padding-top: 18px; }
.mini-profile {
  display: flex; gap: 12px; align-items: center; background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.10); border-radius: 18px; padding: 12px; margin-bottom: 12px;
}
.mini-profile span {
  width: 40px; height: 40px; display: grid; place-items: center; border-radius: 14px;
  background: rgba(56,189,248,.24); color: white; font-weight: 800;
}
.mini-profile strong { display: block; font-size: 14px; }
.mini-profile small { display: block; color: rgba(255,255,255,.63); font-size: 12px; }
.main-content { min-width: 0; display: flex; flex-direction: column; gap: 22px; }
.topbar {
  border-radius: var(--radius-xl); padding: 24px 28px; display: flex; justify-content: space-between; align-items: flex-start; gap: 18px;
}
.eyebrow { color: var(--blue); text-transform: uppercase; letter-spacing: .12em; font-size: 12px; font-weight: 800; margin: 0 0 8px; }
h1 { font-size: clamp(34px, 4vw, 52px); letter-spacing: -.055em; line-height: .98; margin: 0 0 8px; }
h2 { font-size: 26px; letter-spacing: -.035em; margin: 0; }
h3 { margin: 0 0 8px; letter-spacing: -.02em; }
.muted { color: var(--muted); line-height: 1.55; }
.topbar-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.status-pill, .soft-label, .badge {
  display: inline-flex; align-items: center; gap: 6px;
  border-radius: 999px; padding: 8px 12px; font-size: 13px; font-weight: 750;
  background: rgba(37,99,235,.10); color: var(--blue);
}
.badge.success { background: rgba(22,163,74,.12); color: var(--green); }
.badge.warning { background: rgba(245,158,11,.14); color: #a16207; }
.badge.danger { background: rgba(220,38,38,.12); color: var(--red); }
.button, .btn {
  border: 0; border-radius: 999px; padding: 12px 18px; font-size: 14px; font-weight: 800; cursor: pointer;
  display: inline-flex; justify-content: center; align-items: center; gap: 8px;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.button:hover, .btn:hover { transform: translateY(-1px); }
.button-primary, .btn-primary { background: var(--blue); color: white; box-shadow: 0 12px 26px rgba(37,99,235,.22); }
.button-primary:hover, .btn-primary:hover { background: var(--blue-dark); }
.button-secondary, .btn-secondary { background: rgba(15,23,42,.07); color: var(--text); }
.button-danger { background: rgba(220,38,38,.12); color: var(--red); }
.full-width { width: 100%; }
.metrics-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 16px; }
.metric-card, .mini-metric, .content-card, .form-card { border-radius: var(--radius-lg); padding: 22px; }
.metric-card span, .mini-metric span { display: block; color: var(--muted); font-size: 13px; font-weight: 750; margin-bottom: 8px; }
.metric-card strong, .mini-metric strong { display: block; font-size: 38px; letter-spacing: -.05em; }
.metric-card small { display: block; color: var(--muted); margin-top: 6px; }
.accent-blue { border-left: 6px solid var(--blue); }
.accent-green { border-left: 6px solid var(--green); }
.accent-orange { border-left: 6px solid var(--orange); }
.accent-purple { border-left: 6px solid var(--purple); }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(320px, .8fr); gap: 18px; align-items: start; }
.content-card { background: var(--panel-strong); border: 1px solid var(--line); box-shadow: var(--soft-shadow); }
.section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.section-heading.compact { margin-bottom: 10px; }
.quick-actions { display: grid; gap: 10px; }
.quick-action { padding: 14px; border: 1px solid var(--line); background: white; border-radius: 16px; text-align: left; font-weight: 750; cursor: pointer; }
.table-wrap { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.data-table th, .data-table td { padding: 13px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.data-table th { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .08em; }
.empty-cell, .empty-state { color: var(--muted); text-align: center; padding: 26px; }
.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 16px; }
.record-card { background: white; border: 1px solid var(--line); border-radius: 20px; padding: 18px; box-shadow: var(--soft-shadow); }
.record-card .actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.form-group { display: flex; flex-direction: column; gap: 8px; }
.form-group.full { grid-column: 1 / -1; }
label { font-weight: 750; font-size: 13px; color: #334155; }
input, select, textarea {
  width: 100%; border: 1px solid var(--line); border-radius: 14px; padding: 12px 13px; background: white; color: var(--text);
}
textarea { min-height: 110px; resize: vertical; }
.status-box { display: none; border-radius: 16px; padding: 14px 16px; margin: 12px 0; font-weight: 650; }
.status-box.show { display: block; }
.status-info { background: rgba(37,99,235,.10); color: var(--blue); }
.status-success { background: rgba(22,163,74,.12); color: var(--green); }
.status-error { background: rgba(220,38,38,.12); color: var(--red); }
.status-neutral { background: rgba(100,116,139,.12); color: #475569; }
.plan-card { cursor: pointer; transition: border-color .18s ease, box-shadow .18s ease; }
.plan-card:hover { border-color: var(--blue); }
.plan-card-selected { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37,99,235,.18); }
.school-selector { min-width: 220px; max-width: 260px; }
.mobile-menu-button { display: none; }

@media (max-width: 1100px) {
  .app-shell { grid-template-columns: 1fr; padding: 16px; }
  .sidebar { position: fixed; inset: 16px auto 16px 16px; width: min(320px, calc(100vw - 32px)); z-index: 20; transform: translateX(-115%); transition: transform .25s ease; }
  body.sidebar-open .sidebar { transform: translateX(0); }
  .mobile-menu-button { display: inline-flex; }
  .topbar { align-items: stretch; flex-direction: column; }
  .metrics-grid, .card-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dashboard-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .metrics-grid, .card-grid, .form-grid { grid-template-columns: 1fr; }
  .topbar, .metric-card, .content-card, .form-card { padding: 18px; border-radius: 22px; }
}

/* Health document requests */
.health-request-section { margin-bottom: 20px; }
.compact-grid { grid-template-columns: repeat(3,minmax(0,1fr)); margin: 16px 0; }
.health-review-modal { width: min(920px, calc(100vw - 28px)); max-height: 90vh; overflow: auto; }
.health-upload-review-list { display: grid; gap: 10px; }
.health-upload-review-list .record-card { align-items: center; display: flex; justify-content: space-between; gap: 14px; }
.health-upload-review-list p { margin: 5px 0 0; }
.button-danger { background: #fee2e2; border-color: #fecaca; color: #b91c1c; }
@media (max-width: 760px) {
  .compact-grid { grid-template-columns: 1fr; }
  .health-upload-review-list .record-card { align-items: stretch; flex-direction: column; }
  .health-review-modal { width: calc(100vw - 16px); }
}

/* Company onboarding: intentionally shared by platform, public signing, and first-login setup. */
.onboarding-shell { margin: 0 auto; max-width: 1180px; padding: 28px 22px 70px; }
.onboarding-header { align-items: center; display: flex; justify-content: space-between; margin-bottom: 26px; }
.onboarding-header img { height: 42px; max-width: 180px; object-fit: contain; }
.onboarding-hero { background: linear-gradient(135deg,#eff6ff,#fff); border: 1px solid #dbeafe; border-radius: 28px; margin-bottom: 20px; padding: 34px; }
.onboarding-hero h1 { font-size: clamp(32px,5vw,56px); margin: 3px 0 8px; }
.onboarding-hero p:last-child { color: var(--muted); font-size: 17px; margin: 0; }
.onboarding-card { background: rgba(255,255,255,.96); border: 1px solid var(--line); border-radius: 22px; box-shadow: 0 18px 55px rgba(15,43,104,.08); margin: 18px 0; padding: 24px; }
.onboarding-card.narrow { margin-left: auto; margin-right: auto; max-width: 720px; }
.onboarding-toolbar,.onboarding-filters { align-items: center; display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
.onboarding-filters input,.onboarding-filters select { border: 1px solid var(--line); border-radius: 12px; min-height: 46px; padding: 10px 13px; }
.onboarding-filters input { flex: 1 1 300px; }
.onboarding-list { display: grid; gap: 10px; }
.onboarding-row { align-items: center; background: #fff; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); display: flex; justify-content: space-between; padding: 16px; text-align: left; width: 100%; }
button.onboarding-row { cursor: pointer; }
.onboarding-row:hover { background: #f8fbff; border-color: #93c5fd; }
.onboarding-row span { display: grid; gap: 4px; }
.onboarding-row span:last-child { justify-items: end; }
.onboarding-row small { color: var(--muted); }
.status-chip { background: #dbeafe; border-radius: 999px; color: #1d4ed8; font-size: 12px; padding: 6px 10px; text-transform: capitalize; }
.onboarding-modal { align-items: start; background: rgba(15,23,42,.64); display: flex; inset: 0; justify-content: center; overflow: auto; padding: 30px 16px; position: fixed; z-index: 10000; }
.onboarding-dialog { background: #fff; border-radius: 24px; box-shadow: 0 30px 90px rgba(0,0,0,.3); max-width: 700px; padding: 28px; position: relative; width: 100%; }
.onboarding-dialog.wide { max-width: 980px; }
.modal-close { background: #eef2f7; border: 0; border-radius: 999px; cursor: pointer; font-size: 26px; height: 42px; position: absolute; right: 18px; top: 18px; width: 42px; }
.form-section { border-bottom: 1px solid var(--line); grid-column: 1/-1; margin: 18px 0 0; padding-bottom: 10px; }
.onboarding-metrics { display: grid; gap: 12px; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 20px 0; }
.onboarding-metrics article { background: #f8fafc; border-radius: 15px; display: grid; gap: 6px; padding: 16px; }
.onboarding-metrics small,.timeline span { color: var(--muted); }
.timeline { border-left: 2px solid #bfdbfe; display: grid; gap: 13px; margin-left: 8px; padding-left: 20px; }
.timeline article { display: grid; gap: 4px; }
.agreement-summary { background: #eff6ff; border-radius: 18px; padding: 20px; }
.agreement-summary dl { display: grid; gap: 12px; grid-template-columns: repeat(3,minmax(0,1fr)); }
.agreement-summary dt { color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.agreement-summary dd { font-weight: 800; margin: 5px 0 0; }
.agreement-copy { border: 1px solid var(--line); border-radius: 16px; line-height: 1.65; margin: 22px 0; max-height: 520px; overflow: auto; padding: 22px; }
.check-row { align-items: flex-start; display: flex; gap: 10px; line-height: 1.45; margin: 14px 0; }
.check-row input { height: 18px; margin-top: 2px; width: 18px; }
.form-grid.one { grid-template-columns: 1fr; }
.policy-links { display: flex; gap: 12px; margin: 20px 0; }
.setup-section .setup-check { background: #eef2f7; border-radius: 999px; color: var(--muted); font-size: 12px; font-weight: 800; padding: 7px 11px; }
.room-edit { display: grid; gap: 8px; grid-template-columns: minmax(160px,1fr) 100px 110px 40px; margin-bottom: 9px; }
.room-edit input { border: 1px solid var(--line); border-radius: 10px; min-height: 42px; padding: 8px; }
.room-edit button { border: 0; border-radius: 10px; cursor: pointer; }
@media(max-width:720px){.onboarding-shell{padding:16px 12px 50px}.onboarding-hero,.onboarding-card,.onboarding-dialog{border-radius:18px;padding:19px}.onboarding-metrics,.agreement-summary dl{grid-template-columns:1fr}.onboarding-row{align-items:flex-start;gap:10px}.onboarding-row span:last-child{justify-items:start}.room-edit{grid-template-columns:1fr 1fr}.room-edit button{min-height:40px}.onboarding-header{align-items:flex-start;gap:12px}.onboarding-header>div{display:grid;gap:7px}}

input[type="checkbox"], input[type="radio"] {
  width: auto;
  min-width: 18px;
  height: 18px;
}
.selectable-field-card {
  overflow: hidden;
}
.selectable-field-header label {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  font-size: 16px;
  color: var(--text);
}
.selectable-field-header span {
  overflow-wrap: anywhere;
}
.selectable-field-body {
  margin-top: 12px;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 80;
  display: grid;
  place-items: center;
  padding: 24px;
}
.modal-card {
  width: min(100%, 560px);
  background: white;
  border-radius: 26px;
  box-shadow: 0 30px 90px rgba(15, 23, 42, 0.24);
  padding: 28px;
  position: relative;
}
.modal-close {
  position: absolute;
  top: 18px;
  right: 18px;
  width: 38px;
  height: 38px;
  border: 0;
  border-radius: 999px;
  background: rgba(15,23,42,.06);
  font-size: 24px;
  cursor: pointer;
}
.document-viewer-open {
  overflow: hidden;
}
.document-viewer-modal {
  z-index: 140;
  padding: 18px;
}
.document-viewer-card {
  width: min(1180px, 100%);
  height: min(92vh, 900px);
  background: #fff;
  border-radius: 24px;
  box-shadow: 0 30px 90px rgba(15, 23, 42, 0.3);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.document-viewer-card > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 22px;
  border-bottom: 1px solid #e5e7eb;
}
.document-viewer-card > header h2,
.document-viewer-card > header .eyebrow {
  margin: 0;
}
.document-viewer-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.document-viewer-stage {
  min-height: 0;
  flex: 1;
  background: #eef2f6;
  display: grid;
  place-items: center;
}
.document-viewer-stage iframe {
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
}
.document-viewer-stage img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
@media (max-width: 700px) {
  .document-viewer-modal { padding: 0; }
  .document-viewer-card { width: 100%; height: 100%; border-radius: 0; }
  .document-viewer-card > header { padding: 14px; }
  .document-viewer-card > header h2 { font-size: 18px; }
}

.audit-modal-card {
  width: min(100%, 980px);
  max-height: 86vh;
  overflow: auto;
}
.audit-modal-card .table-wrap {
  max-height: 52vh;
  overflow: auto;
}


/* Student Profile pages */
.student-toolbar {
  display: grid;
  grid-template-columns: 1fr 180px 210px;
  gap: 14px;
  margin: 14px 0 4px;
}
.student-card-list {
  display: grid;
  gap: 16px;
  margin-top: 16px;
}
.student-profile-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  background: rgba(255,255,255,.92);
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--soft-shadow);
  padding: 18px;
}
.student-card-main {
  display: block;
  min-width: 0;
}
.student-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 16px;
}
.student-card-head h3 {
  font-size: 20px;
  margin: 0;
}
.chevron {
  color: rgba(15,23,42,.24);
  font-size: 34px;
  font-weight: 700;
}
.student-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.student-fact {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.student-fact-icon {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  color: rgba(15,23,42,.54);
}
.student-fact small {
  display: block;
  color: var(--muted);
  font-weight: 700;
}
.student-fact strong {
  display: block;
  font-size: 16px;
}
.text-warning { color: var(--orange); }
.text-danger { color: var(--red); }
.student-card-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}
.student-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(360px, .75fr);
  gap: 18px;
  align-items: start;
}
.student-form-card {
  display: grid;
  gap: 16px;
}
.student-form-hero {
  border-radius: 22px;
  background: linear-gradient(90deg, rgba(56,189,248,.20), rgba(37,99,235,.10));
  display: grid;
  place-items: center;
  padding: 22px;
  text-align: center;
}
.student-form-hero img {
  width: 86px;
  height: 86px;
  object-fit: contain;
  margin-bottom: 10px;
}
.inline-check {
  display: inline-flex;
  gap: 10px;
  align-items: center;
}
.student-save-bar {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}
.student-side-stack {
  display: grid;
  gap: 18px;
}
.people-list {
  display: grid;
  gap: 12px;
}
.person-card {
  border: 1px solid var(--line);
  border-radius: 18px;
  background: white;
  padding: 16px;
  box-shadow: 0 8px 22px rgba(15,23,42,.05);
}
.person-card strong, .person-card span {
  display: block;
}
.person-card p {
  margin: 8px 0 0;
}
.person-card .actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.person-modal-card {
  width: min(100%, 760px);
  max-height: 88vh;
  overflow: auto;
}
@media (max-width: 1100px) {
  .student-toolbar, .student-detail-grid { grid-template-columns: 1fr; }
  .student-profile-card { grid-template-columns: 1fr; }
  .student-card-badges { justify-content: flex-start; }
}
@media (max-width: 720px) {
  .student-facts { grid-template-columns: 1fr; }
}


/* Existing parent / pickup lookup */
.contact-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.existing-person-results {
  display: grid;
  gap: 10px;
  margin-top: 16px;
  max-height: 52vh;
  overflow: auto;
  padding-right: 4px;
}
.existing-person-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: white;
  padding: 14px;
}
.existing-person-row strong, .existing-person-row span {
  display: block;
}
.existing-person-row .button[disabled] {
  opacity: .65;
  cursor: default;
}
@media (max-width: 720px) {
  .contact-actions, .existing-person-row {
    align-items: stretch;
    flex-direction: column;
  }
}


/* Student allergy alerts */
.allergy-alert {
  border-radius: 18px;
  padding: 14px 16px;
  display: grid;
  gap: 4px;
  border: 1px solid rgba(220,38,38,.24);
}
.allergy-alert strong {
  font-size: 14px;
  letter-spacing: .02em;
}
.allergy-alert span {
  line-height: 1.45;
}
.allergy-alert-large {
  background: rgba(220,38,38,.10);
  color: #991b1b;
  box-shadow: 0 10px 28px rgba(220,38,38,.08);
}
.allergy-alert-muted {
  background: rgba(15,23,42,.045);
  color: var(--muted);
  border-color: var(--line);
}
.student-allergy-strip {
  margin-top: 14px;
  border-radius: 14px;
  background: rgba(220,38,38,.10);
  color: #991b1b;
  border: 1px solid rgba(220,38,38,.20);
  padding: 10px 12px;
  font-weight: 650;
}
.student-allergy-strip strong {
  font-weight: 850;
}


/* Public registration and admin registration review */
.registration-public-shell {
  min-height: 100vh;
  padding: 24px;
  display: grid;
  place-items: start center;
}
.registration-public-card {
  width: min(100%, 980px);
  border-radius: var(--radius-xl);
  padding: 28px;
}
.registration-form {
  display: grid;
  gap: 18px;
  margin-top: 18px;
}
.registration-section {
  background: white;
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--soft-shadow);
  padding: 18px;
}
.copy-link-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
}
.registrations-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.registration-list {
  display: grid;
  gap: 14px;
}
.registration-card {
  background: white;
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--soft-shadow);
  padding: 18px;
  display: grid;
  gap: 14px;
}
.registration-meta-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 12px 0;
}
.registration-meta-grid div {
  background: rgba(15,23,42,.04);
  border-radius: 14px;
  padding: 10px;
}
.registration-meta-grid small {
  display: block;
  color: var(--muted);
  font-weight: 750;
  margin-bottom: 3px;
}
.registration-meta-grid strong {
  display: block;
  font-size: 14px;
}
.registration-contact-preview {
  color: var(--muted);
  line-height: 1.45;
  margin-top: 10px;
}
.registration-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
@media (max-width: 1100px) {
  .registrations-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .copy-link-row, .registration-meta-grid { grid-template-columns: 1fr; }
}


/* Pending registration menu badge and registration password warning */
.nav-list a { position: relative; }
.nav-list .nav-label { min-width: 0; }
.menu-badge {
  margin-left: auto;
  min-width: 24px;
  height: 24px;
  padding: 0 8px;
  border-radius: 999px;
  background: #dc2626;
  color: #fff;
  display: inline-grid;
  place-items: center;
  font-size: 12px;
  font-weight: 900;
  box-shadow: 0 6px 18px rgba(220,38,38,.35);
}
.registration-warning {
  border: 1px solid rgba(220,38,38,.24);
  background: rgba(220,38,38,.10);
  color: #991b1b;
  border-radius: 16px;
  padding: 13px 14px;
  display: grid;
  gap: 4px;
}
.registration-warning strong, .registration-warning span { display: block; }


/* Registration password visibility and admin display */
.password-entry-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}
.verification-password-box {
  border: 1px solid rgba(220,38,38,.20);
  background: rgba(220,38,38,.08) !important;
}
.verification-password-box strong {
  color: #991b1b;
  font-size: 18px;
  letter-spacing: .02em;
}
@media (max-width: 720px) {
  .password-entry-row { grid-template-columns: 1fr; }
}

/* Enrollment review workflow */
.portal-link-box {
  margin-top: 12px;
  border: 1px solid rgba(37,99,235,.16);
  background: rgba(37,99,235,.06);
  border-radius: 16px;
  padding: 12px;
  display: grid;
  gap: 8px;
}
.portal-link-box strong, .portal-link-box small { display: block; }
.ack-card {
  background: white;
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--soft-shadow);
  padding: 18px;
}
.ack-card h3 { margin-bottom: 8px; }
.registration-card .portal-link-box input {
  font-size: 12px;
}
.registrations-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 1320px) {
  .registrations-grid { grid-template-columns: 1fr; }
}

/* Student records, documents, and enrollment review panels */
.student-history-panels {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}
.student-record-panel .section-heading {
  align-items: center;
}
.student-record-list {
  display: grid;
  gap: 10px;
}
.student-record-list.full-list {
  margin-top: 14px;
}
.record-row-button {
  width: 100%;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.86);
  border-radius: 14px;
  padding: 12px 14px;
  text-align: left;
  display: grid;
  gap: 4px;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease;
}
.record-row-button:hover {
  transform: translateY(-1px);
  box-shadow: var(--soft-shadow);
}
.record-row-button strong {
  color: var(--ink);
}
.record-row-button span {
  color: var(--muted);
  font-size: .9rem;
}
.record-modal-card {
  max-width: 760px;
  max-height: 86vh;
  overflow: auto;
}
.record-detail-body {
  margin-top: 14px;
}
.detail-table {
  display: grid;
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
}
.detail-row {
  display: grid;
  grid-template-columns: minmax(150px, .35fr) 1fr;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(255,255,255,.72);
}
.detail-row:last-child { border-bottom: 0; }
.detail-row strong { color: var(--muted); }
.detail-row span { color: var(--ink); word-break: break-word; }
.detail-row pre {
  margin: 0;
  white-space: pre-wrap;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: .85rem;
}
.document-action-slot {
  margin-top: 8px;
}
.document-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
.button-small {
  min-height: 34px;
  padding: 8px 12px;
  font-size: .86rem;
}
.empty-state.small {
  padding: 12px;
  font-size: .9rem;
}
@media (max-width: 760px) {
  .detail-row { grid-template-columns: 1fr; }
}

/* Student profile layout refinements for iPad / smaller screens */
.student-detail-grid {
  grid-template-columns: minmax(0, 1.65fr) minmax(280px, .55fr);
}
.student-side-stack .content-card {
  padding: 16px;
  border-radius: 20px;
}
.student-side-stack .section-heading {
  gap: 8px;
  margin-bottom: 10px;
}
.student-side-stack .section-heading h2 {
  font-size: 18px;
}
.student-side-stack .contact-actions .button {
  padding: 9px 12px;
  font-size: 12px;
}
.student-side-stack .person-card {
  padding: 12px;
  border-radius: 14px;
}
.student-side-stack .person-card p {
  margin-top: 5px;
  font-size: 13px;
}
.record-row-button {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}
.record-row-button em {
  font-style: normal;
  font-size: 12px;
  font-weight: 850;
  color: var(--blue);
  background: rgba(37,99,235,.10);
  border-radius: 999px;
  padding: 7px 10px;
}
.record-row-button:focus-visible {
  outline: 3px solid rgba(37,99,235,.24);
  outline-offset: 2px;
}
@media (max-width: 1180px) {
  .app-shell {
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 18px;
    padding: 18px;
  }
  .sidebar {
    padding: 22px 18px;
  }
  .student-detail-grid {
    grid-template-columns: minmax(0, 1.75fr) minmax(245px, .45fr);
    gap: 14px;
  }
  .student-form-card {
    gap: 14px;
  }
  .record-card {
    padding: 16px;
  }
}
@media (max-width: 980px) {
  .student-detail-grid {
    grid-template-columns: 1fr;
  }
  .student-side-stack {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 720px) {
  .student-side-stack {
    grid-template-columns: 1fr;
  }
  .record-row-button {
    grid-template-columns: 1fr;
  }
  .record-row-button em {
    justify-self: start;
  }
}
@media (min-width: 981px) and (max-width: 1180px) {
  .sidebar {
    position: sticky;
    inset: auto;
    top: 18px;
    width: auto;
    height: calc(100vh - 36px);
    transform: none;
  }
  body.sidebar-open .sidebar { transform: none; }
  .mobile-menu-button { display: none; }
}
@media (max-width: 980px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: fixed; inset: 16px auto 16px 16px; width: min(320px, calc(100vw - 32px)); transform: translateX(-115%); }
  body.sidebar-open .sidebar { transform: translateX(0); }
  .mobile-menu-button { display: inline-flex; }
}

/* Read-only student attendance status on profile */
.readonly-status {
  width: 100%;
  min-height: 48px;
  border-radius: 14px;
  border: 1px solid var(--line);
  display: flex;
  align-items: center;
  padding: 12px 14px;
  font-weight: 850;
  background: rgba(15,23,42,.04);
}
.readonly-status.status-signed-in {
  color: var(--green);
  background: rgba(22,163,74,.10);
  border-color: rgba(22,163,74,.22);
}
.readonly-status.status-signed-out {
  color: var(--red);
  background: rgba(220,38,38,.10);
  border-color: rgba(220,38,38,.22);
}

/* Menu sign-out visibility */
#signOutButton {
  background: transparent !important;
  color: #ffffff !important;
  border: 2px solid rgba(255,255,255,.86) !important;
  box-shadow: none !important;
}
#signOutButton:hover {
  background: rgba(255,255,255,.12) !important;
  color: #ffffff !important;
}

/* Cleaner record detail popup formatting */
.nested-record-list {
  display: grid;
  gap: 10px;
}
.nested-record-item {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px;
  background: rgba(248,250,252,.8);
  display: grid;
  gap: 8px;
}
.detail-row.nested {
  grid-template-columns: minmax(120px, .35fr) 1fr;
  padding: 8px 0;
  border-bottom: 1px solid rgba(226,232,240,.8);
  background: transparent;
}
.detail-row.nested:last-child { border-bottom: 0; }
.record-detail-body a {
  color: var(--blue);
  font-weight: 850;
  text-decoration: none;
}
.record-detail-body a:hover { text-decoration: underline; }

/* iPad-style student record popups */
.ios-record-modal {
  background: rgba(15, 23, 42, .38);
}
.ios-record-modal .record-modal-card {
  width: min(720px, calc(100vw - 40px));
  max-height: min(82vh, 820px);
  overflow: auto;
  border-radius: 30px;
  background: rgba(246, 247, 251, .96);
  box-shadow: 0 28px 80px rgba(15,23,42,.28);
  padding: 20px;
  position: relative;
}
.ios-record-modal .record-modal-card > .eyebrow {
  display: none;
}
.ios-record-modal .record-modal-card > h2 {
  text-align: center;
  font-size: 20px;
  margin: 0 90px 18px;
  letter-spacing: -.02em;
}
.ios-record-modal .record-modal-card .modal-close {
  position: absolute;
  top: 12px;
  right: 14px;
  width: auto;
  min-width: 82px;
  height: 44px;
  border-radius: 999px;
  background: white;
  color: #111827;
  font-size: 18px;
  font-weight: 500;
}
.ios-record-content {
  display: grid;
  gap: 16px;
}
.ios-record-header-card,
.ios-detail-card {
  background: white;
  border: 1px solid rgba(226,232,240,.9);
  border-radius: 20px;
  padding: 20px;
  box-shadow: 0 10px 24px rgba(15,23,42,.05);
}
.ios-record-header-card {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}
.ios-record-header-card h2 {
  font-size: 24px;
  margin: 0 0 4px;
}
.ios-record-header-card p {
  margin: 0;
  color: #6b7280;
  font-size: 17px;
}
.ios-record-header-card span {
  color: #8b95a5;
}
.ios-amount {
  display: block;
  margin-top: 14px;
  font-size: 34px;
  color: var(--red);
  letter-spacing: .04em;
}
.ios-status-pill {
  border-radius: 999px;
  padding: 8px 16px;
  font-weight: 850;
  font-size: 13px;
  white-space: nowrap;
}
.ios-status-pill.success {
  background: rgba(22,163,74,.10);
  color: var(--green);
}
.ios-status-pill.danger {
  background: rgba(220,38,38,.10);
  color: var(--red);
}
.ios-detail-card h3,
.ios-detail-section h3 {
  font-size: 20px;
  margin: 0 0 12px;
}
.ios-detail-section {
  margin-bottom: 14px;
}
.ios-detail-section:last-child {
  margin-bottom: 0;
}
.ios-detail-section ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 9px;
}
.ios-detail-section li::before {
  content: "•";
  margin-right: 8px;
}
.ios-detail-section li,
.ios-detail-section p {
  font-size: 18px;
  margin: 0;
}
.ios-pairs {
  display: grid;
  gap: 16px;
}
.ios-detail-pair {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 16px;
  align-items: start;
}
.ios-detail-pair strong {
  color: #8b95a5;
  font-size: 14px;
}
.ios-detail-pair span {
  color: #111827;
  font-size: 18px;
  word-break: break-word;
}
.ios-card-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.ios-card-heading h3 {
  margin: 0;
}
.ios-card-heading span {
  color: #8b95a5;
  font-weight: 800;
}
.ios-attachments {
  display: grid;
  gap: 12px;
}
.ios-attachment-card {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
}
.ios-attachment-card img,
.attachment-icon {
  width: 74px;
  height: 54px;
  border-radius: 12px;
  object-fit: cover;
  background: rgba(15,23,42,.06);
  display: grid;
  place-items: center;
}
.ios-attachment-card strong,
.ios-attachment-card span {
  display: block;
}
.ios-attachment-card span {
  color: #8b95a5;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ios-attachment-card a {
  color: var(--blue);
  font-weight: 850;
  text-decoration: none;
}
@media (max-width: 720px) {
  .ios-record-modal .record-modal-card {
    width: calc(100vw - 20px);
    border-radius: 24px;
    padding: 16px;
  }
  .ios-record-modal .record-modal-card > h2 {
    margin: 0 82px 16px;
  }
  .ios-detail-pair {
    grid-template-columns: 1fr;
    gap: 4px;
  }
  .ios-attachment-card {
    grid-template-columns: 56px minmax(0,1fr) auto;
  }
  .ios-attachment-card img,
  .attachment-icon {
    width: 56px;
    height: 44px;
  }
}

/* Dashboard command center: live operations, compliance, finance, programs */
.dashboard-page {
  display: grid;
  gap: 18px;
}
.dashboard-section {
  margin-top: 0;
}
.dashboard-command-label { margin: 2px 0 -8px; }
.dashboard-command-label .eyebrow { margin: 0; }
.dashboard-operational-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dashboard-compliance-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  color: var(--text);
  text-decoration: none;
  border-left: 6px solid var(--purple);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.dashboard-compliance-card:hover,
.dashboard-compliance-card:focus-visible { transform: translateY(-1px); box-shadow: 0 18px 38px rgba(15,23,42,.12); }
.dashboard-compliance-card.ready { border-left-color: var(--green); }
.dashboard-compliance-card.unavailable { border-left-color: #94a3b8; }
.dashboard-compliance-main { flex: 1; min-width: 0; }
.dashboard-compliance-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.dashboard-compliance-heading .eyebrow { margin: 0 0 7px; }
.dashboard-compliance-heading h2 { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 0; }
.dashboard-compliance-heading h2 strong { font-size: clamp(34px, 5vw, 50px); line-height: .95; letter-spacing: -.055em; color: var(--blue); }
.dashboard-compliance-card.ready .dashboard-compliance-heading h2 strong { color: var(--green); }
.dashboard-compliance-heading h2 span { font-size: clamp(19px, 2.4vw, 27px); }
.dashboard-compliance-setup { flex: 0 0 auto; padding: 7px 11px; border-radius: 999px; background: #ede9fe; color: #6d28d9; font-size: 12px; font-weight: 850; }
.dashboard-compliance-progress { height: 13px; margin: 18px 0 14px; overflow: hidden; border-radius: 999px; background: #e2e8f0; }
.dashboard-compliance-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2563eb, #7c3aed); transition: width .3s ease; }
.dashboard-compliance-card.ready .dashboard-compliance-progress span { background: linear-gradient(90deg, #16a34a, #22c55e); }
.dashboard-compliance-card.loading .dashboard-compliance-progress span { animation: dashboard-compliance-loading 1.2s ease-in-out infinite alternate; }
.dashboard-compliance-summary { display: flex; align-items: center; gap: 8px 18px; flex-wrap: wrap; color: var(--muted); font-size: 14px; }
.dashboard-compliance-summary > strong { color: var(--text); font-size: 16px; }
.dashboard-compliance-critical { color: var(--red); font-weight: 800; }
.dashboard-compliance-action { flex: 0 0 auto; }
@keyframes dashboard-compliance-loading { from { transform: translateX(-20%); opacity: .45; } to { transform: translateX(80%); opacity: 1; } }
.dashboard-finance-card {
  display: grid;
  gap: 18px;
  color: var(--text);
  text-decoration: none;
  border-left: 6px solid var(--green);
  transition: transform .18s ease, box-shadow .18s ease;
}
.dashboard-finance-card:hover,
.dashboard-finance-card:focus-visible { transform: translateY(-1px); box-shadow: 0 18px 38px rgba(15,23,42,.12); }
.dashboard-finance-card.unavailable { display: flex; align-items: center; justify-content: space-between; border-left-color: #94a3b8; }
.dashboard-finance-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.dashboard-finance-heading .eyebrow,
.dashboard-finance-heading h2,
.dashboard-finance-heading p { margin-top: 0; }
.dashboard-finance-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.dashboard-finance-metric { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.78); }
.dashboard-finance-metric small,
.dashboard-finance-metric strong { display: block; }
.dashboard-finance-metric small { color: var(--muted); font-size: 12px; font-weight: 800; }
.dashboard-finance-metric strong { margin-top: 5px; overflow-wrap: anywhere; font-size: clamp(18px, 2.15vw, 25px); line-height: 1.1; }
.dashboard-programs-card { display: grid; gap: 14px; }
.dashboard-programs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.dashboard-program-metric { padding: 16px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.78); }
.dashboard-program-metric span,
.dashboard-program-metric strong,
.dashboard-program-metric small { display: block; }
.dashboard-program-metric span { color: var(--muted); font-weight: 800; }
.dashboard-program-metric strong { margin: 5px 0 2px; font-size: 30px; line-height: 1; }
.dashboard-program-metric small { color: var(--muted); }
.dashboard-ratio-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.dashboard-ratio-room {
  background: white;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(15,23,42,.05);
}
.ratio-room-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
.ratio-room-head h3 {
  margin: 0 0 2px;
  font-size: 17px;
}
.ratio-room-head p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}
.ratio-room-head strong {
  font-size: 16px;
}
.ratio-progress {
  height: 10px;
  border-radius: 999px;
  background: rgba(15,23,42,.09);
  overflow: hidden;
  margin: 12px 0 8px;
}
.ratio-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  transition: width .25s ease;
}
.ratio-safe .ratio-progress span { background: var(--green); }
.ratio-warning .ratio-progress span { background: #facc15; }
.ratio-danger .ratio-progress span { background: var(--red); }
.ratio-safe .ratio-message { color: var(--green); }
.ratio-warning .ratio-message { color: #a16207; }
.ratio-danger .ratio-message { color: var(--red); }
.ratio-message {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
}
.dashboard-alert {
  display: flex;
  gap: 14px;
  align-items: center;
  border-radius: 16px;
  padding: 14px 16px;
  margin-bottom: 14px;
}
.dashboard-alert strong,
.dashboard-alert span {
  display: block;
}
.dashboard-alert.warning { background: rgba(245,158,11,.12); color: #9a3412; }
.dashboard-alert.success { background: rgba(22,163,74,.10); color: var(--green); }
.dashboard-list {
  display: grid;
  gap: 10px;
}
.dashboard-list-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: white;
  border-radius: 16px;
  padding: 13px 16px;
  border: 1px solid rgba(226,232,240,.82);
  color: var(--ink);
  text-decoration: none;
}
.dashboard-list-row strong,
.dashboard-list-row span {
  display: block;
}
.dashboard-list-row span {
  color: var(--muted);
  font-size: 13px;
  margin-top: 2px;
}
.dashboard-total {
  font-size: 24px;
}
.calendar-title {
  text-align: center;
  font-weight: 850;
  margin: 10px 0 12px;
}
.dashboard-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 10px;
  align-items: center;
  text-align: center;
}
.dashboard-calendar b {
  color: var(--muted);
  font-size: 12px;
}
.dashboard-calendar span {
  min-height: 34px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  font-weight: 750;
}
.dashboard-calendar span.approved {
  background: rgba(37,99,235,.12);
  color: var(--blue);
}
.dashboard-two-col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
@media (max-width: 1100px) {
  .dashboard-ratio-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-finance-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .dashboard-compliance-card { align-items: stretch; flex-direction: column; }
  .dashboard-compliance-action { align-self: flex-start; }
}
@media (max-width: 720px) {
  .dashboard-ratio-grid, .dashboard-two-col, .dashboard-operational-metrics, .dashboard-programs-grid { grid-template-columns: 1fr; }
  .dashboard-finance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-list-row { align-items: flex-start; flex-direction: column; }
  .dashboard-compliance-heading { align-items: flex-start; flex-direction: column; gap: 10px; }
  .dashboard-compliance-action { width: 100%; text-align: center; }
  .dashboard-finance-heading,
  .dashboard-finance-card.unavailable { align-items: stretch; flex-direction: column; }
  .dashboard-finance-heading .button,
  .dashboard-finance-card.unavailable .button { width: 100%; text-align: center; }
}

/* Time off calendar page */
.timeoff-page {
  display: grid;
  gap: 18px;
}
.timeoff-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.timeoff-calendar-card {
  margin-top: 0;
}
.timeoff-calendar span {
  min-height: 68px;
  align-content: center;
  gap: 3px;
}
.timeoff-calendar span strong,
.timeoff-calendar span small {
  display: block;
}
.timeoff-calendar span small {
  font-size: 11px;
  color: var(--blue);
  line-height: 1.05;
}
.timeoff-request-list {
  display: grid;
  gap: 12px;
}
.timeoff-request-card {
  background: white;
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  box-shadow: 0 8px 22px rgba(15,23,42,.05);
}
.timeoff-request-card h3,
.timeoff-request-card p,
.timeoff-request-card small {
  display: block;
  margin: 0;
}
.timeoff-request-card p {
  margin-top: 6px;
  color: var(--ink);
}
.timeoff-request-card small {
  margin-top: 4px;
  color: var(--muted);
}
.timeoff-card-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
#timeOffModal .record-modal-card {
  max-width: 760px;
}
@media (max-width: 720px) {
  .timeoff-request-card {
    align-items: flex-start;
    flex-direction: column;
  }
  .timeoff-card-actions {
    justify-content: flex-start;
  }
}

/* Time-off calendar interaction states */
.calendar-nav {
  display: flex;
  align-items: center;
  gap: 8px;
}
.dashboard-calendar .calendar-day,
.timeoff-calendar .calendar-day {
  border: 0;
  background: transparent;
  border-radius: 999px;
  color: var(--ink);
  cursor: pointer;
  display: grid;
  gap: 2px;
  place-items: center;
  font: inherit;
  font-weight: 800;
  min-height: 34px;
  padding: 6px 8px;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
  width: 100%;
}
.timeoff-calendar .calendar-day {
  align-content: center;
  border-radius: 16px;
  min-height: 68px;
}
.dashboard-calendar .calendar-day strong,
.dashboard-calendar .calendar-day small,
.timeoff-calendar .calendar-day strong,
.timeoff-calendar .calendar-day small {
  display: block;
  line-height: 1.05;
}
.dashboard-calendar .calendar-day small,
.timeoff-calendar .calendar-day small {
  font-size: 11px;
  font-weight: 700;
  opacity: .85;
}
.dashboard-calendar .calendar-day.approved,
.timeoff-calendar .calendar-day.approved {
  background: rgba(37, 99, 235, .14);
  color: var(--blue);
}
.dashboard-calendar .calendar-day.partial,
.timeoff-calendar .calendar-day.partial {
  background: rgba(245, 158, 11, .20);
  color: #a16207;
}
.dashboard-calendar .calendar-day:hover,
.timeoff-calendar .calendar-day:hover,
.dashboard-calendar .calendar-day:focus-visible,
.timeoff-calendar .calendar-day:focus-visible {
  box-shadow: 0 8px 18px rgba(15, 23, 42, .10);
  outline: none;
  transform: translateY(-1px);
}
.timeoff-calendar-legend {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  margin-top: 10px;
}
#timeOffDayModal .record-modal-card {
  max-width: 760px;
}


/* Time-off day popup Done button */
#timeOffDayModal .modal-close {
  position: absolute;
  top: 12px;
  right: 14px;
  width: auto;
  min-width: 82px;
  height: 44px;
  padding: 0 20px;
  border: 0;
  border-radius: 999px;
  background: #fff;
  color: #111827;
  font-size: 18px;
  font-weight: 600;
  line-height: 44px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, .08);
}
#timeOffDayModal .record-modal-card > h2 {
  margin-right: 110px;
}
@media (max-width: 640px) {
  #timeOffDayModal .modal-close {
    min-width: 74px;
    height: 40px;
    line-height: 40px;
    padding: 0 16px;
    font-size: 16px;
  }
  #timeOffDayModal .record-modal-card > h2 {
    margin-right: 90px;
  }
}
.recipient-checkbox-list {
  display: grid;
  gap: 10px;
}

.checkbox-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid rgba(15, 35, 80, 0.12);
  border-radius: 12px;
  background: rgba(247, 249, 253, 0.9);
  cursor: pointer;
}

.checkbox-row input[type="checkbox"] {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}

.checkbox-row span {
  display: grid;
  gap: 2px;
}

.checkbox-row small {
  color: var(--muted, #667085);
}

/* Operational reports */
.reports-home,
#reportWorkspace,
.report-panel {
  display: grid;
  gap: 18px;
}
.report-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.report-launch-card {
  appearance: none;
  background: rgba(255,255,255,.94);
  border: 1px solid var(--line);
  border-radius: 20px;
  box-shadow: 0 14px 34px rgba(15,23,42,.06);
  color: var(--ink);
  cursor: pointer;
  display: grid;
  gap: 8px;
  min-height: 178px;
  padding: 22px;
  text-align: left;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.report-launch-card:hover,
.report-launch-card:focus-visible {
  border-color: rgba(37,99,235,.45);
  box-shadow: 0 18px 40px rgba(37,99,235,.12);
  outline: none;
  transform: translateY(-2px);
}
.report-launch-card strong { font-size: 19px; }
.report-launch-card small { color: var(--muted); font-size: 14px; line-height: 1.45; }
.report-launch-card > span:last-child { align-self: end; color: var(--blue); font-size: 13px; font-weight: 800; }
.report-panel {
  background: rgba(255,255,255,.95);
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: 0 16px 40px rgba(15,23,42,.07);
  padding: 22px;
}
.report-panel > h2,
.report-panel > h3 { margin: 0; }
.report-panel > h3 { margin-top: 8px; }
.report-toolbar,
.report-controls {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.report-toolbar { justify-content: flex-end; }
.report-toolbar [data-report-back],
.report-toolbar #signatureBack { margin-right: auto; }
.report-toolbar select,
.report-toolbar input,
.report-controls select,
.report-controls input {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  min-height: 42px;
  padding: 8px 11px;
}
.report-controls {
  background: rgba(248,250,252,.9);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 14px;
}
.report-controls label { display: grid; gap: 6px; font-size: 13px; font-weight: 750; }
.report-controls label:has(input[type="checkbox"]) { align-items: center; display: flex; }
.report-controls fieldset { border: 0; margin: 0; padding: 0; }
.report-controls legend { font-size: 13px; font-weight: 800; margin-bottom: 8px; }
.report-check-grid { display: flex; flex-wrap: wrap; gap: 10px 16px; }
.report-check-grid label { align-items: center; display: flex; font-weight: 650; }
.report-table-wrap {
  border: 1px solid var(--line);
  border-radius: 14px;
  max-width: 100%;
  overflow: auto;
}
.report-table {
  border-collapse: collapse;
  min-width: 720px;
  width: 100%;
}
.report-table th,
.report-table td {
  border-bottom: 1px solid var(--line);
  border-right: 1px solid var(--line);
  font-size: 12px;
  padding: 9px;
  text-align: left;
  vertical-align: middle;
  white-space: nowrap;
}
.report-table th {
  background: #eff6ff;
  color: #1e3a8a;
  font-weight: 850;
  position: sticky;
  top: 0;
  z-index: 1;
}
.report-table tr:last-child td { border-bottom: 0; }
.report-table th:last-child,
.report-table td:last-child { border-right: 0; }
.report-table.attendance-grid th:first-child,
.report-table.attendance-grid td:first-child {
  background: #fff;
  left: 0;
  min-width: 190px;
  position: sticky;
  z-index: 2;
}
.report-table.attendance-grid th:first-child { background: #eff6ff; z-index: 3; }
.report-table.attendance-grid th:not(:first-child),
.report-table.attendance-grid td:not(:first-child),
.report-table.meal-grid th:not(:first-child),
.report-table.meal-grid td:not(:first-child) { min-width: 38px; text-align: center; }
.report-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 12px;
}
.report-metrics article {
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 16px;
  display: grid;
  gap: 6px;
  min-height: 84px;
  padding: 15px;
}
.report-metrics small { color: var(--muted); font-weight: 700; }
.report-metrics strong { font-size: 20px; }
.report-two-column { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.report-line-item { align-items: center; display: grid; grid-template-columns: minmax(0,1fr) 140px 30px; gap: 8px; margin-bottom: 8px; }
.report-line-item input { border: 1px solid var(--line); border-radius: 10px; min-height: 42px; padding: 8px 10px; }
.report-line-item span { color: var(--muted); font-size: 11px; text-align: center; }
.report-student-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.report-student-grid button,
.report-date-list button {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  color: var(--ink);
  cursor: pointer;
  display: grid;
  gap: 5px;
  padding: 15px;
  text-align: left;
}
.report-student-grid button:hover,
.report-date-list button:hover,
.report-date-list button.active { background: #eff6ff; border-color: rgba(37,99,235,.45); }
.report-student-grid small,
.report-date-list small { color: var(--muted); }
.report-student-grid span { color: var(--blue); font-size: 12px; font-weight: 800; }
.report-tabs { justify-self: start; }
.signature-record-list { display: grid; gap: 14px; }
.signature-record-list article { border: 1px solid var(--line); border-radius: 16px; padding: 16px; }
.signature-columns { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.signature-columns > div { display: grid; gap: 8px; }
.signature-columns small { color: var(--muted); }
.report-signature-image { background: #f8fafc; border-radius: 12px; height: 105px; max-width: 100%; object-fit: contain; width: 100%; }
.report-calendar { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 8px; }
.report-calendar b { color: var(--muted); font-size: 12px; text-align: center; }
.report-calendar span { border-radius: 12px; min-height: 52px; padding: 8px; text-align: center; }
.report-calendar span.present { background: rgba(34,197,94,.14); color: #15803d; font-weight: 850; }
.report-day-buttons { display: flex; flex-wrap: wrap; gap: 7px; }
.daily-food-layout { align-items: start; grid-template-columns: 260px minmax(0,1fr); }
.report-date-list { display: grid; gap: 8px; max-height: 650px; overflow: auto; }
.report-loading { color: var(--muted); display: grid; gap: 12px; min-height: 240px; place-content: center; text-align: center; }
.report-loading .spinner { border: 3px solid #dbeafe; border-radius: 999px; border-top-color: var(--blue); height: 36px; margin: auto; width: 36px; animation: report-spin .8s linear infinite; }
.individual-attendance-config{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:18px;align-items:start}
.individual-attendance-config>section{background:#f8fafc;border:1px solid var(--line);border-radius:18px;padding:18px;display:grid;gap:14px}
.individual-attendance-config h3,.individual-attendance-month h3,.individual-attendance-month h4{margin:0}
.individual-attendance-student-list{border:1px solid var(--line);border-radius:14px;background:#fff;display:grid;max-height:420px;overflow:auto}
.individual-attendance-student-list label{align-items:center;border-bottom:1px solid var(--line);cursor:pointer;display:flex;gap:12px;padding:12px 14px}
.individual-attendance-student-list label:last-child{border-bottom:0}
.individual-attendance-student-list label:has(input:checked){background:#eff6ff}
.individual-attendance-student-list span{display:grid;gap:3px}.individual-attendance-student-list small{color:var(--muted)}
.individual-attendance-period{display:grid;gap:12px}.individual-attendance-period>label{align-items:center;display:flex;gap:8px;font-weight:750}
.individual-attendance-period>div{display:flex;flex-wrap:wrap;gap:12px}.individual-attendance-period>div label{display:grid;gap:5px;font-size:13px;font-weight:750}
.individual-attendance-period input[type="month"],.individual-attendance-period input[type="date"]{background:#fff;border:1px solid var(--line);border-radius:12px;min-height:42px;padding:8px 11px}
.individual-attendance-results{display:grid;gap:24px}.individual-attendance-student{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#fff}
.individual-attendance-student>header{align-items:start;background:linear-gradient(135deg,#eff6ff,#fff);display:flex;justify-content:space-between;gap:18px;padding:20px}
.individual-attendance-student>header h2,.individual-attendance-student>header p{margin:4px 0}.individual-attendance-student>header>div:last-child{display:grid;gap:5px;text-align:right}.individual-attendance-student>header small{color:var(--muted)}
.individual-attendance-month{border-top:1px solid var(--line);display:grid;gap:14px;padding:20px}.attendance-legend{background:#dcfce7;border-radius:999px;color:#15803d;font-size:12px;font-weight:850;padding:7px 11px}
.individual-attendance-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.individual-attendance-calendar>b{color:#667085;font-size:11px;text-align:center}
.individual-attendance-calendar>span{border:1px solid var(--line);border-radius:10px;display:grid;min-height:62px;padding:7px;place-items:center}.individual-attendance-calendar>span small{justify-self:start}.individual-attendance-calendar>span strong{color:#15803d;font-size:18px}.individual-attendance-calendar>span.present{background:#dcfce7;border-color:#86efac}.individual-attendance-calendar>span.outside{background:#f2f4f7;color:#98a2b3}.individual-attendance-calendar>span.empty{border-style:dashed}
.attendance-signature{align-items:center;color:inherit;display:flex;flex-direction:column;gap:3px;min-width:110px;text-decoration:none}.attendance-signature img{background:#fff;border:1px solid var(--line);border-radius:8px;height:48px;max-width:140px;object-fit:contain;padding:3px;width:100%}.attendance-signature small{color:var(--muted);font-size:10px;line-height:1.2;text-align:center}.attendance-signature:hover img{border-color:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.12)}
.attendance-status{border-radius:999px;display:inline-block;font-size:11px;font-weight:850;padding:5px 8px}.attendance-status.complete{background:#dcfce7;color:#15803d}.attendance-status.incomplete{background:#ffedd5;color:#c2410c}
.individual-attendance-table td:nth-child(3),.individual-attendance-table td:nth-child(5){white-space:normal;min-width:130px}
@keyframes report-spin { to { transform: rotate(360deg); } }
@media (max-width: 1100px) {
  .report-card-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .report-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 720px) {
  .report-card-grid,
  .report-two-column,
  .report-student-grid,
  .signature-columns,
  .daily-food-layout { grid-template-columns: 1fr; }
  .report-metrics { grid-template-columns: 1fr; }
  .report-panel { border-radius: 16px; padding: 15px; }
  .report-toolbar { align-items: stretch; flex-direction: column; }
  .report-toolbar [data-report-back],
  .report-toolbar #signatureBack { margin-right: 0; }
  .individual-attendance-config{grid-template-columns:1fr}
  .individual-attendance-student>header{flex-direction:column}.individual-attendance-student>header>div:last-child{text-align:left}
  .individual-attendance-calendar>span{min-height:48px;padding:4px}
}
.student-profile-tabs{display:flex;gap:8px;margin:0 0 18px;padding:6px;background:rgba(255,255,255,.72);border:1px solid rgba(15,43,99,.1);border-radius:16px;width:max-content;max-width:100%}
.student-profile-tabs button{border:0;background:transparent;color:#526079;font:inherit;font-weight:800;padding:11px 18px;border-radius:12px;cursor:pointer}
.student-profile-tabs button.active{background:#2159e8;color:#fff;box-shadow:0 8px 20px rgba(33,89,232,.2)}
.staff-profile-tabs a{display:inline-flex;align-items:center;justify-content:center;color:#526079;font:inherit;font-weight:800;padding:11px 18px;border-radius:12px;text-decoration:none;white-space:nowrap}
.staff-profile-tabs a:hover,.staff-profile-tabs a:focus-visible{background:rgba(33,89,232,.08);color:#1748c5}
.staff-profile-tabs a.active{background:#2159e8;color:#fff;box-shadow:0 8px 20px rgba(33,89,232,.2)}
.document-camera-modal{z-index:180;overflow:auto;align-items:start}
.document-camera-card{width:min(920px,100%);margin:auto;max-height:calc(100vh - 48px);overflow:auto}
.document-camera-pages{display:grid;gap:12px;margin:18px 0;max-height:52vh;overflow:auto}
.document-camera-page{display:grid;grid-template-columns:92px minmax(120px,1fr) auto;align-items:center;gap:14px;border:1px solid #dce2ec;border-radius:16px;padding:10px;background:#f8fafc}
.document-camera-page img{width:92px;height:116px;object-fit:contain;background:#fff;border:1px solid #e5e7eb;border-radius:10px}
.document-camera-page>div:nth-child(2){display:grid;gap:4px}.document-camera-page span,.document-camera-summary{color:#77839a;font-weight:700}
.document-camera-page-actions,.document-camera-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.document-camera-actions{margin-top:16px}.document-camera-summary{margin-top:8px}
@media(max-width:720px){.document-camera-modal{padding:8px}.document-camera-card{max-height:calc(100vh - 16px);border-radius:18px;padding:20px}.document-camera-page{grid-template-columns:72px 1fr}.document-camera-page img{width:72px;height:92px}.document-camera-page-actions{grid-column:1/-1;justify-content:flex-start}.document-camera-actions>*{flex:1}}
.child-licensing-file{grid-column:1/-1;min-width:0}
.child-license-score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
.child-license-score{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid #dce6f5;border-radius:18px;background:#edf5ff;color:#163d82}
.child-license-score.digital{background:#f3efff;color:#6331c6}
.child-license-score span{font-weight:800;color:#64718a}.child-license-score strong{font-size:2rem;line-height:1}
.child-license-sections{display:grid;gap:14px;margin-top:18px}
.child-license-section{border:1px solid #dce2ec;border-radius:18px;background:#fff;overflow:hidden}
.child-license-section summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;cursor:pointer;list-style:none}
.child-license-section summary::-webkit-details-marker{display:none}.child-license-section summary span{color:#77839a;font-weight:700}
.child-license-requirements{border-top:1px solid #e7ebf2}
.child-requirement-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid #edf0f5}
.child-requirement-row:last-child{border-bottom:0}.child-requirement-copy>div{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.child-requirement-copy p{margin:6px 0;color:#667085}.child-requirement-copy small{display:block;color:#7c8799;margin-top:4px}
.child-requirement-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;max-width:520px}
@media(max-width:900px){.child-license-score-grid{grid-template-columns:1fr}.child-requirement-row{grid-template-columns:1fr}.child-requirement-actions{justify-content:flex-start;max-width:none}}
