:root {
  --ink:#20382e;
  --muted:#53645c;
  --green:#245c46;
  --green-dark:#173f30;
  --cream:#f5f7f3;
  --border:#d5ded4;
  --white:#fff;
  --sage:#e9f0e7;
  --gold:#97672c;
  --radius:14px;
  --shadow:0 2px 5px #263f3010;
}

* {
  box-sizing:border-box;
}

html {
  scroll-behavior:smooth;
}

body {
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

a {
  color:var(--green);
  text-decoration:none;
}

a:hover {
  text-decoration:underline;
}

button,input,select,textarea {
  font:inherit;
}

button {
  cursor:pointer;
}

button:disabled {
  cursor:not-allowed;
}

button,a,input,select,textarea,summary {
  outline-offset:4px;
}

button:focus-visible,a:focus-visible,summary:focus-visible {
  outline:3px solid #215ca0;
}

h1,h2,h3,p {
  margin-top:0;
}

h1 {
  font-size:34px;
  line-height:1.22;
  letter-spacing:-.8px;
  font-weight:650;
  margin-bottom:12px;
}

h2 {
  font-size:23px;
  line-height:1.35;
  letter-spacing:-.3px;
  font-weight:650;
  margin-bottom:14px;
}

h3 {
  font-size:18px;
  line-height:1.4;
  margin-bottom:6px;
}

small {
  font-size:14px;
}

strong {
  font-weight:650;
}

.muted,.subtitle {
  color:var(--muted);
}

.subtitle {
  font-size:16px;
  margin-bottom:0;
  max-width:72ch;
}

.eyebrow,.workspace-label {
  font-size:12px;
  letter-spacing:1px;
  font-weight:700;
  color:#53634f;
  text-transform:uppercase;
}

.eyebrow {
  margin-bottom:12px;
}

.eyebrow-dot {
  margin:0 10px;
}

.sidebar {
  width:248px;
  background:#fcfdfb;
  border-right:1px solid var(--border);
  position:fixed;
  inset:0 auto 0 0;
  padding:26px 16px 16px;
  display:flex;
  flex-direction:column;
  z-index:20;
  overflow-y:auto;
}

.brand {
  display:flex;
  align-items:center;
  gap:11px;
  font-weight:750;
  font-size:29px;
  letter-spacing:-1px;
  margin:0 8px 22px;
  color:var(--ink);
}

.brand:hover {
  text-decoration:none;
}

.brand small {
  display:block;
  font-size:10px;
  letter-spacing:1px;
  margin-top:-3px;
  font-weight:600;
  text-transform:uppercase;
}

/* Brand text is operator data of any length: let it wrap instead of overflowing. */
.brand>span:last-child {
  min-width:0;
  overflow-wrap:anywhere;
}

.brand-mark {
  display:block;
  flex-shrink:0;
  background:var(--green);
  color:#fff;
  border-radius:12px 12px 4px 12px;
  font:33px Georgia;
  width:40px;
  height:44px;
  padding:1px 0;
  text-align:center;
  position:relative;
}

.brand-mark span {
  position:absolute;
  font:16px sans-serif;
  right:-4px;
  top:-6px;
  color:var(--gold);
}

/* Operator-uploaded logo (PNG, JPEG or WebP) in place of the letter mark. */
.brand-mark.brand-logo {
  background:none;
  width:44px;
  padding:0;
  border-radius:10px;
  overflow:hidden;
}

.brand-mark.brand-logo img {
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
}

.workspace-label {
  margin:22px 12px 8px;
  font-size:11px;
}

.main-nav>a {
  display:flex;
  align-items:center;
  gap:10px;
  border-radius:8px;
  padding:10px 12px;
  margin:3px 0;
  font-size:15px;
  min-height:44px;
  color:#40594b;
}

.main-nav>a:hover {
  background:#edf2ea;
  text-decoration:none;
}

.main-nav>a.active {
  background:#e4edde;
  color:#194a33;
  font-weight:700;
  box-shadow:inset 3px 0 #2a6549;
}

.main-nav>a>span:first-child {
  font-size:19px;
  width:23px;
  text-align:center;
  flex-shrink:0;
}

.nav-lock {
  font-size:10px;
  margin-left:auto;
  color:#53684a;
}

.navigation-disclosure>summary {
  display:none;
}

.sidebar-footer {
  margin-top:auto;
  font-size:12px;
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:8px;
  padding:24px 10px 5px;
}

.status-dot {
  display:inline-block;
  width:8px;
  height:8px;
  flex-shrink:0;
  border-radius:50%;
  background:#477e50;
}

.sidebar-note {
  display:none;
}

.workspace {
  margin-left:248px;
}

.topbar {
  min-height:80px;
  border-bottom:1px solid var(--border);
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:16px 32px;
  background:#fcfdfb;
  gap:18px;
}

.school-switch,.topbar-right {
  display:flex;
  align-items:center;
  gap:10px;
}

.school-switch form {
  display:flex;
  align-items:center;
  gap:8px;
}

.school-switch select {
  max-width:340px;
  min-height:44px;
  font-size:15px;
}

.school-icon {
  font-size:22px;
}

.switch-button {
  border:1px solid var(--border);
  border-radius:7px;
  background:#fff;
  padding:9px 12px;
  min-height:44px;
  color:var(--green);
  font-size:14px;
}

.avatar {
  height:36px;
  width:36px;
  background:#e2ebdc;
  border-radius:50%;
  display:grid;
  place-items:center;
  font-size:15px;
  color:#385039;
  flex-shrink:0;
}

.user-name {
  font-size:14px;
  line-height:1.4;
}

.user-name small {
  display:block;
  font-size:12px;
  color:var(--muted);
}

.logout-button {
  border:0;
  background:transparent;
  font-size:14px;
  padding:8px;
  min-height:44px;
  color:var(--green);
}

main#main {
  max-width:1540px;
  margin:auto;
  padding:32px;
}

