@import url("https://fonts.googleapis.com/css2?family=Strait&display=swap");

:root {
  --paper: #f4ead7;
  --ink: #17130f;
  --muted-ink: #6c6253;
  --red: #df3f2f;
  --blue: #1d5fd1;
  --yellow: #f2b705;
  --green: #1f8a5b;
  --panel: #29231d;
  --lcd: #b7c7a3;
  --line: #17130f;
}
* { box-sizing: border-box; }
.auth-body,
.dashboard-body,
.marketing-body {
  background:
    linear-gradient(90deg, rgba(23,19,15,.055) 1px, transparent 1px),
    linear-gradient(0deg, rgba(23,19,15,.055) 1px, transparent 1px),
    radial-gradient(circle at 12% 10%, rgba(223,63,47,.20) 0 8rem, transparent 8.1rem),
    radial-gradient(circle at 92% 14%, rgba(29,95,209,.16) 0 10rem, transparent 10.1rem),
    var(--paper);
  background-size: 28px 28px, 28px 28px, auto, auto, auto;
  color: var(--ink);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  margin: 0;
  min-height: 100vh;
}
.labhand-logo {
  --logo-size: clamp(30px, 5.6vw, 53px);
  color: var(--ink);
  display: inline-block;
  flex: 0 0 auto;
  font-family: "Strait", "Arial Narrow", sans-serif;
  font-size: var(--logo-size);
  font-weight: 400;
  height: 1.292em;
  line-height: 1;
  overflow: visible;
  position: relative;
  user-select: none;
  width: 4.5em;
}
.labhand-logo__name {
  font-size: 1em;
  font-weight: 400;
  left: 0;
  letter-spacing: 0;
  line-height: 1.2;
  margin: 0;
  position: absolute;
  top: 0;
  white-space: nowrap;
}
.labhand-logo__baseline {
  background: var(--ink);
  border-radius: 999px 0 0 999px;
  height: .042em;
  left: .083em;
  position: absolute;
  top: 1.042em;
  width: 3.293em;
}
.labhand-logo__finger {
  border-radius: 999px;
  height: .083em;
  position: absolute;
  transform: translate(calc(-.11em + 4px), -.075em);
}
.labhand-logo__finger--red {
  background: var(--red);
  left: 3.875em;
  top: .333em;
  width: .333em;
}
.labhand-logo__finger--yellow {
  background: var(--yellow);
  left: 3.917em;
  top: .514em;
  width: .499em;
}
.labhand-logo__finger--blue {
  background: var(--blue);
  left: 3.917em;
  top: .694em;
  width: .583em;
}
.labhand-logo__finger--green {
  background: var(--green);
  left: 3.875em;
  top: .875em;
  width: .542em;
}
.labhand-logo__app {
  font-size: .25em;
  font-weight: 400;
  left: 13.58em;
  letter-spacing: 0;
  line-height: 1;
  margin: 0;
  position: absolute;
  top: 3.68em;
  white-space: nowrap;
}
.lh-device {
  --device-scale: 1;
  --device-w: calc(300px * var(--device-scale));
  --device-pad: calc(28px * var(--device-scale));
  --device-radius: calc(34px * var(--device-scale));
  --screen-h: calc(155px * var(--device-scale));
  --pixel: calc(13px * var(--device-scale));
  --status-gap: calc(18px * var(--device-scale));
  --control-gap: calc(20px * var(--device-scale));
  --button-size: calc(30px * var(--device-scale));
  --button-gap: calc(14px * var(--device-scale));
  --dial-size: calc(80px * var(--device-scale));
  background:
    linear-gradient(145deg, rgba(255,255,255,.05), transparent 34%),
    var(--ink);
  border-radius: var(--device-radius);
  box-shadow:
    0 calc(10px * var(--device-scale)) calc(24px * var(--device-scale)) rgba(23,28,30,.12),
    inset 0 0 0 calc(3px * var(--device-scale)) rgba(255,255,255,.025);
  display: block;
  flex: 0 0 auto;
  padding: var(--device-pad);
  width: var(--device-w);
}
.lh-screen-frame {
  background: #f9f2e8;
  display: block;
  border-radius: calc(18px * var(--device-scale));
  box-shadow:
    inset 0 0 0 calc(2px * var(--device-scale)) rgba(23,28,30,.08),
    0 calc(2px * var(--device-scale)) 0 rgba(255,255,255,.35);
  height: var(--screen-h);
  padding: calc(14px * var(--device-scale));
}
.lh-screen {
  background:
    linear-gradient(180deg, rgba(255,255,255,.12), transparent),
    var(--lcd);
  border-radius: calc(9px * var(--device-scale));
  box-shadow: inset 0 0 calc(14px * var(--device-scale)) rgba(23,28,30,.08);
  display: block;
  height: 100%;
  overflow: hidden;
  position: relative;
  width: 100%;
}
.lh-pixel-face {
  height: calc(var(--pixel) * 5);
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: calc(var(--pixel) * 7);
}
.lh-eye,
.lh-mouth {
  background: var(--ink);
  display: block;
  height: var(--pixel);
  position: absolute;
  width: var(--pixel);
}
.lh-eye { top: 0; }
.lh-eye-left { left: var(--pixel); }
.lh-eye-right { right: var(--pixel); }
.lh-mouth {
  box-shadow:
    calc(var(--pixel) * 1) calc(var(--pixel) * 1) 0 var(--ink),
    calc(var(--pixel) * 2) calc(var(--pixel) * 2) 0 var(--ink),
    calc(var(--pixel) * 3) calc(var(--pixel) * 2) 0 var(--ink),
    calc(var(--pixel) * 4) calc(var(--pixel) * 2) 0 var(--ink),
    calc(var(--pixel) * 5) calc(var(--pixel) * 1) 0 var(--ink),
    calc(var(--pixel) * 6) 0 0 var(--ink);
  left: 0;
  top: calc(var(--pixel) * 2);
}
.lh-status-area {
  display: grid;
  gap: calc(16px * var(--device-scale));
  grid-template-columns: 1fr calc(38px * var(--device-scale));
  margin-top: calc(28px * var(--device-scale));
}
.lh-bars,
.lh-lights { display: grid; gap: var(--status-gap); }
.lh-bar {
  border-radius: calc(8px * var(--device-scale));
  box-shadow: inset 0 calc(1px * var(--device-scale)) 0 rgba(255,255,255,.18);
  height: calc(34px * var(--device-scale));
}
.lh-light {
  border-radius: 50%;
  box-shadow: inset 0 calc(1px * var(--device-scale)) 0 rgba(255,255,255,.2);
  height: calc(34px * var(--device-scale));
  justify-self: center;
  width: calc(34px * var(--device-scale));
}
.lh-red { background: var(--red); }
.lh-yellow { background: var(--yellow); }
.lh-blue { background: var(--blue); }
.lh-control-panel {
  align-items: center;
  background: #f9f2e8;
  border-radius: calc(16px * var(--device-scale));
  box-shadow:
    inset 0 0 0 calc(2px * var(--device-scale)) rgba(23,28,30,.07),
    0 calc(2px * var(--device-scale)) 0 rgba(255,255,255,.32);
  display: grid;
  gap: var(--control-gap);
  grid-template-columns: 1fr calc(86px * var(--device-scale));
  height: calc(112px * var(--device-scale));
  margin-top: calc(28px * var(--device-scale));
  padding: calc(20px * var(--device-scale)) calc(22px * var(--device-scale));
}
.lh-grid-buttons {
  display: grid;
  gap: var(--button-gap);
  grid-auto-rows: var(--button-size);
  grid-template-columns: repeat(3, var(--button-size));
}
.lh-grid-buttons span {
  background: var(--ink);
  border-radius: calc(6px * var(--device-scale));
  box-shadow:
    inset 0 calc(1px * var(--device-scale)) 0 rgba(255,255,255,.05),
    0 calc(2px * var(--device-scale)) 0 rgba(23,28,30,.14);
  display: block;
}
.lh-dial {
  background: var(--ink);
  border-radius: 50%;
  box-shadow: 0 calc(2px * var(--device-scale)) 0 rgba(23,28,30,.15);
  height: var(--dial-size);
  position: relative;
  width: var(--dial-size);
}
.lh-dial::after {
  background: var(--yellow);
  border-radius: 50%;
  box-shadow: inset 0 calc(1px * var(--device-scale)) 0 rgba(255,255,255,.18);
  content: "";
  inset: calc(14px * var(--device-scale));
  position: absolute;
}
.marketing-shell,
.dashboard-shell,
.auth-card {
  margin: 0 auto;
  width: min(1120px, calc(100% - 28px));
}
.marketing-shell { padding: 22px 0 48px; }
.dashboard-shell,
.auth-card {
  background: rgba(244,234,215,.92);
  border: 3px solid var(--ink);
  box-shadow: 10px 10px 0 var(--ink);
  margin-top: 28px;
  padding: clamp(18px, 4vw, 34px);
}
.auth-card { max-width: 480px; }

.invite-section-summary { align-items: center; background: var(--lcd); border: 3px solid var(--ink); display: flex; gap: 14px; margin: 20px 0; padding: 14px; }
.invite-section-summary__light, .student-status-light { background: var(--green); border: 2px solid var(--ink); border-radius: 50%; box-shadow: 2px 2px 0 var(--ink); flex: 0 0 auto; height: 18px; width: 18px; }
.invite-section-summary div { display: grid; gap: 3px; }
.invite-section-summary small, .invite-section-summary span { color: var(--muted-ink); }
.invite-section-summary small { font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }

