/* Arcade screens inside the comic panel. All sizes come from theme.css. */

*, *::before, *::after { box-sizing: border-box; }   /* widths include padding and the frame */

/* ---- the panel: the user's hand-drawn border (chartreuse baked in) stretched as a 9-slice.
        The slice numbers come from dev/make_panel_frame.py's output. ---- */
.bb-panel {
  width: min(var(--panel-width), var(--panel-max-width));
  min-height: var(--panel-min-height);
  margin: auto;
  padding: var(--panel-padding-y) var(--panel-padding-x);
  border: var(--panel-border) solid transparent;
  border-image: url('../assets/ui/panel-frame.png') 26 29 29 34 fill / var(--panel-border) stretch;
  color: var(--ink);
  font-family: var(--font-arcade);
  font-size: var(--text-sm);
  line-height: var(--line);
  text-align: center;
  position: relative;
  container-type: inline-size;   /* lets the title shrink to one line on phones (cqi units) */
}

.arcade-page {
  min-height: 100dvh;
  margin: 0;
  display: flex;
  padding: var(--page-gutter);
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-arcade);
}

/* ---- the 1UP / HIGH SCORE strip across the top ---- */
.arcade-top {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: var(--gap-sm);
  font-size: var(--text-sm);
  margin-bottom: var(--gap-lg);
}
.arcade-top > div:first-child { text-align: left; }
.arcade-top > div:last-child { text-align: right; }
.arcade-top .label { display: block; color: var(--red); }
.arcade-top .value { display: block; margin-top: var(--gap-xs); }

.arcade-title {
  margin: 0 0 var(--gap-lg);
  font-size: min(var(--text-title), 5.8cqi);   /* one line: 16 letters must fit the panel */
  font-weight: 400;
  line-height: 1.25;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }

/* ---- in-game message box (COMING SOON!) ---- */
.arcade-dialog {
  max-width: min(420px, calc(100vw - 2 * var(--page-gutter)));
  padding: var(--gap-lg) var(--gap-md);
  border: var(--panel-border) solid transparent;
  border-image: url('../assets/ui/panel-frame.png') 26 29 29 34 fill / var(--panel-border) stretch;
  background: none;
  color: var(--ink);
  font-family: var(--font-arcade);
  text-align: center;
  cursor: pointer;
}
.arcade-dialog::backdrop { background: rgb(31 26 18 / 0.55); }
.arcade-dialog .dialog-title { margin: 0 0 var(--gap-md); font-size: var(--text-lg); color: var(--red); }
.arcade-dialog .dialog-sub { margin: 0; font-size: var(--text-xs); color: var(--muted); }

.arcade-heading {
  margin: 0 0 var(--gap-md);
  font-size: var(--text-sm);
  font-weight: 400;
  letter-spacing: 0.08em;
}

/* ---- CHARACTER / NICKNAME roster ---- */
.roster {
  list-style: none;
  margin: 0 auto var(--gap-lg);
  padding: 0;
  display: grid;
  gap: var(--gap-sm);
  width: fit-content;
  text-align: left;
}
.roster li {
  display: grid;
  grid-template-columns: var(--sprite-size) auto auto;
  align-items: end;
  gap: var(--gap-md);
  opacity: 0;
  animation: roster-in 0.01s forwards;
}
.roster li:nth-child(1) { animation-delay: 0.4s; }
.roster li:nth-child(2) { animation-delay: 1.1s; }
.roster li:nth-child(3) { animation-delay: 1.8s; }
.roster .sprite {
  width: var(--sprite-size);
  height: var(--sprite-size);
  object-fit: contain;
  object-position: center bottom;
}
.roster .role, .roster .nick { white-space: nowrap; }
.roster .role { color: var(--muted); }
.roster .nick { color: var(--magenta); }
@keyframes roster-in { to { opacity: 1; } }

/* ---- buttons that look like arcade text, with a ▶ cursor on focus/hover ---- */
.arcade-btn {
  font: inherit;
  font-size: var(--text-md);
  color: var(--ink);
  background: none;
  border: 0;
  padding: var(--gap-xs) var(--gap-sm);
  cursor: pointer;
  text-decoration: none;
  display: inline-block;
  position: relative;
  letter-spacing: 0.06em;
  min-height: 44px;            /* tap target */
}
.arcade-btn::before {
  content: '▶';
  position: absolute;
  left: calc(-1 * var(--gap-sm));
  opacity: 0;
}
.arcade-btn:hover::before, .arcade-btn:focus-visible::before { opacity: 1; }
.arcade-btn:focus-visible { outline: none; }
.arcade-btn.primary { font-size: var(--text-lg); }
.blink { animation: blink var(--blink-ms) steps(1) infinite; }
@keyframes blink { 50% { visibility: hidden; } }

.arcade-actions {
  display: flex;
  gap: var(--gap-lg);
  justify-content: center;
  flex-wrap: wrap;
  margin-top: var(--gap-md);
}

.arcade-foot {
  margin: var(--gap-lg) 0 0;
  font-size: var(--text-xs);
  color: var(--muted);
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--gap-sm);
}
/* Back / exit: small ink tab in the corner of the page, outside the panel */
.arcade-corner {
  position: fixed;
  top: var(--page-gutter);
  left: var(--page-gutter);
  z-index: 3;
  font-family: var(--font-arcade);
  font-size: var(--text-xs);
  color: var(--paper);
  background: var(--ink);
  border: 0;
  border-radius: 6px;
  padding: var(--gap-sm) var(--gap-sm);
  min-height: 44px;            /* tap target */
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  text-decoration: none;
  letter-spacing: 0.06em;
}
.arcade-corner:focus-visible { outline: 3px solid var(--magenta); outline-offset: 2px; }

/* ---- high-score screen ---- */
.arcade-red { color: var(--red); }
.final-line { margin: 0 0 var(--gap-md); font-size: var(--text-md); }

.initials-form label { display: block; margin-bottom: var(--gap-sm); font-size: var(--text-sm); }
.initials-row { display: flex; gap: var(--gap-md); justify-content: center; align-items: center; }
.initials-input {
  width: 5.4em;
  font: inherit;
  font-size: var(--text-lg);
  letter-spacing: 0.6em;
  padding: var(--gap-xs) 0 var(--gap-xs) 0.6em;
  text-transform: uppercase;
  color: var(--magenta);
  background:
    linear-gradient(var(--ink), var(--ink)) 0 100% / 1.1em 3px no-repeat,
    linear-gradient(var(--ink), var(--ink)) 50% 100% / 1.1em 3px no-repeat,
    linear-gradient(var(--ink), var(--ink)) 100% 100% / 1.1em 3px no-repeat;
  border: 0;
  caret-color: var(--magenta);
}
.initials-input:focus { outline: none; }
.save-status { min-height: 1.6em; margin: var(--gap-sm) 0; font-size: var(--text-sm); color: var(--magenta); }

.score-table {
  margin: 0 auto var(--gap-md);
  border-collapse: collapse;
  font-size: var(--text-sm);
}
.score-table th {
  font-weight: 400;
  color: var(--red);
  padding: 0 var(--gap-md) var(--gap-sm);
}
.score-table td { padding: var(--gap-xs) var(--gap-md); }
.score-table td:nth-child(2) { text-align: right; }
.score-table tr.me td { color: var(--magenta); animation: blink var(--blink-ms) steps(1) infinite; }
.score-table .offline td { color: var(--muted); }
