/* Screen-only refinement. Printed slips and the vertical glyph engine keep their own styles. */
:root {
  --ink: #292638;
  --muted: #625e70;
  --lav-dark: #5846ab;
  --line: #dedbe8;
  --ui-accent: #5846ab;
  --ui-glass: rgba(255,255,255,.82);
}
body { color: var(--ink); }
button, input, select, textarea { font-family: inherit; }
button, a, summary, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:is(button,a,summary,input,select,textarea,[tabindex]):focus-visible {
  outline: 3px solid #5846ab; outline-offset: 3px;
}
input::placeholder, textarea::placeholder { color: #6d687a; opacity: 1; }
.btn, .tab, .nav-action, .nav-more-toggle { min-height: 44px; font-size: 16px; }
.btn { box-shadow: none; border: 1px solid var(--line); border-radius: 11px; }
.btn.primary, .nav-primary { background: var(--ui-accent); color: #fff; box-shadow: none; border-color: var(--ui-accent); }
.btn.primary:hover, .nav-primary:hover { background: #45338f; }
.btn.secondary { background: #efebfa; border-color: #cec5e9; color: #49378e; font-weight: 700; }
.btn.ghost { background: rgba(255,255,255,.8); color: #423d50; }
.btn.danger { color: #a62e45; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.topbar { gap: 20px; padding: 16px 3.5vw; background: rgba(255,255,255,.7); }
.topbar-identity { flex: 1 1 300px; gap: 14px; }
.topbar .brand strong { font-size: 18px; }
.brand span { color: var(--muted); }
.brand-mark { background: #6353b4; box-shadow: none; }
.top-actions { gap: 8px; flex: 0 1 auto; }
.topbar .demo-badge { font-size: 12px; background: transparent; padding: 0; color: var(--muted); }
.top-actions .nav-action { padding: 10px 15px; box-shadow: none; }
.nav-admin { border: 1px solid #b2a5d8; background: #efeaf9; color: #49378e; }
.nav-more-toggle { box-shadow: none; }
.app-layout { grid-template-columns: 224px minmax(0,1fr); gap: 24px; max-width: 1440px; width: 93vw; margin: 24px auto; }
.class-card { background: var(--ui-glass); color: var(--ink); border: 1px solid #fff; box-shadow: none; padding: 20px; border-radius: 18px; }
.class-card .eyebrow { color: var(--muted); font-size: 13px; }
.class-card strong { font-size: 28px; }
.class-card > span:not(.eyebrow) { color: var(--muted); font-size: 14px; }
.class-card .class-lock { color: var(--muted); font-size: 12px; border-color: var(--line); }
.nav-class-switch { display: grid; margin-top: 14px; gap: 6px; max-width: 100%; }
.nav-class-switch span { display: block; font-size: 13px; }
.nav-class-switch select { min-height: 44px; width: 100%; min-width: 0; max-width: 100%; padding: 8px; font-size: 16px; border: 1px solid #c9c3d7; border-radius: 8px; color: var(--ink); background: #fff; }
.tabs { gap: 4px; margin-top: 16px; }
.tab { background: transparent; box-shadow: none; border: 1px solid transparent; padding: 12px 16px; color: #514c61; }
.tab.active { background: #e7e1f7; border-color: #cbc0e6; color: #443284; font-weight: 750; }
.class-tools { display: grid; gap: 6px; padding-top: 16px; margin-top: 16px; border-top: 1px solid #d9d5e4; }
.class-tools .btn { text-align: left; justify-content: flex-start; }
.content-section { background: var(--ui-glass); box-shadow: 0 10px 35px rgba(44,37,81,.05); border-radius: 22px; padding: 28px; }
.section-heading { gap: 20px; align-items: flex-start; }
.section-heading h2 { font-size: 26px; line-height: 1.35; }
.section-heading p { color: var(--muted); font-size: 15px; line-height: 1.65; }
.section-heading .eyebrow { display: none; }
.section-actions { gap: 8px; }
.date-toolbar { gap: 12px; }
.date-title { font-size: 17px; background: transparent; border: 0; min-height: 44px; }
.date-navigation { gap: 8px; }
.icon-btn { min-width: 44px; min-height: 44px; }
.cloud-status { background: transparent; box-shadow: none; border: 0; padding: 0 4px 12px; margin-bottom: 0; font-size: 14px; color: var(--muted); align-items: flex-start; }
.cloud-status [role=status] { padding-top: 11px; }
.sync-options { max-width: 100%; }
.sync-options summary { min-height: 44px; display: list-item; align-content: center; cursor: pointer; padding: 10px; border-radius: 8px; color: #514867; }
.sync-option-actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 8px 0; }
.sync-options[open] { flex-basis: 100%; }
.status-line { font-size: 14px; line-height: 1.6; margin: 18px 0; color: var(--muted); }
.status-line .updated { font-size: 13px; }
.assignment-list { gap: 16px; }
.assignment-card.editor-card { grid-template-columns: 44px minmax(90px,.8fr) minmax(140px,1.4fr) minmax(120px,1fr); align-items: end; gap: 16px; padding: 20px; background: #fff; box-shadow: none; border: 1px solid var(--line); }
.editor-card label { color: #514b61; font-size: 14px; gap: 8px; min-width: 0; }
.editor-card input, .editor-card textarea { font-size: 17px; line-height: 1.5; min-height: 46px; background: #fff; border-color: #cdc6db; box-shadow: none; padding: 10px 12px; }
.editor-card .drag-mark { grid-column: 1; grid-row: 1; align-self: end; min-height: 46px; color: #635778; }
.editor-card .wide-field { grid-column: 2 / -1; }
.editor-card .row-actions { grid-column: 2 / -1; justify-content: flex-end; gap: 8px; padding-top: 0; }
.row-actions .btn { font-size: 14px; padding: 8px 12px; white-space: nowrap; }
.assignment-card.freeform-card .freeform-field { grid-column: 2 / -1; }
.publish-bar { gap: 12px; flex-wrap: wrap; }
.publish-hint { font-size: 14px; }
.published-card { box-shadow: none; border-color: var(--line); }
.assignment-title { font-size: 21px; line-height: 1.6; }
.assignment-kicker, .assignment-range, .assignment-note { font-size: 16px; line-height: 1.65; }
.print-surface > .section-heading { display: block; }
.print-surface > .section-heading > div:first-child { margin-bottom: 16px; }
.print-surface .section-actions { justify-content: flex-start; }
.print-surface .section-actions label { box-shadow: none; border: 1px solid var(--line); }
.table-scroll-hint { margin: 8px 0; font-size: 14px; color: var(--muted); }
.submission-table thead th:first-child { position: sticky; left: 0; z-index: 2; background: #f1eef7; }
.submission-table tbody th { z-index: 1; background: #fff; }
.submission-table-wrap { border-color: var(--line); box-shadow: none; }
.submissions-section .assignment-stats { color: #62596e; }
.summary-card { box-shadow: none; font-variant-numeric: tabular-nums; }
.summary-card span { color: #514858; }
.summary-card.status-submitted { color: #276747; }
.summary-card.status-missing { color: #a33143; }
.summary-card.status-late { color: #82581c; }
.summary-card.status-exempt { color: #5a4388; }
.summary-card.status-unchecked { color: #5d5569; }
.status-select { min-height: 44px; }
.week-grid { gap: 10px; }
.day-card { background: #fff; box-shadow: none; }
.mini-assignment { font-size: 15px; line-height: 1.6; }
.calendar-day { background: #fff; box-shadow: none; }
.calendar-day strong { font-size: 17px; }
.calendar-dot { font-size: 13px; }
.entry-choice-section { margin: 24px 0; }
.entry-choice-list { gap: 8px; }
.entry-choice-row { background: #fff; border: 1px solid #cbc4dd; border-radius: 12px; padding: 16px; box-shadow: none; min-height: 72px; }
.entry-choice-row strong { font-size: 20px; }
.entry-choice-row span { font-size: 14px; color: var(--muted); }
.entry-choice-row:hover { border-color: var(--ui-accent); background: #f4f0ff; }
.entry-choice-grid { padding-top: 20px; border-top: 1px solid var(--line); }
.entry-choice-modal .login-help { font-size: 14px; line-height: 1.7; overflow-wrap: anywhere; }
.application-modal .eyebrow { display: none; }
.admin-page { max-width: 1280px; }
.admin-page .admin-summary > div { box-shadow: none; padding: 12px 16px; border-radius: 12px; background: #f4f1fa; gap: 2px; }
.admin-page .admin-summary { margin: 16px 0; }
.admin-page .admin-summary span { margin-top: 0; font-size: 14px; }
.admin-identity { color: var(--muted); font-size: 15px; overflow-wrap: anywhere; }
.admin-toolbar { margin: 12px 0; }
.admin-toolbar .application-feedback { padding: 10px 12px; font-size: 14px; margin: 0; }
.admin-heading .btn { text-decoration: none; }
.admin-summary strong { font-variant-numeric: tabular-nums; }
.admin-tabs { gap: 8px; }
.admin-tabs button { box-shadow: none; min-height: 48px; font-size: 17px; }
.admin-tabs button.active { background: #e7e1f7; color: #443284; border-color: #bbaeD8; }
.admin-muted, .admin-page small { color: var(--muted); }
.admin-page input, .admin-page select, .admin-page textarea { font-size: 16px; }
.parent-portal-layout { display: block; max-width: 1120px; }
.parent-status-card { box-shadow: none; background: #fff; }
.parent-status-card > div span { font-size: 15px; }
.status-chip { font-size: 15px; }
.site-footer { color: var(--muted); }
@media (max-width: 1000px) {
  .topbar { flex-wrap: wrap; }
  .topbar-identity { flex-basis: 100%; }
  .top-actions { justify-content: flex-start; }
  .app-layout { grid-template-columns: minmax(0,1fr); gap: 16px; }
  .class-card { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 12px 16px; }
  .class-card strong { margin: 0; font-size: 23px; }
  .class-card .class-lock { display: none; }
  .nav-class-switch { margin: 0 0 0 auto; max-width: 260px; }
  .nav-class-switch span { display: none; }
  .tabs { display: flex; overflow-x: auto; margin-top: 8px; }
  .tab { flex: 0 0 auto; }
  .class-tools { display: flex; flex-wrap: wrap; gap: 8px; border: 0; margin-top: 8px; padding: 0; }
}
@media (max-width: 600px) {
  .topbar { display: flex; padding: 14px 16px; gap: 12px; }
  .topbar-identity { gap: 8px; flex-wrap: wrap; }
  .topbar .brand strong { font-size: 16px; }
  .brand-mark { width: 36px; height: 36px; }
  .top-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); width: 100%; gap: 6px; }
  .top-actions .nav-action, .nav-more-toggle { padding: 8px 11px; font-size: 15px; min-height: 44px; }
  .top-actions .nav-more { flex: 0 0 auto; }
  .app-layout { width: calc(100% - 24px); margin-top: 12px; }
  .class-card .eyebrow { display: none; }
  .class-card > span:not(.eyebrow) { font-size: 13px; }
  .nav-class-switch { flex-basis: 100%; max-width: none; }
  .tab { padding: 10px 12px; font-size: 16px; }
  .content-section { padding: 20px 16px; border-radius: 18px; }
  .section-heading h2 { font-size: 24px; }
  .section-heading p { margin-bottom: 12px; }
  .section-actions { margin-top: 12px; }
  .date-navigation { gap: 4px; }
  .date-title { font-size: 14px; padding: 4px; }
  .date-toolbar { flex-wrap: wrap; gap: 6px; }
  .cloud-status { font-size: 13px; }
  .assignment-card.editor-card { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 14px; padding: 16px; }
  .editor-card .drag-mark { grid-column: 2; grid-row: 1; justify-self: end; align-self: end; }
  .editor-card > label:nth-of-type(1) { grid-column: 1; grid-row: 1; }
  .editor-card > label:nth-of-type(2), .editor-card > label:nth-of-type(3), .editor-card .wide-field, .editor-card .row-actions { grid-column: 1 / -1; }
  .assignment-card.freeform-card .freeform-field { grid-column: 1 / -1; grid-row: 2; }
  .editor-card input, .editor-card textarea { font-size: 17px; }
  .editor-card .row-actions { justify-content: flex-start; flex-wrap: wrap; }
  .publish-bar .btn { flex: 1; white-space: nowrap; }
  .publish-hint { display: block; flex-basis: 100%; margin: 0; }
  .print-surface .section-actions { gap: 8px; }
  .print-surface .section-actions label { max-width: 100%; }
  .summary-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .calendar-grid { gap: 4px; }
  .calendar-day { padding: 7px 3px; min-height: 80px; }
  .calendar-dot { font-size: 12px; }
  .admin-page { width: calc(100% - 24px); margin: 12px auto; }
  .admin-summary { gap: 8px; }
  .admin-summary > div { padding: 12px; }
  .admin-tabs { display: grid; grid-template-columns: 1fr 1fr; }
  .admin-heading h1 { font-size: 28px; }
  .admin-page .admin-heading-actions .btn { flex: 1 1 100%; margin: 0; }
  .admin-page .admin-heading-actions { margin: 4px 0; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