/* Student launch / lab selector */
.student-launch-body, .station-picker-body, .student-assignment-body {
  /* Student surfaces use the same brand hues at WCAG AA text contrast. */
  --muted-ink: #554c40;
  --red: #b52b20;
  --blue: #164fae;
  --green: #126a43;
}
.student-launch-body { background: var(--paper); color: var(--ink); display: block; }
.student-launch-shell { margin: 0 auto; max-width: 1180px; min-height: 100vh; padding: 24px clamp(18px, 4vw, 52px) 64px; }
.student-launch-nav { align-items: center; background: transparent; box-shadow: none; display: flex; justify-content: space-between; padding: 0 0 24px; position: static; }
.student-launch-nav a { color: var(--ink); font-size: .75rem; font-weight: 900; text-decoration-thickness: 2px; text-transform: uppercase; }
.student-top-nav nav { align-items: center; display: flex; gap: clamp(14px, 3vw, 28px); }
.student-top-nav nav a[aria-current="page"] { text-decoration-color: var(--blue); text-decoration-thickness: 4px; text-underline-offset: 7px; }
.overview-heading { align-items: center; border-bottom: 4px solid var(--ink); border-top: 4px solid var(--ink); display: flex; gap: 28px; justify-content: space-between; padding: 28px 0; }
.overview-heading h1 { font-size: clamp(2.3rem, 6vw, 4.8rem); letter-spacing: -.06em; line-height: .92; margin: 6px 0 14px; }.overview-heading p { color: var(--muted-ink); margin: 0; max-width: 670px; }
.overview-readout { align-items: center; background: var(--lcd); border: 3px solid var(--ink); box-shadow: 6px 6px 0 var(--ink); display: grid; flex: 0 0 120px; grid-template-columns: 1fr auto; padding: 12px; }.overview-readout span { font-size: .62rem; font-weight: 900; grid-column: 1/-1; text-transform: uppercase; }.overview-readout strong { font: 900 .8rem ui-monospace,monospace; }.overview-readout b { font: 900 2.5rem ui-monospace,monospace; }
.overview-alert,.overview-empty { background: var(--yellow); border: 2px solid var(--ink); padding: 14px; }.overview-section { margin-top: 38px; }.overview-section>header { align-items: end; background: transparent; border-bottom: 3px solid var(--ink); box-shadow: none; display: flex; justify-content: space-between; padding: 0 0 12px; position: static; }.overview-section h2 { font-size: clamp(1.7rem,4vw,2.7rem); letter-spacing: -.04em; margin: 2px 0; }.overview-section>header>a,.overview-section>header>span { color: var(--ink); font-size: .72rem; font-weight: 900; text-transform: uppercase; }
.overview-assignment-grid,.overview-room-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit,minmax(250px,1fr)); padding-top: 18px; }.overview-assignment { background: #fffaf0; border: 3px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); color: var(--ink); display: grid; gap: 12px; padding: 17px; text-decoration: none; transition: transform .14s,box-shadow .14s; }.overview-assignment:hover { box-shadow: 2px 2px 0 var(--ink); transform: translate(3px,3px); }.overview-assignment>div:first-child { display:flex;justify-content:space-between }.overview-assignment span,.overview-assignment small { color: var(--muted-ink); font-size: .68rem; font-weight: 800; text-transform: uppercase; }.overview-assignment h3 { font-size: 1.25rem; margin: 0; }.overview-progress { background: #ddd3c2; border: 2px solid var(--ink); height: 16px; }.overview-progress i { background: var(--green); display: block; height: 100%; }
.live-label { align-items:center;display:flex;gap:7px }.live-label i,.room-facilitators i { background:var(--green);border:2px solid var(--ink);border-radius:50%;display:inline-block;height:11px;width:11px }.overview-room { background:#fffaf0;border:3px solid var(--ink);border-top:10px solid var(--blue);display:grid;gap:16px;grid-template-columns:auto 1fr;padding:17px }.overview-room h3,.overview-room p { margin:0 }.overview-room p { font-size:.68rem;font-weight:900;text-transform:uppercase }.overview-room small { color:var(--muted-ink) }.room-gauge { align-content:center;background:linear-gradient(to top,var(--yellow) var(--fill),var(--lcd) var(--fill));border:3px solid var(--ink);display:grid;height:88px;justify-items:center;width:74px }.room-gauge strong { font:900 1.15rem ui-monospace,monospace }.room-gauge span { font-size:.6rem;font-weight:900;text-transform:uppercase }.room-facilitators { border-top:2px solid var(--ink);display:flex;flex-wrap:wrap;gap:7px;margin-top:12px;padding-top:9px }.room-facilitators b { flex-basis:100%;font-size:.62rem;text-transform:uppercase }.room-facilitators span { align-items:center;display:flex;font-size:.72rem;gap:5px }
.overview-week { display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));overflow-x:auto;padding:18px 0 8px }.overview-day { border:2px solid var(--ink);border-right:0;min-height:230px }.overview-day:last-child { border-right:2px solid var(--ink) }.overview-day>header { align-items:center;background:#fffaf0;border-bottom:2px solid var(--ink);display:flex;justify-content:space-between;padding:9px }.overview-day>header span { font-size:.66rem;font-weight:900;text-transform:uppercase }.overview-day>header strong { font:900 1.2rem ui-monospace,monospace }.overview-day.is-today>header { background:var(--blue);color:#fff }.overview-day>div { display:grid;gap:7px;padding:7px }.overview-day article { background:var(--lcd);border:2px solid var(--ink);display:grid;gap:2px;padding:8px }.overview-day article time { font:900 .62rem ui-monospace,monospace }.overview-day article span { color:var(--muted-ink);font-size:.65rem }.overview-day>div>p { color:var(--muted-ink);font-size:.68rem;text-align:center }
@media(max-width:620px){.student-top-nav { align-items:flex-start;gap:18px }.student-top-nav nav { gap:12px }.student-top-nav nav a { font-size:.65rem }.overview-heading { align-items:flex-start }.overview-readout { flex-basis:94px }.overview-room-grid { grid-template-columns:1fr }}
.student-calendar-toolbar { align-items:end;display:flex;justify-content:space-between;padding:18px 0 14px }.student-calendar-toolbar form label { display:grid;font-size:.68rem;font-weight:900;gap:5px;text-transform:uppercase }.student-calendar-toolbar select { background:#fff;border:3px solid var(--ink);font-family:inherit;font-size:.85rem;font-weight:800;min-width:min(360px,80vw);padding:10px }.student-calendar-navigation { align-items:center;display:grid;gap:14px;grid-template-columns:auto 310px }.student-calendar-controls { align-items:center;display:flex;gap:8px;white-space:nowrap }.student-calendar-toolbar h3 { font-size:1rem;margin:0;min-width:0;text-align:left }.student-week-panel { border:3px solid var(--ink);box-shadow:6px 6px 0 var(--ink) }.student-calendar-event { cursor:default;overflow:hidden;padding:8px!important }.student-calendar-event span,.student-calendar-event small { display:block;font-size:.65rem;line-height:1.2 }.student-calendar-event small { font-weight:900;margin-top:4px }.room-gauge strong { font-size:.95rem }.overview-calendar { padding-bottom:12px }
@media(max-width:900px){.student-calendar-toolbar { align-items:stretch;flex-direction:column;gap:12px }.student-calendar-toolbar select { min-width:100%;width:100% }.student-calendar-navigation { grid-template-columns:auto minmax(230px,1fr);justify-content:start }}
@media(max-width:560px){.student-calendar-navigation { align-items:start;grid-template-columns:1fr }.student-calendar-toolbar h3 { grid-row:2 }.student-week-panel { overflow:hidden }}
.student-launch-hero { border-bottom: 4px solid var(--ink); border-top: 4px solid var(--ink); margin-bottom: 28px; padding: 28px 0; }
.student-launch-hero h1 { font-size: clamp(2.5rem, 7vw, 5.4rem); letter-spacing: -.06em; line-height: .9; margin: 6px 0 18px; }
.student-launch-hero p { color: var(--muted-ink); line-height: 1.5; margin: 0; max-width: 650px; }
.student-launch-hero .eyebrow { color: var(--ink); font-size: .72rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.student-section-list { display: grid; gap: 32px; }
.student-section-panel { background: #fffaf0; border: 3px solid var(--ink); border-top: 14px solid var(--section-accent); box-shadow: 8px 8px 0 var(--ink); padding: clamp(18px, 3vw, 30px); }
.student-section-panel > header { align-items: start; background: none; box-shadow: none; display: flex; justify-content: space-between; padding: 0 0 22px; position: static; }
.student-section-panel h2 { font-size: clamp(1.7rem, 4vw, 2.7rem); letter-spacing: -.04em; margin: 2px 0; }
.student-section-panel h2 span { color: var(--muted-ink); font-weight: 500; }
.student-section-panel header p { color: var(--muted-ink); margin: 3px 0 0; }
.student-section-panel .student-section-label { color: var(--ink); font-size: .66rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.student-room-chip { background: var(--lcd); border: 2px solid var(--ink); font-size: .72rem; font-weight: 900; padding: 8px 10px; text-transform: uppercase; }
.student-lab-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.student-lab-card { background: #fff; border: 3px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); color: var(--ink); display: grid; gap: 9px; min-height: 220px; padding: 18px; text-decoration: none; transition: transform .14s ease, box-shadow .14s ease; }
.student-lab-card[href]:hover { box-shadow: 2px 2px 0 var(--ink); transform: translate(3px, 3px); }
.student-lab-card.is-complete { background: var(--lcd); }
.student-lab-card.is-locked { background: #e7e0d4; color: var(--muted-ink); cursor: not-allowed; box-shadow: 3px 3px 0 var(--ink); }
.student-lab-number { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .76rem; font-weight: 900; letter-spacing: .08em; }
.student-lab-state { background: var(--blue); border: 2px solid var(--ink); color: white; font-size: .62rem; font-weight: 900; justify-self: end; margin-top: -29px; padding: 4px 7px; text-transform: uppercase; }
.is-complete .student-lab-state { background: var(--green); color: #fff; }
.is-locked .student-lab-state { background: var(--muted-ink); }
.student-lab-card strong { font-size: 1.25rem; line-height: 1.1; margin-top: 8px; }
.student-lab-card small { color: var(--muted-ink); line-height: 1.4; }
.student-lab-due { border-top: 2px solid var(--ink); font-size: .7rem; font-weight: 900; margin-top: auto; padding-top: 9px; text-transform: uppercase; }
.student-lab-action { font-size: .76rem; font-weight: 900; text-transform: uppercase; }
.student-no-labs { border: 2px dashed var(--ink); color: var(--muted-ink); margin: 0; padding: 22px; }
.student-empty-panel { align-items: center; background: #fffaf0; border: 3px solid var(--ink); box-shadow: 7px 7px 0 var(--ink); display: flex; gap: 18px; padding: 28px; }
.student-empty-panel h2, .student-empty-panel p { margin: 0; }
.student-empty-panel p { color: var(--muted-ink); margin-top: 5px; }
.student-invite-backdrop { align-items: center; background: rgba(23,19,15,.68); display: flex; inset: 0; justify-content: center; padding: 20px; position: fixed; z-index: 100; }
.student-invite-backdrop[hidden] { display: none; }
.student-invite-modal { background: var(--paper); border: 4px solid var(--ink); box-shadow: 10px 10px 0 var(--yellow); max-width: 620px; padding: clamp(22px, 5vw, 38px); width: 100%; }
.student-invite-modal h2 { font-size: clamp(1.8rem, 5vw, 3rem); letter-spacing: -.04em; line-height: 1; margin: 10px 0 24px; }
.student-invite-list { display: grid; gap: 10px; margin-bottom: 24px; }
.student-invite-list article { align-items: center; background: #fffaf0; border: 2px solid var(--ink); display: flex; gap: 14px; padding: 14px; }
.student-invite-list article div { display: grid; gap: 3px; }
.student-invite-list article span { color: var(--muted-ink); font-size: .8rem; }
.student-invite-modal form { display: flex; justify-content: flex-end; }

@media (max-width: 620px) {
  .student-section-panel > header { gap: 14px; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  .student-lab-card { transition: none; }
}

/* Mobile-first student station picker */
.station-picker-body { background: var(--paper); color: var(--ink); display: block; }
.station-picker-shell { margin: auto; max-width: 1080px; min-height: 100vh; padding: 18px clamp(14px, 4vw, 42px) 48px; }
.station-picker-header { background: transparent; border-bottom: 4px solid var(--ink); box-shadow: none; display: block; padding: 20px 0 22px; position: static; }
.station-picker-header h1 { font-size: clamp(2.5rem, 10vw, 5rem); letter-spacing: -.06em; line-height: .9; margin: 7px 0 16px; }
.station-picker-header p { color: var(--muted-ink); line-height: 1.45; margin: 0; }
.station-legend { display: flex; gap: 9px 14px; overflow-x: auto; padding: 16px 2px 12px; scrollbar-width: none; }
.station-legend span { align-items: center; display: flex; flex: 0 0 auto; font-size: .68rem; font-weight: 900; gap: 6px; text-transform: uppercase; }
.station-legend i { border: 2px solid var(--ink); border-radius: 50%; display: block; height: 13px; width: 13px; }
.is-available { background: var(--green); }.is-occupied { background: var(--red); }.is-limited { background: var(--yellow); }.is-unavailable { background: var(--muted-ink); }
.room-picker-tabs { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 13px; scrollbar-width: none; }
.room-picker-tabs button { background: #fffaf0; border: 2px solid var(--ink); color: var(--ink); flex: 0 0 auto; font-size: .7rem; font-weight: 900; padding: 8px 11px; text-transform: uppercase; }
.room-picker-tabs button.active { background: var(--blue); color: #fff; }
.room-swipe { display: flex; gap: 16px; margin: 0 -14px; overflow-x: auto; padding: 0 14px 14px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.room-swipe-panel { background: #fffaf0; border: 3px solid var(--ink); box-shadow: 6px 6px 0 var(--ink); flex: 0 0 calc(100% - 8px); min-width: 0; padding: 14px; scroll-snap-align: center; }
.room-swipe-panel > header { align-items: start; background: transparent; box-shadow: none; display: flex; justify-content: space-between; padding: 0 0 12px; position: static; }
.room-swipe-panel h2 { font-size: 1.35rem; margin: 2px 0; }.room-swipe-panel header p { color: var(--muted-ink); font-size: .76rem; margin: 0; }
.room-swipe-panel header small { font-size: .62rem; font-weight: 900; text-transform: uppercase; }.room-swipe-panel header > span { background: var(--lcd); border: 2px solid var(--ink); font-size: .64rem; font-weight: 900; padding: 6px; text-transform: uppercase; }
.student-room-map { background-color: #eee5d5; background-image: linear-gradient(rgba(23,19,15,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(23,19,15,.07) 1px, transparent 1px); background-size: 20px 20px; border: 3px solid var(--ink); max-height: 68vh; min-height: 280px; overflow: hidden; position: relative; width: 100%; }
.student-room-map-bg { height: 100%; inset: 0; object-fit: fill; opacity: .72; pointer-events: none; position: absolute; width: 100%; }
.map-station { align-items: center; border: max(2px, .25vw) solid var(--ink); box-shadow: 2px 2px 0 var(--ink); color: var(--ink); display: flex; flex-direction: column; justify-content: center; min-height: 38px; min-width: 52px; overflow: hidden; padding: 3px; position: absolute; touch-action: manipulation; }
.map-station strong { font-size: clamp(.48rem, 1.8vw, .82rem); line-height: 1.05; }.map-station span { font-size: clamp(.38rem, 1.3vw, .6rem); font-weight: 900; text-transform: uppercase; }
.map-station.is-available { background: var(--green); color: #fff; }.map-station.is-limited { background: var(--yellow); }.map-station.is-occupied { background: var(--red); color: #fff; }.map-station.is-unavailable { background: var(--muted-ink); color: #fff; }
.map-station:not(:disabled) { cursor: pointer; }.map-station:not(:disabled):active { box-shadow: none; transform: translate(2px,2px); }
.room-map-empty { color: var(--muted-ink); left: 50%; margin: 0; position: absolute; text-align: center; top: 50%; transform: translate(-50%,-50%); width: 80%; }
@media (min-width: 760px) { .room-swipe { margin-inline: 0; padding-inline: 2px; }.room-swipe-panel { flex-basis: 82%; padding: 20px; }.student-room-map { min-height: 430px; } }

/* Student lab assignment checkpoints */
.student-assignment-body { background: var(--paper); color: var(--ink); display: block; }
.student-assignment-shell { margin: auto; max-width: 900px; min-height: 100vh; padding: 18px clamp(14px, 4vw, 38px) 64px; }
.assignment-mobile-header { align-items: end; background: transparent; border-bottom: 4px solid var(--ink); box-shadow: none; display: grid; gap: 18px; grid-template-columns: 1fr auto; padding: 22px 0 26px; position: static; }
.assignment-mobile-header h1 { font-size: clamp(2rem, 7vw, 4.5rem); letter-spacing: -.055em; line-height: .95; margin: 7px 0 0; }
.station-location-button { align-items: center; background: var(--lcd); border: 3px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); color: var(--ink); cursor: pointer; display: flex; gap: 10px; max-width: 280px; padding: 10px; text-align: left; }
.station-location-button > span:nth-child(2) { display: grid; flex: 1; }.station-location-button small { font-size: .58rem; font-weight: 900; text-transform: uppercase; }.station-location-button strong { line-height: 1.1; }.station-location-button em { color: var(--muted-ink); font-size: .68rem; font-style: normal; }.station-location-button b { color: var(--blue); font-size: .65rem; text-transform: uppercase; }
.student-facilitators { align-items: start; background: #fffaf0; border: 3px solid var(--ink); border-top: 9px solid var(--blue); box-shadow: 5px 5px 0 var(--ink); display: grid; gap: 16px; grid-template-columns: minmax(150px, .55fr) 1fr; margin-top: 20px; padding: 16px; }
.student-facilitators h2 { font-size: 1.25rem; margin: 2px 0 0; }.student-facilitators ul { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }.student-facilitators li { align-items: center; background: var(--lcd); border: 2px solid var(--ink); display: flex; gap: 10px; padding: 9px 11px; }.student-facilitators li > span:last-child { display: grid; gap: 2px; }.student-facilitators li small { color: var(--muted-ink); font-size: .68rem; font-weight: 800; }.student-facilitators > .muted { margin: 0; }
.checkpoint-stack { display: grid; gap: 14px; padding-top: 24px; }
.checkpoint-card { background: #fffaf0; border: 3px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); }
.checkpoint-card.is-gated { border-color: var(--muted-ink); box-shadow: 4px 4px 0 var(--muted-ink); }.checkpoint-card.is-complete { border-top: 9px solid var(--green); }
.checkpoint-card summary { align-items: center; cursor: pointer; display: grid; gap: 12px; grid-template-columns: auto 1fr auto; list-style: none; min-height: 82px; padding: 14px; }.checkpoint-card summary::-webkit-details-marker { display: none; }
.checkpoint-card summary > span:nth-child(2) { display: grid; gap: 3px; }.checkpoint-card summary small { color: var(--muted-ink); font-size: .62rem; font-weight: 900; text-transform: uppercase; }.checkpoint-card summary strong { font-size: 1.1rem; }.checkpoint-card summary > b { font-size: 1.5rem; transition: transform .15s ease; }.checkpoint-card[open] summary > b { transform: rotate(45deg); }
.checkpoint-index { align-items: center; background: var(--blue); border: 2px solid var(--ink); color: #fff; display: flex; font-family: ui-monospace, monospace; font-size: .75rem; font-weight: 900; height: 38px; justify-content: center; width: 38px; }.is-gated .checkpoint-index { background: var(--muted-ink); }.is-complete .checkpoint-index { background: var(--green); color: #fff; }
.checkpoint-content { border-top: 3px solid var(--ink); padding: clamp(16px, 4vw, 28px); }.checkpoint-instructions { color: var(--ink); font-size: 1rem; line-height: 1.65; }.checkpoint-instructions :is(p, li, h1, h2, h3, h4, h5, h6, td, th, figcaption, mjx-container) { color: var(--ink); }.checkpoint-content aside { background: var(--yellow); border: 2px solid var(--ink); display: grid; gap: 4px; margin-top: 18px; padding: 13px; }.checkpoint-content aside strong { font-size: .65rem; text-transform: uppercase; }
.checkpoint-instructions > :first-child { margin-top: 0; }.checkpoint-instructions > :last-child { margin-bottom: 0; }
.checkpoint-instructions h1, .checkpoint-instructions h2, .checkpoint-instructions h3, .checkpoint-instructions h4 { letter-spacing: -.025em; line-height: 1.15; margin: 1.35em 0 .55em; }
.checkpoint-instructions h1 { font-size: 2rem; }.checkpoint-instructions h2 { font-size: 1.6rem; }.checkpoint-instructions h3 { font-size: 1.3rem; }
.checkpoint-instructions ul, .checkpoint-instructions ol { padding-left: 1.5rem; }.checkpoint-instructions li { margin: .35rem 0; }
.checkpoint-instructions pre { background: var(--ink); color: var(--paper); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; overflow-x: auto; padding: 14px; white-space: pre; }
.checkpoint-instructions :not(pre) > code, .wysiwyg-editor :not(pre) > code { background: var(--lcd); border: 1px solid var(--ink); border-radius: 2px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; padding: .08em .3em; }
.checkpoint-instructions a, .wysiwyg-editor a { color: var(--blue); font-weight: 700; text-decoration-thickness: 2px; text-underline-offset: 2px; }
.checkpoint-instructions a:focus-visible, .wysiwyg-editor a:focus-visible { outline: 3px solid var(--yellow); outline-offset: 2px; }
.checkpoint-instructions figure { display: grid; justify-items: center; margin: 22px auto; width: 100%; }.checkpoint-instructions figure img { border: 3px solid var(--ink); display: block; height: auto; margin-inline: auto; max-width: 100%; }.checkpoint-instructions figcaption { color: var(--ink); font-size: .78rem; margin-top: 7px; text-align: center; }
.markdown-missing-image { border: 2px dashed var(--ink); color: var(--muted-ink); padding: 20px; text-align: center; }
.markdown-table-scroll { margin: 20px 0; max-width: 100%; overflow-x: auto; }.checkpoint-instructions table { border-collapse: collapse; min-width: 100%; }.checkpoint-instructions th, .checkpoint-instructions td { border: 2px solid var(--ink); min-width: 110px; padding: 9px 11px; text-align: left; }.checkpoint-instructions th { background: var(--yellow); font-size: .72rem; text-transform: uppercase; }
.checkpoint-instructions .latex-block { margin: 22px 0; max-width: 100%; overflow-x: auto; padding: 10px; text-align: center; }.checkpoint-instructions .latex-inline { display: inline-block; max-width: 100%; }.checkpoint-instructions mjx-container { max-width: 100%; overflow-x: auto; overflow-y: hidden; }.checkpoint-instructions mjx-container svg { max-width: 100%; }
.checkpoint-questions { border-top: 3px solid var(--ink); margin-top: 24px; padding-top: 22px; }.question-heading { display: grid; gap: 3px; margin-bottom: 16px; }.question-heading span { font-size: 1.15rem; font-weight: 900; }.question-heading small { color: var(--muted-ink); }
.checkpoint-questions fieldset { border: 2px solid var(--ink); margin: 0 0 14px; padding: 14px; }.checkpoint-questions legend { font-weight: 800; max-width: 90%; padding: 0 6px; }.answer-option { align-items: center; border: 2px solid transparent; cursor: pointer; display: flex; gap: 10px; margin-top: 7px; padding: 9px; }.answer-option:has(input:checked) { background: var(--lcd); border-color: var(--ink); }.answer-option input { height: 20px; width: 20px; }
.answer-field { display: grid; gap: 6px; margin-top: 10px; }.answer-field span { font-size: .72rem; font-weight: 900; text-transform: uppercase; }.answer-field input { background: #fff; border: 2px solid var(--ink); border-radius: 0; font: inherit; min-height: 46px; padding: 9px; }
.checkoff-button { background: var(--red); border: 3px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); color: #fff; cursor: pointer; font-size: .75rem; font-weight: 900; margin-top: 14px; min-height: 50px; padding: 12px 16px; text-transform: uppercase; width: 100%; }.checkoff-button:disabled { background: var(--muted-ink); cursor: default; }
.station-change-actions { align-items: center; display: flex; gap: 12px; justify-content: flex-end; margin-top: 24px; }.station-change-actions form { display: block; }.station-change-actions button { min-height: 46px; }
@media (max-width: 640px) { .assignment-mobile-header { align-items: stretch; grid-template-columns: 1fr; }.station-location-button { max-width: none; width: 100%; }.student-facilitators { grid-template-columns: 1fr; }.checkpoint-content { padding: 16px; }.station-change-actions { align-items: stretch; flex-direction: column-reverse; }.station-change-actions form, .station-change-actions button { width: 100%; } }
@media (prefers-reduced-motion: reduce) { .checkpoint-card summary > b { transition: none; } }
.student-launch-body :is(a, button, input, select, textarea, summary):focus-visible,
.station-picker-body :is(a, button, input, select, textarea, summary):focus-visible,
.student-assignment-body :is(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid #fff;
  outline-offset: 2px;
  box-shadow: 0 0 0 5px var(--ink);
}
.site-nav {
  align-items: center;
  background: var(--paper);
  border: 3px solid var(--ink);
  display: flex;
  gap: 14px;
  justify-content: space-between;
  margin-bottom: 18px;
  padding: 12px 14px;
}
.site-nav a { color: var(--ink); font-weight: 900; text-decoration-thickness: 3px; }
.bauhaus-stage,
.hero-card {
  background: var(--paper);
  border: 4px solid var(--ink);
  box-shadow: 14px 14px 0 var(--blue);
  display: grid;
  gap: clamp(20px, 5vw, 52px);
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  margin: 24px 0;
  overflow: hidden;
  padding: clamp(24px, 7vw, 70px);
  position: relative;
}
.hero-copy { position: relative; z-index: 1; }
.hero-card h1,
.dashboard-shell h1,
.auth-card h1 {
  font-size: clamp(2.3rem, 9vw, 6.8rem);
  letter-spacing: -.075em;
  line-height: .86;
  margin: 12px 0 20px;
  max-width: 9ch;
  text-transform: uppercase;
}
.dashboard-shell h1,
.auth-card h1 { font-size: clamp(2.1rem, 7vw, 4.8rem); max-width: 12ch; }
.eyebrow {
  color: var(--blue);
  font-size: .8rem;
  font-weight: 950;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.muted,
.auth-card p { color: var(--muted-ink); line-height: 1.55; }
.availability-note {
  background: #fff6df;
  border: 3px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
  color: var(--ink);
  display: inline-block;
  font-size: .82rem;
  font-weight: 950;
  letter-spacing: .08em;
  margin: 4px 0 0;
  padding: 10px 12px;
  text-transform: uppercase;
}
.shape { position: absolute; z-index: 0; }
.shape-circle {
  background: var(--red);
  border: 4px solid var(--ink);
  border-radius: 50%;
  height: 180px;
  right: 31%;
  top: 28px;
  width: 180px;
}
.shape-block {
  background: var(--yellow);
  border: 4px solid var(--ink);
  bottom: -36px;
  height: 128px;
  left: 38%;
  transform: rotate(-7deg);
  width: 210px;
}
.shape-line {
  background: rgba(29, 95, 209, .22);
  height: 3px;
  left: -30px;
  top: 55%;
  transform: rotate(-18deg);
  width: 48%;
}
.lab-device-hero {
  align-self: center;
  color: var(--ink);
  display: grid;
  gap: 18px;
  justify-items: center;
  position: relative;
  z-index: 1;
}
.lh-device--hero {
  --device-scale: .82;
  max-width: min(300px, 72vw);
}
.lh-device--hero {
  animation: handy-bob 30s ease-in-out infinite;
  transform-origin: center bottom;
}
.lh-device--hero .lh-eye-right {
  animation: handy-wink 30s steps(1, end) infinite;
  transform-origin: center;
}
.lh-device--hero .lh-mouth {
  animation: handy-smile 30s ease-in-out infinite;
}
.lh-device--hero .lh-light {
  animation: handy-light-pop 30s ease-in-out infinite;
}
.lh-device--hero .lh-light:nth-child(2) { animation-delay: .18s; }
.lh-device--hero .lh-light:nth-child(3) { animation-delay: .36s; }
@keyframes handy-bob {
  0%, 6%, 14%, 100% { transform: translateY(0) rotate(0); }
  8% { transform: translateY(-8px) rotate(-1.5deg); }
  10% { transform: translateY(2px) rotate(1deg); }
  12% { transform: translateY(-4px) rotate(.5deg); }
  52% { transform: translateY(0) rotate(0); }
  54% { transform: translateY(-5px) rotate(1.2deg); }
  56% { transform: translateY(0) rotate(0); }
}
@keyframes handy-wink {
  0%, 7%, 9%, 100% { transform: scaleY(1); }
  8% { transform: scaleY(.18); }
}
@keyframes handy-smile {
  0%, 50%, 100% { transform: translateY(0); }
  8%, 54% { transform: translateY(calc(var(--pixel) * -.25)); }
}
@keyframes handy-light-pop {
  0%, 48%, 58%, 100% { filter: none; transform: scale(1); }
  52% { filter: brightness(1.35); transform: scale(1.12); }
}

.auth-divider {
  align-items: center;
  color: var(--muted-ink);
  display: grid;
  font-size: 0.78rem;
  font-weight: 900;
  gap: 0.75rem;
  grid-template-columns: 1fr auto 1fr;
  letter-spacing: 0.12em;
  margin: 1rem 0;
  text-transform: uppercase;
}

.auth-divider::before,
.auth-divider::after {
  background: var(--ink);
  content: "";
  height: 3px;
}

.google-signin-wrap {
  display: flex;
  justify-content: center;
  min-height: 44px;
  width: 100%;
}

.auth-config-note {
  border-left: 6px solid var(--yellow);
  font-size: 0.9rem;
  margin-bottom: 0;
  padding-left: 0.75rem;
}

.unassigned-shell { max-width: 880px; }
.unassigned-card { margin-top: clamp(2rem, 8vh, 6rem); overflow: hidden; padding: clamp(1.5rem, 5vw, 3.5rem); }
.unassigned-card h1 { font-size: clamp(2rem, 6vw, 4rem); margin: 0.4rem 0 1rem; }
.unassigned-card .muted { font-size: 1.1rem; max-width: 62ch; }
.unassigned-card .status-bars { display: grid; grid-template-columns: repeat(4, 1fr); height: 12px; margin: calc(clamp(1.5rem, 5vw, 3.5rem) * -1) calc(clamp(1.5rem, 5vw, 3.5rem) * -1) 2rem; }
.unassigned-card .status-bars span:nth-child(1) { background: var(--red); }
.unassigned-card .status-bars span:nth-child(2) { background: var(--yellow); }
.unassigned-card .status-bars span:nth-child(3) { background: var(--blue); }
.unassigned-card .status-bars span:nth-child(4) { background: var(--green); }
.unassigned-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }

@media (prefers-reduced-motion: reduce) {
  .lh-device--hero,
  .lh-device--hero .lh-eye-right,
  .lh-device--hero .lh-mouth,
  .lh-device--hero .lh-light {
    animation: none;
  }
}
.lab-device-hero p {
  background: rgba(255,246,223,.92);
  border: 3px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  color: var(--muted-ink);
  font-weight: 800;
  line-height: 1.45;
  margin: 0;
  padding: 14px;
}
.site-footer {
  color: var(--muted-ink);
  font-size: .85rem;
  font-weight: 850;
  margin: 28px 0 0;
  text-align: center;
}
.site-footer a {
  color: var(--ink);
  font-weight: 950;
  text-decoration-color: var(--red);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}
.top-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 18px 0; }
.nav-actions { align-items: center; margin: 0; }
.primary-action,
.secondary-action,
.auth-card button {
  align-items: center;
  border: 3px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-weight: 950;
  justify-content: center;
  min-height: 48px;
  padding: 0 18px;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform .12s ease, box-shadow .12s ease;
}
.primary-action,
.auth-card button { background: var(--red); color: #fff; }
.secondary-action { background: #fff6df; color: var(--ink); }
.primary-action:hover,
.secondary-action:hover,
.auth-card button:hover { box-shadow: 2px 2px 0 var(--ink); transform: translate(3px, 3px); }
.crud-grid,
.metric-grid { display: grid; gap: 14px; }
.crud-grid { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.feature-heading { background: transparent; border-bottom: 4px solid var(--ink); border-top: 4px solid var(--ink); box-shadow: none; display: block; margin: clamp(42px, 7vw, 72px) 0 24px; max-width: none; padding: clamp(22px, 4vw, 34px) 0; position: static; }
.feature-heading h2 { font-size: clamp(2rem, 5vw, 3.6rem); letter-spacing: -.055em; line-height: .96; margin: 8px 0 12px; text-transform: uppercase; }
.feature-heading p:last-child { margin: 0; max-width: 680px; }
.feature-number { color: var(--blue); font: 900 .72rem ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; margin: 0 0 18px; text-transform: uppercase; }
.metric-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 20px 0; }
.crud-card,
.metric-card,
.panel-card {
  background: rgba(255,246,223,.94);
  border: 3px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  padding: 16px;
}
.crud-card:nth-child(3n+1) { border-top: 12px solid var(--red); }
.crud-card:nth-child(3n+2) { border-top: 12px solid var(--blue); }
.crud-card:nth-child(3n) { border-top: 12px solid var(--yellow); }
.crud-card h2 { font-size: 1.25rem; letter-spacing: -.04em; margin: 0 0 8px; text-transform: uppercase; }
.metric-card strong { color: var(--blue); display: block; font-family: "Courier New", monospace; font-size: 2.2rem; }
.auth-card form,
.crud-card form { display: grid; gap: 14px; margin-top: 16px; }
.auth-card label,
.crud-card label { display: grid; font-size: .9rem; font-weight: 950; gap: 6px; text-transform: uppercase; }
.auth-card input,
.auth-card select,
.field,
input,
select,
textarea {
  background: #fffaf0;
  border: 3px solid var(--ink);
  border-radius: 0;
  color: var(--ink);
  font: inherit;
  padding: 12px 14px;
  width: 100%;
}
.alert-error,
.alert-success {
  border: 3px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  margin: 14px 0;
  padding: 12px 14px;
}
.alert-error { background: #ffd9d4; color: #6f130b; }
.alert-success { background: #d7f5c7; color: #174f2f; }
.modal-backdrop {
  align-items: center;
  background: rgba(23, 19, 15, .72);
  display: flex;
  inset: 0;
  justify-content: center;
  padding: 18px;
  position: fixed;
  z-index: 1000;
}
.modal-backdrop[hidden] { display: none; }
.modal-card { max-width: 440px; position: relative; width: min(100%, 440px); }
.modal-close {
  background: var(--yellow);
  border: 3px solid var(--ink);
  box-shadow: 3px 3px 0 var(--ink);
  cursor: pointer;
  font-size: 1.4rem;
  font-weight: 950;
  height: 42px;
  position: absolute;
  right: 14px;
  top: 14px;
  width: 42px;
}
.invite-list { margin-top: 18px; }
.invite-list ul { display: grid; gap: 10px; list-style: none; margin: 0; padding: 0; }
.invite-list li { background: #fffaf0; border: 3px solid var(--ink); padding: 12px; }
@media (max-width: 760px) {
  .marketing-shell { width: min(100% - 20px, 1120px); }
  .bauhaus-stage,
  .hero-card { grid-template-columns: 1fr; padding: 22px; }
  .hero-card h1 { font-size: clamp(2.5rem, 17vw, 4.4rem); }
  .shape-circle { height: 112px; right: -34px; top: 72px; width: 112px; }
  .shape-block { left: 52%; width: 140px; }
  .dashboard-shell,
  .auth-card { box-shadow: none; margin-top: 0; min-height: 100vh; width: 100%; }
  .site-nav { align-items: flex-start; flex-direction: column; }
}
.optional-label {
  color: var(--muted-ink);
  font-size: .72rem;
  letter-spacing: .08em;
}
.view-grid {
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  margin-top: 18px;
}
.data-list ul {
  display: grid;
  gap: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.data-list li {
  background: #fffaf0;
  border: 3px solid var(--ink);
  padding: 12px;
}
.data-list li strong,
.data-list li span {
  display: block;
}
.data-list li span {
  color: var(--muted-ink);
  font-size: .9rem;
  margin-top: 4px;
}
.data-list details {
  display: grid;
  gap: 12px;
}
.data-list summary {
  cursor: pointer;
  list-style-position: outside;
}
.inline-assignment {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.inline-assignment .primary-action {
  width: max-content;
}
.class-builder {
  margin-top: 18px;
}
.lab-experiments {
  margin-top: 18px;
}
.check-row {
  align-items: center;
  display: flex !important;
  gap: 10px !important;
}
.check-row input {
  width: auto;
}
textarea {
  min-height: 96px;
  resize: vertical;
}

/* Refined administrative workspace: restrained Bauhaus structure with familiar dashboard density. */
.organization-body {
  background:
    linear-gradient(90deg, rgba(23,19,15,.035) 1px, transparent 1px),
    linear-gradient(0deg, rgba(23,19,15,.035) 1px, transparent 1px),
    var(--paper);
  background-size: 32px 32px;
}
.organization-shell {
  background: rgba(250, 246, 237, .97);
  border-width: 2px;
  box-shadow: 8px 8px 0 var(--ink);
  max-width: 1240px;
  padding: clamp(20px, 3vw, 36px);
}
.organization-nav {
  border: 0;
  border-bottom: 2px solid var(--ink);
  margin: 0 0 32px;
  padding: 0 0 18px;
}
.organization-nav .labhand-logo { --logo-size: 34px; }
.organization-nav__links { align-items: center; display: flex; gap: 22px; }
.organization-nav__links a { font-size: .88rem; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.organization-header {
  align-items: end;
  display: grid;
  gap: 28px;
  grid-template-columns: minmax(0, 1fr) auto;
  margin-bottom: 28px;
}
.organization-header h1 {
  font-size: clamp(2.4rem, 5vw, 4.5rem);
  letter-spacing: -.055em;
  line-height: .95;
  margin: 8px 0 12px;
  max-width: 16ch;
  text-transform: none;
}
.organization-header .muted { font-size: 1rem; margin: 0; max-width: 62ch; }
.organization-header .top-actions { justify-content: flex-end; margin: 0; }
.organization-shell .primary-action,
.organization-shell .secondary-action {
  border-width: 2px;
  box-shadow: 3px 3px 0 var(--ink);
  min-height: 44px;
  padding-inline: 16px;
}
.organization-shell .primary-action { background: var(--blue); }
.section-heading {
  align-items: end;
  border-bottom: 2px solid var(--ink);
  display: flex;
  justify-content: space-between;
  margin: 0 0 18px;
  padding-bottom: 12px;
}
.section-heading h2 { font-size: 1.55rem; letter-spacing: -.035em; margin: 2px 0 0; }
.section-heading p { color: var(--muted-ink); font-size: .88rem; margin: 0; max-width: 52ch; }
.organization-shell .crud-grid,
.organization-shell .view-grid { gap: 18px; }
.organization-shell .crud-card,
.organization-shell .panel-card {
  background: #fffaf0;
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 rgba(23,19,15,.9);
  padding: 20px;
}
.organization-shell .crud-card:nth-child(n) { border-top: 2px solid var(--ink); }
.organization-shell .crud-card::before { background: var(--blue); content: ""; display: block; height: 7px; margin: -20px -20px 18px; }
.organization-shell .crud-card:nth-child(4n+2)::before { background: var(--yellow); }
.organization-shell .crud-card:nth-child(4n+3)::before { background: var(--green); }
.organization-shell .crud-card:nth-child(4n)::before { background: var(--red); }
.organization-shell .crud-card h2 { font-size: 1.08rem; letter-spacing: -.02em; text-transform: none; }
.organization-shell input,
.organization-shell select,
.organization-shell textarea { border: 1.5px solid var(--ink); border-radius: 3px; padding: 10px 12px; }
.organization-shell .crud-card label { font-size: .78rem; letter-spacing: .035em; text-transform: none; }
.organization-shell .data-list li { border: 1px solid rgba(23,19,15,.35); border-left: 5px solid var(--blue); }

/* Assigned-class workspace. */
.classes-shell { max-width: 1180px; }
.classes-header { align-items: center; }
.class-readout {
  background: var(--lcd);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  display: grid;
  min-width: 180px;
  padding: 14px 18px;
}
.class-readout strong { font-family: "Courier New", monospace; font-size: 2rem; line-height: 1; }
.class-readout span { color: var(--muted-ink); font-size: .75rem; font-weight: 900; margin-top: 5px; text-transform: uppercase; }
.classes-term-filter { align-items: center; border-bottom: 2px solid var(--ink); display: flex; gap: 12px; margin: -8px 0 28px; padding-bottom: 18px; }
.classes-term-filter label { font-size: .75rem; font-weight: 900; text-transform: uppercase; }
.classes-term-filter select { max-width: 260px; }
.class-actions { margin-bottom: 40px; }
.class-action-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
.class-action-card { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); }
.class-action-card:nth-child(1) { border-top: 7px solid var(--blue); }
.class-action-card:nth-child(2) { border-top: 7px solid var(--green); }
.class-action-card:nth-child(3) { border-top: 7px solid var(--yellow); }
.class-action-card summary { cursor: pointer; display: grid; grid-template-columns: 38px 1fr; list-style: none; padding: 16px; }
.class-action-card summary::-webkit-details-marker { display: none; }
.class-action-card summary > span { align-items: center; background: var(--ink); color: var(--paper); display: flex; font-size: 1.25rem; font-weight: 900; grid-row: span 2; height: 34px; justify-content: center; width: 34px; }
.class-action-card summary strong { font-size: .95rem; }
.class-action-card summary small { color: var(--muted-ink); margin-top: 2px; }
.class-action-card[open] summary { border-bottom: 2px solid var(--ink); }
.class-action-card form { display: grid; gap: 12px; padding: 16px; }
.class-action-card label { display: grid; font-size: .78rem; font-weight: 900; gap: 5px; }
.class-action-card .primary-action { justify-self: start; }
.class-action-card.is-disabled { opacity: .68; }
.class-action-link { align-items: center; color: var(--ink); display: grid; gap: 4px 12px; grid-template-columns: 38px 1fr auto; padding: 16px; text-decoration: none; }
.class-action-link > span { align-items: center; background: var(--ink); color: var(--paper); display: flex; font-size: 1.25rem; grid-row: span 2; height: 34px; justify-content: center; width: 34px; }
.class-action-link small { color: var(--muted-ink); }
.class-action-link > b { font-size: 1.4rem; grid-column: 3; grid-row: 1 / span 2; }
.assigned-class-grid { display: grid; gap: 22px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.assigned-class-card { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); overflow: hidden; padding: 22px; }
.assigned-class-card::before { background: var(--class-accent); content: ""; display: block; height: 9px; margin: -22px -22px 20px; }
.assigned-class-card__heading { align-items: start; display: flex; gap: 18px; justify-content: space-between; }
.assigned-class-card h3 { font-size: 1.45rem; letter-spacing: -.035em; margin: 2px 0 4px; }
.class-code { font-family: "Courier New", monospace; font-size: .85rem; font-weight: 900; letter-spacing: .06em; margin: 0; }
.status-chip, .lab-status { background: var(--lcd); border: 1px solid var(--ink); font-size: .68rem; font-weight: 900; padding: 5px 8px; text-transform: uppercase; }
.class-metrics { border: 2px solid var(--ink); display: grid; grid-template-columns: .7fr .7fr 1.6fr; margin: 18px 0; }
.class-metrics div { min-width: 0; padding: 10px 12px; }
.class-metrics div + div { border-left: 1px solid var(--ink); }
.class-metrics dt { color: var(--muted-ink); font-size: .65rem; font-weight: 900; text-transform: uppercase; }
.class-metrics dd { font-family: "Courier New", monospace; font-size: 1rem; font-weight: 900; margin: 3px 0 0; overflow-wrap: anywhere; }
.class-lab-list h4 { font-size: .75rem; letter-spacing: .06em; margin: 0 0 10px; text-transform: uppercase; }
.class-lab-list ul { display: grid; gap: 7px; list-style: none; margin: 0; padding: 0; }
.class-lab-list li { align-items: center; background: var(--paper); border: 1px solid rgba(23,19,15,.35); display: grid; gap: 10px; grid-template-columns: auto 1fr auto; padding: 10px; }
.class-lab-list li strong, .class-lab-list li small { display: block; }
.class-lab-list li small { color: var(--muted-ink); margin-top: 2px; }
.lab-number { background: var(--class-accent); border: 1px solid var(--ink); font-family: "Courier New", monospace; font-size: .72rem; font-weight: 900; padding: 6px; }
.class-sections > h4 { font-size: .75rem; letter-spacing: .06em; margin: 0 0 10px; text-transform: uppercase; }
.class-sections details { border: 1px solid rgba(23,19,15,.4); }
.class-sections details + details { border-top: 0; }
.class-sections summary { align-items: center; cursor: pointer; display: flex; justify-content: space-between; list-style: none; padding: 12px; }
.class-sections summary::-webkit-details-marker { display: none; }
.class-sections summary strong, .class-sections summary small { display: block; }
.class-sections summary small { color: var(--muted-ink); margin-top: 3px; }
.class-sections summary > span:last-child { font-size: 1.2rem; font-weight: 900; }
.class-sections details[open] summary { background: var(--lcd); border-bottom: 1px solid rgba(23,19,15,.4); }
.class-sections details[open] summary > span:last-child { transform: rotate(45deg); }
.class-sections .class-lab-list { padding: 12px; }
.class-section-row { border: 1px solid rgba(23,19,15,.4); }
.class-section-row + .class-section-row { border-top: 0; }
.class-section-row > summary { align-items: center; cursor: pointer; display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto; list-style: none; padding: 12px; }
.class-section-row > summary::-webkit-details-marker, .lab-assignment > summary::-webkit-details-marker { display: none; }
.class-section-row strong, .class-section-row small { display: block; }
.class-section-row small { color: var(--muted-ink); margin-top: 3px; }
.section-instructors { border-left: 3px solid var(--blue); max-width: 260px; padding-left: 10px; text-align: right; }
.section-instructors span { color: var(--muted-ink); display: block; font-size: .62rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.section-instructors strong { font-size: .78rem; margin-top: 3px; }
.section-expand, .lab-expand { font-size: 1.25rem; font-weight: 900; transition: transform .12s ease; }
.class-section-row[open] .section-expand, .lab-assignment[open] .lab-expand { transform: rotate(45deg); }
.section-roster { background: var(--paper); border-top: 1px solid rgba(23,19,15,.4); padding: 14px; }
.section-roster h5, .lab-due-form h5 { font-size: .72rem; letter-spacing: .07em; margin: 0 0 10px; text-transform: uppercase; }
.section-roster ul { display: grid; gap: 6px; list-style: none; margin: 0; padding: 0; }
.section-roster li { align-items: baseline; background: #fffaf0; border: 1px solid rgba(23,19,15,.25); display: flex; gap: 12px; justify-content: space-between; padding: 8px 10px; }
.section-roster li span { color: var(--muted-ink); font-size: .78rem; }
.class-wide-labs { border-top: 2px solid var(--ink); margin-top: 18px; padding-top: 16px; }
.lab-editor-link { color: var(--ink); font-weight: 900; text-decoration-color: var(--class-accent); text-decoration-thickness: 3px; text-underline-offset: 3px; }
.class-wide-labs .lab-number { align-items: center; background: var(--yellow); color: var(--ink); display: grid; font-size: 1.45rem; line-height: .9; min-height: 58px; min-width: 58px; padding: 7px; text-align: center; }
.class-wide-labs .lab-number small { color: var(--ink); font-family: inherit; font-size: .56rem; letter-spacing: .08em; margin: 0 0 4px; text-transform: uppercase; }
.lab-assignment-list { display: grid; gap: 8px; }
.lab-assignment { background: var(--paper); border: 1px solid rgba(23,19,15,.35); }
.lab-assignment > summary { align-items: center; cursor: pointer; display: grid; gap: 10px; grid-template-columns: auto 1fr auto auto; list-style: none; padding: 10px; }
.lab-assignment > summary > div .lab-editor-link, .lab-assignment > summary > div small { display: block; }
.lab-assignment > summary > div small { margin-top: 5px; }
.lab-due-form { background: #fffaf0; border-top: 2px solid var(--ink); display: grid; gap: 10px; padding: 14px; }
.smart-due-controls { align-items: end; background: var(--lcd); border: 2px solid var(--ink); display: grid; gap: 10px; grid-template-columns: minmax(70px, .45fr) minmax(125px, 1fr); margin-bottom: 6px; min-width: 0; overflow: hidden; padding: 10px; width: 100%; }
.smart-due-controls > div { grid-column: 1 / -1; }
.smart-due-controls > div strong, .smart-due-controls > div small { display: block; }
.smart-due-controls > div small { color: var(--muted-ink); line-height: 1.35; margin-top: 3px; }
.smart-due-controls label { display: grid; font-size: .68rem; font-weight: 900; gap: 4px; text-transform: uppercase; }
.smart-due-controls input, .smart-due-controls select { min-width: 0; }
.smart-due-controls .secondary-action { font-size: .7rem; grid-column: 1 / -1; justify-self: end; min-height: 40px; padding-inline: 12px; }
.smart-due-unavailable { background: #fff1c2; border: 2px solid var(--ink); display: grid; gap: 3px; justify-self: start; max-width: 520px; padding: 10px 12px; }
.smart-due-unavailable strong { font-size: .78rem; text-transform: uppercase; }
.smart-due-unavailable span { color: var(--muted-ink); font-size: .78rem; line-height: 1.35; }
.lab-due-form > label { align-items: center; display: grid; gap: 14px; grid-template-columns: minmax(0, 1fr) minmax(285px, .8fr); }
.lab-due-form input[type="datetime-local"] { min-width: 285px; }
.lab-due-form input.is-calculated { background: var(--lcd); outline: 3px solid var(--green); outline-offset: 1px; }
.lab-due-form > label span strong, .lab-due-form > label span small { display: block; }
.lab-due-form > label span small { color: var(--muted-ink); margin-top: 2px; }
.lab-due-form .primary-action { justify-self: end; margin-top: 4px; }
.due-date-feedback { color: var(--green); font-size: .82rem; font-weight: 900; justify-self: end; margin: 2px 0 0; }
.due-date-feedback.is-error { color: var(--red); }
.classes-empty { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 6px 6px 0 var(--ink); overflow: hidden; padding: 32px; }
.classes-empty .status-bars { display: grid; grid-template-columns: repeat(4, 1fr); height: 10px; margin: -32px -32px 30px; }
.classes-empty .status-bars span:nth-child(1) { background: var(--red); }
.classes-empty .status-bars span:nth-child(2) { background: var(--yellow); }
.classes-empty .status-bars span:nth-child(3) { background: var(--blue); }
.classes-empty .status-bars span:nth-child(4) { background: var(--green); }
.classes-empty h2 { font-size: 2rem; margin: 5px 0 10px; }
.classes-empty .primary-action { margin-top: 12px; }
.data-maintenance { align-items: end; background: #fff1c2; border: 2px dashed var(--ink); display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr) auto; margin-top: 48px; padding: 18px; }
.data-maintenance h2 { font-size: 1.2rem; margin: 3px 0 6px; }
.data-maintenance p { margin: 0; }
.danger-action { background: var(--red); border: 3px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); color: #fff; cursor: pointer; font: inherit; font-size: .75rem; font-weight: 950; min-height: 44px; padding: 8px 14px; text-transform: uppercase; }
.cleanup-report { background: #fffaf0; border: 2px solid var(--ink); grid-column: 1 / -1; padding: 12px; }
.cleanup-report > strong { font-size: .78rem; text-transform: uppercase; }
.cleanup-report ul { display: grid; gap: 5px; list-style: none; margin: 10px 0 0; padding: 0; }
.cleanup-report li { align-items: center; border-top: 1px solid rgba(23,19,15,.25); display: flex; justify-content: space-between; padding-top: 5px; }
.cleanup-report li b { font-family: "Courier New", monospace; }

/* Class-wide lab and checkpoint authoring. */
.lab-editor-shell { max-width: 1050px; }
.lab-editor-brand { align-items: flex-start; display: grid; gap: 8px; }
.lab-editor-brand > a { font-size: .78rem; font-weight: 900; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.lab-editor-header { align-items: initial; background: transparent; box-shadow: none; display: block; margin-bottom: 28px; padding: 0; position: static; }
.lab-editor-header h1 { font-size: clamp(2.4rem, 5vw, 4.5rem); letter-spacing: -.055em; line-height: .95; margin: 8px 0 12px; max-width: 16ch; text-transform: none; }
.lab-editor-header .muted { font-size: 1rem; margin: 0; max-width: 62ch; }
.lab-author-form { display: grid; gap: 34px; }
.lab-details-panel, .checkpoint-builder { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); padding: 24px; }
.lab-detail-grid { display: grid; gap: 16px; grid-template-columns: 1fr 180px; }
.lab-detail-grid label { display: grid; font-size: .78rem; font-weight: 900; gap: 6px; text-transform: uppercase; }
.lab-detail-grid .wide-field { grid-column: 1 / -1; }
.checkpoint-card { border: 2px solid var(--ink); margin-top: 18px; }
.checkpoint-card > header { align-items: center; background: var(--paper); border-bottom: 2px solid var(--ink); box-shadow: none; display: grid; gap: 14px; grid-template-columns: auto 1fr auto; padding: 14px; position: static; top: auto; z-index: auto; }
.checkpoint-number { align-items: center; background: var(--yellow); border: 2px solid var(--ink); display: flex; font-family: "Courier New", monospace; font-size: 1.15rem; font-weight: 900; height: 48px; justify-content: center; width: 48px; }
.checkpoint-title-field { display: grid; font-size: .68rem; font-weight: 900; gap: 5px; letter-spacing: .08em; text-transform: uppercase; }
.checkpoint-title { background: #fff !important; border: 2px solid var(--ink) !important; font-size: 1.05rem !important; font-weight: 900; padding: 9px 11px !important; }
.checkpoint-title:focus { outline: 3px solid var(--blue); outline-offset: 2px; }
.checkpoint-remove { background: transparent; border: 0; cursor: pointer; font-size: 1.6rem; font-weight: 900; }
.checkpoint-controls { align-items: center; display: flex; gap: 5px; }
.checkpoint-controls button { background: var(--paper); border: 2px solid var(--ink); cursor: pointer; font-weight: 900; min-height: 34px; padding: 5px 8px; }
.checkpoint-controls button:disabled { cursor: default; opacity: .35; }
.checkpoint-controls .checkpoint-remove { border: 0; min-width: 34px; }
.editor-mode-tabs { background: var(--ink); display: flex; gap: 2px; padding: 6px 8px 0; }
.editor-mode-tabs button { background: transparent; border: 0; color: var(--paper); cursor: pointer; font: inherit; font-size: .72rem; font-weight: 900; padding: 8px 12px; text-transform: uppercase; }
.editor-mode-tabs button.active { background: #fffaf0; color: var(--ink); }
.editor-toolbar { border-bottom: 1px solid rgba(23,19,15,.35); display: flex; flex-wrap: wrap; gap: 5px; padding: 10px; }
.editor-toolbar button { background: var(--paper); border: 2px solid rgba(23,19,15,.45); cursor: pointer; min-height: 34px; padding: 4px 9px; }
.editor-toolbar button.engaged { background: var(--yellow); border: 3px solid var(--ink); font-weight: 900; }
.heading-picker { align-items: center; display: flex; font-size: .68rem; font-weight: 900; gap: 9px; letter-spacing: .04em; margin-inline: 4px 8px; text-transform: uppercase; }
.heading-picker select { background: var(--paper); border: 2px solid rgba(23,19,15,.45); font-size: .78rem; min-height: 34px; padding: 4px 28px 4px 9px; width: auto; }
.heading-picker select.engaged { background: var(--yellow); border: 3px solid var(--ink); font-weight: 900; }
.wysiwyg-editor, .markdown-editor { background: #fff; border: 0 !important; min-height: 220px; padding: 18px !important; width: 100%; }
.wysiwyg-editor pre { background: var(--paper); border: 2px solid var(--ink); font-family: "Courier New", monospace; margin: 12px 0; padding: 12px; white-space: pre-wrap; }
.wysiwyg-editor:empty::before { color: var(--muted-ink); content: attr(data-placeholder); }
.wysiwyg-editor:focus, .markdown-editor:focus { outline: 3px solid var(--blue); outline-offset: -3px; }
.wysiwyg-editor.editor-invalid { outline: 3px solid var(--red); outline-offset: -3px; }
.checkpoint-signoff { align-items: center; background: var(--lcd); border-top: 2px solid var(--ink); display: flex; gap: 12px; padding: 14px; }
.checkpoint-signoff input { height: 22px; width: 22px; }
.checkpoint-signoff strong, .checkpoint-signoff small { display: block; }
.checkpoint-signoff small { color: var(--muted-ink); margin-top: 3px; }
.add-checkpoint { margin-top: 18px; }
.lab-author-footer { align-items: center; border-top: 2px solid var(--ink); display: flex; gap: 20px; justify-content: space-between; padding-top: 20px; }
.lab-author-footer p { color: var(--muted-ink); margin: 0; }
.question-builder, .facilitator-notes, .material-builder { background: color-mix(in srgb, var(--paper) 88%, var(--yellow)); border-top: 2px solid var(--ink); }
.material-builder { background: color-mix(in srgb, var(--paper) 90%, var(--blue)); }
.material-builder > summary { align-items: center; cursor: pointer; display: flex; justify-content: space-between; list-style: none; padding: 16px 18px; }
.material-builder > summary::-webkit-details-marker { display: none; }
.material-builder > summary strong, .material-builder > summary small { display: block; }
.material-builder > summary small { color: var(--muted-ink); margin-top: 3px; }
.material-builder-content { border-top: 1px solid rgba(23,19,15,.35); padding: 18px; }
.material-builder-heading { align-items: end; display: flex; gap: 16px; justify-content: space-between; }
.material-builder-heading label { flex: 1; }
.material-action-list { display: grid; gap: 10px; margin-top: 14px; }
.material-action-empty { background: var(--paper); border: 2px dashed var(--ink); color: var(--muted-ink); margin: 0; padding: 14px; }
.material-inventory-browser { background: var(--paper); border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); margin-top: 14px; max-height: 340px; overflow: auto; }
.material-inventory-browser table { border-collapse: collapse; width: 100%; }
.material-inventory-browser th, .material-inventory-browser td { border-bottom: 1px solid var(--ink); padding: 9px 10px; text-align: left; }
.material-inventory-browser th { background: var(--blue); color: white; font-size: .72rem; position: sticky; text-transform: uppercase; top: 0; }
.material-inventory-browser td small { color: var(--muted-ink); display: block; margin-top: 2px; }
.material-inventory-browser td:last-child { text-align: right; }
.material-inventory-empty { color: var(--muted-ink); margin: 0; padding: 18px; }
.material-action-row { align-items: end; background: var(--paper); border: 2px solid var(--ink); display: grid; gap: 10px; grid-template-columns: minmax(150px,.7fr) minmax(240px,2fr) 100px auto; padding: 12px; }
.material-action-row label { display: grid; gap: 5px; font-weight: 700; }
.material-action-row button { background: var(--red); border: 2px solid var(--ink); color: white; font-size: 1.2rem; height: 42px; width: 42px; }
.question-builder > summary, .facilitator-notes > summary { align-items: center; cursor: pointer; display: flex; justify-content: space-between; list-style: none; padding: 16px 18px; }
.question-builder > summary::-webkit-details-marker, .facilitator-notes > summary::-webkit-details-marker { display: none; }
.question-builder > summary strong, .question-builder > summary small, .facilitator-notes > summary strong, .facilitator-notes > summary small { display: block; }
.question-builder > summary small, .facilitator-notes > summary small { color: var(--muted-ink); margin-top: 3px; }
.section-toggle-label { font-size: .72rem; font-weight: 900; text-decoration: underline; text-transform: uppercase; }
.question-builder-content { border-top: 1px solid rgba(23,19,15,.35); padding: 18px; }
.facilitator-notes { background: color-mix(in srgb, var(--paper) 88%, var(--blue)); }
.facilitator-editor { border-top: 1px solid rgba(23,19,15,.35); }
.facilitator-editor .wysiwyg-editor, .facilitator-editor .markdown-editor { min-height: 150px; }
.question-builder-heading { align-items: end; display: flex; gap: 18px; justify-content: space-between; }
.question-builder-heading strong, .question-builder-heading small { display: block; }
.question-builder-heading small, .question-help, .question-empty { color: var(--muted-ink); margin: 4px 0 0; }
.question-add-menu { align-items: end; display: flex; gap: 8px; }
.question-add-menu label { font-size: .75rem; font-weight: 900; text-transform: uppercase; }
.question-add-menu select { display: block; margin-top: 4px; min-height: 38px; }
.question-add-menu .secondary-action { min-height: 38px; padding: 7px 12px; }
.question-card { background: var(--paper); border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); margin-top: 18px; padding: 14px; }
.question-card > header { align-items: center; border-bottom: 1px solid color-mix(in srgb, var(--ink) 25%, transparent); display: grid; gap: 10px; grid-template-columns: auto 1fr auto; margin: -4px -4px 14px; padding: 0 4px 10px; }
.question-order { background: var(--blue); border: 2px solid var(--ink); color: #fff; font: 900 .76rem ui-monospace, monospace; padding: 4px 6px; }
.question-move { display: flex; gap: 4px; }
.question-move button, .choice-option button, .measurement-row > button { background: var(--paper); border: 2px solid var(--ink); cursor: pointer; font-weight: 900; min-height: 32px; min-width: 32px; }
.question-move button:disabled { cursor: default; opacity: .35; }
.question-card > label, .blank-answers label { display: grid; font-size: .82rem; font-weight: 900; gap: 5px; }
.question-card textarea { min-height: 72px; resize: vertical; }
.question-help { font-size: .82rem; }
.blank-answers { display: grid; gap: 10px; margin-top: 12px; }
.blank-answers label { grid-template-columns: minmax(180px, .7fr) 1fr; }
.blank-answers small { color: var(--muted-ink); display: block; font-weight: 500; }
.choice-options, .table-measurements { display: grid; gap: 8px; margin: 12px 0; }
.choice-option { align-items: center; display: grid; gap: 8px; grid-template-columns: auto 1fr auto; }
.choice-option input[type="checkbox"] { height: 22px; width: 22px; }
.question-inline-action { background: var(--yellow); border: 2px solid var(--ink); cursor: pointer; font-weight: 900; padding: 7px 10px; }
.measurement-row { align-items: end; display: grid; gap: 8px; grid-template-columns: minmax(150px, 1.4fr) repeat(3, minmax(90px, .7fr)) auto; }
.measurement-row label { font-size: .72rem; font-weight: 900; text-transform: uppercase; }
.measurement-row label input { display: block; margin-top: 4px; width: 100%; }
@media (max-width: 760px) {
  .organization-shell { box-shadow: none; }
  .organization-nav { align-items: center; flex-direction: row; }
  .organization-header { grid-template-columns: 1fr; }
  .organization-header .top-actions { justify-content: flex-start; }
  .organization-shell .metric-grid { grid-template-columns: repeat(2, 1fr); }
  .organization-shell .metric-card:nth-child(2) { border-right: 2px solid var(--ink); }
  .organization-shell .metric-card:nth-child(-n+2) { border-bottom: 0; }
  .section-heading { align-items: start; flex-direction: column; gap: 8px; }
  .checkpoint-card > header { grid-template-columns: auto 1fr; }
  .checkpoint-controls { grid-column: 1 / -1; justify-content: flex-end; }
  .class-action-grid, .assigned-class-grid { grid-template-columns: 1fr; }
  .class-readout { justify-self: start; }
  .class-section-row > summary { align-items: start; grid-template-columns: 1fr auto; }
  .class-section-row > summary > div:first-child { grid-column: 1; }
  .section-instructors { grid-column: 1; }
  .section-expand { grid-column: 2; grid-row: 1; }
  .section-instructors { border-left: 0; border-top: 2px solid var(--blue); max-width: none; padding-left: 0; padding-top: 8px; text-align: left; }
  .lab-detail-grid { grid-template-columns: 1fr; }
  .lab-detail-grid .wide-field { grid-column: auto; }
  .lab-author-footer { align-items: stretch; flex-direction: column; }
  .question-builder-heading, .question-add-menu { align-items: stretch; flex-direction: column; }
  .blank-answers label, .measurement-row { grid-template-columns: 1fr; }
  .lab-assignment > summary { grid-template-columns: auto 1fr auto; }
  .lab-assignment .lab-status { grid-column: 2; }
  .lab-expand { grid-column: 3; grid-row: 1 / span 2; }
  .lab-due-form > label { align-items: start; grid-template-columns: 1fr; }
  .smart-due-controls { align-items: stretch; grid-template-columns: 1fr; }
  .lab-due-form input[type="datetime-local"] { min-width: 0; }
  .data-maintenance { align-items: stretch; grid-template-columns: 1fr; }
  .data-maintenance form, .danger-action { width: 100%; }
}

/* The hand is laid out as a unit so its colored fingers cannot drift from the wordmark. */
.labhand-logo {
  --logo-size: 36px;
  align-items: flex-start;
  display: inline-flex;
  height: 1.24em;
  overflow: visible;
  width: 4.58em;
}
.labhand-logo__name {
  flex: 0 0 auto;
  font-family: "Strait", "Arial Narrow", sans-serif;
  left: auto;
  line-height: 1;
  position: relative;
  top: .04em;
}
.labhand-logo__baseline { height: .055em; left: .04em; top: .98em; width: 3.38em; }
.labhand-logo__hand {
  display: grid;
  flex: 0 0 .68em;
  gap: .115em;
  margin-left: .02em;
  margin-top: .19em;
  position: relative;
}
.labhand-logo__finger {
  height: .075em;
  left: auto;
  position: relative;
  top: auto;
  transform: none;
}
.labhand-logo__finger--red { left: 0; width: .34em; }
.labhand-logo__finger--yellow { left: .055em; width: .48em; }
.labhand-logo__finger--blue { left: .055em; width: .60em; }
.labhand-logo__finger--green { left: 0; width: .52em; }
.labhand-logo__app { left: 13.55em; top: 3.58em; }

.organization-header {
  background: transparent;
  box-shadow: none;
  padding: 0;
  position: static;
}
.organization-nav { background: transparent; }
.admin-feedback { margin-bottom: 24px; }
.admin-actions { align-items: end; border-bottom: 2px solid var(--ink); display: grid; gap: 20px; grid-template-columns: auto 1fr; margin-bottom: 34px; padding-bottom: 22px; }
.admin-actions h2, .admin-data h2 { font-size: 1.55rem; letter-spacing: -.035em; margin: 3px 0 0; }
.admin-action-row { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
.admin-action-row button {
  align-items: center; background: #fffaf0; border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); color: var(--ink); cursor: pointer; display: inline-flex; font: inherit; font-size: .78rem; font-weight: 850; gap: 9px; min-height: 48px; padding: 7px 13px; text-transform: uppercase;
}
.admin-action-row button span { align-items: center; background: var(--blue); border-radius: 50%; color: white; display: inline-flex; font-size: 1.05rem; height: 28px; justify-content: center; width: 28px; }
.admin-action-row button:nth-child(2) span { background: var(--green); }
.admin-action-row button:nth-child(3) span { background: var(--red); }
.admin-action-row button:nth-child(4) span { background: var(--yellow); color: var(--ink); }
.admin-action-row button:hover { box-shadow: 1px 1px 0 var(--ink); transform: translate(2px,2px); }
.admin-data { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 5px 5px 0 var(--ink); overflow: hidden; }
.admin-data__heading { align-items: end; display: flex; justify-content: space-between; padding: 20px 22px; }
.directory-controls { align-items: end; display: flex; gap: 12px; justify-content: flex-end; width: min(560px, 60%); }
.term-filter { display: grid; flex: 0 0 200px; font-size: .72rem; font-weight: 850; gap: 5px; text-transform: uppercase; }
.organization-shell .term-filter select { background: white; min-height: 40px; padding-block: 8px; }
.table-search { display: grid; font-size: .72rem; font-weight: 850; gap: 5px; text-transform: uppercase; width: min(300px, 45%); }
.organization-shell .table-search input { background: white; min-height: 40px; }
.admin-tabs { background: var(--ink); display: flex; gap: 2px; overflow-x: auto; padding: 2px 2px 0; }
.admin-tabs button { background: #e9dfcd; border: 0; color: var(--ink); cursor: pointer; font: inherit; font-size: .82rem; font-weight: 850; min-width: 125px; padding: 13px 18px; text-align: left; text-transform: uppercase; }
.admin-tabs button span { background: rgba(23,19,15,.12); border-radius: 999px; float: right; padding: 1px 7px; }
.admin-tabs button[aria-selected="true"] { background: var(--blue); color: white; }
.admin-tabs button[aria-selected="true"] span { background: rgba(255,255,255,.2); }
.admin-table-panel { overflow-x: auto; }
.admin-table-panel[hidden] { display: none; }
.admin-table-panel table { border-collapse: collapse; min-width: 640px; width: 100%; }
.admin-table-panel th { background: #eee5d5; color: var(--muted-ink); font-size: .72rem; letter-spacing: .05em; padding: 12px 18px; text-align: left; text-transform: uppercase; }
.admin-table-panel td { border-top: 1px solid #d7cbb8; font-size: .88rem; padding: 15px 18px; }
.admin-table-panel tbody tr:hover { background: #fff4dc; }
.row-actions { text-align: right; width: 1%; }
.row-actions form { display: inline; margin: 0; }
.edit-space-link { color: var(--blue); font-size: .75rem; font-weight: 900; margin-right: 8px; text-transform: uppercase; white-space: nowrap; }
.new-space-row { background: #e3f4d9; box-shadow: inset 7px 0 0 var(--green); }
.new-record-chip { background: var(--green); border-radius: 999px; color: white; display: inline-block; font-size: .62rem; font-weight: 900; margin-left: 9px; padding: 3px 7px; text-transform: uppercase; }
.station-health-trigger { background: #e8effc; border: 1.5px solid var(--blue); color: var(--ink); cursor: pointer; font: inherit; font-size: .72rem; font-weight: 900; padding: 6px 9px; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.station-health-trigger:hover { background: var(--blue); color: white; }
.row-actions button { background: transparent; border: 0; color: #a2261b; cursor: pointer; font: inherit; font-size: .75rem; font-weight: 850; padding: 6px; text-decoration: underline; text-underline-offset: 3px; }
.row-actions button:hover { color: var(--red); }
.empty-table { color: var(--muted-ink); margin: 0; padding: 28px 20px; text-align: center; }
.status-chip { background: #d7f5c7; border: 1px solid var(--green); border-radius: 999px; color: #174f2f; display: inline-block; font-size: .72rem; font-weight: 850; padding: 3px 9px; text-transform: uppercase; }
.status-chip--revoked, .status-chip--expired { background: #eee5d5; border-color: var(--muted-ink); color: var(--muted-ink); }
.status-chip--accepted { background: #e8effc; border-color: var(--blue); color: var(--blue); }
.invitation-directory { margin-top: 28px; }
.invitation-directory .admin-data__heading > p { font-size: .78rem; margin: 0; max-width: 48ch; text-align: right; }
.invitation-directory .row-actions button { white-space: nowrap; }
.admin-modal { inset: 0; position: fixed; z-index: 100; }
.admin-modal[hidden] { display: none; }
.admin-modal__backdrop { background: rgba(23,19,15,.68); inset: 0; position: absolute; }
.admin-modal__card { background: var(--paper); border: 3px solid var(--ink); box-shadow: 10px 10px 0 var(--blue); left: 50%; max-height: calc(100vh - 40px); overflow-y: auto; padding: 28px; position: absolute; top: 50%; transform: translate(-50%,-50%); width: min(480px, calc(100% - 36px)); }
.admin-modal__card h2 { font-size: 1.7rem; margin: 0 44px 20px 0; }
.admin-modal__card form { display: grid; gap: 14px; }
.modal-form-feedback { background: #ffedaa; border: 1.5px solid var(--ink); font-size: .76rem; font-weight: 800; margin: -8px 0 14px; padding: 9px 11px; }
.modal-form-feedback--success { background: #d7f5c7; }
.modal-form-feedback--error { background: #ffd9d4; color: #6f130b; }
.admin-modal__card label { display: grid; font-size: .8rem; font-weight: 850; gap: 6px; }
.admin-modal__close { background: var(--yellow); border: 2px solid var(--ink); cursor: pointer; font-size: 1.35rem; font-weight: 900; height: 36px; position: absolute; right: 18px; top: 18px; width: 36px; }
.station-health-card { max-width: 920px; width: min(920px, calc(100% - 36px)); }
.field-help { color: var(--muted-ink); font-size: .68rem; font-weight: 700; }
.comma-guide { align-items: center; background: #ffedaa; border: 1.5px solid var(--ink); display: flex; flex-wrap: wrap; font-size: .7rem; gap: 6px; margin: -5px 0 0; padding: 9px; }
.comma-guide strong { flex-basis: 100%; text-transform: uppercase; }
.comma-guide span { background: #fffaf0; border: 1px solid var(--ink); padding: 4px 6px; }
.comma-guide b { color: var(--red); font-family: "Courier New", monospace; font-size: 1.3rem; line-height: .6; }
.staff-picker { border: 1.5px solid var(--ink); display: grid; gap: 6px; margin: 0; max-height: 190px; overflow-y: auto; padding: 10px; }
.staff-picker legend { font-size: .78rem; font-weight: 850; padding: 0 5px; }
.staff-picker label { align-items: center; background: #fffaf0; cursor: pointer; display: grid !important; font-size: .76rem !important; gap: 8px !important; grid-template-columns: auto minmax(90px, 1fr) minmax(125px, auto); padding: 7px; }
.staff-picker input { height: 18px; margin: 0; width: 18px; }
.staff-picker select { font-size: .7rem; min-width: 125px; padding: 6px 8px; }
.staff-picker label span, .staff-picker label small { display: block; }
.staff-picker label small { color: var(--muted-ink); font-size: .65rem; margin-top: 2px; }
.section-view-trigger { background: #e8effc; border: 1.5px solid var(--blue); color: var(--ink); cursor: pointer; font: inherit; font-size: .76rem; font-weight: 900; padding: 6px 9px; text-decoration: underline; text-underline-offset: 3px; }
.section-view-trigger:hover { background: var(--blue); color: white; }
.room-change-trigger { text-align: left; }
.class-sections-card { max-width: 1040px; width: min(1040px, calc(100% - 36px)); }
.class-instructor-panel { align-items: end; background: var(--lcd); border: 2px solid var(--ink); display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr) minmax(260px, .8fr); margin: 14px 0 18px; padding: 14px; }
.class-instructor-panel h3 { font-size: 1.05rem; margin: 3px 0 8px; }
.class-instructor-form { align-items: end; display: grid; gap: 8px; grid-template-columns: minmax(170px, 1fr) auto; }
.class-instructor-form label { display: grid; font-size: .72rem; font-weight: 900; gap: 4px; text-transform: uppercase; }
.class-instructor-form .primary-action { font-size: .68rem; min-height: 40px; padding-inline: 10px; }
@media (max-width: 760px) {
  .class-instructor-panel, .class-instructor-form { align-items: stretch; grid-template-columns: 1fr; }
}
.class-sections-layout { border: 2px solid var(--ink); display: grid; grid-template-columns: 230px minmax(0, 1fr); min-height: 520px; }
#class-section-list { background: #eee5d5; border-right: 2px solid var(--ink); padding: 8px; }
#class-section-list button { align-items: center; background: transparent; border: 0; cursor: pointer; display: grid; font: inherit; gap: 9px; grid-template-columns: auto 1fr; padding: 12px 9px; text-align: left; width: 100%; }
#class-section-list button[aria-current="true"] { background: var(--blue); color: white; }
#class-section-list .round-light { background: var(--yellow); height: 13px; width: 13px; }
#class-section-list button span:last-child, #class-section-list small { display: block; }
#class-section-list strong { font-size: .82rem; }
#class-section-list small { font-size: .65rem; line-height: 1.4; margin-top: 3px; }
#class-section-detail { background: var(--paper); padding: 20px; }
.section-detail-heading { align-items: end; background: transparent; border-bottom: 2px solid var(--ink); box-shadow: none; display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr) minmax(210px, 280px); margin-bottom: 18px; padding: 0 0 14px; position: static; top: auto; z-index: auto; }
.section-detail-heading h3 { font-size: 1.4rem; margin: 9px 0 3px; }
.section-detail-heading p { color: var(--muted-ink); font-size: .78rem; margin: 0; }
.section-room-form { display: grid; }
.section-room-form label { display: grid; font-size: .7rem; font-weight: 850; gap: 4px; text-transform: uppercase; }
.section-room-form select { background: var(--paper); min-width: 0; padding: 8px; }
.section-room-form .secondary-action { box-shadow: 2px 2px 0 var(--ink); font-size: .65rem; min-height: 38px; padding: 7px 9px; white-space: nowrap; }
#class-section-detail > section + section { border-top: 2px solid #d7cbb8; margin-top: 20px; padding-top: 18px; }
#class-section-detail h4 { font-size: .78rem; letter-spacing: .04em; margin: 0 0 10px; text-transform: uppercase; }
.responsible-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.responsible-chips > span { background: #d7f5c7; border: 1px solid var(--green); font-size: .72rem; font-weight: 850; padding: 5px 8px; }
.responsible-chips small { color: var(--muted-ink); }
.section-inline-form { display: grid; gap: 10px; margin-top: 14px; }
.section-inline-form > label { display: grid; font-size: .74rem; font-weight: 850; gap: 5px; }
.section-inline-form .primary-action { justify-self: start; }
.roster-heading { align-items: center; display: flex; justify-content: space-between; }
.roster-heading span { color: var(--muted-ink); font-size: .7rem; }
.section-roster { border: 1px solid #d7cbb8; max-height: 240px; overflow: auto; }
.section-roster table { border-collapse: collapse; width: 100%; }
.section-roster th { background: #eee5d5; color: var(--muted-ink); font-size: .65rem; padding: 8px; text-align: left; text-transform: uppercase; }
.section-roster td { border-top: 1px solid #d7cbb8; font-size: .76rem; padding: 9px 8px; }
.section-roster td strong, .section-roster td small { display: block; }
.section-roster td small { color: var(--muted-ink); font-size: .66rem; margin-top: 2px; }
.roster-action-form { align-items: center; display: flex; flex-wrap: wrap; gap: 5px; min-width: 220px; }
.roster-action-form label { flex: 1 1 90px; }
.roster-action-form select { font-size: .7rem; padding: 6px; }
.roster-action-form button { background: #e8effc; border: 1.5px solid var(--blue); cursor: pointer; font: inherit; font-size: .63rem; font-weight: 900; min-height: 32px; padding: 5px 7px; text-transform: uppercase; }
.roster-action-form .unenroll-action { background: #ffd9d4; border-color: var(--red); }
@media (max-width: 700px) { .class-sections-layout { grid-template-columns: 1fr; } #class-section-list { border-bottom: 2px solid var(--ink); border-right: 0; display: flex; overflow-x: auto; } #class-section-list button { flex: 0 0 190px; } .section-detail-heading { align-items: stretch; grid-template-columns: 1fr; } }
.station-health-card > h2 { margin-bottom: 18px; }
.station-health-layout { border: 2px solid var(--ink); display: grid; grid-template-columns: 220px minmax(0, 1fr); min-height: 430px; }
#station-health-list { background: #eee5d5; border-right: 2px solid var(--ink); padding: 8px; }
#station-health-list button { align-items: center; background: transparent; border: 0; cursor: pointer; display: grid; font: inherit; gap: 9px; grid-template-columns: auto 1fr; padding: 11px 9px; text-align: left; width: 100%; }
#station-health-list button[aria-current="true"] { background: var(--blue); color: white; }
#station-health-list button span:last-child { display: grid; gap: 2px; }
#station-health-list button strong { font-size: .8rem; }
#station-health-list button small { font-size: .68rem; }
.station-health-dot { border: 2px solid var(--ink); border-radius: 50%; height: 12px; width: 12px; }
.station-health-dot--usable { background: var(--green); }
.station-health-dot--partial { background: var(--yellow); }
.station-health-dot--unusable { background: var(--red); }
#station-health-detail { min-height: 430px; overflow: visible; padding: 20px; }
.station-health-detail__heading { border-bottom: 2px solid var(--ink); margin-bottom: 18px; padding-bottom: 14px; }
.station-health-detail__heading h3 { font-size: 1.45rem; margin: 9px 0 0; }
.station-health-status, .station-health-role { border: 1px solid var(--ink); display: inline-block; font-size: .64rem; font-weight: 900; margin-right: 6px; padding: 3px 7px; text-transform: uppercase; }
button.station-health-status { cursor: pointer; font-family: inherit; }
button.station-health-status:hover { box-shadow: 2px 2px 0 var(--ink); transform: translate(-1px,-1px); }
.health-override-note, .health-auto-note { color: var(--muted-ink); font-size: .65rem; font-weight: 800; }
.health-override-note button { background: transparent; border: 0; color: var(--blue); cursor: pointer; font: inherit; font-weight: 900; padding: 2px 4px; text-decoration: underline; text-underline-offset: 2px; }
.station-health-status--usable { background: #d7f5c7; }
.station-health-status--partial { background: #ffedaa; }
.station-health-status--unusable { background: #ffd9d4; }
.station-health-role { background: #e8effc; }
#station-health-detail section + section { border-top: 2px solid #d7cbb8; margin-top: 18px; padding-top: 16px; }
#station-health-detail h4 { font-size: .78rem; letter-spacing: .04em; margin: 0 0 10px; text-transform: uppercase; }
.station-tool-list { display: grid; gap: 6px; list-style: none; margin: 0; padding: 0; }
.station-tool-list li { align-items: center; background: #fffaf0; border: 1px solid #d7cbb8; display: flex; justify-content: space-between; padding: 8px; }
.health-tool-form { align-items: end; display: grid !important; gap: 7px !important; grid-template-columns: 1fr auto; margin-top: 10px; }
.health-tool-form label { display: grid; font-size: .68rem !important; font-weight: 900; gap: 4px; text-transform: uppercase; }
.health-tool-form input { border: 1.5px solid var(--ink); padding: 8px; }
.health-tool-form button { background: var(--yellow); border: 1.5px solid var(--ink); cursor: pointer; font: inherit; font-size: .68rem; font-weight: 900; min-height: 36px; padding: 6px 10px; text-transform: uppercase; }
.health-log-list { display: grid; gap: 8px; }
.health-log-list article { background: #fffaf0; border-left: 5px solid var(--blue); padding: 9px 11px; }
.health-log-list article div { display: flex; gap: 8px; justify-content: space-between; }
.health-log-list article strong { font-size: .72rem; }
.health-log-list article time { color: var(--muted-ink); font-size: .66rem; }
.health-log-list article p { font-size: .8rem; line-height: 1.45; margin: 6px 0 0; white-space: pre-wrap; }
#health-comment-form { display: grid; gap: 9px; margin-top: 14px; }
#health-comment-form label { display: grid; font-size: .72rem; font-weight: 900; gap: 5px; text-transform: uppercase; }
#health-comment-form .primary-action { justify-self: start; }
@media (max-width: 640px) { .station-health-layout { grid-template-columns: 1fr; } #station-health-list { border-bottom: 2px solid var(--ink); border-right: 0; display: flex; overflow-x: auto; } #station-health-list button { flex: 0 0 170px; } }
@media (max-width: 760px) {
  .organization-nav .labhand-logo { --logo-size: 30px; }
  .organization-nav__links { gap: 12px; }
  .admin-feedback { margin-bottom: 24px; }
.admin-actions { align-items: start; grid-template-columns: 1fr; }
  .admin-action-row { display: grid; grid-template-columns: repeat(2, 1fr); justify-content: stretch; }
  .admin-action-row button { justify-content: flex-start; }
  .admin-data__heading { align-items: start; flex-direction: column; gap: 15px; }
  .directory-controls { align-items: stretch; flex-direction: column; width: 100%; }
  .term-filter { flex-basis: auto; }
  .table-search { width: 100%; }
}

/* Room builder: a focused instrument-panel workspace. */
.room-builder-body { background: #d7cdbb; color: var(--ink); font-family: Inter, ui-sans-serif, system-ui, sans-serif; height: 100vh; margin: 0; overflow: hidden; }
.room-builder { display: flex; flex-direction: column; height: 100vh; min-height: 0; }
.builder-header { align-items: center; background: var(--paper); border-bottom: 3px solid var(--ink); display: grid; gap: 24px; grid-template-columns: 220px minmax(0,1fr) auto; min-height: 86px; padding: 12px 24px; position: relative; z-index: 4; }
.builder-brand { color: inherit; display: block; width: max-content; }
.builder-brand .labhand-logo { --logo-size: 31px; }
.builder-nav { align-items: flex-start; display: flex; flex-direction: column; gap: 3px; }
.builder-dashboard-link { color: var(--ink); font-size: .7rem; font-weight: 900; text-decoration-color: var(--blue); text-decoration-thickness: 2px; text-transform: uppercase; text-underline-offset: 3px; }
.builder-dashboard-link:hover { color: var(--blue); }
.builder-title { border-left: 2px solid var(--ink); padding-left: 22px; }
.builder-title h1 { font-size: 1.5rem; letter-spacing: -.035em; margin: 2px 0 0; }
.builder-save { align-items: center; display: flex; gap: 16px; }
.builder-save span { color: var(--muted-ink); font-size: .76rem; font-weight: 750; }
.builder-save .primary-action { background: var(--blue); border-width: 2px; box-shadow: 3px 3px 0 var(--ink); min-height: 42px; }
.builder-workspace { display: grid; flex: 1; grid-template-columns: 112px minmax(480px,1fr) 310px; min-height: 0; }
.builder-tools { background: #29231d; border-right: 3px solid var(--ink); color: #fffaf0; display: flex; flex-direction: column; gap: 5px; padding: 16px 10px; }
.tool-heading { color: #d7cdbb; font-size: .68rem; font-weight: 900; letter-spacing: .13em; margin: 0 7px 7px; text-transform: uppercase; }
.builder-tools button, .tool-upload { align-items: center; background: transparent; border: 2px solid transparent; color: inherit; cursor: pointer; display: flex; flex-direction: column; font: inherit; font-size: .68rem; font-weight: 800; gap: 4px; justify-content: center; min-height: 58px; padding: 6px 3px; text-align: center; }
.builder-tools button b, .tool-upload b { font-size: 1.35rem; line-height: 1; }
.builder-tools button:hover, .tool-upload:hover, .builder-tools button.active { background: #fffaf0; border-color: var(--ink); color: var(--ink); }
.builder-tools button.active { box-shadow: inset 0 -5px 0 var(--blue); }
.builder-tools .tool-station b { color: var(--yellow); }
.builder-tools .tool-delete { color: #ff9e94; }
.builder-tools hr { border: 0; border-top: 1px solid #71675a; margin: 6px 3px; width: calc(100% - 6px); }
.tool-upload input, .canvas-empty input { height: 1px; opacity: 0; overflow: hidden; position: absolute; width: 1px; }
.canvas-column { display: flex; flex-direction: column; min-height: 0; min-width: 0; overflow: hidden; padding: 16px; }
.canvas-guide { align-items: center; color: var(--muted-ink); display: flex; font-size: .73rem; font-weight: 750; justify-content: space-between; margin-bottom: 9px; }
.canvas-guide i { background: var(--green); border: 2px solid var(--ink); border-radius: 50%; display: inline-block; height: 10px; margin-right: 6px; width: 10px; }
.canvas-size-form { align-items: center; display: flex; gap: 5px; }
.canvas-size-form output { background: var(--lcd); border: 1.5px solid var(--ink); font-family: "Courier New", monospace; font-size: .68rem; font-weight: 900; min-width: 46px; padding: 4px; text-align: center; }
.canvas-size-form label { align-items: center; display: flex; font-size: .65rem; font-weight: 900; gap: 3px; }
.canvas-size-form input { background: #fffaf0; border: 1.5px solid var(--ink); font: inherit; padding: 4px 5px; width: 62px; }
.canvas-size-form button { background: var(--yellow); border: 1.5px solid var(--ink); cursor: pointer; font: inherit; font-size: .65rem; font-weight: 900; padding: 5px 7px; text-transform: uppercase; }
.canvas-scroll { align-self: center; background: #f8f2e6; border: 3px solid var(--ink); box-shadow: 6px 6px 0 rgba(23,19,15,.45); flex: 0 0 auto; margin: auto; max-height: 100%; max-width: 100%; min-height: 0; overflow: hidden; position: relative; }
#room-canvas { display: block; height: auto; max-width: none; touch-action: none; transform-origin: left top; width: auto; }
.canvas-empty { align-items: center; background: rgba(244,234,215,.92); border: 3px dashed var(--ink); display: flex; flex-direction: column; gap: 10px; left: 50%; max-width: 370px; padding: 30px; position: absolute; text-align: center; top: 50%; transform: translate(-50%,-50%); width: calc(100% - 40px); }
.canvas-empty[hidden] { display: none; }
.canvas-empty strong { font-size: 1.4rem; }
.canvas-empty span { color: var(--muted-ink); font-size: .86rem; line-height: 1.5; }
.canvas-empty .secondary-action { border-width: 2px; box-shadow: 3px 3px 0 var(--ink); cursor: pointer; font-size: .75rem; margin-top: 5px; min-height: 42px; }
.canvas-help { color: var(--muted-ink); font-size: .7rem; margin: 10px 0 0; text-align: center; }
.canvas-help strong { color: var(--ink); }
.properties-panel { background: var(--paper); border-left: 3px solid var(--ink); min-height: 0; overflow-y: auto; padding: 21px; }
.properties-heading { align-items: center; border-bottom: 2px solid var(--ink); display: flex; gap: 11px; padding-bottom: 16px; }
.round-light { background: var(--blue); border: 2px solid var(--ink); border-radius: 50%; box-shadow: 2px 2px 0 var(--ink); height: 20px; width: 20px; }
.properties-heading h2 { font-size: 1.25rem; margin: 2px 0 0; }
.alignment-tools { background: #fffaf0; border: 2px solid var(--ink); border-top: 7px solid var(--green); margin-top: 16px; padding: 10px; }
.alignment-tools[hidden] { display: none; }
.alignment-tools > strong { display: block; font-size: .72rem; margin-bottom: 8px; text-transform: uppercase; }
.alignment-tools > div { display: grid; gap: 5px; grid-template-columns: repeat(2, 1fr); }
.alignment-tools button { background: var(--paper); border: 1.5px solid var(--ink); cursor: pointer; font: inherit; font-size: .65rem; font-weight: 850; min-height: 32px; text-transform: uppercase; }
.empty-properties { color: var(--muted-ink); padding: 50px 12px; text-align: center; }
.empty-properties[hidden], #object-properties[hidden], [data-field][hidden] { display: none; }
.empty-properties div { border: 2px solid var(--ink); color: var(--ink); display: grid; font-size: 1.6rem; height: 54px; margin: auto; place-items: center; transform: rotate(-4deg); width: 54px; }
.empty-properties p { font-size: .85rem; line-height: 1.5; }
#object-properties { display: grid; gap: 18px; padding-top: 20px; }
#object-properties > label { display: grid; font-size: .75rem; font-weight: 900; gap: 7px; text-transform: uppercase; }
#object-properties input, #object-properties select, #object-properties textarea { background: #fffaf0; border: 2px solid var(--ink); font-size: .85rem; padding: 10px; }
.station-role-toggle { align-items: start; background: #e8effc; border: 2px solid var(--blue); cursor: pointer; display: grid !important; gap: 9px !important; grid-template-columns: auto 1fr; padding: 10px; text-transform: none !important; }
#object-properties .station-role-toggle input { accent-color: var(--blue); height: 19px; margin: 1px 0 0; padding: 0; width: 19px; }
.station-role-toggle span { display: grid; gap: 3px; }
.station-role-toggle strong { font-size: .78rem; text-transform: uppercase; }
.station-role-toggle small { color: var(--muted-ink); font-size: .7rem; font-weight: 650; line-height: 1.35; }
.equipment-editor { border-top: 6px solid var(--yellow); padding-top: 10px; }
.equipment-title { align-items: center; display: flex; justify-content: space-between; }
.equipment-title strong { font-size: .8rem; text-transform: uppercase; }
.equipment-title button { background: none; border: 0; color: var(--blue); cursor: pointer; font-weight: 900; }
.equipment-editor > p { color: var(--muted-ink); font-size: .75rem; line-height: 1.4; }
#equipment-list { display: grid; gap: 8px; }
.equipment-row { display: grid; grid-template-columns: 1fr 88px 28px; }
.equipment-row input, .equipment-row select { min-width: 0; padding: 7px !important; }
.equipment-row button { background: var(--red); border: 2px solid var(--ink); color: white; cursor: pointer; font-weight: 900; }
.station-log { border-top: 6px solid var(--blue); padding-top: 10px; }
.station-log > p { color: var(--muted-ink); font-size: .75rem; line-height: 1.4; }
#station-log-list { display: grid; gap: 9px; margin-bottom: 12px; }
.station-log-entry { background: #fffaf0; border: 1.5px solid var(--ink); padding: 8px; }
.station-log-entry > div { align-items: baseline; display: flex; gap: 6px; justify-content: space-between; margin-bottom: 6px; }
.station-log-entry strong { font-size: .72rem; }
.station-log-entry time { color: var(--muted-ink); font-size: .62rem; }
.station-log-entry textarea { border-width: 1px !important; font-size: .76rem !important; min-height: 60px; padding: 7px !important; }
.station-log-empty { color: var(--muted-ink); font-size: .75rem; font-style: italic; margin: 0; }
.station-log-new { display: grid; font-size: .7rem; font-weight: 900; gap: 5px; text-transform: uppercase; }
#add-station-log { background: var(--blue); border: 2px solid var(--ink); color: white; cursor: pointer; font: inherit; font-size: .7rem; font-weight: 900; margin-top: 7px; min-height: 36px; text-transform: uppercase; width: 100%; }
.object-actions { border-top: 2px solid var(--ink); display: flex; gap: 10px; padding-top: 18px; }
.object-actions .secondary-action, .danger-action { border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); flex: 1; font: inherit; font-size: .72rem; font-weight: 900; min-height: 40px; text-transform: uppercase; }
.danger-action { background: var(--red); color: white; cursor: pointer; }
@media (max-width: 980px) {
  .room-builder-body { height: auto; min-height: 100vh; overflow-x: hidden; overflow-y: auto; }
  .room-builder { height: auto; min-height: 100vh; }
  .builder-workspace { flex: none; grid-template-columns: 90px minmax(420px,1fr); grid-template-rows: minmax(520px, 70vh) auto; }
  .properties-panel { border-left: 0; border-top: 3px solid var(--ink); grid-column: 1 / -1; min-height: min-content; overflow: visible; }
  .builder-header { grid-template-columns: auto 1fr; }
  .builder-save { grid-column: 1/-1; justify-content: flex-end; }
}
@media (max-width: 680px) { .room-builder-body { height: auto; min-height: 100vh; overflow: auto; } .room-builder { height: auto; min-height: 100vh; } .builder-header { grid-template-columns: 1fr; gap: 8px; } .builder-title { border-left: 0; padding-left: 0; } .builder-save { grid-column: auto; justify-content: space-between; } .builder-workspace { display: flex; flex-direction: column; } .builder-tools { border-bottom: 3px solid var(--ink); border-right: 0; display: grid; grid-template-columns: repeat(5,1fr); overflow-x: auto; } .builder-tools hr, .tool-heading { display: none; } .builder-tools button, .tool-upload { min-width: 65px; } .canvas-column { min-height: 620px; overflow: visible; } .canvas-guide { align-items: flex-start; flex-direction: column; gap: 8px; } }

/* Room calendar: compact week planner with tactile scheduling controls. */
.schedule-body { background: var(--paper); color: var(--ink); font-family: Inter,ui-sans-serif,system-ui,sans-serif; margin: 0; min-height: 100vh; }
.schedule-shell { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
.schedule-header { align-items: center; background: var(--paper); border-bottom: 3px solid var(--ink); display: grid; gap: 25px; grid-template-columns: 210px 1fr; min-height: 90px; padding: 12px 26px; }
.schedule-brand { color: inherit; }.schedule-brand .labhand-logo { --logo-size: 31px; }.schedule-header h1 { font-size: 1.45rem; margin: 1px 0; }.schedule-header .secondary-action { font-size: .7rem; }
.schedule-toolbar { align-items: center; background: #fffaf0; border-bottom: 2px solid var(--ink); display: flex; justify-content: space-between; min-height: 62px; padding: 9px 22px 9px 250px; }
.schedule-toolbar>div { align-items:center;display:flex;gap:8px }.schedule-toolbar h2 { font-size:1rem;margin:0 0 0 9px }.schedule-toolbar .secondary-action,.icon-action { background:var(--paper);border:1.5px solid var(--ink);box-shadow:2px 2px 0 var(--ink);cursor:pointer;font:inherit;font-size:.68rem;font-weight:900;min-height:32px;padding:5px 10px;text-transform:uppercase }.icon-action { font-size:1.1rem;padding:2px 10px }.schedule-toolbar p { align-items:center;display:flex;font-size:.74rem;gap:6px;margin:0 }.schedule-toolbar .round-light { background:var(--green);height:13px;width:13px }
.schedule-workspace { display:grid;flex:1;grid-template-columns:230px minmax(720px,1fr);min-height:0 }.section-bank { background:#29231d;border-right:3px solid var(--ink);color:#fffaf0;overflow-y:auto;padding:20px 14px }.section-bank h2 { font-size:1.15rem;margin:4px 0 }.section-bank>div>p:last-child { color:#c9bfaf;font-size:.75rem;line-height:1.45 }.section-bank .eyebrow { color:var(--yellow) }#section-list { display:grid;gap:10px;margin-top:18px }
.section-token { align-items:center;background:#fffaf0;border:2px solid var(--ink);border-left:8px solid var(--class-color,var(--blue));box-shadow:3px 3px 0 #000;color:var(--ink);cursor:grab;display:grid;font:inherit;gap:7px;grid-template-columns:16px 1fr auto;min-height:78px;padding:9px;text-align:left;width:100% }.section-token:hover { transform:translate(-1px,-1px) }.section-token strong,.section-token small,.section-token em { display:block }.section-token strong{font-size:.76rem}.section-token small{font-size:.65rem;margin-top:3px}.section-token em{color:var(--muted-ink);font-size:.6rem;font-style:normal;margin-top:6px;text-transform:uppercase}.section-token b{background:var(--lcd);border:1.5px solid var(--ink);display:grid;height:21px;place-items:center;width:21px}.drag-dots{color:var(--muted-ink)}
.schedule-key { border-top:1px solid #71675a;display:grid;font-size:.67rem;gap:7px;margin-top:24px;padding-top:14px }.schedule-key span{align-items:center;color:#d7cdbb;display:flex;gap:7px}.schedule-key i{background:var(--yellow);border:1px solid var(--ink);color:var(--ink);display:grid;font-style:normal;font-weight:900;height:18px;place-items:center;width:18px}
.week-panel{background:#fffaf0;display:flex;flex-direction:column;min-height:0;min-width:0}.week-header{border-bottom:2px solid var(--ink);display:grid;flex:0 0 62px;grid-template-columns:70px repeat(5,1fr);height:62px}.week-header>div{align-items:center;border-left:1px solid #c9bda9;display:flex;gap:8px;justify-content:center}.week-header span{color:var(--muted-ink);font-size:.66rem;font-weight:900;text-transform:uppercase}.week-header strong{font-family:"Courier New",monospace;font-size:1.3rem}.week-header .is-today strong{background:var(--blue);border:2px solid var(--ink);border-radius:50%;color:white;display:grid;height:36px;place-items:center;width:36px}.week-scroll{flex:1;min-height:0;overflow:auto}.week-grid{display:grid;grid-template-columns:70px repeat(5,1fr);height:936px;position:relative}.time-axis{position:relative}.time-axis span{color:var(--muted-ink);font-family:"Courier New",monospace;font-size:.62rem;position:absolute;right:10px;transform:translateY(-50%)}.day-column{background:repeating-linear-gradient(to bottom,transparent 0,transparent 35px,#ded3c1 35px,#ded3c1 36px,transparent 36px,transparent 71px,#ad9f8b 71px,#ad9f8b 72px);border-left:1px solid #c9bda9;position:relative}.day-column.drop-target{background-color:#e8effc}
.calendar-event{background:var(--class-soft,#afc9f4);border:2px solid var(--ink);box-shadow:2px 2px 0 var(--ink);cursor:pointer;left:4px;min-height:36px;overflow:hidden;padding:7px 8px;position:absolute;text-align:left;width:calc(100% - 8px);z-index:2}.calendar-event strong,.calendar-event span,.calendar-event em{display:block}.calendar-event strong{font-size:.7rem}.calendar-event span{font-family:"Courier New",monospace;font-size:.6rem;margin-top:3px}.calendar-event em{font-size:.6rem;font-style:normal;font-weight:900;margin-top:3px;text-transform:uppercase}.calendar-event.is-excluded{background:#d9d0c2;opacity:.72;text-decoration:line-through}.resize-handle{background:var(--ink);bottom:3px;cursor:ns-resize;height:4px;left:35%;position:absolute;width:30%}
.schedule-modal[hidden]{display:none}.schedule-modal{display:grid;inset:0;place-items:center;position:fixed;z-index:50}.schedule-modal__backdrop{background:rgba(23,19,15,.62);inset:0;position:absolute}.schedule-modal>article{background:var(--paper);border:3px solid var(--ink);box-shadow:9px 9px 0 var(--ink);max-height:90vh;overflow:auto;padding:25px;position:relative;width:min(440px,calc(100% - 28px))}.schedule-modal h2{font-size:1.4rem;margin:4px 0}.schedule-summary{background:var(--lcd);border:2px solid var(--ink);font-family:"Courier New",monospace;font-size:.74rem;font-weight:900;padding:10px}.schedule-modal form{display:grid;gap:18px}.schedule-modal fieldset{border:0;margin:0;padding:0}.schedule-modal legend,.schedule-modal label{font-size:.7rem;font-weight:900;text-transform:uppercase}.weekday-picker{display:flex;gap:7px;margin-top:8px}.weekday-picker input{position:absolute;opacity:0}.weekday-picker span{background:#fffaf0;border:2px solid var(--ink);cursor:pointer;display:grid;height:38px;place-items:center;width:38px}.weekday-picker input:checked+span{background:var(--blue);color:white;box-shadow:2px 2px 0 var(--ink)}.schedule-modal form>label{display:grid;gap:6px}.schedule-modal input[type=date]{background:#fffaf0;border:2px solid var(--ink);font:inherit;padding:9px}.exception-panel{border-top:6px solid var(--red);padding-top:10px}.exception-panel>strong{font-size:.74rem;text-transform:uppercase}.exception-panel>p{color:var(--muted-ink);font-size:.72rem}.exception-panel button{background:#fffaf0;border:1.5px solid var(--ink);cursor:pointer;font:inherit;font-size:.66rem;font-weight:800;margin:0 5px 5px 0;padding:6px}.exception-panel span{color:var(--muted-ink);font-size:.7rem}
.calendar-range{align-items:end!important;display:flex!important;gap:6px!important}.calendar-range label{display:grid;font-size:.58rem;font-weight:900;gap:2px;text-transform:uppercase}.calendar-range select{background:var(--paper);border:1.5px solid var(--ink);font:inherit;font-size:.68rem;font-weight:800;padding:5px}.calendar-range>span{color:var(--muted-ink);font-size:.65rem;padding-bottom:7px}.calendar-event{cursor:grab;padding-right:8px;padding-bottom:20px}.calendar-event:active{cursor:grabbing}.event-skip{align-items:center;background:#fffaf0;border:2px solid var(--ink);bottom:4px;cursor:pointer;display:flex;font:inherit;height:15px;justify-content:center;padding:0;position:absolute;right:4px;top:auto;width:15px}.event-skip::after{content:''}.calendar-event.is-excluded .event-skip::after{content:'×';font-size:14px;font-weight:900;line-height:10px}.calendar-event.is-excluded .event-skip{background:var(--paper)}
.calendar-drag-preview{background:rgba(29,95,209,.18);border:2px dashed var(--blue);left:4px;pointer-events:none;position:absolute;width:calc(100% - 8px);z-index:5}.schedule-form-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.remove-schedule{background:transparent;border:0;color:var(--red);cursor:pointer;font:inherit;font-size:.66rem;font-weight:900;padding:8px 0;text-decoration:underline;text-transform:uppercase;text-underline-offset:3px}.remove-schedule:hover{color:var(--ink)}
@media(max-width:800px){.schedule-header{grid-template-columns:1fr auto}.schedule-header>div{grid-column:1/-1;grid-row:2}.schedule-toolbar{align-items:flex-start;gap:8px;padding-left:12px}.schedule-toolbar p{display:none}.schedule-workspace{display:flex;flex-direction:column;overflow:auto}.section-bank{border-bottom:3px solid var(--ink);border-right:0;flex:0 0 auto}.section-bank #section-list{display:flex;overflow:auto}.section-token{flex:0 0 210px}.week-panel{flex:0 0 700px}.schedule-shell{height:auto;min-height:100vh;overflow:visible}}
.remove-section-form { margin-top: 9px; text-align: right; }
.remove-section-form button { background: transparent; border: 0; color: var(--red); cursor: pointer; font: inherit; font-size: .66rem; font-weight: 900; padding: 5px 0; text-decoration: underline; text-transform: uppercase; text-underline-offset: 3px; }
.remove-section-form button:hover { color: var(--ink); }
.section-room-actions { align-self: end; display: grid; gap: 7px; }
.section-room-actions .remove-section-form { margin-top: 0; text-align: left; }
.calendar-room-picker { border-bottom: 1px solid #71675a; display: grid; gap: 6px; margin: -3px 0 18px; padding-bottom: 16px; }
.calendar-room-picker label { color: var(--yellow); font-size: .66rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.calendar-room-picker select { background: #fffaf0; border: 2px solid var(--ink); color: var(--ink); font: inherit; font-size: .76rem; font-weight: 850; padding: 9px; width: 100%; }
.recurrence-icon { align-items: center; background: #fffaf0; border: 1px solid var(--ink); border-radius: 50%; display: flex; font-size: .72rem; height: 18px; justify-content: center; position: absolute; right: 5px; top: 5px; width: 18px; }
.calendar-event:has(.recurrence-icon) { padding-right: 29px; }
.section-schedule-time { align-items: center; color: var(--blue) !important; display: flex; font-family: "Courier New", monospace; font-weight: 900; gap: 5px; margin-bottom: 5px !important; }
.section-schedule-time span { align-items: center; border: 1px solid var(--blue); border-radius: 50%; display: inline-flex; flex: 0 0 20px; font-family: Arial, sans-serif; font-size: 1rem; height: 20px; justify-content: center; line-height: 1; padding: 0 0 1px; width: 20px; }

.class-heading-actions { align-items: flex-end; display: grid; gap: 10px; justify-items: end; }
.roster-modal-trigger { font-size: .68rem; padding: 8px 11px; }
.faculty-roster-sections { display: grid; gap: 18px; }
.faculty-roster-sections > section { border: 2px solid var(--ink); padding: 16px; }
.faculty-roster-sections h3 { margin: 0; }
.roster-add-form { border-top: 2px solid var(--ink); margin-top: 14px; padding-top: 14px; }

/* Rich lab content tools. */
.toolbar-divider { border-left: 2px solid var(--ink); margin: 0 3px; }
.markdown-hint { background: var(--lcd); border-bottom: 1px solid rgba(23,19,15,.35); color: var(--muted-ink); font-size: .75rem; margin: 0; padding: 7px 12px; }
.markdown-hint code { color: var(--ink); font-weight: 900; }
.paste-status { background: var(--green); border-bottom: 2px solid var(--ink); color: var(--ink); font-size: .75rem; font-weight: 800; margin: 0; padding: 0 12px; transition: padding .15s ease; }
.paste-status:empty { border: 0; padding-block: 0; }
.paste-status:not(:empty) { padding-block: 7px; }
.paste-image-dialog { max-width: 680px; }
.paste-upload-list { display: grid; gap: 12px; margin-top: 18px; }
.paste-upload-item { align-items: center; background: var(--paper); border: 2px solid var(--ink); display: grid; gap: 12px; grid-template-columns: 84px 1fr; padding: 10px; }
.paste-upload-item img { background: #fff; border: 2px solid var(--ink); height: 68px; object-fit: contain; width: 84px; }
.paste-upload-item strong, .paste-upload-item span { display: block; overflow-wrap: anywhere; }
.paste-upload-item span { color: var(--muted-ink); font-size: .75rem; margin-top: 4px; }
.paste-upload-item.is-complete { border-left: 10px solid var(--green); }
.paste-upload-item.is-error { border-left: 10px solid var(--red); }
.paste-upload-actions { display: flex; justify-content: flex-end; margin-top: 18px; }
.wysiwyg-editor img { border: 2px solid var(--ink); display: block; height: auto; margin: 12px auto 4px; max-height: 520px; max-width: 100%; }
.wysiwyg-editor figure { margin: 14px 0; }
.wysiwyg-editor figure[data-course-image], .latex-inline, .latex-block { cursor: pointer; }
.wysiwyg-editor figure[data-course-image]:focus, .latex-inline:focus, .latex-block:focus { outline: 4px solid var(--yellow); outline-offset: 3px; }
.wysiwyg-editor figcaption { color: var(--muted-ink); font-size: .75rem; text-align: center; }
.wysiwyg-editor table { border-collapse: collapse; margin: 14px 0; width: 100%; }
.wysiwyg-editor th, .wysiwyg-editor td { border: 2px solid var(--ink); height: 1.5rem; line-height: 1.5; min-width: 80px; padding: 8px; vertical-align: top; }
.wysiwyg-editor th { background: var(--yellow); text-align: left; }
.latex-inline { color: var(--ink); display: inline-block; text-align: center; }
.latex-block { color: var(--ink); margin: 14px 0; overflow-x: auto; text-align: center; }
.math-preview mjx-container { margin: 0 !important; }
.asset-dialog { background: var(--paper); border: 3px solid var(--ink); box-shadow: 8px 8px 0 var(--ink); color: var(--ink); max-height: min(760px, 88vh); max-width: 820px; padding: 0; width: calc(100% - 32px); }
.asset-dialog::backdrop { background: rgba(23,19,15,.6); }
.asset-dialog-header { align-items: center; background: var(--yellow); border-bottom: 3px solid var(--ink); display: flex; justify-content: space-between; padding: 18px; }
.asset-dialog-header h2 { margin: 2px 0 0; }
.asset-dialog-header button { background: transparent; border: 0; cursor: pointer; font-size: 1.8rem; font-weight: 900; }
.asset-upload { align-items: end; border-bottom: 2px solid var(--ink); display: grid; gap: 12px; grid-template-columns: 1fr auto; padding: 16px; }
.asset-upload label { display: grid; font-size: .72rem; font-weight: 900; gap: 6px; text-transform: uppercase; }
.asset-upload input { background: #fff; border: 2px solid var(--ink); padding: 8px; }
.asset-status { color: var(--muted-ink); font-size: .8rem; margin: 12px 16px 0; }
.course-image-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); max-height: 430px; overflow: auto; padding: 16px; }
.course-image { background: #fff; border: 2px solid var(--ink); cursor: pointer; display: grid; padding: 0; text-align: left; }
.course-image:hover, .course-image:focus { box-shadow: 4px 4px 0 var(--blue); transform: translate(-2px,-2px); }
.course-image img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.course-image span { border-top: 2px solid var(--ink); font-size: .72rem; font-weight: 900; overflow-wrap: anywhere; padding: 8px; }
.course-image-card { display: grid; margin: 0; }
.course-image-actions { display: grid; grid-template-columns: 1fr 1fr; }
.course-image-actions button { background: var(--paper); border: 2px solid var(--ink); border-top: 0; cursor: pointer; font-size: .68rem; font-weight: 900; padding: 7px 4px; text-transform: uppercase; }
.course-image-actions button + button { border-left: 0; color: var(--red); }
.course-image-actions button:hover, .course-image-actions button:focus { background: var(--yellow); }
.asset-empty { grid-column: 1 / -1; padding: 30px; text-align: center; }
@media (max-width: 600px) { .asset-upload { align-items: stretch; grid-template-columns: 1fr; } .course-image-grid { grid-template-columns: repeat(2, 1fr); } }

/* Organization materials inventory */
.materials-panel { overflow-x:visible; }
.materials-panel table { min-width:0; table-layout:fixed; width:100%; }
.materials-panel th,.materials-panel td { overflow-wrap:anywhere; padding:10px 8px; }
.materials-panel th:nth-child(1) { width:16%; }
.materials-panel th:nth-child(2),.materials-panel th:nth-child(3),.materials-panel th:nth-child(4) { width:10%; }
.materials-panel th:nth-child(5),.materials-panel th:nth-child(6) { width:15%; }
.materials-panel th:last-child { width:14%; }
.materials-panel th input { background:#fff; border:1px solid var(--ink); display:block; font:inherit; margin-top:7px; min-width:0; padding:5px; width:100%; }
.materials-panel td small,.material-history-card td small { color:var(--muted-ink); display:block; font-size:.68rem; margin-top:3px; }
.material-name-trigger { background:transparent; border:0; color:var(--blue); cursor:pointer; font:inherit; font-weight:900; padding:0; text-align:left; text-decoration:underline; text-underline-offset:3px; }
.material-actions { min-width:0; text-align:left; white-space:normal; }
.material-actions form,.material-actions button { display:block; margin:0 0 4px; }
.material-actions button:disabled { color:var(--muted-ink); cursor:not-allowed; text-decoration:none; }
.material-check-toggle { align-items:flex-start; border:2px solid var(--ink); display:flex!important; flex-direction:row!important; gap:10px; padding:12px; }
.material-check-toggle input { margin-top:3px; width:auto!important; }
.material-check-toggle small { color:var(--muted-ink); display:block; font-weight:500; margin-top:3px; }
.material-history-card { width:min(1040px,calc(100% - 36px)); }
.material-added-meta { background:#eee5d5; border-left:5px solid var(--blue); color:var(--muted-ink); font-size:.8rem; padding:9px 12px; }
.table-action { background:var(--yellow); border:2px solid var(--ink); color:var(--ink); cursor:pointer; font:inherit; font-size:.7rem; font-weight:850; padding:5px 7px; text-transform:uppercase; }
@media(max-width:800px){.materials-panel{overflow-x:auto}.materials-panel table{min-width:680px}.materials-panel th,.materials-panel td{padding:9px 7px}}

/* Class-scoped materials */
.class-materials-card { width:min(1180px,calc(100% - 36px)); }
.class-materials-heading { align-items:center; display:flex; gap:20px; justify-content:space-between; margin-bottom:18px; padding-right:52px; }
.class-materials-heading h2 { margin-bottom:0; }
.class-materials-heading .primary-action { white-space:nowrap; }
.class-heading-actions .class-materials-trigger { background:var(--yellow); color:var(--ink); min-width:112px; }
.class-heading-actions .class-materials-trigger:hover { background:#f5c928; }
@media(max-width:800px){.class-materials-heading{align-items:flex-start;flex-direction:column;padding-right:52px}.class-materials-card{width:calc(100% - 22px)}}

/* Class settings and Canvas grade transport */
.class-settings-card { max-height: min(860px,92vh); overflow-y: auto; width: min(760px,calc(100% - 36px)); }
.class-settings-form { display: grid; gap: 18px; }
.class-settings-form section { display: grid; gap: 10px; }
.class-settings-form section h3 { margin: 0; }
.canvas-settings-panel { background: #fffaf0; border: 3px solid var(--ink); border-top: 9px solid var(--blue); box-shadow: 5px 5px 0 var(--ink); padding: 18px; }
.canvas-settings-heading { align-items: center; display: flex; gap: 16px; justify-content: space-between; }
.canvas-connection-status { background: var(--paper); border: 2px solid var(--ink); color: var(--muted-ink); font-family: "Courier New",monospace; font-size: .72rem; font-weight: 900; padding: 7px 9px; text-transform: uppercase; white-space: nowrap; }
.canvas-connection-status.is-connected { background: var(--lcd); color: var(--ink); }
.canvas-settings-grid { display: grid; gap: 12px; grid-template-columns: repeat(2,minmax(0,1fr)); }
.canvas-settings-grid label { min-width: 0; }
.canvas-settings-grid input { background: white; border: 2px solid var(--ink); min-height: 44px; padding: 10px; width: 100%; }
.canvas-settings-grid small { color: var(--muted-ink); display: block; font-size: .68rem; font-weight: 500; margin-top: 5px; text-transform: none; }
.canvas-disconnect { align-items: center; background: #f8dfd9; border: 2px solid var(--red); display: flex!important; flex-direction: row!important; gap: 9px; padding: 10px; }
.canvas-disconnect input { height: 18px; width: 18px!important; }
@media(max-width:650px){.canvas-settings-grid{grid-template-columns:1fr}.canvas-settings-heading{align-items:flex-start;flex-direction:column}.class-settings-card{width:calc(100% - 22px)}}

/* Student history follows the organization workspace and assigned-class density. */
.usage-history-shell { max-width: 1180px; }
.history-header { align-items: center; }
.history-header h1 { max-width: 18ch; }
.history-gauge { min-width: 170px; }
.history-section { margin-top: 38px; }
.history-lab-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.history-lab-card { background: #fffaf0; border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); padding: 16px; transition: transform .12s ease, box-shadow .12s ease; }
.history-lab-card:hover { box-shadow: 2px 2px 0 var(--ink); transform: translate(1px,1px); }
.history-lab-card.is-selected { background: var(--lcd); box-shadow: 1px 1px 0 var(--ink); transform: translate(2px,2px); }
.history-lab-card:nth-child(4n+1) { border-top: 7px solid var(--blue); }
.history-lab-card:nth-child(4n+2) { border-top: 7px solid var(--yellow); }
.history-lab-card:nth-child(4n+3) { border-top: 7px solid var(--green); }
.history-lab-card:nth-child(4n) { border-top: 7px solid var(--red); }
.history-lab-card button { appearance: none; background: transparent; border: 0; color: inherit; cursor: pointer; display: block; font: inherit; padding: 0; text-align: left; width: 100%; }
.history-lab-card button:focus-visible { outline: 3px solid var(--blue); outline-offset: 7px; }
.history-lab-number { color: var(--muted-ink); display: block; font-family: "Courier New", monospace; font-size: .72rem; font-weight: 900; letter-spacing: .06em; }
.history-lab-title { display: block; font-size: 1.05rem; font-weight: 800; letter-spacing: -.02em; margin: 7px 0 16px; }
.history-lab-card small, .history-lab-card strong { display: block; }
.history-lab-card strong { font-family: "Courier New", monospace; font-size: .82rem; }
.history-lab-card small { color: var(--muted-ink); font-size: .72rem; margin-top: 3px; }
.history-progress { background: var(--paper); border: 1px solid var(--ink); display: block; height: 10px; margin-bottom: 10px; }
.history-progress i { background: var(--green); display: block; height: 100%; }
.history-filters { align-items: end; background: #fffaf0; border: 1px solid rgba(23,19,15,.45); display: grid; gap: 12px; grid-template-columns: minmax(180px,1fr) minmax(160px,.7fr) auto auto; margin-bottom: 12px; padding: 14px; }
.history-filters label { display: grid; font-size: .72rem; font-weight: 900; gap: 5px; text-transform: uppercase; }
.history-filters select, .history-filters input { background: white; min-height: 42px; }
.history-filters > span { color: var(--muted-ink); font-family: "Courier New", monospace; font-size: .78rem; font-weight: 900; padding-bottom: 12px; text-align: right; }
.history-filter-chip { align-items: center; background: var(--lcd); border: 1px solid var(--ink); display: inline-flex; font-size: .75rem; font-weight: 900; gap: 10px; margin: 0 0 12px; padding: 6px 8px 6px 10px; text-transform: uppercase; }
.history-filter-chip[hidden] { display: none; }
.history-filter-chip button { background: transparent; border: 0; cursor: pointer; font-size: 1rem; font-weight: 900; line-height: 1; padding: 0; }
.usage-timeline { list-style: none; margin: 0; padding: 0; }
.usage-event + .usage-event { margin-top: 8px; }
.usage-event details { background: #fffaf0; border: 1px solid rgba(23,19,15,.45); }
.usage-event summary { align-items: center; cursor: pointer; display: grid; gap: 12px; grid-template-columns: 32px 82px minmax(0,1fr) 22px; list-style: none; padding: 12px 14px; }
.usage-event summary::-webkit-details-marker { display: none; }
.usage-event details[open] summary { background: var(--lcd); border-bottom: 1px solid rgba(23,19,15,.45); }
.usage-dot { align-items: center; background: var(--blue); border: 1px solid var(--ink); border-radius: 50%; color: white; display: flex; font-family: "Courier New", monospace; font-size: .65rem; font-weight: 900; height: 28px; justify-content: center; width: 28px; }
.usage-event--failed .usage-dot { background: var(--red); }
.usage-event--signoff .usage-dot, .usage-event--faq .usage-dot { background: var(--green); }
.usage-event--ai .usage-dot { background: var(--yellow); color: var(--ink); }
.usage-event time { font-family: "Courier New", monospace; font-size: .75rem; font-weight: 900; text-transform: uppercase; }
.usage-event time small, .usage-event summary div span { color: var(--muted-ink); display: block; font-size: .72rem; margin-top: 2px; }
.usage-event summary div strong { font-size: .9rem; }
.usage-event summary b { font-size: 1.1rem; }
.usage-event details[open] summary b { transform: rotate(45deg); }
.usage-detail { background: var(--paper); padding: 10px 14px 12px 140px; }
.usage-detail > div { display: grid; gap: 10px; grid-template-columns: 120px minmax(0,1fr); padding: 8px 0; }
.usage-detail > div + div { border-top: 1px solid rgba(23,19,15,.2); }
.usage-detail dt { color: var(--muted-ink); font-size: .68rem; font-weight: 900; text-transform: uppercase; }
.usage-detail dd { font-size: .82rem; margin: 0; overflow-wrap: anywhere; }
.student-history-link { color: var(--blue); font-size: .75rem; font-weight: 900; text-transform: uppercase; }
.history-empty { background: #fffaf0; border: 1px dashed var(--muted-ink); color: var(--muted-ink); padding: 24px; text-align: center; }
@media (max-width: 650px) {
  .history-filters { grid-template-columns: 1fr; }
  .history-filters > span { padding: 0; text-align: left; }
  .history-filters .secondary-action { justify-self: start; }
  .usage-event summary { gap: 8px; grid-template-columns: 30px 66px minmax(0,1fr); }
  .usage-event summary > b { display: none; }
  .usage-detail { padding: 10px 14px; }
  .usage-detail > div { grid-template-columns: 1fr; gap: 3px; }
}
.queue-materials { background: color-mix(in srgb, var(--paper) 85%, var(--blue)); border: 2px solid var(--ink); display: grid; gap: 10px; grid-column: 2 / -1; margin: 8px 0; padding: 12px; }
.queue-materials legend { font-weight: 900; text-transform: uppercase; }
.queue-materials > div { border-top: 1px solid var(--ink); display: grid; gap: 5px; padding-top: 8px; }
.queue-materials small, .queue-materials p { color: var(--muted-ink); margin: 0; }
@media (max-width: 760px) { .material-builder-heading { align-items: stretch; flex-direction: column; } .material-action-row { grid-template-columns: 1fr; } }

/* Office-hours mode reuses the room calendar instrument panel. */
.office-hours-token{width:100%}.office-hours-event{cursor:default;overflow:hidden;padding:8px 24px 8px 8px!important}.office-hours-event span,.office-hours-event small{display:block;font-size:.65rem;line-height:1.25}.office-hours-event small{margin-top:4px}.office-hours-event.is-locked{border-style:dashed;filter:saturate(.25)}.office-hours-event>button{background:var(--paper);border:2px solid var(--ink);cursor:pointer;font-weight:900;line-height:18px;padding:0;position:absolute;right:4px;top:4px;width:22px}.office-hours-event>b{position:absolute;right:7px;top:7px}.office-hours-course-picker{display:grid;gap:6px;margin-top:8px;max-height:180px;overflow:auto}.office-hours-course-picker label{align-items:center;background:#fffaf0;border:2px solid var(--ink);display:flex;gap:8px;padding:8px}.office-hours-course-picker input{accent-color:var(--blue);height:18px;width:18px}.schedule-modal .office-hours-course-picker span{font-size:.72rem;text-transform:none}

.student-calendar-event.is-office-hours{background:#dcefd9;border-left:7px solid var(--green);border-style:dashed;border-left-style:solid}.office-hours-badge{background:var(--ink);color:var(--paper);display:inline-block;font-size:.55rem;letter-spacing:.04em;margin-right:5px;padding:2px 3px}.student-calendar-event.is-office-hours span{font-weight:800}
.admin-office-hours-event{background:#dcefd9;border-left:7px solid var(--green);border-style:dashed;border-left-style:solid}.admin-office-hours-event strong,.admin-office-hours-event span{display:block}.admin-office-hours-event strong b{background:var(--ink);color:var(--paper);font-size:.55rem;margin-right:5px;padding:2px 3px}.admin-office-hours-event span{font-size:.65rem}.office-hours-filter{align-items:center!important;display:flex!important;gap:6px!important;margin-left:10px}.office-hours-filter input{accent-color:var(--green);height:18px;width:18px}
.student-calendar-event.is-office-hours .office-hours-info{background:var(--paper);border:1.5px solid var(--ink);cursor:pointer;font-size:.58rem;font-weight:900;margin-top:5px;padding:3px 5px;text-transform:uppercase}.student-office-hours-modal[hidden]{display:none}.student-office-hours-modal{display:grid;inset:0;place-items:center;position:fixed;z-index:70}.student-office-hours-modal__backdrop{background:rgba(23,19,15,.62);inset:0;position:absolute}.student-office-hours-modal>article{background:var(--paper);border:3px solid var(--ink);box-shadow:8px 8px 0 var(--ink);max-height:80vh;overflow:auto;padding:24px;position:relative;width:min(430px,calc(100% - 28px))}.student-office-hours-modal>article>button{background:var(--paper);border:2px solid var(--ink);cursor:pointer;font-size:1.2rem;font-weight:900;position:absolute;right:12px;top:12px}.student-office-hours-modal h2{margin:4px 0 16px}.student-office-hours-modal [data-office-details]{display:grid;gap:10px}.student-office-hours-modal section{border-left:7px solid var(--green);background:#dcefd9;padding:12px}.student-office-hours-modal section strong,.student-office-hours-modal section span{display:block}.student-office-hours-modal section span{font-size:.82rem;margin-top:4px}
.student-calendar-event.is-office-hours{display:flex;flex-direction:column}.student-calendar-event.is-office-hours .office-hours-info{align-self:flex-start;margin-top:auto}.student-office-hours-modal section time{display:block;font-size:.72rem;font-weight:900;margin-top:4px}.office-hours-session-list{border-top:3px solid var(--ink);display:grid;gap:7px;margin-top:14px;padding-top:12px}.office-hours-session-list>p{color:var(--muted-ink);font-size:.72rem;margin:0}.office-hours-session{display:grid;grid-template-columns:1fr auto}.office-hours-session>button{background:#fffaf0;border:2px solid var(--ink);cursor:pointer;font:inherit;text-align:left}.office-hours-session>button:first-child{display:grid;gap:2px;padding:8px}.office-hours-session>button:last-child{border-left:0;font-size:1rem;font-weight:900;padding:5px 9px}.office-hours-session span,.office-hours-session small{font-size:.65rem}.office-hours-session small{color:var(--muted-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
