@font-face {
  font-family:Inter;
  src:url('/fonts/InterVariable.woff2') format('woff2');
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
}

:root {
  color-scheme:dark;
  --bg:#040706;
  --surface:#0c1311;
  --border:rgba(255,255,255,.22);
  --border-soft:rgba(255,255,255,.10);
  --text:#f3f7f5;
  --muted:#a8b6b0;
  --accent:#3df59b;
  --g1:#3df59b;
  --g2:#1fd8b0;
  --g3:#19b8d6;
  --on-accent:#03140c;
  --warn:#ffb547;
  --warn-bg:rgba(255,181,71,.13);
  --bad:#ff8a80;
  --bad-bg:rgba(255,138,128,.12);
  --ok-bg:rgba(61,245,155,.10);
  --brand:linear-gradient(115deg,var(--g1),var(--g2) 50%,var(--g3));
  --focus:#fff;
  --control-gradient:var(--brand);
  --radius:26px;
  font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  font-synthesis:none;
}

:root[data-theme=light] {
  color-scheme:light;
  --bg:#f5f8f6;
  --surface:#fff;
  --border:#aabdb2;
  --border-soft:#d6e2da;
  --text:#0a1410;
  --muted:#4d5c55;
  --accent:#08814c;
  --g1:#0a9a5a;
  --g2:#088a7c;
  --g3:#0a6f96;
  --on-accent:#fff;
  --warn:#8a5a00;
  --warn-bg:#fbefd6;
  --bad:#b3261e;
  --bad-bg:#fbe4e1;
  --ok-bg:#e2f3ea;
  --focus:#0a6f96;
  --control-gradient:linear-gradient(115deg,#087544,#087369 50%,#085b7b);
}

* {
  box-sizing:border-box;
}

body {
  margin:0;
  background:var(--bg);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
}

button,input,select {
  font:inherit;
}

button,a,input,select {
  -webkit-tap-highlight-color:transparent;
}

a {
  color:var(--accent);
  text-underline-offset:4px;
}

button {
  cursor:pointer;
}

button:disabled {
  cursor:wait;
  opacity:.6;
}

button,a,input,select,summary {
  -webkit-touch-callout:default;
}

button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex="0"]:focus-visible {
  outline:3px solid var(--focus);
  outline-offset:4px;
}

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

h1,h2,h3 {
  font-weight:800;
  letter-spacing:-.035em;
  line-height:1.12;
}

h1 {
  font-size:clamp(42px,5.3vw,72px);
  letter-spacing:-.045em;
}

h2 {
  font-size:28px;
}

h3 {
  font-size:20px;
}

[hidden] {
  display:none!important;
}

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

.small {
  font-size:14px;
}

.gradient-text {
  background:var(--brand);
  background-clip:text;
  -webkit-background-clip:text;
  color:transparent;
}

.gradient-start {
  stop-color:var(--g1);
}

.gradient-middle {
  stop-color:var(--g2);
}

.gradient-end {
  stop-color:var(--g3);
}

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

.skip-link {
  position:fixed;
  left:20px;
  top:12px;
  z-index:100;
  background:var(--text);
  color:var(--bg);
  padding:10px 18px;
  border-radius:24px;
  transform:translateY(-160%);
}

.skip-link:focus {
  transform:none;
}

.initial-state,.noscript {
  padding:60px 7%;
  color:var(--muted);
}

.wordmark {
  display:inline-flex;
  align-items:center;
  gap:12px;
  font-size:30px;
  font-weight:800;
  letter-spacing:-.045em;
  line-height:1;
  white-space:nowrap;
  color:var(--text);
  text-decoration:none;
}

.wordmark svg {
  flex:none;
}

.button {
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  border:1px solid var(--border);
  border-radius:999px;
  padding:10px 20px;
  background:transparent;
  color:var(--text);
  text-decoration:none;
  font-weight:600;
  line-height:1.25;
  transition:background-color 120ms,border-color 120ms;
}

.button:hover {
  background:var(--border-soft);
}

.button.primary {
  background:var(--control-gradient);
  border-color:transparent;
  color:var(--on-accent);
  font-weight:750;
}

.button.primary:hover {
  filter:brightness(1.08);
}

.button.danger {
  color:var(--bad);
  border-color:var(--bad);
}

