/* RETROROADS — site.css: layout, components, CRT layer
   Structure follows the LL-RelicHunters docs site (topbar, hero, play, status strip, shots, footer). */

/* ── CRT overlay ── */
.crt-overlay {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--scanlines), var(--crt-vignette);
  mix-blend-mode: multiply;
  opacity: .45;
}

/* ── Top bar ── */
.topbar {
  position: sticky;
  top: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: 0 var(--space-6);
  min-height: 52px;
  background: rgba(7,9,12,.95);
  backdrop-filter: blur(6px);
  border-bottom: var(--border-hair) solid var(--rr-surface-3);
}
.brand {
  font-family: var(--font-display);
  font-size: 10px;
  color: var(--rr-paint);
  letter-spacing: var(--tracking-wide);
  white-space: nowrap;
}
.brand b { color: var(--rr-yellow); }
.topbar nav { display: flex; align-items: center; gap: var(--space-5); }
.topbar nav a {
  font-family: var(--font-display);
  font-size: 8px;
  color: var(--text-muted);
  letter-spacing: var(--tracking-wide);
  white-space: nowrap;
  transition: color .15s;
}
.topbar nav a:hover, .topbar nav a[aria-current="page"] { color: var(--rr-paint); }
.topbar nav a.cta { color: var(--rr-yellow); text-shadow: var(--glow-yellow); }

@media (max-width: 640px) {
  .full { display: none; }
  .topbar { padding: var(--space-2) var(--space-4); }
  .topbar nav { gap: var(--space-4); }
  .topbar nav .wide { display: none; }
}

/* ── Wrapper ── */
.wrap { max-width: 1000px; margin: 0 auto; padding: 0 var(--space-6); width: 100%; }
@media (max-width: 640px) { .wrap { padding: 0 var(--space-4); } }

/* ── Hero ── */
.hero {
  position: relative;
  min-height: 88vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.hero .bg { position: absolute; inset: 0; z-index: 0; }
.hero .bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
  filter: brightness(.6) saturate(.9);
  image-rendering: pixelated;
}
.hero .bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(7,9,12,.7) 0%, rgba(7,9,12,0) 30%, rgba(7,9,12,.85) 80%, rgba(7,9,12,1) 100%);
}
.hero .wrap.inner { position: relative; z-index: 2; padding-top: var(--space-9); padding-bottom: var(--space-8); }

