:root {
  --cabinet-blue: #163bff;
  --action-yellow: #ffd51f;
  --impact-red: #f0442d;
  --screen-cream: #fff1d2;
  --arcade-ink: #111318;
  --signal-cyan: #2ad7d1;
  --steel: #727889;
  --ease-snap: cubic-bezier(0.2, 0.9, 0.2, 1);
  color: var(--screen-cream);
  background: var(--cabinet-blue);
  font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }

html,
body {
  min-width: 320px;
  min-height: 100%;
  margin: 0;
  overflow-x: hidden;
}

body {
  min-height: 100vh;
  min-height: 100svh;
  background-color: var(--cabinet-blue);
  background-image:
    radial-gradient(circle, rgba(255, 241, 210, 0.2) 1.2px, transparent 1.5px),
    linear-gradient(135deg, transparent 0 46%, rgba(17, 19, 24, 0.12) 46% 54%, transparent 54% 100%);
  background-size: 11px 11px, 96px 96px;
}

button { font: inherit; }

button:focus-visible {
  outline: 4px solid var(--signal-cyan);
  outline-offset: 4px;
}

.phone-app {
  position: relative;
  width: min(100%, 430px);
  min-height: 100svh;
  margin: 0 auto;
  padding: max(8px, env(safe-area-inset-top)) 7px max(9px, env(safe-area-inset-bottom));
}

.game-panel {
  position: relative;
  overflow: hidden;
  border: 4px solid var(--arcade-ink);
  border-radius: 8px;
  background: var(--cabinet-blue);
  box-shadow: 9px 12px 0 rgba(17, 19, 24, 0.76), 0 22px 36px rgba(17, 19, 24, 0.28);
}

.game-panel::before,
.game-panel::after {
  position: absolute;
  z-index: 30;
  width: 10px;
  height: 10px;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--steel);
  box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.45);
  content: "";
  pointer-events: none;
}

.game-panel::before { top: 8px; left: 8px; }
.game-panel::after { top: 8px; right: 8px; }

.topbar {
  position: relative;
  display: flex;
  min-height: 78px;
  align-items: center;
  justify-content: space-between;
  padding: 8px 18px 7px 20px;
  overflow: hidden;
  border-bottom: 4px solid var(--arcade-ink);
  background-color: var(--cabinet-blue);
  background-image: radial-gradient(circle, rgba(17, 19, 24, 0.24) 1px, transparent 1.5px);
  background-size: 8px 8px;
}

.topbar::after {
  position: absolute;
  right: 53px;
  bottom: -26px;
  width: 96px;
  height: 72px;
  background: var(--action-yellow);
  clip-path: polygon(0 43%, 30% 43%, 42% 0, 56% 43%, 100% 43%, 68% 62%, 82% 100%, 50% 73%, 18% 100%, 31% 62%);
  content: "";
  transform: rotate(-8deg);
}

.brand {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
}

.brand > div {
  position: relative;
  z-index: 2;
}

.brand-burst {
  position: absolute;
  z-index: 1;
  left: -11px;
  bottom: -13px;
  width: 118px;
  height: 76px;
  background: var(--action-yellow);
  clip-path: polygon(0 46%, 22% 40%, 8% 15%, 36% 28%, 44% 0, 56% 27%, 86% 10%, 76% 39%, 100% 49%, 74% 59%, 89% 91%, 57% 72%, 45% 100%, 36% 71%, 7% 88%, 22% 59%);
  transform: rotate(-4deg);
}

.brand p,
.brand h1 { margin: 0; }

.brand p {
  color: var(--action-yellow);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.12em;
}

.brand h1 {
  margin-top: 2px;
  color: var(--screen-cream);
  font-family: "Arial Black", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: clamp(29px, 8.6vw, 38px);
  font-weight: 900;
  letter-spacing: -0.04em;
  line-height: 0.95;
  text-shadow: 3px 3px 0 var(--arcade-ink);
}

.brand h1 span {
  display: inline-block;
  color: var(--impact-red);
  -webkit-text-stroke: 1px var(--screen-cream);
  font-size: 1.14em;
  transform: rotate(-4deg) skewX(-5deg);
}

