/* Hallmark · macrostructure: Narrative Workflow · tone: playful · anchor hue: 95
 * genre: playful · theme: Hum · enrichment: canvas game (character moment)
 * nav: N7 (knobs: border=2px, links=3, CTA=filled pill)
 * footer: Ft5 (knobs: line width=28ch, meta=under, rule=hairline)
 * pre-emit critique: P5 H4 E5 S4 R5 V5 */
@import "base.css";

/* ---------- nav (N7: heavy slab, rounded for playful) ---------- */
.nav-slab {
  background: var(--color-paper);
  border-bottom: 2px solid var(--color-ink);
}

.nav-slab__inner {
  max-width: var(--page-max);
  margin-inline: auto;
  padding: var(--space-sm) var(--page-gutter);
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.nav-slab__brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  color: var(--color-ink);
  text-decoration: none;
  font-weight: 800;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.nav-slab__logo {
  width: 26px;
  height: 26px;
}

.nav-slab__links {
  display: none;
}

.nav-slab__links a {
  color: var(--color-ink-soft);
  text-decoration: none;
  font-weight: 600;
  font-size: var(--text-sm);
  letter-spacing: 0.08em;
  padding: 0.5rem 0.9rem;
  border-radius: var(--radius-pill);
  white-space: nowrap;
  transition: color var(--dur-micro) var(--ease-out), background-color var(--dur-micro) var(--ease-out);
}

.nav-slab__links a:hover {
  color: var(--color-ink);
  background: var(--color-paper-3);
}

.nav-slab__links a:active {
  transform: translateY(1px);
}

.nav-slab .btn {
  margin-inline-start: auto;
}

/* ---------- hero: copy + game ---------- */
.game-page {
  max-width: var(--shell);
  margin-inline: auto;
  padding: var(--space-2xl) var(--page-gutter) var(--section-gap);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-xl);
  align-items: center;
  scroll-margin-top: 84px;
}

.game-page__title {
  font-size: clamp(2rem, 4vw + 0.5rem, 3.25rem);
  margin: 0;
}

.game-page__lead {
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  margin: var(--space-md) 0 0;
}

.game-page__hint {
  margin: var(--space-sm) 0 0;
}

/* ---------- game card ---------- */
.game {
  max-width: 640px;
  width: 100%;
  justify-self: center;
  background: var(--color-paper);
  border: 1px solid var(--color-rule);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: var(--space-lg);
}

.game__bar {
  display: flex;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-md);
}

.game__bar b {
  color: var(--color-ink);
  font-weight: 600;
}

.game__bar .live {
  color: var(--color-record);
}

.game__stage {
  position: relative;
  border-radius: var(--radius-input);
  overflow: hidden;
}

#game-canvas {
  display: block;
  width: 100%;
  height: auto;
  background: var(--color-paper);
}

.game__overlay:not([hidden]) {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  padding: var(--space-lg);
  text-align: center;
}

.game__overlay--ready {
  background: transparent;
}

.game__overlay--over {
  background: color-mix(in oklch, var(--color-paper) 96%, transparent);
}

.game__overlay p {
  margin: 0;
}

.game__over-title {
  font-size: var(--text-2xl);
  margin: 0;
}

.game__record {
  color: var(--color-record);
  font-weight: 500;
}

.game__hint {
  margin: var(--space-md) 0 0;
  text-align: center;
}

/* ---------- narrative workflow: stages ---------- */
.play {
  max-width: var(--shell);
  margin-inline: auto;
  padding: 0 var(--page-gutter) var(--section-gap);
}

.play__inner {
  scroll-margin-top: 84px;
}

.section-title {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  margin: 0 0 var(--space-xl);
}

.stages {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-md);
}

.stage {
  border-radius: var(--radius-card);
  padding: var(--space-lg);
}

.stage--1 {
  background: var(--tint-pear);
}

.stage--2 {
  background: var(--tint-cyan);
}

.stage--3 {
  background: var(--tint-coral);
}

.stage__num {
  font-size: var(--text-md);
  letter-spacing: 0.08em;
  margin: 0;
  color: var(--color-ink);
}

.stage h3 {
  font-size: var(--text-md);
  margin: var(--space-2xs) 0 0;
}

.stage p:last-child {
  color: var(--color-ink-soft);
  margin: var(--space-2xs) 0 0;
}

/* ---------- footer (Ft5: statement) ---------- */
.foot-stmt {
  max-width: var(--shell);
  margin-inline: auto;
  padding: var(--space-2xl) var(--page-gutter) var(--space-xl);
}

.foot-stmt__line {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 5vw, 3.25rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  max-width: 28ch;
  margin: 0;
}

.foot-stmt__meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-xs) var(--space-lg);
  padding-block-start: var(--space-sm);
  border-top: 1px solid var(--color-rule);
  margin-top: var(--space-lg);
  color: var(--color-ink-muted);
  font-size: var(--text-sm);
}

.foot-stmt__meta a {
  color: var(--color-ink-soft);
  text-decoration: none;
  border-bottom: 1px solid var(--color-rule-strong);
}

/* ---------- responsive ---------- */
@media (min-width: 40rem) {
  .nav-slab__links {
    display: inline-flex;
    gap: 0.25rem;
    margin-inline-start: auto;
  }

  .nav-slab .btn {
    margin-inline-start: 0;
  }

  .game-page {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  }

  .game {
    justify-self: end;
  }
}