.button.danger:hover {
  background:var(--bad-bg);
}

.button.large {
  min-height:56px;
  padding:14px 28px;
  font-size:18px;
}

.button.icon {
  padding:8px;
  width:44px;
  flex:none;
}

.button.quiet {
  border-color:transparent;
  color:var(--muted);
}

.button svg {
  width:20px;
  height:20px;
  flex:none;
}

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

.site-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  max-width:1600px;
  margin:auto;
  padding:28px 6.7% 0;
}

.site-header .signed-in {
  font-size:14px;
  color:var(--muted);
}

.tutor-main {
  max-width:1600px;
  margin:auto;
  padding:52px 6.7% 64px;
}

.page-lead {
  margin-bottom:34px;
}

.page-lead p {
  color:var(--muted);
  margin-top:14px;
  font-size:18px;
}

.tutor-columns {
  display:grid;
  grid-template-columns:minmax(360px,.9fr) minmax(0,1.25fr);
  gap:34px;
  align-items:start;
}

.card {
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  padding:30px;
}

.start-card {
  border-color:color-mix(in srgb,var(--accent) 42%,transparent);
  box-shadow:0 0 40px color-mix(in srgb,var(--accent) 5%,transparent);
}

.form-stack {
  display:flex;
  flex-direction:column;
  gap:20px;
}

.field {
  display:flex;
  flex-direction:column;
  gap:8px;
}

.field label,legend {
  font-weight:600;
  font-size:16px;
}

.field input,.field select {
  min-height:52px;
  width:100%;
  padding:12px 15px;
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--bg);
  color:var(--text);
}

input::placeholder {
  color:var(--muted);
  opacity:1;
}

.form-stack .primary {
  align-self:flex-start;
}

fieldset {
  border:0;
  padding:0;
  margin:0;
  display:flex;
  flex-direction:column;
  gap:10px;
}

legend {
  padding:0 0 10px;
}

.radio-option {
  display:flex;
  align-items:flex-start;
  gap:12px;
  padding:14px 15px;
  border:1px solid var(--border);
  border-radius:14px;
  cursor:pointer;
}

.radio-option:has(input:checked) {
  border-color:var(--accent);
  background:var(--ok-bg);
}

.radio-option input {
  width:22px;
  height:22px;
  flex:none;
  margin:2px 0 0;
  accent-color:var(--accent);
}

.radio-option strong {
  display:block;
  font-weight:650;
}

.radio-option small {
  display:block;
  color:var(--muted);
  font-size:14px;
  line-height:1.45;
  margin-top:3px;
}

.form-note {
  color:var(--muted);
  font-size:14px;
  line-height:1.6;
}

.form-note strong {
  color:var(--text);
  font-weight:600;
}

.error-message {
  color:var(--bad);
  background:var(--bad-bg);
  border-left:3px solid var(--bad);
  padding:12px 15px;
  border-radius:4px 12px 12px 4px;
  font-size:15px;
}

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

.session-list {
  display:flex;
  flex-direction:column;
  gap:14px;
}

.session-card {
  padding:20px 22px;
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:18px;
  display:flex;
  flex-wrap:wrap;
  gap:18px;
  align-items:center;
}

.session-info {
  flex:1;
  min-width:200px;
}

.session-info h3 {
  font-size:19px;
  letter-spacing:-.015em;
  overflow-wrap:anywhere;
}

.session-info p {
  font-size:14px;
  color:var(--muted);
  margin-top:6px;
}

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

.session-code-small {
  font-variant-numeric:tabular-nums;
  letter-spacing:.06em;
  font-weight:650;
}

.pill {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:5px 12px;
  border:1px solid var(--border);
  border-radius:999px;
  font-size:14px;
  font-weight:600;
  line-height:1.15;
  white-space:nowrap;
}

.pill.success {
  border-color:var(--accent);
  background:var(--ok-bg);
  color:var(--accent);
}

:root[data-theme=light] .pill.success {
  color:#066139;
}

.pill.warning {
  border-color:var(--warn);
  background:var(--warn-bg);
  color:var(--warn);
}

.pill.danger {
  border-color:var(--bad);
  background:var(--bad-bg);
  color:var(--bad);
}