.eyebrow {
  font-family: var(--font-display);
  font-size: var(--type-label);
  line-height: 1.8;
  color: var(--rr-blue);
  text-shadow: var(--glow-blue);
  letter-spacing: var(--tracking-wider);
  margin-bottom: var(--space-5);
}
.wordmark { display: block; margin-bottom: var(--space-5); }
.wordmark .l1 {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(30px, 8vw, 76px);
  color: var(--rr-paint);
  line-height: 1.15;
  margin-bottom: 10px;
  text-shadow: 4px 4px 0 #000;
}
.wordmark .l1 .y { color: var(--rr-yellow); text-shadow: 4px 4px 0 #000, var(--glow-yellow); }
.wordmark .l2 {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(10px, 2vw, 18px);
  color: var(--rr-yellow);
  text-shadow: var(--glow-yellow);
  letter-spacing: var(--tracking-wide);
  line-height: 1.7;
}
.tagline { font-size: clamp(15px, 2vw, 19px); color: #c3ccd5; margin-bottom: var(--space-6); max-width: 620px; }

.actions { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-bottom: var(--space-5); }
.btn {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 9px;
  letter-spacing: var(--tracking-wide);
  line-height: 1.6;
  padding: 14px 22px;
  cursor: pointer;
  transition: opacity .15s, transform .1s;
  white-space: nowrap;
}
.btn:hover { opacity: .88; transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn-primary { background: var(--rr-yellow); color: #07090c; }
.btn-ghost { background: transparent; color: var(--rr-paint); border: var(--border-hair) solid var(--rr-surface-3); }
.madewith { font-size: var(--type-read-sm); color: var(--text-muted); }

/* ── Section headings ── */
.sec-title {
  font-family: var(--font-display);
  font-size: clamp(14px, 2.5vw, 22px);
  color: var(--rr-yellow);
  text-shadow: var(--glow-yellow);
  line-height: 1.5;
  margin-bottom: var(--space-5);
}
.sec-title.center { text-align: center; }

/* ── Play section: three game cards ── */
.play-section { padding: var(--space-8) 0; border-bottom: var(--border-hair) solid var(--rr-surface-2); }
.play-section .intro { text-align: center; color: var(--text-muted); margin: 0 auto var(--space-6); max-width: 640px; }
.games { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
@media (max-width: 820px) { .games { grid-template-columns: 1fr; } }
.game {
  display: flex;
  flex-direction: column;
  background: var(--rr-surface-1);
  border: var(--border-hair) solid var(--rr-surface-3);
}
.game .thumb { aspect-ratio: 16 / 9; overflow: hidden; border-bottom: var(--border-hair) solid var(--rr-surface-3); }
.game .thumb img { width: 100%; height: 100%; object-fit: cover; image-rendering: pixelated; }
.game .body { padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); flex: 1; }
.game h3 { font-family: var(--font-display); font-size: 11px; line-height: 1.6; color: var(--rr-paint); }
.game .parody { font-size: 13px; color: var(--rr-blue); letter-spacing: .04em; }
.game p { font-size: var(--type-read-sm); color: var(--text-muted); flex: 1; }
.game .btn { text-align: center; }

/* ── Status strip ── */
.strip { padding: var(--space-7) 0; border-bottom: var(--border-hair) solid var(--rr-surface-2); }
.status-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-4); margin-bottom: var(--space-5); }
@media (max-width: 820px) { .status-row { grid-template-columns: repeat(2, 1fr); } }
.stat { border: var(--border-hair) solid var(--rr-surface-3); background: var(--rr-surface-1); padding: var(--space-4); }
.stat .k { font-family: var(--font-display); font-size: 8px; letter-spacing: var(--tracking-wide); color: var(--text-muted); line-height: 1.6; }
.stat .v { font-family: var(--font-display); font-size: 12px; margin-top: var(--space-3); line-height: 1.5; }
.stat .v.yes { color: var(--yes); }
.stat .v.no { color: var(--rr-red); }
.stat .v.part { color: var(--rr-yellow); }
.stat .n { font-size: 13px; color: var(--text-muted); margin-top: var(--space-2); line-height: 1.5; }

/* ── Video / screenshot grids ── */
.strip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
@media (max-width: 680px) { .strip-grid { grid-template-columns: 1fr; } }
.vid-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); align-items: start; }
.vid-grid .tall { grid-row: span 2; }
@media (max-width: 680px) { .vid-grid { grid-template-columns: 1fr; } .vid-grid .tall { grid-row: auto; } }
.shot { display: flex; flex-direction: column; gap: var(--space-3); }
.shot img, .shot video {
  width: 100%;
  border: var(--border-hair) solid var(--rr-surface-3);
  background: #000;
  image-rendering: pixelated;
}
.shot figcaption { font-family: var(--font-mono); font-size: var(--type-read-sm); color: var(--text-muted); letter-spacing: .04em; }
.shot figcaption b { font-family: var(--font-display); font-size: 9px; color: var(--rr-yellow); letter-spacing: var(--tracking-wide); }

/* ── Controls ── */
.controls { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
@media (max-width: 820px) { .controls { grid-template-columns: 1fr; } }
.ctl { border: var(--border-hair) solid var(--rr-surface-3); background: var(--rr-surface-1); padding: var(--space-5); }
.ctl h3 { font-family: var(--font-display); font-size: 10px; color: var(--rr-paint); margin-bottom: var(--space-4); line-height: 1.6; }
.ctl dl { display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-4); font-size: var(--type-read-sm); }
.ctl dt { color: var(--rr-yellow); white-space: nowrap; }
.ctl dd { color: #b9c4cf; }
kbd {
  font-family: var(--font-mono);
  font-size: 13px;
  border: 1px solid var(--rr-surface-3);
  border-bottom-width: 2px;
  padding: 0 5px;
  background: var(--rr-surface-2);
  color: var(--rr-paint);
}
.note { margin-top: var(--space-5); font-size: var(--type-read-sm); color: var(--text-muted); }

/* ── Footer ── */
.foot {
  padding: var(--space-7) 0;
  border-top: var(--border-hair) solid var(--rr-surface-2);
  font-family: var(--font-display);
  font-size: 7px;
  line-height: 2;
  color: var(--text-dim);
  letter-spacing: var(--tracking-wide);
}
.foot .row { display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--space-4); }
.foot .credits { font-family: var(--font-mono); font-size: 13px; letter-spacing: .02em; color: var(--text-muted); margin-top: var(--space-4); }
.foot a { color: var(--rr-blue); }
.foot a:hover { text-shadow: var(--glow-blue); }