.cabinet-bull {
  position: relative;
  z-index: 2;
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 3px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--screen-cream);
  box-shadow: 3px 3px 0 var(--arcade-ink);
  color: var(--arcade-ink);
  font-size: 25px;
  font-weight: 900;
  transform: rotate(7deg);
}

.status-bar {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  min-height: 45px;
  padding: 4px;
  border-bottom: 4px solid var(--arcade-ink);
  background: var(--screen-cream);
}

.hud-cell {
  display: grid;
  min-width: 0;
  place-content: center;
  border: 2px solid var(--arcade-ink);
  border-radius: 3px;
  background: var(--arcade-ink);
  color: var(--action-yellow);
  text-align: center;
}

.hud-cell > span {
  color: var(--screen-cream);
  font-size: 7px;
  font-weight: 800;
  letter-spacing: 0.1em;
  opacity: 0.78;
}

.hud-cell strong {
  margin-top: 2px;
  font-family: "DIN Alternate", "Arial Narrow", Arial, sans-serif;
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 0.02em;
  line-height: 1;
}

.best-score strong { color: var(--signal-cyan); font-size: 19px; }

.attempt-dots {
  display: flex;
  justify-content: center;
  gap: 5px;
  margin-top: 4px;
}

.attempt-dots i {
  width: 13px;
  height: 8px;
  border: 1px solid var(--screen-cream);
  background: var(--impact-red);
  transform: skewX(-14deg);
  transition: opacity 120ms steps(2, end), transform 120ms var(--ease-snap);
}

.attempt-dots i.used {
  opacity: 0.18;
  transform: skewX(-14deg) scaleY(0.5);
}

.screen-bezel {
  position: relative;
  padding: 9px 11px 13px;
  border-bottom: 5px solid var(--arcade-ink);
  background: var(--cabinet-blue);
  box-shadow: inset 8px 0 0 #0c269f, inset -8px 0 0 #0c269f;
}

.screen-bezel::before,
.screen-bezel::after {
  position: absolute;
  z-index: 20;
  top: 11px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--steel);
  content: "";
}

.screen-bezel::before { left: 11px; }
.screen-bezel::after { right: 11px; }

.movie-stage {
  position: relative;
  isolation: isolate;
  height: clamp(250px, 46svh, 400px);
  overflow: hidden;
  border: 4px solid var(--arcade-ink);
  border-radius: 5px;
  background: var(--arcade-ink);
  outline: 2px solid var(--screen-cream);
  user-select: none;
}