.empty-state {
  border:1px dashed var(--border);
  border-radius:22px;
  padding:38px 26px;
  color:var(--muted);
  text-align:center;
}

.empty-state h3 {
  color:var(--text);
  font-size:22px;
  margin-bottom:10px;
}

.empty-state .empty-symbol {
  display:block;
  color:var(--accent);
  font-size:34px;
  line-height:1;
  margin-bottom:16px;
}

.sign-in-layout {
  display:grid;
  grid-template-columns:1.15fr minmax(320px,.75fr);
  gap:8%;
  align-items:center;
  min-height:64vh;
}

.sign-in-copy .eyebrow {
  font-size:14px;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--accent);
  margin-bottom:22px;
}

.sign-in-copy h1 {
  font-size:clamp(48px,6vw,82px);
  max-width:700px;
}

.sign-in-copy p:last-child {
  max-width:450px;
  color:var(--muted);
  font-size:19px;
  margin-top:24px;
}

.sign-in-card {
  padding:34px;
}

.sign-in-card h2 {
  margin-bottom:4px;
}

.password-line {
  display:flex;
  align-items:center;
  gap:8px;
}

.password-line input {
  min-width:0;
}

.footnote {
  margin-top:28px;
  font-size:14px;
  color:var(--muted);
}

.dashboard {
  padding:20px 32px 28px;
  max-width:2200px;
  margin:auto;
  display:flex;
  flex-direction:column;
  gap:20px;
}

.dashboard-top {
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}

.dashboard-top .wordmark {
  font-size:22px;
  gap:9px;
}

.dashboard-top .wordmark svg {
  width:30px;
  height:18px;
}

.dashboard-top .toolbar {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin-left:auto;
}

.rule-text {
  font-size:14px;
  color:var(--muted);
  margin-right:6px;
}

.dashboard-header {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:24px 34px;
}

.dashboard-title {
  flex:1 1 360px;
}

.dashboard-title .eyebrow {
  color:var(--muted);
  font-weight:600;
  font-size:14px;
  margin-bottom:8px;
}

.dashboard-title h1 {
  font-size:clamp(34px,3.1vw,52px);
  line-height:1.06;
  letter-spacing:-.035em;
  max-width:670px;
}

.dashboard-title .live-summary {
  color:var(--muted);
  font-size:17px;
  margin-top:12px;
}

.join-details {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:16px;
}

.join-address {
  display:flex;
  flex-direction:column;
  gap:6px;
}

.join-address span,.code-card .caption,.session-clock .caption {
  font-size:13px;
  font-weight:600;
  color:var(--muted);
}

.join-address strong {
  font-size:18px;
  line-height:1.3;
  letter-spacing:-.01em;
}

.code-card {
  padding:13px 22px;
  background:var(--surface);
  border:2px solid var(--accent);
  border-radius:20px;
  box-shadow:0 0 0 4px var(--ok-bg);
}

.session-code {
  font-size:64px;
  font-weight:800;
  letter-spacing:.035em;
  line-height:1.05;
  font-variant-numeric:tabular-nums;
  color:var(--accent);
}

.session-clock {
  text-align:right;
  min-width:138px;
}

.session-clock output {
  display:block;
  font-size:42px;
  font-weight:800;
  letter-spacing:-.025em;
  line-height:1.2;
  font-variant-numeric:tabular-nums;
}

.connection-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  font-size:13px;
  color:var(--muted);
  min-height:24px;
}

.connection-state {
  display:flex;
  align-items:center;
  gap:8px;
}

.live-dot {
  width:7px;
  height:7px;
  background:var(--accent);
  border-radius:50%;
  flex:none;
}

.connection-bar.stale {
  color:var(--bad);
}

.connection-bar.stale .live-dot {
  background:var(--bad);
}

.connection-bar .button {
  min-height:44px;
  padding:6px 14px;
}

.table-viewport {
  overflow:hidden;
  height:clamp(230px,43vh,720px);
  border-radius:14px;
}

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

.team-row {
  display:grid;
  grid-template-columns:38px minmax(280px,1.5fr) minmax(250px,1.3fr) 44px 74px 86px minmax(156px,.8fr) 44px;
  gap:10px;
  align-items:center;
  padding:0 12px;
  height:var(--team-row-height,62px);
  min-height:var(--team-row-height,62px);
  border-radius:14px;
  background:var(--surface);
  border:1px solid var(--border-soft);
  position:relative;
}

