/*
 * The Students view (design/pages/students) and the page frame it shares with
 * the Dashboard (css/dashboard.css depends on the `.an-*` rules here, so this
 * sheet loads first). Token-only: colour, type, space and rules come from
 * theme.css; the parts are the kit's (`.tt-table`, `.tt-tabs`, `.tt-seg`,
 * `.tt-field`, `.tt-kicker`, `.tt-figure`, `.tt-engagement`, `.tt-microbar`,
 * `.tt-banner`, `.tt-empty`). Painted by js/students-view.js. The phone is the
 * `[data-layout='mobile']` block at the end.
 *
 * Shared frame (`.an-*`):
 *   .an-title        the title row: h1 + calibration line · filters · actions
 *   .an-body         the two columns: the main column flexes, the reading field
 *                    is 378 wide and bleeds to the frame edge (SYSTEM §7.1)
 *   .an-main         the main column, inside the 48px gutter
 *   .an-context      the cream context column of `.an-module`s
 */

/* -- title row --------------------------------------------------------------- */
.an-title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px 24px;
  padding: 24px var(--layout-gutter) 20px;
  background: var(--color-ground);
}

.an-title__left {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  margin-right: auto;
}

.an-title__h1 {
  margin: 0;
  font: var(--text-title-lg);
  letter-spacing: var(--tracking-title-lg);
  color: var(--color-ink);
}

.an-title__cal {
  margin: 0;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
  font-variant-numeric: tabular-nums;
}

.an-title__filters,
.an-title__segs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}

.an-title__filters:empty {
  display: none;
}

.an-title__actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: none;
}

/* the custom range */
.an-range {
  display: flex;
  align-items: center;
  gap: 8px;
}

.an-date {
  width: 156px;
  height: 34px;
  padding: 0 8px;
  font: var(--text-ui-sm);
}

.an-range__to {
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

/* -- notices and the two columns ---------------------------------------------- */
.an-notices {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 0 var(--layout-gutter);
}

.an-notices:empty {
  display: none;
}

.an-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 378px;
  align-items: stretch;
  width: 100%;
}

.an-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 0 12px 48px var(--layout-gutter);
}

.an-context {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.an-context .an-module {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 24px 24px 28px;
  border-bottom: var(--rule-hair);
}

.an-context .an-module:last-child {
  border-bottom: 0;
}

.an-module__lede {
  margin: 0;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.an-module__lede b {
  font-weight: 600;
  color: var(--color-ink);
}

.an-module__note {
  margin: 0;
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-3);
}

.an-module__actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  padding-top: 2px;
}

.an-module__actions:empty {
  display: none;
}

/* -- small shared parts ------------------------------------------------------------ */
.an-loading {
  margin: 0;
  font: var(--text-body-sm);
  color: var(--color-ink-3);
}

