/* Matplotlib-inspired default: light gray canvas, white panels, gray rules, blue data. */
:root {
  color-scheme: light;
  font-family: Arial, sans-serif;
  color: #262626;
  background: #f0f0f0;
  --ink: #262626;
  --muted: #666666;
  --green: #1f77b4;
  --line: #bdbdbd;
  --paper: #ffffff;
  --mint: #f0f0f0;
  --shadow: none;
}

body,
body * {
  font-family: Arial, sans-serif !important;
  box-shadow: none !important;
}

body {
  color: #262626;
  background: #f0f0f0;
}

.topbar {
  border-bottom-color: #bdbdbd;
}

.brand-mark,
.button-dark {
  color: #ffffff;
  background: #1f77b4;
}

.brand-mark {
  border-radius: 2px !important;
}

.button-dark:hover {
  background: #17618f;
}

.button-light,
.button-light:hover {
  color: #262626;
  background: #e6e6e6;
}

.stat-card,
.stat-card-accent,
.roster-card,
.detail-card {
  border-color: #bdbdbd;
  background: #ffffff;
}

.roster-card,
.detail-card,
.stat-card,
.search-box,
.profile-input,
.save-button,
.view-button,
.daily-item,
.access-dialog,
.key-label + input,
.status-chip {
  border-radius: 2px !important;
}

.hero h1,
.detail-hero h1,
.roster-heading h2,
.section-heading h2,
.stat-card strong,
.student-name,
.access-dialog h2 {
  color: #262626;
  letter-spacing: normal;
}

.hero-text,
.top-note,
.stat-foot,
.method-note,
.muted,
.sync-note {
  color: #666666;
}

.stat-label,
.eyebrow,
th {
  color: #555555;
}

.stat-card strong {
  font-weight: 700;
}

.search-box {
  border-color: #bdbdbd;
  color: #555555;
}

.search-box:focus-within,
.profile-input:focus,
.key-label + input:focus {
  border-color: #1f77b4;
  box-shadow: 0 0 0 2px rgba(31, 119, 180, 0.16) !important;
}

thead {
  background: #f0f0f0;
}

th {
  letter-spacing: 0.7px;
}

td {
  border-top-color: #d5d5d5;
}

tr:hover td {
  background: #f7f7f7;
}

.student-sub,
.registration-code,
.daily-date,
.heatmap-months,
.table-foot {
  color: #666666;
}

.profile-input,
.key-label + input {
  border-color: #bdbdbd;
  color: #262626;
}

.profile-link,
.back-link {
  color: #1f77b4;
}

.save-button {
  color: #ffffff;
  background: #1f77b4;
}

.save-button:hover {
  background: #17618f;
}

.view-button {
  border-color: #a6a6a6;
  color: #1f77b4;
}

.view-button:hover {
  border-color: #1f77b4;
  background: #f2f8fc;
}

.status-below {
  border-color: #edc58b;
  color: #9a5700;
  background: #fff3df;
}

.status-average {
  border-color: #a9cce3;
  color: #1f77b4;
  background: #eaf4fa;
}

.status-excellent {
  border-color: #a7cbb0;
  color: #287341;
  background: #eaf4ec;
}

.dot-below {
  background: #ff7f0e;
}

.dot-average {
  background: #1f77b4;
}

.dot-excellent {
  background: #2ca02c;
}

.status-untracked,
.status-pending {
  border-color: #d0d0d0;
  color: #666666;
  background: #eeeeee;
}

.notice {
  border: 1px solid #a9cce3;
  border-radius: 2px;
  color: #1f5f89;
  background: #edf6fb;
}

.notice.success {
  border-color: #a7cbb0;
  color: #287341;
  background: #eaf4ec;
}

.heat-level.level-0,
.heat-cell {
  background: #eeeeee;
}

.activity-chart-wrap {
  overflow-x: auto;
  border: 1px solid #777777;
  background: #ffffff;
}

.activity-chart {
  min-width: 1050px;
}

.activity-chart svg {
  display: block;
  width: 100%;
  height: auto;
  background: #ffffff;
}

.chart-grid {
  stroke: #a6a6a6;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.chart-grid-vertical {
  stroke: #c9c9c9;
  stroke-width: 0.8;
}

.chart-area {
  fill: #287bdd;
  fill-opacity: 1;
}