.team-head {
  position:static;
  z-index:2;
  height:34px;
  min-height:34px;
  background:var(--bg);
  font-size:12px;
  font-weight:650;
  color:var(--muted);
  border-color:transparent;
  border-radius:0;
}

.team-body {
  display:flex;
  flex-direction:column;
  gap:4px;
}

.rank {
  font-size:29px;
  font-weight:800;
  line-height:1;
  font-variant-numeric:tabular-nums;
  color:var(--muted);
}

.rank.leading {
  color:var(--accent);
}

.team-name {
  font-size:var(--team-name-size,21px);
  font-weight:700;
  line-height:1.1;
  letter-spacing:-.01em;
  overflow:hidden;
  overflow-wrap:anywhere;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}

.number {
  text-align:right;
  font-size:26px;
  font-weight:800;
  line-height:1;
  font-variant-numeric:tabular-nums;
}

.reached-at {
  font-size:22px;
  font-weight:600;
  color:var(--muted);
}

.align-right {
  text-align:right;
}

.progress-cells {
  display:flex;
  gap:3px;
}

.progress-cell {
  height:var(--progress-cell-height,34px);
  flex:1;
  min-width:20px;
  border-radius:9px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--border-soft);
  font-size:14px;
  font-weight:700;
  color:var(--muted);
  position:relative;
  font-variant-numeric:tabular-nums;
}

.progress-cell.pod {
  flex-grow:1.5;
  font-size:13px;
}

.progress-cell.repaired {
  background:var(--control-gradient);
  border-color:transparent;
  color:var(--on-accent);
}

.progress-cell.current {
  background:var(--ok-bg);
  border:2px solid var(--accent);
  color:var(--text);
}

.progress-cell.current::after {
  content:'';
  height:3px;
  width:12px;
  background:var(--text);
  position:absolute;
  bottom:3px;
  border-radius:2px;
}

.team-status .pill {
  font-size:14px;
  min-height:34px;
  padding:7px 10px;
}

.hide-team {
  color:var(--muted);
  border-color:transparent;
}

.hide-team:hover {
  color:var(--text);
}

.table-empty {
  padding:44px 22px;
  text-align:center;
  border-radius:18px;
  background:var(--surface);
  color:var(--muted);
}

.table-empty h2 {
  font-size:24px;
  color:var(--text);
  margin-bottom:8px;
}

.console-section .section-heading {
  justify-content:flex-start;
  align-items:baseline;
  margin-bottom:12px;
}

.console-section h2 {
  font-size:26px;
}

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

.console-card {
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:13px;
  padding:8px 10px;
  display:flex;
  flex-direction:column;
  gap:3px;
  height:80px;
  min-width:0;
}

.console-card.most-hints {
  border-color:var(--warn);
  background:var(--warn-bg);
  box-shadow:inset 0 0 0 1px var(--warn);
}

.console-card-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:4px;
  min-height:29px;
}

.console-card-top strong {
  font-size:22px;
  font-weight:800;
  line-height:1;
}

.most-label {
  font-size:10px;
  font-weight:750;
  line-height:1.1;
  color:var(--warn);
  text-align:left;
}

.console-name {
  font-size:12px;
  line-height:1.3;
  color:var(--muted);
  min-height:31px;
}

.console-count {
  font-size:14px;
  font-weight:700;
}

.console-details {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:4px;
  font-size:10px;
  line-height:1.1;
}

.console-details p {
  display:flex;
  flex-direction:column;
  gap:1px;
}

.console-details strong {
  font-size:12px;
  line-height:1.1;
}

.console-details p:last-child {
  text-align:right;
}

.console-progress {
  line-height:1.1;
  font-size:14px;
  text-align:right;
}

.console-progress > span {
  white-space:nowrap;
}

.console-progress small {
  display:block;
  font-size:9px;
  max-width:76px;
}

.console-reached {
  font-size:14px;
  font-weight:500;
  color:var(--muted);
}

.dashboard-footer {
  display:flex;
  gap:22px;
  justify-content:space-between;
  align-items:flex-start;
  color:var(--muted);
  font-size:12px;
  line-height:1.55;
}