.page-header {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:24px;
  margin-bottom:26px;
}

.page-header .eyebrow {
  margin-bottom:9px;
}

.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  padding:10px 16px;
  border:1px solid #bac9b8;
  background:#fff;
  color:#2c513b;
  border-radius:8px;
  font-size:15px;
  font-weight:650;
  line-height:1.45;
  min-height:44px;
  text-align:center;
}

.btn:hover {
  text-decoration:none;
}

.btn-primary {
  background:var(--green);
  color:white;
  border-color:var(--green);
}

.btn-primary:hover {
  background:var(--green-dark);
}

.btn-secondary {
  background:#fff;
  border-color:#bac9b8;
  color:#2c513b;
}

.btn-secondary:hover {
  background:#edf3e9;
}

.btn-danger {
  background:#a0372b;
  color:#fff;
}

.btn:disabled {
  opacity:.55;
}

.badge {
  display:inline-flex;
  align-items:center;
  font-size:12px;
  font-weight:600;
  padding:5px 9px;
  border-radius:6px;
  background:#eef2e9;
  color:#435b37;
  line-height:1.35;
  white-space:normal;
}

.badge-success {
  background:#e7f2e2;
  color:#315d24;
}

.badge-warning {
  background:#fff1d5;
  color:#78530e;
}

.badge-danger {
  background:#fae7e1;
  color:#8c3527;
}

.muted-badge {
  color:#435b37;
  border:1px solid #cfdbc6;
}

.briefing-banner {
  background:#eaf0e4;
  border:1px solid #cedcc2;
  border-radius:12px;
  display:flex;
  align-items:center;
  gap:18px;
  padding:22px;
  margin-bottom:24px;
}

.briefing-icon {
  font-size:25px;
  flex-shrink:0;
  color:#416b31;
}

.briefing-banner .eyebrow {
  display:block;
  margin:0 0 6px;
}

.briefing-banner h2 {
  font-size:21px;
  margin-bottom:6px;
}

.briefing-banner p {
  font-size:15px;
  color:#46573d;
  max-width:85ch;
  margin:0;
}

.briefing-decoration {
  display:none;
}

.stats-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin:24px 0;
}

.stat {
  border:1px solid var(--border);
  background:#fff;
  border-radius:12px;
  padding:20px;
  min-width:0;
}

.stat-label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  font-size:14px;
  color:var(--muted);
  margin-bottom:12px;
  font-weight:550;
}

.stat-label>span {
  font-size:19px;
  color:#627656;
}

.stat>strong {
  display:block;
  font-size:34px;
  font-weight:650;
  line-height:1.2;
  letter-spacing:-.7px;
}

.stat>strong.stat-word {
  font-size:26px;
  letter-spacing:-.4px;
}

.stat strong small {
  font-size:21px;
}

.stat>p {
  font-size:14px;
  color:var(--muted);
  margin:12px 0 0;
}

.help-note {
  display:block;
  color:#75521a;
  margin-top:4px;
}

.tiny-dot {
  display:inline-block;
  width:4px;
  height:4px;
  border-radius:50%;
  background:#718769;
  margin:3px 6px;
}

.grid {
  display:grid;
  gap:22px;
}

.grid-2 {
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.grid-3 {
  grid-template-columns:repeat(3,minmax(0,1fr));
}

.dashboard-grid {
  display:grid;
  grid-template-columns:1.45fr 1fr;
  gap:24px;
}

.card {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:24px;
  min-width:0;
  box-shadow:var(--shadow);
}

.card+.card {
  margin-top:20px;
}

.grid>.card+.card,.dashboard-grid>.card+.card {
  margin-top:0;
}

.section-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:18px;
}

.section-header .eyebrow {
  display:block;
  font-size:12px;
  margin:0 0 7px;
}

.section-header h2 {
  margin:0;
}

