:root {
  --paper: #f4efe6;
  --cream: #fffaf1;
  --ink: #3e2b22;
  --muted: #7b6a60;
  --red: #c00404;
  --blue: #174f78;
  --sky: #85b3d0;
  --dark: #14191c;
  --rule: rgba(62, 43, 34, 0.19);
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --serif: "Fraunces", Georgia, serif;
  --sans: "Instrument Sans", Arial, sans-serif;
  --mono: "JetBrains Mono", monospace;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: hidden;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
button, input { font: inherit; }
button { touch-action: manipulation; }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.project-nav {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: 58px;
  padding: 0 clamp(20px, 4vw, 62px);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  border-bottom: 1px solid var(--rule);
  background: rgba(244, 239, 230, 0.94);
  backdrop-filter: blur(14px);
  font: 10px/1 var(--mono);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.project-nav a, footer a { min-height: 44px; display: inline-flex; align-items: center; }
.project-nav a { text-decoration: none; }
.project-nav .paper-link {
  justify-self: end;
  padding: 10px 13px;
  color: var(--cream);
  background: var(--red);
  border-radius: 999px;
  transition: transform 150ms var(--ease-out), background-color 150ms ease;
}
.project-nav .paper-link:active { transform: scale(0.97); }

main > section { padding-inline: clamp(20px, 7vw, 110px); }
.eyebrow, .section-label {
  color: var(--red);
  font: 10px/1.4 var(--mono);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.hero {
  min-height: calc(86svh - 58px);
  padding-top: clamp(75px, 9vw, 135px);
  padding-bottom: clamp(75px, 9vw, 135px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.hero h1 {
  margin: 22px 0 29px;
  font: 450 clamp(65px, 10.6vw, 170px)/0.77 var(--serif);
  letter-spacing: -0.07em;
}
.hero h1 em { color: var(--red); font-weight: 350; }
.hero > p {
  max-width: 760px;
  margin: 0;
  color: var(--muted);
  font: 350 clamp(19px, 2vw, 28px)/1.45 var(--serif);
}
.hero .paper-link {
  align-self: flex-start;
  min-height: 44px;
  margin-top: 28px;
  padding: 11px 15px;
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  color: var(--cream);
  background: var(--red);
  font: 10px/1 var(--mono);
  letter-spacing: .06em;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform 150ms var(--ease-out), background-color 150ms ease;
}
.hero .paper-link:active { transform: scale(.97); }

.direction-game {
  padding-top: 0;
  padding-bottom: clamp(80px, 10vw, 145px);
  color: var(--cream);
  background: var(--dark);
}
.game-head {
  margin-inline: calc(clamp(20px, 7vw, 110px) * -1);
  padding: 18px clamp(20px, 7vw, 110px);
  display: flex;
  justify-content: space-between;
  border-block: 1px solid rgba(255, 255, 255, 0.15);
  font: 10px/1.45 var(--mono);
}
.game-head span { display: block; margin-bottom: 6px; color: rgba(255, 255, 255, 0.42); }
.game-head b { font-weight: 500; }
.game-head > div:last-child { text-align: right; }
.game-head i { color: var(--sky); font-style: normal; }
.game-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.55fr);
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}
.film-stage {
  position: relative;
  min-height: 640px;
  border-right: 1px solid rgba(255, 255, 255, 0.15);
  background: #080a0b;
  overflow: hidden;
}
.film-stage video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  filter: saturate(0.88) contrast(1.05);
}
.film-overlay {
  position: absolute;
  inset: 0 0 auto;
  padding: 17px;
  display: flex;
  justify-content: space-between;
  pointer-events: none;
  background: linear-gradient(rgba(0, 0, 0, 0.64), transparent);
  font: 10px/1 var(--mono);
  letter-spacing: 0.08em;
}
.film-controls {
  position: absolute;
  right: 18px;
  bottom: 18px;
  left: 18px;
  padding: 13px 15px;
  background: rgba(10, 13, 15, 0.82);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.18);
}
.film-controls label {
  margin-bottom: 9px;
  display: flex;
  justify-content: space-between;
  color: rgba(255, 255, 255, 0.72);
  font: 10px/1 var(--mono);
}
.film-controls input { width: 100%; min-height: 44px; margin-block: -13px; accent-color: var(--sky); cursor: ew-resize; }
.guess-panel {
  min-width: 0;
  padding: clamp(28px, 4vw, 55px);
  display: flex;
  flex-direction: column;
}
.prompt > span {
  color: var(--sky);
  font: 10px/1 var(--mono);
  text-transform: uppercase;
}
.prompt h2 {
  margin: 21px 0 20px;
  font: 450 clamp(36px, 4vw, 60px)/0.95 var(--serif);
  letter-spacing: -0.04em;
}
.prompt p { color: rgba(255, 255, 255, 0.58); line-height: 1.55; }
.guess-buttons { margin-top: auto; display: grid; gap: 8px; }
.guess-buttons button, .quiet-button, .reveal-actions button, .segmented button, .context-buttons button {
  border: 1px solid rgba(255, 255, 255, 0.24);
  color: var(--cream);
  background: transparent;
  cursor: pointer;
  transition: transform 150ms var(--ease-out), background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}
.guess-buttons button {
  min-height: 56px;
  padding: 0 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.guess-buttons button:active, .quiet-button:active, .reveal-actions button:active, .segmented button:active, .context-buttons button:active { transform: scale(0.97); }
.guess-buttons button:disabled { opacity: 0.35; cursor: not-allowed; }
.playback-buttons { margin-top: 8px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.quiet-button { min-height: 44px; font: 10px/1 var(--mono); }
.key-hint { margin: 14px 0 0; color: rgba(255, 255, 255, 0.58); font: 10px/1.5 var(--mono); }

.reveal { padding-top: 52px; }
.answer-line {
  display: grid;
  grid-template-columns: 120px 0.7fr 1fr;
  gap: 28px;
  align-items: start;
}
.answer-line > span { color: var(--sky); font: 10px/1 var(--mono); }
.answer-line > span.wrong { color: #ff6f67; }
.answer-line h2 { margin: 0; font: 450 clamp(38px, 4.8vw, 70px)/0.95 var(--serif); }
.answer-line p { margin: 0; color: rgba(255, 255, 255, 0.62); font-size: 16px; line-height: 1.6; }
.clip-lab {
  margin-top: 48px;
  padding: clamp(24px, 4vw, 48px);
  border: 1px solid rgba(255, 255, 255, 0.17);
  background: #101416;
}
.lab-heading {
  display: grid;
  grid-template-columns: 1fr minmax(260px, 0.7fr);
  gap: 40px;
  align-items: end;
}
.lab-heading span, .loss-primary > span, .trace-head, fieldset legend {
  color: var(--sky);
  font: 10px/1.4 var(--mono);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.lab-heading h3 { margin: 10px 0 0; font: 450 clamp(30px, 4vw, 55px)/1 var(--serif); }
.lab-heading p { margin: 0; color: rgba(255, 255, 255, 0.53); line-height: 1.6; }
.lab-heading code { color: var(--sky); font-family: var(--mono); font-size: 0.82em; }
.lab-controls {
  margin-top: 38px;
  display: grid;
  grid-template-columns: 1.2fr 0.8fr 1fr;
  gap: 14px;
}
.lab-controls fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.lab-controls legend { margin-bottom: 10px; color: rgba(255, 255, 255, 0.65); }
.segmented, .context-buttons { display: flex; flex-wrap: wrap; gap: 6px; }
.segmented button, .context-buttons button { min-height: 44px; padding: 0 12px; font: 10px/1 var(--mono); }
.segmented button[aria-pressed="true"], .context-buttons button[aria-pressed="true"] {
  color: var(--dark);
  background: var(--sky);
  border-color: var(--sky);
}
.loss-focus {
  margin-top: 34px;
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  border-block: 1px solid rgba(255, 255, 255, 0.15);
}
.loss-primary { padding: 28px 28px 28px 0; }
.loss-primary strong {
  margin-top: 12px;
  display: block;
  color: var(--sky);
  font: 450 clamp(48px, 7vw, 96px)/0.9 var(--serif);
  letter-spacing: -0.05em;
}
.loss-primary strong.negative { color: #ff8c84; }
.loss-primary p { max-width: 700px; margin: 20px 0 0; color: rgba(255, 255, 255, 0.58); line-height: 1.6; }
.loss-pair { display: grid; grid-template-columns: 1fr 1fr; border-left: 1px solid rgba(255, 255, 255, 0.15); }
.loss-pair div { padding: 28px; display: flex; flex-direction: column; justify-content: space-between; }
.loss-pair div + div { border-left: 1px solid rgba(255, 255, 255, 0.15); }
.loss-pair span { color: rgba(255, 255, 255, 0.66); font: 10px/1 var(--mono); text-transform: uppercase; }
.loss-pair b { margin-top: 30px; font: 500 clamp(16px, 2vw, 27px)/1 var(--mono); }
.context-trace { padding-top: 28px; }
.trace-head { display: flex; justify-content: space-between; color: rgba(255, 255, 255, 0.65); }
.trace-bars {
  height: 160px;
  margin-top: 18px;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  align-items: center;
  border-block: 1px solid rgba(255, 255, 255, 0.12);
  background: linear-gradient(to bottom, transparent calc(50% - 0.5px), rgba(255, 255, 255, 0.18) calc(50% - 0.5px), rgba(255, 255, 255, 0.18) calc(50% + 0.5px), transparent calc(50% + 0.5px));
}
.trace-column { position: relative; height: 100%; min-width: 0; }
.trace-column button {
  position: absolute;
  inset: 0;
  width: 100%;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  cursor: pointer;
}
.trace-bar {
  position: absolute;
  left: 24%;
  width: 52%;
  min-height: 3px;
  background: var(--sky);
  transition: opacity 150ms ease;
}
.trace-bar.negative { background: #ff8c84; }
.trace-column[aria-current="true"] .trace-bar { outline: 1px solid var(--cream); outline-offset: 3px; }
.trace-column small, .trace-column em {
  position: absolute;
  right: 0;
  left: 0;
  text-align: center;
  font: 10px/1 var(--mono);
}
.trace-column small { bottom: 8px; color: rgba(255, 255, 255, 0.68); }
.trace-column em { top: 8px; overflow: hidden; color: rgba(255, 255, 255, 0.76); font-style: normal; text-overflow: ellipsis; }
.reveal-actions { margin-top: 24px; display: flex; gap: 8px; }
.reveal-actions button { min-height: 52px; padding: 0 18px; font: 10px/1 var(--mono); }
.reveal-actions button:last-child { color: var(--dark); background: var(--sky); border-color: var(--sky); }

.provenance { padding-top: clamp(82px, 10vw, 145px); padding-bottom: clamp(82px, 10vw, 145px); }
.receipt-intro {
  margin-top: 28px;
  display: grid;
  grid-template-columns: 1fr 0.7fr;
  gap: clamp(40px, 8vw, 120px);
  align-items: end;
}
.receipt-intro h2 { margin: 0; font: 450 clamp(43px, 5.8vw, 88px)/0.95 var(--serif); letter-spacing: -0.05em; }
.receipt-intro p { margin: 0; color: var(--muted); font-size: 17px; line-height: 1.65; }
.receipt-grid { margin-top: 60px; display: grid; grid-template-columns: repeat(4, 1fr); border-block: 1px solid var(--rule); }
.receipt-grid article { padding: 28px 24px 32px 0; }
.receipt-grid article + article { padding-left: 24px; border-left: 1px solid var(--rule); }
.receipt-grid span { color: var(--red); font: 10px/1 var(--mono); }
.receipt-grid h3 { min-height: 2.2em; margin: 16px 0 12px; font: 450 clamp(23px, 2.3vw, 34px)/1.05 var(--serif); }
.receipt-grid p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.6; }
.evidence-drawer { margin-top: 58px; border-block: 1px solid var(--rule); }
.evidence-drawer summary {
  padding: 24px 0;
  display: flex;
  justify-content: space-between;
  cursor: pointer;
  list-style: none;
  font: 11px/1 var(--mono);
  text-transform: uppercase;
}
.evidence-drawer summary::-webkit-details-marker { display: none; }
.evidence-drawer summary span { transition: transform 180ms var(--ease-out); }
.evidence-drawer[open] summary span { transform: rotate(45deg); }
.drawer-content { padding: 12px 0 50px; }
.correction-log { color: var(--cream); background: var(--blue); padding: 18px clamp(18px, 3vw, 42px); }
.log-row {
  display: grid;
  grid-template-columns: 100px 0.48fr 1.5fr;
  gap: 25px;
  padding: 26px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  align-items: start;
}
.log-row:first-child { border-top: 0; }
.log-row > span { color: #a7dfd2; font: 10px/1.4 var(--mono); }
.log-row h3 { margin: 0; font: 450 clamp(24px, 2.5vw, 38px)/1 var(--serif); }
.log-row p { margin: 0; color: rgba(255, 255, 255, 0.7); line-height: 1.55; }
.log-row.withdrawn { opacity: 0.72; }
.log-row.withdrawn > span { color: #ffb3ae; }
.figure-grid { margin-top: 26px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.figure-grid figure { margin: 0; }
.figure-grid img { width: 100%; display: block; background: white; }
.figure-grid figcaption { margin-top: 10px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.rerun-figure { grid-column: 1 / -1; }
.rerun-chart { overflow-x: auto; border: 1px solid var(--rule); background: var(--cream); }
.rerun-title, .rerun-head, .rerun-row, .rerun-chart > p { min-width: 720px; }
.rerun-title { padding: 20px; display: flex; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--rule); }
.rerun-title span { color: var(--red); font: 10px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.rerun-title b { color: var(--muted); font: 10px/1 var(--mono); font-weight: 500; }
.rerun-head, .rerun-row { display: grid; grid-template-columns: minmax(120px, .9fr) repeat(6, 1fr); }
.rerun-head { color: var(--muted); font: 10px/1 var(--mono); text-align: center; }
.rerun-head span { padding: 12px 8px; border-left: 1px solid var(--rule); }
.rerun-head span:first-child { border-left: 0; }
.rerun-row { min-height: 104px; border-top: 1px solid var(--rule); }
.rerun-row strong { padding: 18px; display: flex; align-items: center; font: 450 20px/1.05 var(--serif); }
.rerun-row > span { position: relative; z-index: 0; padding: 0 4px 10px; display: flex; align-items: end; justify-content: center; overflow: hidden; border-left: 1px solid var(--rule); background: linear-gradient(to bottom, transparent calc(50% - .5px), var(--rule) calc(50% - .5px), var(--rule) calc(50% + .5px), transparent calc(50% + .5px)); font: 10px/1 var(--mono); font-weight: 500; }
.rerun-row > span::before { content: ""; position: absolute; right: 22%; left: 22%; z-index: -1; height: calc(var(--m) * 42px); }
.rerun-row > span.positive::before { bottom: 50%; background: var(--blue); }
.rerun-row > span.negative::before { top: 50%; background: var(--red); }
.rerun-chart > p { margin: 0; padding: 13px 20px; border-top: 1px solid var(--rule); color: var(--muted); font: 10px/1.45 var(--mono); }
.claim-boundary { max-width: 900px; margin: 48px 0 0; color: var(--muted); font: 350 clamp(24px, 3vw, 42px)/1.25 var(--serif); }

footer {
  min-height: 92px;
  padding: 0 clamp(20px, 7vw, 110px);
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: var(--muted);
  font: 10px/1.4 var(--mono);
}

a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.direction-game:focus-visible { outline: 2px solid var(--sky); outline-offset: -2px; }

@media (hover: hover) and (pointer: fine) {
  .project-nav .paper-link:hover { background: #a80000; }
  .guess-buttons button:hover, .quiet-button:hover, .reveal-actions button:hover { background: rgba(133, 179, 208, 0.12); }
  .segmented button:hover, .context-buttons button:hover { border-color: var(--sky); }
  .trace-column button:hover .trace-bar { opacity: 0.7; }
}

@media (max-width: 980px) {
  .game-grid, .receipt-intro, .lab-heading { grid-template-columns: 1fr; }
  .film-stage { min-height: 520px; border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.15); }
  .guess-panel { min-height: 430px; }
  .answer-line { grid-template-columns: 1fr; }
  .lab-controls { grid-template-columns: 1fr 1fr; }
  .context-control { grid-column: 1 / -1; }
  .receipt-grid { grid-template-columns: 1fr 1fr; }
  .receipt-grid article:nth-child(3) { border-left: 0; border-top: 1px solid var(--rule); }
  .receipt-grid article:nth-child(4) { border-top: 1px solid var(--rule); }
  .figure-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .project-nav { grid-template-columns: 1fr auto; }
  .project-nav > span { display: none; }
  .hero h1 { font-size: clamp(52px, 16vw, 72px); }
  .game-head { gap: 20px; }
  .game-head > div:last-child { min-width: 60px; }
  .film-stage { min-height: 390px; }
  .lab-controls, .loss-focus { grid-template-columns: 1fr; }
  .context-control { grid-column: auto; }
  .loss-pair { border-top: 1px solid rgba(255, 255, 255, 0.15); border-left: 0; }
  .loss-primary { padding-right: 0; }
  .reveal-actions { flex-direction: column; }
  .receipt-grid { grid-template-columns: 1fr; }
  .receipt-grid article + article { padding-left: 0; border-left: 0; border-top: 1px solid var(--rule); }
  .log-row { grid-template-columns: 1fr; gap: 10px; }
  footer { padding-block: 28px; align-items: flex-start; flex-direction: column; gap: 16px; }
}

@media (max-width: 450px) {
  .project-nav .paper-link { padding: 9px 10px; }
  .film-overlay span:first-child { display: none; }
  .segmented button { flex: 1 1 calc(50% - 6px); }
  .context-buttons button { flex: 1 1 calc(33% - 6px); }
  .trace-column em { font-size: 9px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}

/* Keep controls, evidence labels, and captions legible at every breakpoint. */
.project-nav,
.eyebrow,
.section-label,
.game-kicker,
.film-overlay,
.guess-buttons button,
.quiet-button,
.key-hint,
.answer-line > span,
.lab-kicker,
.segmented button,
.context-buttons button,
.loss-pair span,
.trace-column em,
.reveal-actions button,
.receipt-grid span,
.log-row > span,
.rerun-title span,
.rerun-title b,
.rerun-head,
.rerun-row > span,
.rerun-chart > p,
.figure-grid figcaption,
footer { font-size: 11px; }

.key-hint,
.answer-line p,
.loss-pair span { color: rgba(255, 255, 255, .76); }

/* Nav: 3D companion link sits beside the paper link without breaking the 3-column grid. */
.project-nav .nav-links {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: clamp(10px, 2vw, 20px);
}
@media (max-width: 640px) {
  .project-nav .nav-links a:not(.paper-link) { display: none; }
}

/* ---------- embedded 3D world ---------- */
.world-section { padding-top: clamp(82px, 10vw, 145px); padding-bottom: clamp(82px, 10vw, 145px); }
.world-head {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: clamp(30px, 5vw, 80px);
  align-items: end;
}
.world-head h2 { margin: 14px 0 0; font: 450 clamp(40px, 5vw, 76px)/.95 var(--serif); letter-spacing: -.05em; }
.world-head p { margin: 0; color: var(--muted); font-size: 16px; line-height: 1.65; }
@media (max-width: 820px) { .world-head { grid-template-columns: 1fr; } }