.dashboard-footer p {
  max-width:1000px;
}

.hidden-teams {
  border-top:1px solid var(--border-soft);
  padding-top:14px;
}

.hidden-teams summary {
  cursor:pointer;
  color:var(--muted);
  font-weight:600;
  min-height:40px;
}

.hidden-list {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  padding:10px 0;
}

.ended-banner {
  background:var(--ok-bg);
  border:1px solid var(--accent);
  border-radius:22px;
  padding:20px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}

.ended-banner h2 {
  font-size:25px;
  margin-bottom:8px;
}

#ended-title:focus {
  outline:none;
}

.ended-status {
  color:var(--muted);
  font-size:14px;
  font-weight:600;
  padding:0 6px;
}

.paging-controls {
  gap:8px;
}

#team-range {
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}

.table-viewport[data-density="44"] .progress-cell {
  border-radius:7px;
}

.ended-banner p {
  color:var(--muted);
  font-size:15px;
}

.summary-totals {
  display:flex;
  gap:28px;
  flex-shrink:0;
}

.summary-totals div {
  text-align:center;
}

.summary-totals strong {
  display:block;
  font-size:36px;
  font-weight:800;
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}

.summary-totals span {
  color:var(--muted);
  font-size:12px;
}

.page-error {
  max-width:600px;
  margin:70px auto;
  padding:32px;
}

.page-error h1 {
  font-size:40px;
  margin-bottom:18px;
}

.page-error p {
  margin-bottom:22px;
  color:var(--muted);
}

dialog {
  padding:30px;
  border-radius:24px;
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text);
  width:min(480px,calc(100% - 32px));
  box-shadow:0 30px 100px #0007;
}

dialog::backdrop {
  background:#0009;
}

dialog h2 {
  font-size:28px;
  margin-bottom:14px;
}

dialog p {
  color:var(--muted);
  margin-bottom:22px;
}

dialog .actions {
  justify-content:flex-end;
}

.dialog-error {
  margin-bottom:18px;
}

.toast {
  position:fixed;
  bottom:22px;
  left:50%;
  transform:translateX(-50%);
  padding:12px 20px;
  border:1px solid var(--border);
  border-radius:99px;
  background:var(--surface);
  color:var(--text);
  font-weight:600;
  box-shadow:0 10px 30px #0003;
  z-index:20;
  font-size:14px;
}

.pulse-decoration {
  width:100%;
  max-width:340px;
  height:46px;
  margin-top:36px;
  opacity:.7;
  color:var(--accent);
}

@media(min-width:1700px) {
  .dashboard {
    padding:24px 44px 36px;
    gap:24px;
  }
  .dashboard-header {
    gap:28px 40px;
  }
  .join-address strong {
    font-size:24px;
  }
  .session-clock output {
    font-size:58px;
  }
  .team-row {
    grid-template-columns:44px minmax(340px,1.5fr) minmax(340px,1.7fr) 64px 90px 102px minmax(180px,1fr) 44px;
    gap:16px;
    padding:0 18px;
  }
  .team-head {
    font-size:14px;
  }
  .progress-cell {
    font-size:15px;
  }
  .team-status .pill {
    font-size:16px;
  }
  .console-card {
    padding:8px 12px;
  }
  .console-name {
    font-size:14px;
    min-height:36px;
  }
  .console-details {
    font-size:10px;
  }
  .console-count {
    font-size:14px;
  }
  .most-label {
    font-size:12px;
  }
}

@media(max-width:1250px) {
  .dashboard-header {
    gap:22px;
  }
  .dashboard-title {
    flex-basis:100%;
  }
  .join-details {
    width:100%;
    justify-content:space-between;
  }
  .dashboard-title h1 {
    max-width:none;
    font-size:40px;
  }
  .console-grid {
    grid-template-columns:repeat(5,minmax(0,1fr));
  }
  .console-card {
    padding:14px;
  }
  .console-name {
    min-height:0;
  }
  .tutor-columns {
    gap:24px;
    grid-template-columns:minmax(350px,1fr) minmax(0,1.1fr);
  }
  .card {
    padding:24px;
  }
  .session-actions {
    width:100%;
  }
  .session-info {
    min-width:170px;
  }
}