.action-row {
  display:flex;
  gap:14px;
  align-items:center;
  padding:19px 0;
  border-top:1px solid var(--border);
  color:var(--ink);
}

.action-row:hover {
  text-decoration:none;
}

.action-row:hover h3 {
  text-decoration:underline;
}

.action-row>div {
  flex:1;
}

.action-row h3 {
  font-size:17px;
  margin:0 0 5px;
}

.action-row p {
  font-size:14px;
  color:var(--muted);
  margin:0;
}

.action-icon {
  width:38px;
  height:40px;
  border-radius:8px;
  display:grid;
  place-items:center;
  flex-shrink:0;
  font-size:20px;
}

.amber {
  background:#fff0d4;
  color:#79541a;
}

.blue {
  background:#e8eef9;
  color:#395e93;
}

.green {
  background:#e9f2e2;
  color:#49672c;
}

.lilac {
  background:#f0e8fa;
  color:#685184;
}

.dark-card {
  background:#214d3b;
  color:#fff;
}

.dark-card .eyebrow,.dark-card p {
  color:#dcebd6;
}

.dark-card h2 {
  font-size:28px;
}

.text-link {
  font-size:15px;
  font-weight:650;
  color:var(--green);
  text-decoration:underline;
  text-underline-offset:3px;
}

.text-link.light {
  color:#fff;
}

.dashboard-lower {
  margin-top:24px;
}

.class-progress {
  display:block;
  margin:18px 0;
  color:var(--ink);
}

.class-progress>div:first-child {
  display:flex;
  justify-content:space-between;
  gap:10px;
  font-size:15px;
  margin-bottom:8px;
}

.class-progress span {
  font-size:14px;
  color:var(--muted);
}

.progress-track {
  height:8px;
  background:#ebf0e6;
  border-radius:10px;
  overflow:hidden;
}

.progress-track i {
  height:100%;
  display:block;
  border-radius:10px;
  background:#598143;
}

.footnote,.helptext {
  font-size:14px;
  color:var(--muted);
  line-height:1.55;
}

.footnote {
  margin:20px 0 0;
}

.balance-row {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:18px 0;
  border-bottom:1px solid var(--border);
}

.balance-row small {
  display:block;
  color:var(--muted);
  font-size:12px;
  margin-top:3px;
}

.balance-row strong {
  font-size:25px;
  font-variant-numeric:tabular-nums;
}

.activity-card {
  margin-top:24px;
}

.activity-row {
  display:flex;
  gap:12px;
  align-items:center;
  font-size:14px;
  padding:14px 0;
  border-top:1px solid var(--border);
}

.activity-row time {
  margin-left:auto;
  color:var(--muted);
  white-space:nowrap;
}

.page-footer {
  display:flex;
  justify-content:space-between;
  gap:16px;
  color:var(--muted);
  font-size:12px;
  margin:32px 0 4px;
}

.table-wrap {
  overflow:auto;
  width:100%;
  border-radius:8px;
  position: relative; /* keeps visually hidden labels inside scrolling tables on phones */
}

table {
  border-collapse:collapse;
  width:100%;
  text-align:left;
  font-size:15px;
}

th {
  font-size:13px;
  color:#405437;
  background:#eff3e9;
  font-weight:700;
  letter-spacing:.2px;
}

td,th {
  padding:14px 12px;
  border-bottom:1px solid var(--border);
  vertical-align:top;
}

thead th {
  position:sticky;
  top:0;
  z-index:1;
}

tbody tr:hover {
  background:#f9fbf7;
}

tbody tr:last-child td {
  border-bottom:0;
}

td strong {
  font-size:15px;
}

td p {
  margin:0;
}

td small {
  display:block;
}

td.number,th.number {
  text-align:right;
  font-variant-numeric:tabular-nums;
}

form p {
  margin-bottom:22px;
}

label {
  display:block;
  font-size:15px;
  font-weight:650;
  color:#354e3e;
  margin-bottom:7px;
}

input,select,textarea {
  border:1px solid #a9bba6;
  border-radius:7px;
  padding:10px 12px;
  background:#fff;
  color:#233c2e;
  width:100%;
  font-size:16px;
  line-height:1.5;
  min-height:44px;
}

input[type=checkbox],input[type=radio] {
  width:22px;
  min-height:22px;
  height:22px;
  vertical-align:middle;
  accent-color:var(--green);
}

textarea {
  min-height:100px;
  resize:vertical;
}

input[type=file] {
  background:#f5f8f0;
  padding:16px;
}

input:focus,select:focus,textarea:focus {
  border-color:#357556;
  outline:2px solid #b7d3aa;
  outline-offset:2px;
}

.form-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:20px;
}

.form-grid>div,.form-grid>p {
  min-width:0;
}

.form-card {
  max-width:860px;
}

.filter-bar {
  display:flex;
  gap:12px;
  align-items:center;
  margin-bottom:22px;
  flex-wrap:wrap;
}

.filter-bar input {
  max-width:340px;
}