.an-absent {
  margin: 0;
  max-width: 640px;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.an-empty-hint {
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.an-empty {
  flex-wrap: wrap;
}

.an-ico {
  display: inline-flex;
  flex: none;
  line-height: 0;
}

/* an action link drawn as a button: it acts on this page */
button.tt-link {
  padding: 0;
  border: 0;
  background: transparent;
  font: var(--text-button-sm);
  cursor: pointer;
}

.an-cell-words {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.an-numstack {
  align-items: flex-end;
  text-align: right;
}

.an-numstack .tt-td__primary {
  justify-content: flex-end;
  font-weight: 400;
}

.an-dim-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  color: var(--color-ink-3);
}

.an-dim-stack .tt-td__primary {
  font-weight: 400;
}

.an-noname {
  color: var(--color-ink-2);
}

.tt-td--num {
  white-space: nowrap;
}

/* rows are links: the whole row opens the record, the name underlines on hover,
   the caret is the open affordance (ink-3 at rest, ink on hover and focus) */
a.tt-tr {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}

a.tt-tr:hover .tt-td__name,
a.tt-tr:focus-visible .tt-td__name,
a.tt-tr.is-selected .tt-td__name {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: var(--color-link);
}

.an-td-open {
  justify-content: flex-end;
  padding-right: 6px;
  color: var(--color-ink-3);
}

a.tt-tr:hover .an-td-open,
a.tt-tr:focus-visible .an-td-open,
a.tt-tr.is-selected .an-td-open {
  color: var(--color-ink);
}

/* the register's columns: 1000 = the 1002 column less the row's 2px leading rule */
.an-cols-students {
  grid-template-columns: minmax(180px, 1fr) 72px 108px 110px 182px 108px 172px 32px;
}

.an-cols-students--nocaret {
  grid-template-columns: minmax(180px, 1fr) 72px 100px 110px 190px 110px 166px;
}

.an-cols-notstarted {
  grid-template-columns: minmax(220px, 1fr) 240px 220px 140px;
}

.an-cols-notstarted--nocaret {
  grid-template-columns: minmax(220px, 1fr) 240px 200px 120px;
}

.an-cols-counts {
  grid-template-columns: minmax(220px, 1fr) 180px 100px 120px 130px 120px;
}

/* -- the Students page -------------------------------------------------------------- */
.stu-page {
  display: flex;
  flex-direction: column;
}

.stu-page[hidden] {
  display: none;
}

/* toolbar: the tabs on their hairline; the search field at the right, its hint
   sharing the context column's left edge */
.stu-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 4px var(--layout-gutter) 0;
}

.stu-toolbar[hidden] {
  display: none;
}

.stu-tabs-host {
  flex: 1;
  min-width: 0;
  overflow-x: auto;
}

.stu-tabs-host .tt-tabs {
  width: max-content;
  min-width: 100%;
}

.stu-search {
  width: 318px;
  flex: none;
}

.stu-search .tt-input {
  display: block;
}

.stu-search .tt-field__hint {
  margin: 0;
}

.stu-main {
  margin-top: 14px;
}

.stu-nothing {
  padding: 16px 0 4px;
}

.stu-notes {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px 24px;
}

.stu-error {
  padding-top: 8px;
}

.stu-empty-block {
  padding: 16px 0;
}

.stu-empty-block .tt-empty__title {
  margin: 0;
}

.stu-empty-block .tt-empty__text {
  margin: 0;
}

/* the Not started tab */
.stu-notstarted__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 4px 0 16px;
}