.chart-line {
  fill: none;
  stroke: #287bdd;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

.chart-marker {
  fill: #287bdd;
  stroke: #287bdd;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.chart-tick,
.chart-date,
.chart-axis-label {
  fill: #262626;
  font-family: Arial, sans-serif;
}

.chart-tick {
  font-size: 11px;
}

.chart-date {
  font-size: 8px;
  dominant-baseline: hanging;
  text-anchor: start;
}

.chart-axis-label {
  font-size: 11px;
}

.chart-axis {
  stroke: #262626;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.heat-level.level-1,
.heat-cell.level-1 {
  background: #c6dbef;
}

.heat-level.level-2,
.heat-cell.level-2 {
  background: #6baed6;
}

.heat-level.level-3,
.heat-cell.level-3 {
  background: #2171b5;
}

.daily-item {
  border-color: #d0d0d0;
  background: #ffffff;
}

.daily-count {
  color: #1f77b4;
}

.access-dialog {
  border-color: #bdbdbd;
}

.access-dialog::backdrop {
  background: rgba(38, 38, 38, 0.35);
}

.lock-mark {
  border-radius: 2px;
  color: #1f77b4;
  background: #eaf4fa;
}

.dialog-close,
.dialog-copy,
.key-label {
  color: #555555;
}

.loader {
  border-color: #d0d0d0;
  border-top-color: #1f77b4;
}

.live-dot {
  background: #1f77b4;
  box-shadow: 0 0 0 3px #d8eaf5;
}

#detailName {
  color: #262626;
  letter-spacing: normal;
  text-transform: uppercase;
}

.app-shell {
  max-width: 1600px;
  padding-right: 32px;
  padding-left: 32px;
}

.roster-card {
  overflow: hidden;
  border: 0;
  border-radius: 0 !important;
  background: #171717;
}

.roster-heading,
.table-foot {
  background: #ffffff;
}

.table-wrap,
.roster-table {
  background: #171717;
}

.roster-table {
  table-layout: fixed;
  white-space: normal;
}

.roster-table td:nth-child(1) {
  width: 25%;
}

.roster-table td:nth-child(2) {
  width: 37.5%;
}

.roster-table td:nth-child(3) {
  width: 20%;
}

.roster-table td:nth-child(4) {
  width: 17.5%;
}

.roster-table tbody tr {
  height: 136px;
  border-top: 2px solid #171717;
  border-bottom: 2px solid #171717;
  background: #ffffff;
}

.roster-table td {
  height: 136px;
  padding: 16px 40px;
  border-top: 2px solid #171717;
  border-bottom: 2px solid #171717;
  vertical-align: middle;
  background: #ffffff;
}

.roster-table tr:hover td {
  background: #ffffff;
}

.roster-table td:last-child {
  padding-right: 40px;
  text-align: right;
}

.roster-table .student-name {
  color: #202124;
  font-size: 28px;
  font-weight: 600;
  line-height: 1.16;
}

.roster-table .student-sub {
  margin-top: 5px;
  color: #707987;
  font-size: 22px;
  line-height: 1.2;
}

.roster-table .registration-code {
  color: #545e6e;
  font-size: 25px;
  line-height: 1.2;
}

.roster-table .status-chip {
  width: 224px;
  min-height: 72px;
  justify-content: center;
  gap: 14px;
  padding: 0 14px;
  border-width: 2px;
  font-size: 26px;
  font-weight: 500;
}

.roster-table .status-chip:before {
  width: 12px;
  height: 12px;
}

.roster-table .view-button {
  width: 224px;
  height: 72px;
  padding: 0 12px;
  border: 2px solid #006dcc;
  color: #006dcc;
  background: #ffffff;
  font-size: 28px;
  font-weight: 500;
}

.roster-table .view-button:hover {
  color: #005bad;
  border-color: #005bad;
  background: #f4f9ff;
}

.roster-table .profile-entry {
  gap: 7px;
}

.roster-table .profile-input {
  width: 155px;
  min-width: 0;
  height: 46px;
  font-size: 12px;
}

.roster-table .save-button {
  height: 46px;
  padding: 0 9px;
  font-size: 12px;
}

.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;
}

.roster-table .loading-cell {
  color: #555555 !important;
  background: #ffffff;
}

@media (max-width: 850px) {
  .app-shell {
    padding-right: 20px;
    padding-left: 20px;
  }

  .roster-table {
    min-width: 980px;
  }
}

@media (max-width: 600px) {
  .app-shell {
    padding-right: 14px;
    padding-left: 14px;
  }

  .roster-table {
    min-width: 920px;
  }

  .roster-table td {
    padding-right: 22px;
    padding-left: 22px;
  }

  .roster-table td:last-child {
    padding-right: 22px;
  }

  .roster-table .student-name {
    font-size: 21px;
  }

  .roster-table .student-sub {
    font-size: 16px;
  }

  .roster-table .registration-code {
    font-size: 18px;
  }

  .roster-table .status-chip,
  .roster-table .view-button {
    width: 180px;
    min-height: 56px;
    height: 56px;
    font-size: 21px;
  }
}

/* Restore the compact row sizing while keeping the current roster layout. */
.roster-table tbody tr,
.roster-table td {
  height: 62px;
}

.roster-table td {
  padding: 7px 15px;
}

.roster-table td:first-child {
  padding-left: 24px;
}

.roster-table td:last-child {
  padding-right: 24px;
  text-align: right;
}

.roster-table .student-name {
  font-size: 11px;
  font-weight: 700;
  line-height: normal;
}

.roster-table .student-sub {
  margin-top: 4px;
  font-size: 9px;
  line-height: normal;
}

.roster-table .registration-code {
  font-size: 10px;
  line-height: normal;
}

.roster-table .status-chip {
  width: auto;
  min-width: 0;
  min-height: 0;
  height: auto;
  gap: 6px;
  padding: 6px 8px;
  border-width: 1px;
  font-size: 9px;
  font-weight: 600;
}

.roster-table .status-chip:before {
  width: 5px;
  height: 5px;
}

.roster-table .view-button {
  width: auto;
  min-width: 0;
  height: auto;
  padding: 7px 11px;
  border-width: 1px;
  font-size: 10px;
  font-weight: 700;
}

.roster-table .profile-input {
  width: 205px;
  height: 32px;
  font-size: 10px;
}

.roster-table .save-button {
  height: 31px;
  padding: 0 10px;
  font-size: 10px;
}