.film-blur,
.film-frame,
.film-grain {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.film-blur {
  z-index: 0;
  background-image: url("./assets/film/ready.jpg");
  background-position: center;
  background-size: cover;
  filter: blur(14px) brightness(0.72) saturate(0.9);
  transform: scale(1.08);
  transition: background-image 120ms steps(2, end);
}

.film-frame {
  z-index: 1;
  object-fit: cover;
  object-position: center;
  filter: brightness(0.9) contrast(1.06) saturate(0.92);
  transition: opacity 120ms steps(2, end), transform 320ms var(--ease-snap), filter 120ms linear;
}

.film-frame.is-changing {
  opacity: 0.24;
  transform: scale(1.035);
  filter: brightness(0.58) contrast(1.18) saturate(0.72);
}

.film-frame.is-charging {
  transform: scale(1.025);
  filter: brightness(0.65) contrast(1.16) saturate(0.76);
}

.film-grain {
  z-index: 2;
  opacity: 0.13;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E");
  mix-blend-mode: screen;
  pointer-events: none;
}

.film-source {
  position: absolute;
  z-index: 12;
  right: 7px;
  bottom: 6px;
  padding: 3px 6px;
  border: 1px solid var(--screen-cream);
  background: var(--arcade-ink);
  color: var(--screen-cream);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 0.05em;
}

.scene-card {
  position: absolute;
  z-index: 10;
  top: 12px;
  left: 11px;
  max-width: min(72%, 260px);
  padding: 7px 22px 8px 9px;
  background: var(--action-yellow);
  box-shadow: 4px 4px 0 var(--arcade-ink);
  color: var(--arcade-ink);
  clip-path: polygon(0 0, 100% 0, calc(100% - 13px) 100%, 0 100%);
  transition: opacity 120ms steps(2, end), transform 180ms var(--ease-snap);
}

.scene-card small,
.scene-card strong { display: block; }

.scene-card small {
  margin-bottom: 2px;
  color: var(--arcade-ink);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.scene-card strong { font-size: 13px; font-weight: 900; line-height: 1.3; }
.scene-card.hidden { opacity: 0; transform: translateX(-14px); }

.jump-overlay {
  position: absolute;
  z-index: 7;
  inset: auto 0 0;
  height: 36%;
  border-top: 2px solid rgba(255, 241, 210, 0.74);
  background: linear-gradient(180deg, rgba(17, 19, 24, 0.02), rgba(17, 19, 24, 0.79));
  box-shadow: 0 -16px 28px rgba(17, 19, 24, 0.18);
}

.start-line,
.tree-line,
.ghost-marker {
  position: absolute;
  bottom: 13%;
  height: 67%;
  border-left: 3px dashed var(--screen-cream);
}

.start-line { left: 11%; }
.tree-line { left: 88%; border-color: var(--impact-red); border-left-style: solid; }

.start-line span,
.tree-line span {
  position: absolute;
  top: -18px;
  left: 0;
  padding: 2px 5px;
  border: 1px solid var(--arcade-ink);
  background: var(--screen-cream);
  color: var(--arcade-ink);
  font-size: 8px;
  font-weight: 900;
  white-space: nowrap;
  transform: translateX(-50%) skewX(-7deg);
}

.tree-line span { background: var(--impact-red); color: var(--screen-cream); }

.river-zone {
  position: absolute;
  top: 23%;
  bottom: 9%;
  left: 34%;
  width: 17%;
  border-right: 2px solid var(--signal-cyan);
  border-left: 2px solid var(--signal-cyan);
  background: repeating-linear-gradient(-18deg, rgba(42, 215, 209, 0.08) 0 7px, rgba(42, 215, 209, 0.62) 8px 11px);
  clip-path: polygon(16% 0, 84% 0, 100% 100%, 0 100%);
}

.river-zone span {
  position: absolute;
  right: 50%;
  bottom: 6px;
  color: var(--screen-cream);
  font-size: 8px;
  font-weight: 900;
  text-shadow: 2px 2px 0 var(--arcade-ink);
  transform: translateX(50%) rotate(-5deg);
}

.player-token {
  position: absolute;
  z-index: 5;
  bottom: 12%;
  left: 11%;
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 3px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--impact-red);
  box-shadow: 3px 4px 0 var(--arcade-ink);
  color: var(--screen-cream);
  font-size: 11px;
  font-weight: 900;
  transform-origin: center;
  will-change: left, bottom, transform;
}

.player-token::after {
  position: absolute;
  right: -5px;
  bottom: -4px;
  width: 10px;
  height: 10px;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--action-yellow);
  content: "";
}

.player-token.charging { animation: charge-wobble 100ms steps(2, end) infinite alternate; }
.player-token.bitten { animation: bitten-shake 80ms steps(2, end) 7; }
.player-token.hit-tree { background: var(--arcade-ink); color: var(--impact-red); }

.snake-token {
  position: absolute;
  z-index: 6;
  bottom: 12%;
  left: 2%;
  width: 58px;
  height: 26px;
  opacity: 0;
  border-bottom: 7px solid var(--action-yellow);
  border-radius: 50%;
  filter: drop-shadow(2px 3px 0 var(--arcade-ink));
  transform: translateX(-30px) rotate(-7deg);
  transition: opacity 100ms steps(2, end);
  will-change: transform;
}

.snake-token::after {
  position: absolute;
  right: -3px;
  bottom: -8px;
  width: 16px;
  height: 14px;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--impact-red);
  content: "";
}

.snake-token.visible { opacity: 1; }

.snake-token span {
  position: absolute;
  top: -7px;
  right: -6px;
  padding: 2px 4px;
  border: 1px solid var(--screen-cream);
  background: var(--arcade-ink);
  color: var(--action-yellow);
  font-size: 7px;
  font-weight: 900;
  white-space: nowrap;
}