.stu-notstarted__meta {
  margin: 0;
  max-width: 720px;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

/* the billing admin's counts */
.stu-counts {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* -- context column: none selected, this period, engagement, not started ---------------- */
.stu-empty {
  padding: 4px 0 0;
  gap: 6px;
}

.stu-empty .tt-empty__title {
  margin: 0;
}

.stu-empty .tt-empty__text {
  margin: 0;
  max-width: 330px;
}

.stu-figs {
  display: flex;
  flex-direction: column;
}

.stu-fig {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 0 14px;
  border-top: var(--rule-hair);
}

.stu-figs .stu-fig:first-child {
  border-top: 0;
  padding-top: 2px;
}

.stu-fig .tt-figure__value {
  font: var(--text-figure-md);
  letter-spacing: var(--tracking-figure-md);
  gap: 2px;
}

.stu-fig .tt-figure__unit {
  font: var(--text-ui);
  color: var(--color-ink-2);
  margin: 0 6px 0 2px;
}

.stu-fig .tt-figure__unit:last-child {
  margin-right: 0;
}

.stu-fig .tt-figure__delta {
  display: block;
}

.stu-fig .tt-figure__delta b {
  font-weight: 600;
  color: var(--color-ink);
}

.stu-fig__statement {
  font: var(--text-title-md);
  letter-spacing: var(--tracking-title-md);
  color: var(--color-ink);
}

/* engagement mix: ruled rows, navy bars (the deep-teal series is speaking time only) */
.stu-mix {
  display: flex;
  flex-direction: column;
  border-top: var(--rule-hair);
}

.stu-mix__row {
  display: grid;
  grid-template-columns: 104px 1fr 40px;
  align-items: center;
  gap: 12px;
  min-height: 32px;
  border-bottom: var(--rule-hair);
  text-decoration: none;
  color: var(--color-ink);
  font: var(--text-body-sm);
}

.stu-mix__row--link {
  cursor: pointer;
}

.stu-mix__row--link:hover .stu-mix__word,
.stu-mix__row--link:focus-visible .stu-mix__word {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

.stu-mix__word {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.stu-mix__bar {
  position: relative;
  height: 6px;
  background: var(--color-meter-track);
}

.stu-mix__fill {
  position: absolute;
  left: 0;
  top: 0;
  height: 6px;
  background: var(--color-chart-1);
}

.stu-mix__n {
  text-align: right;
  font: var(--text-kicker);
  font-variant-numeric: tabular-nums;
}

.stu-mix__dim .stu-mix__fill {
  background: var(--color-ink-3);
}

/* roster addresses that have not joined */
.stu-roster {
  display: flex;
  flex-direction: column;
  border-top: var(--rule-hair);
}

.stu-roster__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0 4px;
  font: var(--text-label);
  letter-spacing: var(--tracking-label);
  color: var(--color-ink-2);
}

.stu-roster__head span:last-child {
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-3);
  white-space: nowrap;
}

.stu-roster__row {
  display: flex;
  align-items: center;
  min-height: 28px;
  border-bottom: var(--rule-hair);
  font: var(--text-body-sm);
  color: var(--color-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* -- the student record ---------------------------------------------------------------- */
.stu-record-head {
  gap: 16px;
}

.stu-record__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.stu-record__who {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.stu-record__name {
  margin: 0;
  font: var(--text-title-md);
  letter-spacing: var(--tracking-title-md);
  color: var(--color-ink);
  overflow-wrap: anywhere;
}

.stu-record__email {
  margin: 0;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
  overflow-wrap: anywhere;
}

.stu-record__live {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 4px;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.stu-record-head .stu-fig {
  border-top: var(--rule-strong);
  padding: 12px 0 4px;
}

.stu-dot {
  color: var(--color-ink-3);
}

/* ruled fact cells: value over label (the briefing card's construction) */
.stu-cells {
  display: grid;
  grid-template-columns: 68px 60px 90px 112px;
  border-top: var(--rule-hair);
}

.stu-cells .stu-cell:last-child {
  padding-right: 0;
}

.stu-cells--2 {
  grid-template-columns: 1fr 1fr;
  border-top: var(--rule-hair);
  border-bottom: var(--rule-hair);
}

.stu-cell {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 7px 4px 7px 0;
  min-width: 0;
  text-decoration: none;
  color: inherit;
}

.stu-cells--2 .stu-cell {
  padding: 9px 10px 9px 0;
}

.stu-cells--2 .stu-cell:nth-child(even) {
  padding-left: 10px;
  border-left: var(--rule-hair);
}

.stu-cells--2 .stu-cell:nth-child(n+3) {
  border-top: var(--rule-hair);
}

.stu-cell__value {
  display: flex;
  align-items: center;
  gap: 4px;
  min-height: 18px;
  font: var(--text-kicker);
  color: var(--color-ink);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.stu-cell__value .tt-engagement {
  gap: 6px;
}

.stu-cell__tail {
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-2);
  font-variant-numeric: tabular-nums;
}

.stu-cells--2 .stu-cell__value {
  flex-wrap: wrap;
  white-space: normal;
}

.stu-cells--2 .stu-cell__tail {
  font: var(--text-body-sm);
}

.stu-cell__label {
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.stu-cell--dim .stu-cell__value {
  color: var(--color-ink-3);
}

/* the conversations fact is the link down to the list (the whole cell is the target) */
.stu-cell--link {
  cursor: pointer;
}

.stu-cell--link .stu-cell__value {
  gap: 6px;
}

.stu-cell--link .stu-cell__arrow {
  color: var(--color-link);
}

.stu-cell--link:hover .stu-cell__go,
.stu-cell--link:focus-visible .stu-cell__go {
  color: var(--color-link-hover);
  text-decoration-color: var(--color-link-hover);
}

.stu-cell--link:hover .stu-cell__arrow {
  color: var(--color-link-hover);
}

.stu-now {
  color: var(--color-live-text);
}

/* conversations, grouped by session, attempts as rows */
.stu-visits {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.stu-session {
  display: flex;
  flex-direction: column;
}

.stu-session__head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 0 0 8px;
  border-bottom: var(--rule-strong);
}

.stu-session__head .tt-link--action {
  font: var(--text-title-sm);
  letter-spacing: var(--tracking-title-sm);
  white-space: normal;
  text-align: left;
}

.stu-session__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-3);
}

.tt-status--idle {
  color: var(--color-ink-2);
}

.stu-visit {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 0 12px;
  border-bottom: var(--rule-hair);
}

.stu-visit__head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.stu-visit__attempt {
  font: var(--text-kicker);
  color: var(--color-ink);
  white-space: nowrap;
}

.stu-visit__when {
  margin-left: auto;
  font: var(--text-note);
  letter-spacing: var(--tracking-note);
  color: var(--color-ink-2);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.stu-visit .stu-cells {
  border-top: 0;
}

.stu-visit .stu-cell {
  padding: 2px 8px 2px 0;
}

.stu-visit__actions {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: 4px;
}

.stu-visit__line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}

.stu-visit__verb {
  margin-right: -4px;
  font: var(--text-label);
  letter-spacing: var(--tracking-label);
  color: var(--color-ink-2);
  white-space: nowrap;
}

.stu-visit__hint {
  margin: 0;
  padding: 2px 0;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.stu-visit__noaudio {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 10px;
  font: var(--text-body-sm);
  color: var(--color-ink-3);
  white-space: nowrap;
}

/* the insights module */
.stu-insights__meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: -4px;
  font: var(--text-body-sm);
  color: var(--color-ink-2);
}

.stu-insights__row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.stu-insights__session {
  font: var(--text-kicker);
  color: var(--color-ink);
}

.stu-insights__meta .tt-engagement {
  color: var(--color-ink);
}

/* Between the 1440 frame and a phone the fixed columns outgrow the page: the
   register scrolls sideways rather than squeezing the name cell. The columns
   need 964px and the reading field takes 438, so this starts at 1400 -- from
   1180 the Engagement column slid under the reading field. */
@media (max-width: 1400px) {
  .stu-main .tt-table {
    overflow-x: auto;
  }

  .an-cols-students,
  .an-cols-students--nocaret,
  .an-cols-notstarted,
  .an-cols-counts {
    min-width: 980px;
  }

  .stu-search {
    width: 260px;
  }
}

/* -- the 390 frame ---------------------------------------------------------------- */
[data-layout='mobile'] .an-title {
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  padding: 20px 16px 16px;
}

[data-layout='mobile'] .an-title__left {
  margin-right: 0;
}

[data-layout='mobile'] .an-title__filters,
[data-layout='mobile'] .an-title__segs {
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
}

[data-layout='mobile'] .an-title .tt-seg {
  align-self: stretch;
  height: calc(var(--size-control-phone) + 2px);
}

[data-layout='mobile'] .an-title .tt-seg__item {
  flex: 1;
  justify-content: center;
  padding: 0 8px;
}

[data-layout='mobile'] .an-range {
  flex-wrap: wrap;
}

[data-layout='mobile'] .an-date {
  flex: 1;
  min-width: 0;
  height: var(--size-control-phone);
  font: var(--text-body-lg);
}

[data-layout='mobile'] .an-title__actions {
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
}

[data-layout='mobile'] .an-title__actions .tt-btn {
  width: 100%;
  height: var(--size-control-phone);
}

[data-layout='mobile'] .an-notices {
  padding: 0 16px;
}

[data-layout='mobile'] .an-body {
  grid-template-columns: minmax(0, 1fr);
}

[data-layout='mobile'] .an-main {
  padding: 0 16px 32px;
}

[data-layout='mobile'] .an-context .an-module {
  padding: 24px 16px 28px;
}

[data-layout='mobile'] .an-module__actions {
  gap: 12px;
}

[data-layout='mobile'] .an-module__actions .tt-btn,
[data-layout='mobile'] .stu-visit__line .tt-btn,
[data-layout='mobile'] .stu-notstarted__head .tt-btn,
[data-layout='mobile'] .tt-table__foot .tt-btn {
  min-height: var(--size-control-phone);
}

[data-layout='mobile'] .tt-link--action {
  min-height: var(--size-control-phone);
}

[data-layout='mobile'] .tt-icon-btn--compact {
  width: var(--size-control-phone);
  height: var(--size-control-phone);
}

[data-layout='mobile'] .stu-toolbar {
  flex-direction: column-reverse;
  gap: 12px;
  padding: 4px 16px 0;
}

[data-layout='mobile'] .stu-search {
  width: 100%;
}

[data-layout='mobile'] .stu-search .tt-input {
  height: var(--size-control-phone);
  font: var(--text-body-lg);
}

[data-layout='mobile'] .stu-tabs-host {
  width: auto;
  margin: 0 -16px;
  padding: 0 16px;
  align-self: stretch;
}

[data-layout='mobile'] .stu-tabs-host .tt-tabs,
[data-layout='mobile'] .stu-tabs-host .tt-tab {
  height: var(--size-control-phone);
}

/* each row a block: name and address, then speaking time, last active and
   engagement; the per-row counts (sessions, conversations, turns) are in the
   record, which a tap opens */
[data-layout='mobile'] .stu-main .tt-table {
  overflow: visible;
}

[data-layout='mobile'] .stu-main .tt-tr--th {
  display: none;
}

[data-layout='mobile'] .an-cols-students,
[data-layout='mobile'] .an-cols-students--nocaret {
  grid-template-columns: minmax(0, 1fr) auto 44px;
  grid-auto-rows: auto;
  gap: 4px 8px;
  min-width: 0;
  padding: 10px 0;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(1) {
  grid-column: 1 / 3;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(8) {
  grid-column: 3;
  grid-row: 1 / 4;
  justify-content: center;
  padding: 0;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(2),
[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(3),
[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(4),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(2),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(3),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(4) {
  display: none;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(5),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(5) {
  grid-column: 1;
  grid-row: 2;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(6),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(6) {
  grid-column: 2;
  grid-row: 2;
  justify-content: flex-end;
}

[data-layout='mobile'] .an-cols-students > .tt-td:nth-child(7),
[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(7) {
  grid-column: 1 / 3;
  grid-row: 3;
}

[data-layout='mobile'] .an-cols-students--nocaret > .tt-td:nth-child(1) {
  grid-column: 1 / 4;
}

[data-layout='mobile'] .an-cols-notstarted,
[data-layout='mobile'] .an-cols-notstarted--nocaret,
[data-layout='mobile'] .an-cols-counts {
  grid-template-columns: minmax(0, 1fr);
  gap: 2px;
  min-width: 0;
  padding: 10px 0;
}

[data-layout='mobile'] .an-cols-notstarted > .tt-td,
[data-layout='mobile'] .an-cols-notstarted--nocaret > .tt-td,
[data-layout='mobile'] .an-cols-counts > .tt-td {
  justify-content: flex-start;
  text-align: left;
}

[data-layout='mobile'] .stu-notes {
  grid-template-columns: 1fr;
}

[data-layout='mobile'] .stu-notstarted__head {
  flex-direction: column;
  align-items: stretch;
}

[data-layout='mobile'] .stu-cells {
  grid-template-columns: 1fr 1fr;
}

[data-layout='mobile'] .stu-mix__row {
  min-height: var(--size-control-phone);
}

[data-layout='mobile'] .stu-roster__row {
  min-height: 32px;
}

[data-layout='mobile'] .stu-visit__line--quiet {
  gap: 2px;
}