.filter-bar select {
  max-width:220px;
}

.filter-bar label {
  margin:0;
}

.form-footer {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin-top:24px;
}

.form-footer .footnote {
  margin:0;
  max-width:550px;
}

.actions {
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
}

.list-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-top:1px solid var(--border);
  padding:16px 0;
  font-size:16px;
  color:var(--ink);
}

.list-row small {
  display:block;
  color:var(--muted);
  margin-top:3px;
}

.spaced {
  margin-top:24px;
}

.alert {
  padding:15px 18px;
  border-radius:8px;
  background:#eaf2e2;
  border:1px solid #c5d9b7;
  color:#36592a;
  margin-bottom:20px;
  font-size:15px;
}

.alert.error,.alert.danger {
  background:#fdefe9;
  color:#8a3023;
  border-color:#e8b6a9;
}

.alert.warning {
  background:#fff3db;
  color:#78500c;
  border-color:#d9bb7d;
}

.errorlist {
  background:#fff0e8;
  color:#8e3022;
  padding:13px 16px 13px 30px;
  border-radius:7px;
  font-size:15px;
}

.helptext {
  display:block;
  margin-top:7px;
}

.pagination {
  display:flex;
  justify-content:center;
  gap:24px;
  font-size:15px;
  margin-top:24px;
}

.empty-state {
  padding:25px 12px;
  color:var(--muted);
  font-size:16px;
  text-align:center;
}

.attendance-select {
  max-width:185px;
}

.steps {
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:24px;
}

.step {
  padding:10px 16px;
  background:#edf1e6;
  border-radius:7px;
  font-size:14px;
  color:#4d6340;
}

.step.active {
  background:#dce9d0;
  color:#284f1e;
  font-weight:650;
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.skip-link {
  position:fixed;
  top:-100px;
  left:260px;
  background:#fff;
  padding:12px;
  z-index:99;
}

.skip-link:focus {
  top:0;
}

.login-page {
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:32px;
}

.login-shell {
  max-width:1100px;
  min-height:640px;
  width:100%;
  display:grid;
  grid-template-columns:1.1fr 1fr;
  border:1px solid var(--border);
  border-radius:20px;
  overflow:hidden;
  background:#fff;
  box-shadow:0 15px 65px #2b4e3612;
}

.login-story {
  background:#e6eedd;
  padding:40px;
  display:flex;
  flex-direction:column;
}

.login-story .brand {
  margin-bottom:50px;
}

.login-story h1 {
  font-size:44px;
  line-height:1.15;
}

.login-story p {
  font-size:17px;
  color:#4a6241;
}

.login-pills {
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:20px;
}

.login-pills span {
  font-size:13px;
  padding:7px 10px;
  border:1px solid #b5c6a6;
  border-radius:20px;
  color:#425d32;
}

.login-art {
  height:140px;
  position:relative;
  margin:5px 0 25px;
}

.login-art>span {
  font-size:110px;
  color:#517752;
  position:absolute;
  right:20px;
}

.art-caption {
  font:italic 20px/1.5 Georgia;
  position:absolute;
  left:0;
  top:65px;
  color:#496537;
}

.art-orbit {
  display:none;
}

.login-story>small {
  margin-top:auto;
  color:#4b603f;
  font-size:13px;
}

.login-form {
  padding:75px 44px 40px;
}

.login-form h2 {
  font-size:28px;
  margin:18px 0 10px;
}

.login-form>p {
  font-size:16px;
  margin-bottom:28px;
}

.login-form .btn {
  width:100%;
  justify-content:space-between;
  margin-top:6px;
}

.demo-note {
  border-top:1px solid var(--border);
  margin-top:28px;
  padding-top:20px;
}

.demo-note p {
  font-size:14px;
  color:var(--muted);
  margin:8px 0;
}

.error-page {
  max-width:750px;
  margin:15vh auto;
  padding:30px;
}

.print-only {
  display:none;
}

.readonly-banner {
  background:#fff2d9;
  border-bottom:1px solid #d3b071;
  padding:12px 32px;
  color:#714a09;
  font-size:15px;
}

.compact-list {
  list-style:none;
  padding:0;
  margin:0;
}

.compact-list li {
  padding:14px 0;
  border-top:1px solid var(--border);
}

.task-meta {
  font-size:14px;
  color:var(--muted);
}

.task-count {
  font-variant-numeric:tabular-nums;
}

.scheme-editor-nav {
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:20px;
}

.scheme-editor-nav a {
  padding:8px 12px;
  background:#e9f0e2;
  border-radius:6px;
  font-size:14px;
}

.week-editor {
  scroll-margin-top:16px;
}

.week-summary {
  padding:12px 16px;
  background:#f0f5eb;
  border-radius:8px;
  margin-bottom:18px;
}

.week-summary p {
  margin:4px 0;
}

.sticky-save {
  position:sticky;
  bottom:0;
  background:#fbfdf9ef;
  border:1px solid var(--border);
  padding:16px;
  border-radius:10px;
  margin-top:20px;
  z-index:5;
  backdrop-filter:blur(6px);
}

.timetable-grid {
  min-width:780px;
}

.timetable-grid td {
  min-width:150px;
}

.timetable-grid td>div {
  padding:6px;
  border-left:3px solid #6e9360;
  margin-bottom:8px;
  background:#f2f6ec;
  font-size:14px;
}

.timetable-grid th:first-child {
  min-width:95px;
}

.timetable-grid td small {
  font-size:13px;
}

details.card>summary {
  font-weight:650;
  cursor:pointer;
  font-size:18px;
}

code {
  overflow-wrap:anywhere;
}

pre {
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  font-size:14px;
  background:#f3f6ee;
  padding:16px;
  border-radius:8px;
}

hr {
  border:0;
  border-top:1px solid var(--border);
  margin:16px 0;
}

@media(max-width:1200px) {
  .sidebar {
    width:226px;
    padding:22px 12px;
  }
  .workspace {
    margin-left:226px;
  }
  main#main {
    padding:26px;
  }
  .topbar {
    padding:15px 24px;
    flex-wrap:wrap;
  }
  .stats-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .dashboard-grid {
    grid-template-columns:1fr 1fr;
  }
  .main-nav>a {
    font-size:14px;
  }
  .school-switch select {
    max-width:310px;
  }
}