@media(max-width:850px) {
  .site-header {
    padding:24px 24px 0;
  }
  .tutor-main {
    padding:36px 24px 48px;
  }
  .tutor-columns {
    grid-template-columns:1fr;
  }
  .sign-in-layout {
    grid-template-columns:1fr;
    gap:34px;
    min-height:0;
  }
  .sign-in-copy h1 {
    font-size:52px;
    max-width:560px;
  }
  .sign-in-copy p:last-child {
    font-size:17px;
    margin-top:18px;
  }
  .sign-in-copy .eyebrow {
    margin-bottom:14px;
  }
  .sign-in-card {
    max-width:540px;
  }
  .sign-in-copy .pulse-decoration {
    display:none;
  }
  .signed-in {
    display:none;
  }
  .dashboard {
    padding:20px;
    gap:18px;
  }
  .dashboard-top .toolbar {
    margin-left:0;
    width:100%;
  }
  .rule-text {
    flex-basis:100%;
    margin:4px 0;
  }
  .dashboard-title h1 {
    font-size:36px;
  }
  .dashboard-title .live-summary {
    font-size:15px;
  }
  .join-address strong {
    font-size:16px;
  }
  .session-code {
    font-size:48px;
  }
  .code-card {
    padding:12px 16px;
  }
  .session-clock {
    min-width:106px;
  }
  .session-clock output {
    font-size:36px;
  }
  .console-grid {
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:8px;
  }
  .console-section .section-heading {
    display:block;
  }
  .console-section .section-heading p {
    font-size:13px;
    margin-top:6px;
  }
  .console-card {
    padding:10px;
  }
  .console-card-top {
    flex-wrap:wrap;
    min-height:40px;
  }
  .most-label {
    text-align:left;
  }
  .console-name {
    font-size:11px;
    min-height:30px;
  }
  .console-count {
    font-size:13px;
  }
  .console-details {
    font-size:11px;
  }
  .console-reached {
    font-size:10px;
  }
  .ended-banner {
    align-items:flex-start;
    flex-direction:column;
  }
  .summary-totals {
    gap:24px;
  }
  .dashboard-footer {
    flex-direction:column;
    gap:12px;
  }
}

@media(max-width:480px) {
  .wordmark {
    font-size:25px;
    gap:8px;
  }
  .wordmark svg {
    width:34px;
  }
  .site-header {
    padding-left:20px;
    padding-right:20px;
  }
  .tutor-main {
    padding-left:20px;
    padding-right:20px;
  }
  .sign-in-copy h1 {
    font-size:43px;
  }
  .sign-in-card,.card {
    padding:22px;
  }
  .session-card {
    padding:20px;
  }
  .page-lead h1 {
    font-size:44px;
  }
  .dashboard-top .toolbar {
    gap:7px;
  }
  .dashboard-top .toolbar .button {
    padding:9px 14px;
    font-size:13px;
  }
  .dashboard-top .toolbar .icon {
    padding:8px;
  }
  .join-details {
    gap:16px;
  }
  .join-address {
    flex-basis:100%;
  }
  .session-code {
    font-size:48px;
  }
  .session-clock output {
    font-size:34px;
  }
  .console-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .console-card {
    padding:14px;
  }
  .console-card-top {
    min-height:27px;
  }
  .console-name {
    min-height:16px;
    font-size:13px;
  }
  .console-count {
    font-size:16px;
  }
  .console-details {
    font-size:13px;
  }
  .console-reached {
    font-size:12px;
  }
  .connection-bar {
    align-items:flex-start;
  }
  .summary-totals strong {
    font-size:30px;
  }
  .summary-totals {
    gap:20px;
  }
  .dashboard-title h1 {
    font-size:33px;
  }
  .rule-text {
    font-size:13px;
  }
}

@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    scroll-behavior:auto!important;
    transition:none!important;
    animation:none!important;
  }
}

@media print {
  .toolbar,.hide-team,.connection-bar,.hidden-teams,.dashboard-footer .actions {
    display:none!important;
  }
  .dashboard {
    padding:0;
  }
  .table-viewport {
    overflow:visible;
    max-height:none;
  }
  .team-table {
    min-width:0;
  }
  .team-row {
    break-inside:avoid;
  }
  .console-grid {
    break-inside:avoid;
  }
}

