/* Kleurenpalet: dezelfde kleuren als PALETTE in het script */
:root {
  --space: #000000;
  --text: #ffffff;
  --teal: #1f7a8c;
  --cyan: #7fe3f5;
  --amber: #ffc890;
  --font-retro: "Press Start 2P", "Courier New", monospace;
}

html, body {
  margin: 0;
  height: 100%;
  overflow: hidden;
  background: #000;
  cursor: crosshair;
}

#scene {
  display: block;
  width: 100vw;
  height: 100vh;
  touch-action: none; /* op mobiel: geen scrollen of zoomen tijdens het spelen */
}

/* Overlays (start, game over, pauze) en countdown: gecentreerd, zelfde titelgrootte */
.overlay,
#countdown {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 28px;
  font-family: var(--font-retro);
  color: #fff;
  text-align: center;
  text-shadow: 4px 4px 0 var(--teal), 0 0 18px rgba(255, 255, 255, 0.35);
  pointer-events: none;
  user-select: none;
  opacity: 0;
  transition: opacity 0.8s ease;
}

.overlay .title,
#countdown {
  font-size: clamp(28px, 7vw, 72px);
}

.overlay.visible {
  opacity: 1;
}

/* De titel van het spel is lang en Press Start 2P is breed: op de maat van
   .overlay .title zou hij op elk scherm behalve 1920px buiten beeld lopen.
   Daarom kleiner en op twee regels. GAME OVER en PAUSED blijven groot. */
#intro .title {
  font-size: clamp(20px, 5vw, 46px);
  line-height: 1.5;
}

.overlay .lines {
  display: flex;
  flex-direction: column;
  gap: 14px;
  font-size: clamp(11px, 1.6vw, 16px);
  line-height: 1.6;
  text-shadow: 2px 2px 0 var(--teal);
}

.overlay .hint {
  font-size: 10px;
  color: rgba(255, 255, 255, 0.7);
  text-shadow: none;
}

.overlay .highlight {
  font-size: clamp(11px, 1.6vw, 16px);
  color: var(--amber);
  text-shadow: 2px 2px 0 #7a3d12;
  visibility: hidden;
}

.overlay .highlight.show {
  visibility: visible;
}

#paused {
  background: rgba(0, 0, 0, 0.35);
  transition: opacity 0.3s ease;
}

/* Elk cijfer springt in beeld en vervaagt binnen één seconde */
#countdown.tick {
  animation: tick 1s ease-out forwards;
}

@keyframes tick {
  0%   { opacity: 0; transform: scale(1.8); }
  20%  { opacity: 1; transform: scale(1); }
  75%  { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(0.9); }
}

/* Console onderaan, volledig transparant */
#console {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 24px;
  padding: 16px;
  background: transparent;
  pointer-events: none; /* muis gaat gewoon door naar de scene */
}

#restart,
#sound,
#fullscreen {
  pointer-events: auto;
  font-family: var(--font-retro);
  font-size: 12px;
  padding: 10px 18px;
  color: #fff;
  background: transparent;
  border: 2px solid rgba(255, 255, 255, 0.8);
  cursor: pointer;
}

#restart:hover:not(:disabled),
#sound:hover,
#fullscreen:hover {
  background: rgba(255, 255, 255, 0.12);
}

/* Volledig scherm: vierkante knop met een icoontje */
#fullscreen {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border-color: rgba(255, 255, 255, 0.45);
}

#fullscreen svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: square;
  shape-rendering: crispEdges;
}

#fullscreen .icon-exit,
#fullscreen.active .icon-enter {
  display: none;
}

#fullscreen.active .icon-exit {
  display: block;
}

#sound {
  border-color: rgba(255, 255, 255, 0.45);
}

#restart:disabled {
  opacity: 0.3;
  cursor: default;
}

/* Level, counter, score en highscore rechts van de restart-knop, zelfde lettergrootte */
.stat {
  font-family: var(--font-retro);
  font-size: 12px;
  color: #fff;
  user-select: none;
  white-space: nowrap;
}

/* Schild: één blokje, gevuld zolang het schild er is */
.pip {
  display: inline-block;
  width: 10px;
  height: 10px;
  box-sizing: border-box;
  border: 2px solid rgba(255, 255, 255, 0.6);
  vertical-align: middle;
}

.pip.on {
  background: var(--cyan);
  border-color: var(--cyan);
}

/* Smalle schermen: console kleiner en compacter */
@media (max-width: 720px) {
  #console {
    gap: 8px 14px;
    padding: 10px;
  }
  #restart,
  #sound,
  .stat {
    font-size: 9px;
  }
  #restart,
  #sound {
    padding: 8px 12px;
  }
  #fullscreen {
    width: 30px;
    height: 30px;
  }
}

/* Rustige meldingen: alleen zacht in- en uitfaden, geen beweging */
#banner,
#combo {
  position: fixed;
  left: 0;
  right: 0;
  font-family: var(--font-retro);
  color: #fff;
  text-align: center;
  pointer-events: none;
  user-select: none;
  opacity: 0;
  transition: opacity 0.6s ease;
}

#banner {
  top: 20%;
  font-size: 16px;
  text-shadow: 2px 2px 0 var(--teal);
}

#combo {
  top: 18px;
  font-size: 12px;
  color: var(--amber);
}

#banner.visible,
#combo.visible {
  opacity: 0.9;
}

/* Punten op de plek van de kapotgeschoten meteoriet */
#popups {
  position: fixed;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}

.popup {
  position: absolute;
  font-family: var(--font-retro);
  font-size: 12px;
  color: var(--amber);
  text-shadow: 2px 2px 0 #7a3d12;
  white-space: nowrap;
  user-select: none;
  opacity: 0;
  transform: translate(-50%, -50%);
}

/* Puntenverlies (UFO geraakt) in een zachte rode tint */
.popup.minus {
  color: #ff8a7a;
  text-shadow: 2px 2px 0 #5a1f18;
}

.popup.show {
  animation: popup 0.9s ease-out forwards;
}

@keyframes popup {
  0%   { opacity: 0; transform: translate(-50%, -50%); }
  15%  { opacity: 1; transform: translate(-50%, -70%); }
  70%  { opacity: 1; transform: translate(-50%, -140%); }
  100% { opacity: 0; transform: translate(-50%, -170%); }
}

@media (prefers-reduced-motion: reduce) {
  .popup.show {
    animation-name: popup-fade;
  }
  @keyframes popup-fade {
    0%, 100% { opacity: 0; transform: translate(-50%, -50%); }
    20%, 70% { opacity: 1; transform: translate(-50%, -50%); }
  }
}