.ghost-marker { z-index: 6; border-color: var(--signal-cyan); }

.ghost-marker span {
  position: absolute;
  bottom: -6px;
  left: -7px;
  width: 13px;
  height: 13px;
  border: 3px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--signal-cyan);
}

.challenge-note {
  position: absolute;
  z-index: 13;
  bottom: 31%;
  padding: 4px 7px;
  border: 2px solid var(--arcade-ink);
  background: var(--signal-cyan);
  box-shadow: 3px 3px 0 var(--arcade-ink);
  color: var(--arcade-ink);
  font-size: 8px;
  font-weight: 900;
  white-space: nowrap;
  transform: translateX(-50%) rotate(-3deg);
}

.splash {
  position: absolute;
  z-index: 6;
  bottom: 8%;
  left: 43%;
  width: 62px;
  height: 45px;
  opacity: 0;
  transform: translateX(-50%);
}

.splash.show { animation: splash-pop 520ms var(--ease-snap); }

.splash i {
  position: absolute;
  bottom: 0;
  width: 12px;
  height: 35px;
  border: 4px solid var(--signal-cyan);
  border-bottom: 0;
  border-radius: 50% 50% 0 0;
}

.splash i:nth-child(1) { left: 6px; transform: rotate(-28deg); }
.splash i:nth-child(2) { left: 25px; height: 44px; }
.splash i:nth-child(3) { right: 6px; transform: rotate(28deg); }

.flight-impact {
  position: absolute;
  z-index: 24;
  top: 50%;
  left: 50%;
  color: var(--impact-red);
  font-family: "Arial Black", Impact, sans-serif;
  font-size: clamp(74px, 26vw, 118px);
  font-weight: 900;
  letter-spacing: -0.04em;
  line-height: 0.8;
  opacity: 0;
  pointer-events: none;
  text-shadow: 5px 5px 0 var(--screen-cream), 9px 9px 0 var(--arcade-ink);
  transform: translate(-50%, -50%) rotate(-8deg) scale(2.4);
}

.flight-impact.show { animation: impact-slam 520ms var(--ease-snap); }

.control-deck {
  position: relative;
  padding: 9px 11px 12px;
  border-top: 9px solid var(--arcade-ink);
  background-color: var(--action-yellow);
  background-image: radial-gradient(circle, rgba(17, 19, 24, 0.19) 1px, transparent 1.4px);
  background-size: 8px 8px;
  box-shadow: inset 0 5px 0 rgba(255, 241, 210, 0.48);
  color: var(--arcade-ink);
}

.control-deck::before,
.control-deck::after {
  position: absolute;
  bottom: 7px;
  width: 8px;
  height: 8px;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--steel);
  content: "";
}

.control-deck::before { left: 7px; }
.control-deck::after { right: 7px; }

.deck-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 5px;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.deck-heading b {
  padding: 2px 5px;
  background: var(--impact-red);
  color: var(--arcade-ink);
  transform: skewX(-8deg);
}

.power-wrap {
  margin-bottom: 9px;
  padding: 5px 6px 6px;
  border: 3px solid var(--arcade-ink);
  border-radius: 4px;
  background: var(--screen-cream);
  box-shadow: 4px 4px 0 var(--arcade-ink);
}

.power-copy {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 3px;
  font-size: 8px;
  font-weight: 900;
}

.power-copy strong {
  color: var(--impact-red);
  font-family: "DIN Alternate", "Arial Narrow", Arial, sans-serif;
  font-size: 14px;
}

.power-track {
  height: 18px;
  overflow: hidden;
  border: 2px solid var(--arcade-ink);
  background: var(--arcade-ink);
}

.power-track i {
  display: block;
  width: 100%;
  height: 100%;
  background:
    repeating-linear-gradient(90deg, transparent 0 26px, var(--arcade-ink) 26px 29px),
    linear-gradient(90deg, var(--signal-cyan) 0 54%, var(--action-yellow) 54% 77%, var(--impact-red) 77% 100%);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 42ms linear;
}

.power-wrap.is-danger { animation: warning-flash 160ms steps(2, end) infinite alternate; }

