.geo-module {
  --geo-ink: #142b32;
  --geo-muted: #465c63;
  --geo-line: #b8c9cc;
  --geo-accent: #10664d;
  color: var(--geo-ink);
  font-family: Arial, Helvetica, sans-serif;
  font-size: 16px;
  line-height: 1.5;
  max-width: 880px;
  margin-inline: auto;
  overflow-wrap: anywhere;
}
.geo-module, .geo-module * { box-sizing: border-box; }
.geo-module h2, .geo-module p { margin: 0; }
.geo-controls { padding: 20px; background: #f0f7f3; border: 1px solid #b8d3c6; border-radius: 16px; }
.geo-module .geo-controls-title { font-size: 1.3rem; margin-bottom: 8px; }
.geo-controls-row { display: flex; align-items: end; gap: 12px; flex-wrap: wrap; margin-top: 16px; }
.geo-field { display: grid; gap: 5px; flex: 1 1 240px; min-width: 0; font-weight: 700; }
.geo-module select, .geo-module button {
  min-height: 44px;
  max-width: 100%;
  padding: 10px 12px;
  font: inherit;
  border: 1px solid var(--geo-accent);
  border-radius: 8px;
}
.geo-module select { width: 100%; background: white; color: var(--geo-ink); }
.geo-module button { background: var(--geo-accent); color: white; cursor: pointer; font-weight: 700; }
.geo-module :is(button, select):disabled { opacity: .55; cursor: default; }
.geo-module :is(button, select, summary):focus-visible { outline: 3px solid #994311; outline-offset: 3px; }
.geo-module .geo-print-note { font-size: .88rem; color: var(--geo-muted); margin-top: 12px; }
.geo-module .geo-status { margin-top: 12px; min-height: 1.5em; font-weight: 700; }
.geo-sheet { background: white; border: 1px solid var(--geo-line); border-radius: 8px; padding: 28px; margin-top: 24px; }
.geo-eyebrow, .geo-sheet-meta, .geo-sheet-footer { font-size: .85rem; color: var(--geo-muted); }
.geo-module .geo-sheet-header h2 { font-size: 1.6rem; line-height: 1.25; margin: 5px 0; }
.geo-module .geo-student { margin: 18px 0 12px; display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; }
.geo-name-line, .geo-date-line { display: inline-block; border-bottom: 1px solid var(--geo-muted); height: 1em; }
.geo-name-line { width: 38%; min-width: 90px; }
.geo-date-line { width: 20%; min-width: 60px; }
.geo-module .geo-instructions { font-size: .94rem; margin-top: 12px; }
.geo-task-list, .geo-key-list { padding-left: 1.7em; margin: 16px 0; }
.geo-task, .geo-key-entry { padding: 10px 0; break-inside: avoid; page-break-inside: avoid; }
.geo-task::marker, .geo-key-entry::marker { font-weight: 700; }
.geo-working { height: 30px; border-bottom: 1px dotted var(--geo-line); margin: 2px 0 6px; }
.geo-blank { display: inline-block; width: 50px; height: 1em; border-bottom: 1px solid var(--geo-muted); }
.geo-answer-space { line-height: 1.8; }
.geo-key-details { margin-top: 20px; }
.geo-key-details summary { padding: 14px; border: 1px solid var(--geo-line); border-radius: 8px; cursor: pointer; font-weight: 700; }
.geo-key-answer { font-weight: 700; }
.geo-module .geo-key-entry p + p { margin-top: 6px; }
.geo-module .geo-sheet-footer { margin-top: 12px; }
.geo-print-frame { position: fixed; width: 1px; height: 1px; bottom: 0; left: -10000px; border: 0; }
body.geo-print-document { margin: 0; background: white; }
.geo-print-document .geo-module { max-width: none; }
@media screen and (max-width: 480px) {
  .geo-controls { padding: 14px; }
  .geo-controls-row { align-items: stretch; }
  .geo-controls-row button { width: 100%; }
  .geo-sheet { padding: 16px 12px; }
  .geo-module .geo-sheet-header h2 { font-size: 1.35rem; }
  .geo-task-list, .geo-key-list { padding-left: 1.5em; }
}
@media print {
  @page { size: A4 portrait; margin: 12mm; }
  .geo-module { max-width: none; margin: 0; color: black; font-size: 11pt; line-height: 1.35; }
  .geo-module .geo-controls, .geo-module .geo-key-details { display: none !important; }
  .geo-module .geo-sheet { margin: 0; padding: 0; border: 0; border-radius: 0; break-after: page; page-break-after: always; }
  .geo-module .geo-sheet:last-child { break-after: auto; page-break-after: auto; }
  .geo-print-document .geo-sheet + .geo-sheet { break-before: page; page-break-before: always; }
  .geo-module .geo-sheet-header h2 { font-size: 19pt; margin: 1.5mm 0; }
  .geo-module .geo-eyebrow, .geo-module .geo-sheet-meta, .geo-module .geo-sheet-footer { font-size: 9pt; color: black; }
  .geo-module .geo-student { margin: 5mm 0 3mm; }
  .geo-module .geo-instructions { font-size: 10pt; margin-top: 3mm; }
  .geo-module .geo-task-list, .geo-module .geo-key-list { margin: 3mm 0; padding-left: 6mm; }
  .geo-module .geo-task { padding: 2mm 0; }
  .geo-module .geo-key-entry { padding: 2.5mm 0; }
  .geo-module .geo-key-entry p + p { margin-top: 1.5mm; }
  .geo-module .geo-working { height: 8mm; margin: .5mm 0 1mm; border-color: #777; }
  .geo-module .geo-blank { width: 15mm; }
  .geo-module .geo-answer-space { line-height: 1.5; }
  .geo-module .geo-sheet-footer { margin-top: 3mm; }
}