/* ══ Build Log / Completion pages ══ */
.page-head { padding: var(--space-8) 0 var(--space-7); border-bottom: var(--border-hair) solid var(--rr-surface-2); }
.kicker {
  font-family: var(--font-display);
  font-size: var(--type-label);
  color: var(--rr-blue);
  text-shadow: var(--glow-blue);
  letter-spacing: var(--tracking-wider);
  line-height: 1.8;
  margin-bottom: var(--space-4);
}
.page-head h1 { font-family: var(--font-display); font-size: clamp(16px, 3vw, 28px); color: var(--rr-paint); line-height: 1.5; margin-bottom: var(--space-5); }
.lede { font-size: clamp(15px, 1.6vw, 17px); color: #b9c4cf; max-width: 700px; line-height: 1.8; }

.block { padding: var(--space-7) 0; border-bottom: var(--border-hair) solid var(--rr-surface-2); }
.block h2 { font-family: var(--font-display); font-size: clamp(13px, 2vw, 18px); color: var(--rr-paint); margin-bottom: var(--space-5); line-height: 1.5; }
.block p + p { margin-top: var(--space-4); }
.block ul { margin: var(--space-4) 0 0 var(--space-5); color: #b9c4cf; }
.block li + li { margin-top: var(--space-2); }

.codec {
  background: var(--rr-surface-2);
  border: var(--border-hair) solid var(--rr-surface-3);
  border-left: 3px solid var(--rr-yellow);
  padding: var(--space-5) var(--space-6);
  margin-top: var(--space-6);
}
.codec .tag {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 7px;
  color: var(--rr-yellow);
  letter-spacing: var(--tracking-wider);
  border: var(--border-hair) solid var(--rr-yellow);
  padding: 3px 8px;
  margin-bottom: var(--space-4);
}
.codec p { font-size: var(--type-read-sm); color: var(--rr-paint); line-height: 1.8; }

.recipe { list-style: none; counter-reset: recipe; margin-top: var(--space-5); }
.block ul.recipe { margin-left: 0; }
.recipe li {
  counter-increment: recipe;
  display: flex;
  gap: var(--space-5);
  padding: var(--space-4) 0;
  border-bottom: var(--border-hair) solid var(--rr-surface-2);
  color: var(--rr-paint);
  line-height: 1.6;
}
.recipe li + li { margin-top: 0; }
.recipe li::before {
  content: counter(recipe, decimal-leading-zero);
  font-family: var(--font-display);
  font-size: var(--type-label);
  color: var(--rr-yellow);
  opacity: .7;
  min-width: 28px;
  flex-shrink: 0;
  padding-top: 4px;
}
.recipe .sub { display: block; font-size: var(--type-read-sm); color: var(--text-muted); margin-top: var(--space-2); }

.chips { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
.chip {
  font-family: var(--font-mono);
  font-size: var(--type-read-sm);
  color: var(--rr-paint);
  background: var(--rr-surface-2);
  border: var(--border-hair) solid var(--rr-surface-3);
  padding: var(--space-1) var(--space-4);
}
.chip b { color: var(--rr-blue); }

/* ── Milestone table ── */
.board { margin-top: var(--space-6); overflow-x: auto; }
.board table { width: 100%; border-collapse: collapse; min-width: 560px; }
.board th {
  font-family: var(--font-display);
  font-size: 8px;
  letter-spacing: var(--tracking-wider);
  color: var(--text-muted);
  text-align: left;
  padding: var(--space-3) var(--space-4);
  border-bottom: var(--border-hair) solid var(--rr-surface-3);
  white-space: nowrap;
}
.board td { padding: var(--space-4); border-bottom: var(--border-hair) solid var(--rr-surface-2); vertical-align: top; font-size: var(--type-read-sm); }
.board td.item { font-family: var(--font-display); font-size: 9px; line-height: 1.7; color: var(--rr-paint); }
.board td.ev { color: var(--text-muted); }
.pill {
  font-family: var(--font-display);
  font-size: 8px;
  letter-spacing: var(--tracking-wide);
  padding: 4px 7px;
  border: var(--border-hair) solid currentColor;
  white-space: nowrap;
  display: inline-block;
}
.pill.yes { color: var(--yes); }
.pill.no { color: var(--no); }
.tally { display: flex; align-items: flex-end; gap: var(--space-5); flex-wrap: wrap; margin-top: var(--space-6); }
.tally .big { font-family: var(--font-display); font-size: clamp(28px, 6vw, 52px); color: var(--rr-yellow); text-shadow: var(--glow-yellow); line-height: 1; }
.tally .of { color: var(--text-muted); padding-bottom: 4px; }

/* ── Phone: board rows become cards, hero shorter ── */
@media (max-width: 640px) {
  .board table { min-width: 0; }
  .board thead { display: none; }
  .board tr { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2) var(--space-4); padding: var(--space-4) 0; border-bottom: var(--border-hair) solid var(--rr-surface-2); }
  .board td { padding: 0; border: 0; }
  .board td.item, .board td.ev { grid-column: 1 / -1; }
  .board td.g::before { content: attr(data-label); display: block; font-family: var(--font-display); font-size: 7px; letter-spacing: var(--tracking-wide); color: var(--text-muted); margin-bottom: var(--space-2); }
  .hero { min-height: 0; }
  .hero .wrap.inner { padding-top: var(--space-8); padding-bottom: var(--space-4); }
  .play-section { padding: var(--space-7) 0; }
}

.endcta { text-align: center; padding: var(--space-8) 0; }
.endcta p { max-width: 540px; margin: 0 auto var(--space-6); }