.charge-button {
  position: relative;
  display: block;
  width: min(82%, 300px);
  min-height: 92px;
  margin: 0 auto 10px;
  border: 4px solid var(--arcade-ink);
  border-radius: 50% / 38%;
  background: var(--impact-red);
  box-shadow: 7px 9px 0 var(--arcade-ink), 0 14px 18px rgba(17, 19, 24, 0.22);
  color: var(--screen-cream);
  cursor: pointer;
  touch-action: none;
  transition: transform 90ms var(--ease-snap), box-shadow 90ms var(--ease-snap), filter 120ms linear;
}

.charge-button::before,
.charge-button::after {
  position: absolute;
  top: 8px;
  width: 8px;
  height: 8px;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--screen-cream);
  content: "";
}

.charge-button::before { left: 9px; }
.charge-button::after { right: 9px; }

.charge-button:hover:not(:disabled) {
  filter: saturate(1.1) brightness(1.04);
  transform: translate(-1px, -1px);
  box-shadow: 8px 10px 0 var(--arcade-ink), 0 15px 18px rgba(17, 19, 24, 0.24);
}

.charge-button:active,
.charge-button.is-charging {
  transform: translate(5px, 6px);
  box-shadow: 2px 2px 0 var(--arcade-ink), 0 5px 8px rgba(17, 19, 24, 0.18);
}

.charge-button:disabled { cursor: wait; filter: grayscale(0.4) contrast(0.8); }
.button-main,
.button-sub { display: block; }

.button-main {
  font-family: "Arial Black", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: clamp(25px, 8vw, 34px);
  font-weight: 900;
  letter-spacing: -0.04em;
  line-height: 1;
  text-shadow: 3px 3px 0 var(--arcade-ink);
}

.button-sub {
  display: block;
  margin: 0 0 8px;
  color: var(--arcade-ink);
  font-size: 9px;
  font-weight: 900;
  text-align: center;
}

.control-help {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 16px;
  font-size: 8px;
  font-weight: 900;
}

.control-help span { white-space: nowrap; }

.control-help b {
  display: inline-grid;
  width: 16px;
  height: 16px;
  place-items: center;
  border: 2px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--screen-cream);
}

.control-help i { width: 16px; height: 2px; background: var(--arcade-ink); }

.source-note {
  display: flex;
  gap: 7px;
  padding: 10px 4px 0;
  color: var(--screen-cream);
  font-size: 8px;
  font-weight: 600;
  line-height: 1.5;
}

.source-note strong { flex: 0 0 auto; color: var(--action-yellow); }

.result-dialog {
  width: min(100vw, 430px);
  max-width: none;
  height: 100dvh;
  max-height: none;
  margin: auto;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: var(--cabinet-blue);
  color: var(--screen-cream);
}

.result-dialog::backdrop { background: rgba(17, 19, 24, 0.9); }

.result-sheet {
  position: relative;
  display: flex;
  min-height: 100%;
  flex-direction: column;
  overflow: auto;
  border: 5px solid var(--arcade-ink);
  background-color: var(--cabinet-blue);
  background-image: radial-gradient(circle, rgba(255, 241, 210, 0.18) 1px, transparent 1.5px);
  background-size: 9px 9px;
  color: var(--screen-cream);
  text-align: center;
}

.result-dialog[open] .result-sheet { animation: result-slam 380ms var(--ease-snap) both; }

.close-result {
  position: absolute;
  z-index: 20;
  top: max(9px, env(safe-area-inset-top));
  right: 9px;
  width: 44px;
  height: 44px;
  border: 3px solid var(--arcade-ink);
  border-radius: 50%;
  background: var(--screen-cream);
  box-shadow: 3px 3px 0 var(--arcade-ink);
  color: var(--arcade-ink);
  font-family: Arial, sans-serif;
  font-size: 30px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.result-marquee {
  display: flex;
  min-height: 62px;
  align-items: center;
  justify-content: space-between;
  padding: max(9px, env(safe-area-inset-top)) 61px 7px 13px;
  border-bottom: 4px solid var(--arcade-ink);
  background: var(--action-yellow);
  color: var(--arcade-ink);
}

.result-marquee span {
  font-family: "Arial Black", "PingFang SC", sans-serif;
  font-size: 25px;
  font-weight: 900;
  letter-spacing: -0.04em;
}

.result-marquee b { font-family: "Arial Narrow", Arial, sans-serif; font-size: 10px; letter-spacing: 0.08em; }

.result-still {
  position: relative;
  height: clamp(175px, 38svh, 320px);
  min-height: 175px;
  margin: 0;
  overflow: hidden;
  border-bottom: 4px solid var(--arcade-ink);
  background: var(--arcade-ink);
}

.result-still::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 54%, rgba(17, 19, 24, 0.78));
  content: "";
}