@media(max-width:900px) {
  .sidebar {
    position:static;
    width:100%;
    padding:16px 22px;
    display:block;
    border-right:0;
    border-bottom:1px solid var(--border);
  }
  .sidebar .brand {
    margin:0 0 12px;
    font-size:26px;
  }
  .navigation-disclosure>summary {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:10px 12px;
    border:1px solid #becfba;
    border-radius:8px;
    cursor:pointer;
    font-size:16px;
    min-height:44px;
    color:var(--green);
  }
  .navigation-disclosure>summary:after {
    content:'☰';
  }
  .navigation-disclosure[open]>summary:after {
    content:'−';
  }
  .main-nav {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:4px;
    margin-top:10px;
  }
  .main-nav .workspace-label {
    grid-column:1/-1;
  }
  .main-nav>a {
    font-size:15px;
  }
  .sidebar-footer {
    display:none;
  }
  .workspace {
    margin:0;
  }
  .topbar {
    min-height:70px;
  }
  .user-name small {
    display:none;
  }
  .dashboard-grid {
    grid-template-columns:1fr;
  }
  .grid-3 {
    grid-template-columns:1fr 1fr;
  }
  .login-story {
    padding:32px;
  }
  .login-form {
    padding:65px 30px 35px;
  }
  .login-story h1 {
    font-size:36px;
  }
}

@media(max-width:650px) {
  h1 {
    font-size:29px;
  }
  h2 {
    font-size:22px;
  }
  main#main {
    padding:22px 16px;
  }
  .page-header {
    flex-direction:column;
    gap:16px;
  }
  .page-header .actions {
    width:100%;
  }
  .topbar {
    padding:13px 16px;
    gap:12px;
    align-items:flex-start;
  }
  .school-switch {
    width:100%;
  }
  .school-switch form {
    width:100%;
    min-width:0;
  }
  .school-switch select {
    max-width:none;
    flex:1;
    min-width:0;
  }
  .school-icon {
    display:none;
  }
  .topbar-right {
    width:100%;
    justify-content:flex-end;
    flex-wrap:wrap;
  }
  .user-name {
    margin-right:auto;
  }
  .topbar .badge {
    margin-right:auto;
  }
  .stats-grid {
    gap:12px;
  }
  .stat {
    padding:16px;
  }
  .stat>strong {
    font-size:31px;
  }
  .stat>strong.stat-word {
    font-size:22px;
  }
  .stat-label {
    font-size:14px;
  }
  .grid-2,.grid-3,.form-grid {
    grid-template-columns:1fr;
  }
  .briefing-banner {
    padding:18px;
    gap:12px;
  }
  .briefing-banner h2 {
    font-size:20px;
  }
  .briefing-banner p {
    font-size:15px;
  }
  .card {
    padding:20px;
  }
  .action-row {
    gap:12px;
  }
  .action-row p {
    font-size:14px;
  }
  .section-header {
    flex-wrap:wrap;
  }
  .balance-row strong {
    font-size:23px;
  }
  .activity-row {
    flex-wrap:wrap;
    gap:8px;
  }
  .activity-row time {
    width:100%;
    margin-left:20px;
  }
  .page-footer {
    font-size:12px;
    flex-direction:column;
    gap:6px;
  }
  .form-footer {
    flex-direction:column;
    align-items:stretch;
  }
  .filter-bar {
    align-items:stretch;
  }
  .filter-bar input,.filter-bar select {
    max-width:100%;
    flex:1;
    min-width:140px;
  }
  .table-wrap {
    margin:0 -4px;
    width:calc(100% + 8px);
  }
  td,th {
    padding:12px 10px;
  }
  .login-page {
    padding:0;
  }
  .login-shell {
    display:block;
    border-radius:0;
    border:0;
    min-height:100vh;
  }
  .login-story {
    padding:26px;
    min-height:220px;
  }
  .login-story .brand {
    margin-bottom:26px;
  }
  .login-story h1 {
    font-size:34px;
  }
  .login-story p,.login-pills,.login-art,.login-story>small {
    display:none;
  }
  .login-story h1 br {
    display:none;
  }
  .login-form {
    padding:32px 25px;
  }
  .skip-link {
    left:10px;
  }
  .readonly-banner {
    padding:12px 16px;
  }
  .sticky-save {
    padding:12px;
  }
  .sticky-save .btn {
    width:100%;
  }
}

