:root {
  --paper: #ffffff;
  --ink: #000000;
  --acid-pink: #ff36b5;
  --acid-yellow: #f7ff46;
  --acid-lime: #b7ff2b;
  --cyan: #46c4e6;
  --px: min(1.22vw, 7px);
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Courier New", monospace;
}

.poster-page {
  position: relative;
  min-height: 100vh;
  padding: 1.1rem 0.8rem 1rem;
  overflow: hidden;
}

.route-link {
  position: fixed;
  top: 14px;
  right: 14px;
  z-index: 20;
  display: grid;
  place-items: center;
  min-width: 86px;
  height: 34px;
  padding: 0 12px;
  background: var(--acid-lime);
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
}

.route-link:hover,
.route-link:focus-visible {
  background: var(--acid-pink);
  outline: calc(0.35 * var(--px)) solid var(--cyan);
  outline-offset: calc(0.45 * var(--px));
}

.asset-canvas {
  display: block;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
  height: auto;
}

.poster-head {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(1.2 * var(--px));
}

.subtitle-cluster {
  position: relative;
  width: min(92vw, calc(150 * var(--px)));
  min-height: calc(24 * var(--px));
}

.subtitle-image,
.guide-arrow-image {
  display: block;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
  height: auto;
}

.subtitle-image {
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(calc(-8 * var(--px)));
  width: calc(92 * var(--px));
}

.guide-arrow-stack {
  position: absolute;
  left: 77.5%;
  top: calc(31.5 * var(--px));
  width: calc(20 * var(--px));
  height: calc(10 * var(--px));
  transform: translate(-50%, -50%) rotate(135deg);
  transform-origin: center center;
}

.guide-arrow-image {
  position: absolute;
  inset: 0;
  width: calc(24 * var(--px));
}

.guide-arrow-a {
  animation: lime-blink-a 0.8s steps(1, end) infinite;
}

.guide-arrow-b {
  animation: lime-blink-b 0.8s steps(1, end) infinite;
}

.monster-stage {
  display: flex;
  justify-content: center;
  margin-top: calc(-1 * var(--px));
}

.monster-shell {
  position: relative;
  width: min(98vw, calc(104 * var(--px)));
}

.monster-canvas {
  width: 100%;
}

.mouth-ui {
  position: absolute;
  left: 14.2%;
  top: 45.6%;
  width: 70.5%;
  height: 40.7%;
  display: block;
}

.step-card {
  color: var(--paper);
  position: absolute;
  left: 50%;
  top: 50%;
  width: 82%;
  transform: translate(-50%, -56%);
  padding: 0;
}

.field-block {
  display: block;
  width: 100%;
}

.field-block.hidden {
  display: none;
}

.field-title {
  display: block;
  margin-bottom: calc(1.7 * var(--px));
  font-size: clamp(16px, calc(2.1 * var(--px)), 24px);
  line-height: 1;
  text-transform: uppercase;
  text-align: left;
}

.input-line {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: end;
  gap: calc(1.1 * var(--px));
  border-bottom: calc(0.7 * var(--px)) solid var(--paper);
  padding-bottom: calc(0.5 * var(--px));
}

.input-prefix {
  font-size: clamp(18px, calc(2.2 * var(--px)), 26px);
  line-height: 1;
}

#textInput {
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--paper);
  font: inherit;
  font-size: clamp(18px, calc(2.2 * var(--px)), 26px);
  padding: 0;
  outline: none;
}

#textInput::placeholder {
  color: rgba(255, 255, 255, 0.7);
}

.task-panel {
  display: grid;
  gap: calc(1.5 * var(--px));
  width: 100%;
}

.task-panel.hidden {
  display: none;
}

.task-item {
  display: grid;
  grid-template-columns: calc(2.2 * var(--px)) 1fr auto;
  gap: calc(1.2 * var(--px));
  align-items: center;
  font-size: clamp(14px, calc(1.85 * var(--px)), 21px);
  line-height: 1.18;
}

.task-item input {
  width: calc(1.8 * var(--px));
  height: calc(1.8 * var(--px));
  margin: calc(0.1 * var(--px)) 0 0;
  accent-color: var(--acid-lime);
}

.task-copy {
  display: block;
}

.task-link {
  color: var(--acid-lime);
  text-decoration: none;
  text-transform: uppercase;
  font-size: clamp(12px, calc(1.45 * var(--px)), 16px);
}

.task-link:hover,
.task-link:focus-visible {
  color: var(--acid-yellow);
  outline: none;
}

.verify-button {
  justify-self: start;
  margin-top: calc(0.9 * var(--px));
  border: calc(0.45 * var(--px)) solid var(--paper);
  background: transparent;
  color: var(--paper);
  font: inherit;
  font-size: clamp(13px, calc(1.6 * var(--px)), 18px);
  padding: calc(0.55 * var(--px)) calc(1.3 * var(--px));
  cursor: pointer;
}

.verify-button:hover,
.verify-button:focus-visible {
  border-color: var(--acid-lime);
  color: var(--acid-lime);
  outline: none;
}

.verify-note {
  margin: 0;
  color: rgba(255, 255, 255, 0.7);
  font-size: clamp(11px, calc(1.3 * var(--px)), 14px);
  line-height: 1.2;
}

.done-message {
  color: var(--paper);
  max-width: 92%;
  font-size: clamp(13px, calc(1.55 * var(--px)), 18px);
  line-height: 1.22;
}

.done-message.hidden {
  display: none;
}

.tooth-hit-area {
  position: absolute;
  left: calc((58 / 104) * 100%);
  top: calc((130 / 171) * 100%);
  width: calc((19 / 104) * 100%);
  height: calc((23 / 171) * 100%);
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  z-index: 5;
  display: block;
}

.tooth-hit-area:focus-visible {
  outline: calc(0.45 * var(--px)) solid var(--ink);
  outline-offset: calc(0.4 * var(--px));
}

@keyframes lime-blink-a {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes lime-blink-b {
  0% {
    opacity: 0;
  }

  50% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

@media (max-width: 840px) {
  :root {
    --px: min(1.55vw, 5px);
  }
}