.result-still img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: contrast(1.05) saturate(0.92);
}

.result-still figcaption {
  position: absolute;
  z-index: 2;
  bottom: 7px;
  left: 10px;
  padding: 3px 5px;
  background: var(--arcade-ink);
  color: var(--screen-cream);
  font-size: 8px;
  font-weight: 700;
}

.result-copyboard {
  position: relative;
  flex: 0 0 auto;
  padding: 12px 15px 10px;
  border-bottom: 4px solid var(--arcade-ink);
  background: var(--screen-cream);
  color: var(--arcade-ink);
}

.result-kicker {
  display: inline-block;
  margin: 0 0 5px;
  padding: 3px 8px;
  background: var(--impact-red);
  color: var(--screen-cream);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.08em;
  transform: skewX(-7deg);
}

.result-sheet h2 {
  max-width: 360px;
  margin: 0 auto;
  color: var(--cabinet-blue);
  font-family: "Arial Black", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: clamp(29px, 10vw, 46px);
  font-weight: 900;
  letter-spacing: -0.04em;
  line-height: 0.98;
  text-shadow: 3px 3px 0 var(--action-yellow);
  text-wrap: balance;
}

.result-metric {
  display: inline-block;
  margin-top: 9px;
  padding: 5px 9px;
  border: 3px solid var(--arcade-ink);
  background: var(--action-yellow);
  box-shadow: 3px 3px 0 var(--arcade-ink);
  font-size: 12px;
  font-weight: 800;
}

.result-metric strong {
  color: var(--impact-red);
  font-family: "DIN Alternate", "Arial Narrow", Arial, sans-serif;
  font-size: 22px;
}

.result-copy {
  max-width: 34em;
  margin: 10px auto 5px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.45;
}

.result-sheet blockquote { margin: 5px auto 0; color: var(--impact-red); font-size: 15px; font-weight: 900; }

.result-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
  padding: 10px 10px 6px;
  background: var(--cabinet-blue);
  margin-top: auto;
}

.result-actions button {
  min-height: 48px;
  border: 3px solid var(--arcade-ink);
  border-radius: 4px;
  box-shadow: 4px 4px 0 var(--arcade-ink);
  color: var(--screen-cream);
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
  transition: transform 90ms var(--ease-snap), box-shadow 90ms var(--ease-snap);
}

.result-actions button:active { box-shadow: 1px 1px 0 var(--arcade-ink); transform: translate(3px, 3px); }
.action-primary {
  grid-column: 1;
  grid-row: 2;
  background: var(--screen-cream);
  color: var(--arcade-ink) !important;
}

.action-secondary {
  grid-column: 1 / -1;
  grid-row: 1;
  min-height: 58px !important;
  background: var(--impact-red);
  color: var(--screen-cream) !important;
  font-size: 15px !important;
}

.action-tertiary {
  grid-column: 2;
  grid-row: 2;
  background: var(--arcade-ink);
  color: var(--action-yellow) !important;
}

.share-feedback {
  min-height: 28px;
  margin: 0;
  padding: 4px 12px max(7px, env(safe-area-inset-bottom));
  background: var(--cabinet-blue);
  color: var(--action-yellow);
  font-size: 9px;
  font-weight: 800;
}