@media print {
  @page {
    margin:14mm;
  }
  body {
    background:#fff;
    color:#111;
    font-size:11pt;
  }
  .no-print,.sidebar,.topbar,.page-footer,.btn,.filter-bar,.readonly-banner,.scheme-editor-nav,.sticky-save {
    display:none!important;
  }
  .workspace {
    margin:0;
  }
  main#main {
    padding:0;
    max-width:none;
  }
  .card {
    box-shadow:none;
    border:0;
    padding:10px 0;
    break-inside:auto;
  }
  .page-header {
    margin-bottom:15px;
  }
  h1 {
    font-size:22pt;
  }
  h2 {
    font-size:16pt;
    break-after:avoid;
  }
  .grid,.grid-2,.grid-3,.dashboard-grid {
    display:block;
  }
  .table-wrap {
    overflow:visible;
  }
  table {
    font-size:10pt;
  }
  .timetable-grid {
    min-width:0;
  }
  .timetable-grid td {
    min-width:0;
  }
  td,th {
    padding:6px;
    border:1px solid #b9b9b9;
  }
  thead {
    display:table-header-group;
  }
  thead th {
    position:static;
  }
  tr {
    break-inside:avoid;
  }
  .print-only {
    display:block;
  }
  .badge {
    border:1px solid #999;
    background:#fff;
    color:#111;
  }
  .muted,.footnote,.helptext,.subtitle {
    color:#333;
  }
  .page-break {
    break-before:page;
  }
  a {
    color:#111;
    text-decoration:none;
  }
  textarea,input,select {
    border:0;
    background:none;
  }
  .form-footer {
    display:none;
  }
  .card+.card {
    margin-top:12px;
  }
}

@media(max-width:480px) {
  .stats-grid {
    grid-template-columns:1fr;
  }
}


/* Returns and reporting */
.source-text, .return-text { width: 100%; white-space: pre-wrap; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.95rem; background: var(--cream); border: 1px solid var(--border); border-radius: var(--radius); padding: 0.75rem; max-height: 28rem; overflow: auto; }
.check-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.check-list q { color: var(--muted); }
.check-row { display: flex; align-items: center; gap: 0.5rem; margin: 0.35rem 0; }
.btn-small { padding: 0.25rem 0.6rem; font-size: 0.85rem; }
.timeline { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.6rem; }
.timeline li { border-left: 3px solid var(--border); padding-left: 0.6rem; }
.health-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; margin: 0.4rem 0; }
.health-row ul { display: flex; gap: 0.75rem; list-style: none; padding: 0; margin: 0; }
fieldset { border: 1px solid var(--border); border-radius: var(--radius); padding: 0.75rem 1rem; margin: 0 0 1rem; }
legend { font-weight: 600; padding: 0 0.35rem; }
.return-grid input { width: 5.5rem; }
.return-grid th small, .return-grid td small { display: block; font-size: 0.75rem; }
.total-row td { border-top: 2px solid var(--border); }
.setup-key { font-family: ui-monospace, Menlo, monospace; letter-spacing: 0.08em; }
.setup-uri { word-break: break-all; font-size: 0.8rem; }
.offline-status { margin: 0.5rem 0; padding: 0.6rem 0.8rem; border-radius: var(--radius); background: var(--sage); border: 1px solid var(--border); }