@media (min-width:851px) and (max-height:820px) {
  .site-header { padding-top:20px; }
  .tutor-main { padding-top:30px; }
  .page-lead { margin-bottom:24px; }
  .page-lead h1 { font-size:60px; }
  .start-card { padding:24px; }
  .start-card .form-stack { gap:15px; }
  .start-card .field input,.start-card .field select { min-height:48px; padding-top:10px; padding-bottom:10px; }
  .start-card .radio-option { padding:10px 14px; }
  .start-card .radio-option small { font-size:13px; }
  .start-card .button.large { min-height:48px; padding-top:12px; padding-bottom:12px; }
  .start-card .form-note { font-size:13px; }
}

@media (min-width:1000px) {
  .dashboard {
    height:100dvh;
    min-height:0;
    padding:16px 28px;
    gap:12px;
  }
  .dashboard-top,.dashboard-header,.console-section,.dashboard-footer,.hidden-teams {
    flex:none;
  }
  .dashboard-title {
    min-width:0;
  }
  .dashboard-title .eyebrow {
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .dashboard > section[aria-label="Live team progress"] {
    display:flex;
    flex-direction:column;
    flex:1 1 auto;
    min-height:calc(82px + var(--team-row-height,62px));
  }
  .table-viewport {
    flex:1;
    min-height:0;
    height:auto;
    max-height:none;
  }
  .console-section .section-heading {
    margin-bottom:8px;
  }
  .console-card {
    padding:8px 10px;
    gap:3px;
  }
  .console-card-top {
    min-height:29px;
  }
  .console-details {
    line-height:1.1;
  }
  .dashboard-footer {
    align-items:center;
    font-size:11px;
    line-height:1.4;
  }
  .dashboard:has(#ended-summary:not([hidden])) {
    height:100dvh;
    min-height:0;
  }
  .dashboard:has(#ended-summary:not([hidden])) .table-viewport {
    max-height:none;
  }
  .ended-banner { padding:12px 20px; }
  .hidden-teams { padding-top:8px; }
  .hidden-list { padding:4px 0; }
}

@media (min-width:1000px) and (max-width:1250px) {
  .dashboard { padding:12px 20px; gap:10px; }
  .dashboard-title { flex-basis:250px; }
  .dashboard-title h1 { font-size:32px; }
  .dashboard-title .live-summary { font-size:14px; margin-top:8px; }
  .dashboard-title .eyebrow { font-size:12px; }
  .dashboard-header { gap:20px; }
  .join-details { width:auto; gap:12px; }
  .join-address strong { font-size:14px; }
  .code-card { padding:10px 12px; }
  .session-clock { min-width:112px; }
  .session-clock output { font-size:36px; }
  .team-row {
    grid-template-columns:30px minmax(220px,1.5fr) minmax(200px,1.2fr) 40px 62px 72px minmax(126px,.8fr) 44px;
    gap:8px;
    padding:0 8px;
  }
  .team-name { font-size:var(--team-name-size,19px); }
  .team-status .pill { font-size:12px; padding:6px; }
  .reached-at { font-size:19px; }
  .progress-cell { min-width:15px; font-size:12px; }
  .progress-cell.pod { font-size:11px; }
  .console-grid { grid-template-columns:repeat(10,minmax(0,1fr)); gap:6px; }
  .console-card { padding:8px 6px; }
  .console-details { font-size:9px; }
  .console-progress small { font-size:8px; }
  .most-label { font-size:9px; }
}

@media (min-width:1251px) and (max-width:1699px) {
  .dashboard-header { flex-wrap:nowrap; }
  .join-details { flex-wrap:nowrap; flex-shrink:0; }
  .dashboard-title h1 { font-size:36px; }
  .dashboard-title .live-summary { font-size:14px; line-height:1.3; margin-top:10px; }
  .session-code {
    font-size:56px;
    width:400px;
    white-space:nowrap;
    text-align:center;
  }
}

@media (min-width:1700px) {
  .dashboard { padding:20px 44px; gap:14px; }
  .console-section .section-heading { margin-bottom:8px; }
}

.progress-cell.repaired::after {
  content:"✓";
  position:absolute;
  right:2px;
  top:0;
  font-size:9px;
  font-weight:800;
  line-height:1.2;
}