.toast {
  position: fixed;
  z-index: 100;
  right: 50%;
  bottom: max(18px, env(safe-area-inset-bottom));
  padding: 9px 13px;
  border: 3px solid var(--arcade-ink);
  border-radius: 3px;
  background: var(--signal-cyan);
  box-shadow: 4px 4px 0 var(--arcade-ink);
  color: var(--arcade-ink);
  font-size: 11px;
  font-weight: 900;
  opacity: 0;
  pointer-events: none;
  transform: translate(50%, 12px);
  transition: opacity 140ms steps(2, end), transform 180ms var(--ease-snap);
}

.toast.show { opacity: 1; transform: translate(50%, 0); }
body.is-charging .game-panel { animation: cabinet-rumble 110ms steps(2, end) infinite alternate; }
body.is-charging .screen-bezel { background: var(--impact-red); }

@keyframes charge-wobble {
  from { transform: translateY(0) rotate(-2deg) scale(1); }
  to { transform: translateY(3px) rotate(3deg) scale(0.96); }
}

@keyframes bitten-shake {
  0%, 100% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(-7px) rotate(-6deg); }
  75% { transform: translateX(7px) rotate(6deg); }
}

@keyframes cabinet-rumble {
  from { transform: translate(-1px, 0) rotate(-0.1deg); }
  to { transform: translate(1px, 1px) rotate(0.1deg); }
}

@keyframes impact-slam {
  0% { opacity: 0; transform: translate(-50%, -50%) rotate(-8deg) scale(2.4); filter: blur(6px); }
  24% { opacity: 1; transform: translate(-50%, -50%) rotate(-8deg) scale(0.92); filter: blur(0); }
  58% { opacity: 1; transform: translate(-50%, -50%) rotate(-8deg) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -50%) rotate(-8deg) scale(0.86); }
}

@keyframes warning-flash {
  from { background: var(--screen-cream); }
  to { background: var(--impact-red); }
}

@keyframes splash-pop {
  0% { opacity: 0; transform: translateX(-50%) scale(0.4); }
  35% { opacity: 1; }
  100% { opacity: 0; transform: translateX(-50%) translateY(-18px) scale(1.25); }
}

@keyframes result-slam {
  from { clip-path: inset(0 0 100% 0); filter: contrast(1.5); }
  to { clip-path: inset(0); filter: contrast(1); }
}

@media (max-height: 650px) {
  .phone-app { padding-top: 4px; padding-bottom: 4px; }
  .topbar { min-height: 51px; padding-top: 5px; padding-bottom: 4px; }
  .brand p { display: none; }
  .brand h1 { font-size: 25px; }
  .cabinet-bull { width: 33px; height: 33px; font-size: 20px; }
  .status-bar { min-height: 36px; }
  .hud-cell strong { font-size: 14px; }
  .movie-stage { height: 238px; min-height: 238px; }
  .scene-card { top: 8px; padding-top: 5px; padding-bottom: 6px; }
  .scene-card strong { font-size: 11px; }
  .control-deck { padding-top: 6px; padding-bottom: 7px; }
  .power-wrap { margin-bottom: 6px; padding-top: 3px; padding-bottom: 4px; }
  .power-track { height: 15px; }
  .charge-button { width: min(76%, 250px); min-height: 67px; margin-bottom: 5px; }
  .button-main { font-size: 23px; }
  .button-sub { margin-bottom: 4px; font-size: 8px; }
  .control-help { display: none; }
  .source-note { display: none; }
  .result-marquee { min-height: 49px; }
  .result-still { height: 155px; min-height: 155px; }
  .result-copyboard { padding-top: 8px; padding-bottom: 7px; }
  .result-sheet h2 { font-size: 28px; }
  .result-copy { margin-top: 7px; font-size: 10px; }
  .result-sheet blockquote { font-size: 12px; }
  .result-actions { padding-top: 7px; }
  .result-actions button { min-height: 42px; }
}

@media (min-width: 700px) {
  body { display: grid; place-items: start center; }
  .phone-app { padding-top: 20px; padding-bottom: 24px; }
  .game-panel { box-shadow: 13px 16px 0 rgba(17, 19, 24, 0.78), 0 30px 56px rgba(17, 19, 24, 0.34); }
  .result-dialog { height: min(100dvh, 932px); }
}

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

  body.is-charging .game-panel { animation: none !important; }
  .flight-impact { display: none; }
}