/* === Document desk (Y06-Y09) === */
.doc-tabs { display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; margin: 0 0 1rem; border-bottom: 1px solid var(--border); }
.doc-tabs a { padding: 0.45rem 0.1rem; border-bottom: 3px solid transparent; font-weight: 600; }
.doc-tabs a[aria-current="page"] { border-bottom-color: var(--green); color: var(--green-dark); }
.doc-banner { margin: 0 0 1rem; padding: 0.85rem 1rem; border-radius: 8px; background: #fdefe9; border: 2px solid #c75a45; color: #7a2a1e; }
.doc-banner a { color: #7a2a1e; text-decoration: underline; }
.doc-banner-title { display: block; }
.doc-banner-note { display: block; margin-top: 0.35rem; font-size: 0.92rem; }
.doc-banner-compact { margin: 0.35rem 0 0; padding: 0.35rem 0.55rem; border-width: 1px; font-size: 0.85rem; }
.doc-banner-compact .doc-banner-title { display: inline; }
.doc-search { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr) auto; gap: 0.5rem 1rem; align-items: end; }
.doc-search p { margin: 0; }
.doc-search input, .doc-search select { width: 100%; }
.reading-item { border-top: 1px solid var(--border); padding: 0.9rem 0; scroll-margin-top: 1rem; }
.reading-item:first-of-type { border-top: 0; }
.reading-rejected { opacity: 0.7; }
.reading-head { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-bottom: 0.5rem; }
.reading-fields { display: grid; grid-template-columns: minmax(8rem, max-content) minmax(0, 1fr); gap: 0.2rem 1rem; margin: 0 0 0.5rem; }
.reading-fields dt { color: var(--muted); }
.reading-fields dd { margin: 0; overflow-wrap: anywhere; }
.reading-quote { margin: 0.5rem 0; padding: 0.5rem 0.75rem; border-left: 4px solid var(--green); background: var(--sage); font-style: italic; overflow-wrap: anywhere; }
.reading-actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.5rem 0.75rem; margin-top: 0.5rem; }
.reading-confirm { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.5rem 0.75rem; }
.reading-confirm p { margin: 0; }
.reading-confirm select { max-width: 100%; }
.reading-reject { display: flex; gap: 0.4rem; align-items: center; }
.reading-reject input { max-width: 12rem; }
@media (max-width: 700px) {
  .doc-search { grid-template-columns: minmax(0, 1fr); }
  .reading-fields { grid-template-columns: minmax(0, 1fr); }
  .reading-fields dd { margin-bottom: 0.35rem; }
  .reading-reject input { max-width: none; flex: 1; }
}
@media print {
  .doc-banner { border: 2px solid #000; color: #000; background: none; }
}
/* === Agenda (Y02-Y05): /agenda/, its print view and "Needs you" on Today === */
.agenda-day { margin: 0 0 18px; padding: 12px 16px; border-radius: 10px; border: 1px solid var(--border); font-size: 15px; }
.agenda-day-open { background: var(--sage); }
.agenda-day-closed { background: #fff3db; border-color: #d9bb7d; color: #5f430f; }
.agenda-filter { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.agenda-counts { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 20px; }
.agenda-count { display: inline-flex; align-items: baseline; gap: 6px; padding: 6px 12px; border: 1px solid var(--border); border-radius: 999px; background: #fff; color: var(--ink); font-size: 14px; text-decoration: none; }
.agenda-count strong { font-size: 16px; }
.agenda-count.is-current, .agenda-count:hover, .agenda-count:focus-visible { border-color: var(--green); background: var(--sage); }
.agenda-group h2 { display: flex; align-items: center; gap: 10px; font-size: 19px; margin: 0 0 6px; }
.agenda-list { list-style: none; margin: 0; padding: 0; }
.agenda-item { padding: 14px 0 14px 14px; border-top: 1px solid var(--border); border-left: 4px solid var(--border); }
.agenda-list > .agenda-item:first-child { border-top: 0; }
.agenda-item-overdue { border-left-color: #b4513f; }
.agenda-item-today, .agenda-item-week { border-left-color: #c79a3e; }
.agenda-item-later { border-left-color: #9fb592; }
.agenda-item-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
.agenda-item-title { font-weight: 650; font-size: 16px; overflow-wrap: anywhere; }
.agenda-why, .agenda-detail, .agenda-meta { margin: 6px 0 0; font-size: 14px; max-width: 90ch; overflow-wrap: anywhere; }
.agenda-detail { color: var(--muted); }
.agenda-meta { color: var(--muted); font-size: 13px; }
.agenda-list-compact .agenda-item { padding: 10px 0 10px 12px; }
.agenda-tools { margin-top: 20px; }
.agenda-tools textarea { min-height: 14rem; }
.briefing-banner p + p { margin-top: 6px; }
.needs-you { margin-bottom: 24px; }
.agenda-print-counts { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 14px; }
.agenda-print-group { margin-top: 18px; }
.agenda-print-group h2 { font-size: 18px; margin: 0 0 8px; }
.agenda-print-table td small { color: var(--muted); margin-top: 4px; }
.agenda-print-table th:first-child { width: 8.5rem; }
.agenda-print-tick { width: 3.5rem; }
@media (max-width: 480px) {
  .agenda-item { padding-left: 10px; }
  .agenda-filter { display: flex; width: 100%; }
  .agenda-filter label { min-width: 3.2rem; }
  .agenda-filter select { flex: 1; max-width: none; width: auto; min-width: 0; }
}
@page agenda-a4 { size: A4; margin: 14mm; }
@media print {
  .agenda-print { page: agenda-a4; }
  .agenda-print-group { break-inside: auto; }
  .agenda-print-table tr { break-inside: avoid; }
  .agenda-print-table thead th { position: static; }
  .agenda-print-tick { border: 1px solid #555; }
  .agenda-day-closed, .agenda-day-open { background: none; }
}
/* === End agenda === */
/* === Return autopilot (Y10-Y16): field dictionary, request figures, district templates === */
.field-table th small, .field-table td small, .match-table th small, .match-table td small, .figure-table th small, .figure-table td small { display: block; font-size: 0.78rem; margin-top: 0.15rem; }
.field-table code, .figure-table code { font-size: 0.75rem; word-break: break-all; }
.field-table th[scope="row"], .figure-table th[scope="row"], .match-table th[scope="row"] { min-width: 9rem; }
.match-table select, .match-table input[list] { width: 100%; max-width: 17rem; }
.figure-table input { width: 7rem; }
.flagged-row th, .flagged-row td { background: #fff1d5; }
@media (max-width: 480px) { .match-table select, .match-table input[list] { max-width: 11rem; } .field-table th[scope="row"] { min-width: 7rem; } }
@media print { .figure-table input { border: 0; } .flagged-row th, .flagged-row td { background: none; } }
/* === end Return autopilot === */
/* === Learner movements (Y17-Y19) === */
.movement-voided td { color: var(--muted); }
.movement-voided td:first-child, .movement-voided td:nth-child(2) { text-decoration: line-through; }
.movement-form { border: 1px solid var(--border); border-radius: var(--radius); padding: 0.5rem 0.85rem; margin: 0.5rem 0; }
.movement-form > summary { cursor: pointer; font-weight: 600; padding: 0.25rem 0; }
.movement-form > summary:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
.movement-form[open] > summary { margin-bottom: 0.5rem; }
.movement-table th, .movement-table td { text-align: center; white-space: nowrap; }
.movement-table th[scope="row"] { text-align: left; }
.movement-history td { vertical-align: top; }
.movement-history details form { margin-top: 0.4rem; }
.movement-figures .stat { font-size: 1.6rem; font-weight: 700; }
@media (max-width: 480px) {
  .movement-form { padding: 0.4rem 0.6rem; }
  .movement-table th, .movement-table td { padding: 0.35rem 0.4rem; }
}
@media print {
  .movement-voided td:first-child, .movement-voided td:nth-child(2) { text-decoration: line-through; }
  .movement-table { font-size: 9pt; }
}
/* === Inspection-ready file, report reader and CPD session status (Y20-Y23) === */
.file-section-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.4rem 0.75rem; }
.file-section-head h2 { margin: 0; }
.file-figures th[scope="row"] { font-weight: 600; text-align: left; min-width: 10rem; }
.file-figures td small, .file-figures th small { display: block; }
.file-summary { list-style: none; padding: 0; margin: 0 0 0.75rem; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; }
.file-summary li { display: flex; align-items: center; gap: 0.4rem; }
.file-toc { margin: 0; padding-left: 1.25rem; display: grid; gap: 0.35rem; }
.file-gaps { margin: 0.25rem 0 0.75rem; padding-left: 1.25rem; }
.file-notes { list-style: none; padding: 0; margin: 0.5rem 0 0; display: grid; gap: 0.2rem; }
.file-summary-table { width: auto; margin: 0 0 1rem; }
.reader-quote { margin: 0.5rem 0; padding: 0.5rem 0.9rem; border-left: 4px solid var(--border); background: var(--cream); border-radius: 6px; }
.reader-suggestion { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: 0.3rem 0.9rem; margin: 0.5rem 0; }
.reader-suggestion dt { font-weight: 600; }
.reader-suggestion dd { margin: 0; }
.not-counted { margin-top: 0.75rem; }
.not-counted summary { cursor: pointer; font-weight: 600; }
.session-status-form textarea { width: 100%; }
@media screen and (max-width: 600px) {
  .reader-suggestion { grid-template-columns: 1fr; }
  /* On a phone each figure stacks as one block: name, value, how it was counted, target. */
  .file-figures thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .file-figures, .file-figures tbody, .file-figures tr, .file-figures th, .file-figures td { display: block; width: auto; }
  .file-figures tr { border-bottom: 1px solid var(--border); padding: 0.45rem 0; }
  .file-figures th[scope="row"], .file-figures td { border: 0; padding: 0.1rem 0.6rem; min-width: 0; background: none; }
  .file-figures .file-value { font-weight: 600; }
  .file-figures td[data-label]::before { content: attr(data-label) ": "; font-size: 0.8rem; font-weight: 600; color: var(--muted); }
  .file-figures td[data-label] small { display: inline; }
  .file-figures .file-no-target { display: none; }
}
@media print {
  .file-print { page: inspection-a4; }
  .file-section { break-inside: auto; }
  .file-section-head { break-after: avoid; }
}
@page inspection-a4 { size: A4 portrait; margin: 14mm; }
