/* Font is dynamically loaded by JS */
/* @import url('https://fonts.googleapis.com/css2?family=Jacquarda+Bastarda+9&display=swap'); */

:root {
  --sat: env(safe-area-inset-top, 0px);
  --sar: env(safe-area-inset-right, 0px);
  --sab: env(safe-area-inset-bottom, 0px);
  --sal: env(safe-area-inset-left, 0px);

  --font-base: "Jacquarda-Bastarda-9", fantasy, monospace, system-ui, sans-serif;
  --font-color: gold;
}

* {
  box-sizing: border-box;
  user-select: none;
}

input[type="number"],
input[type="text"],
input[type="search"] {
  user-select: auto !important;
  -webkit-user-select: auto !important;
  cursor: text !important;
  pointer-events: auto !important;
}

.font-to-load {
  opacity: 0;
}

body,
html {
  margin: 0;
  padding: 0;
  overflow: hidden;
  height: 100dvh;
  width: 100dvw;
  background: linear-gradient(0deg, #228b22, #1a1a1a);
  background-size: 100% 125%;
  font-family: var(--font-base);
  font-size: max(1.75dvh, 16px);
  display: flex;
  justify-content: center;
  cursor: crosshair;
}

body {
  /* Apply safe area padding */
  padding: var(--sat) var(--sar) var(--sab) var(--sal);
  position: relative;
}

body::before {
  content: '';
  position: absolute;
  top: -10%;
  left: -10%;
  width: 120%;
  height: 120%;
  background-image: url('../assets/screenshots/wallpaper.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.25;
  pointer-events: none;
  animation: wallpaperDrift 35s ease-in-out infinite alternate;
}

@keyframes wallpaperDrift {
  0%   { transform: translate(0, 0); }
  25%  { transform: translate(-8%, 0); }
  50%  { transform: translate(-8%, -8%); }
  75%  { transform: translate(0, -8%); }
  100% { transform: translate(0, 0); }
}

body.playing-mode::before {
  display: none; /* Hide wallpaper during gameplay */
}

@keyframes backgroundPan {
  0%   { background-position: 0% 0%; }
  100% { background-position: 200% 200%; }
}

body.playing-mode {
  background: #1a1a1a;
  background-size: 100% 100%;
  animation: none;
}

canvas {
  position: fixed;
  top: 0;
  left: 0;
  height: 100dvh;
  width: 100dvw;
  overflow: hidden;
  object-fit: contain;
  cursor: none;
  touch-action: none;
  image-rendering: pixelated;
}

body.playing-mode canvas {
  top: 32px;
  height: calc(100dvh - 32px - 80px);
}

#stats {
  z-index: -100;
  position: absolute;
  bottom: 0;
  left: 0;
  font-family: monospace;
  font-size: smaller;
}

#homeMenu {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  height: 100dvh;
  width: 100dvw;
  z-index: 50;
  text-align: center;
  padding: 0;
  font-family: var(--font-base);
  font-weight: 400;
  color: var(--font-color);
  text-shadow: 0 0 5px forestgreen, 0 0 10px forestgreen, 0 0 15px forestgreen, 0 0 20px forestgreen, 0 0 25px forestgreen;
  display: flex;
  flex-flow: column;
  align-items: center;
  justify-content: center;
}

/* Subtle animation for the game logo */
@keyframes pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.1); }
  100% { transform: scale(1); }
}

@keyframes blink-caret {
  from, to { border-color: transparent }
  50%       { border-color: var(--font-color); }
}

/* Blinking caret for typewriter effect */
.typewriter-caret {
  border-right: 0.15em solid var(--font-color);
  animation: blink-caret 1s step-end infinite;
}

#gameLogo {
  margin: max(4dvh, 1.5rem);
}

#gameLogo img {
  animation: pulse 3s infinite ease-in-out;
  filter: drop-shadow(0 0 30px var(--font-color)) drop-shadow(0 0 15px var(--font-color));
}

#homeMenu h1 {
  opacity: 0;
  font-size: clamp(2rem, 5vw, 3rem);
  margin: 1.5dvh;
  text-shadow: 0 0 15px forestgreen, 0 0 25px forestgreen, 0 0 35px forestgreen;
  filter: drop-shadow(0 0 5px var(--font-color));
}

#homeMenu h2 {
  cursor: pointer;
  margin: 1.5dvh;
  padding: 0.75dvh 4dvw;
}

#homeMenu h2:first-of-type {
  margin-top: 3.5dvh;
}

#homeMenu h2:hover {
  text-decoration: underline;
}

#mainMenuButtons,
#playOptionsButtons {
  display: flex;
  flex-flow: column;
  width: min(95%, 400px);
}

#mainMenuButtons {
  opacity: 0;
}

.menu-button {
  cursor: pointer;
  padding: 0.75dvh 2.5dvw;
  margin: 1.5dvh auto;
  background: rgba(34, 139, 34, 0.3);
  border: 2px solid var(--font-color);
  border-radius: 0;
  color: var(--font-color);
  font-family: var(--font-base);
  font-size: 1.5rem;
  text-align: center;
  transition: all 0.2s ease-in-out;
  width: 95%;
  text-shadow: 0 0 5px forestgreen;
  box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.8);
}

.menu-button:hover {
  background: rgba(34, 139, 34, 0.7);
  transform: translateY(-3px) scale(1.02);
  box-shadow: 6px 6px 0 rgba(0, 0, 0, 0.8), 0 0 20px var(--font-color);
  filter: brightness(1.2);
}

.menu-button:active {
  transform: translateY(2px) translateX(2px);
  box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.8);
  filter: brightness(0.9);
}

#audioToggleButton {
  position: absolute;
  top: 20px;
  right: 275px;
  font-size: 1.25rem;
  width: 240px;
  padding: 0.85dvh 0;
  margin: 0;
}

#fullscreenToggleButton {
  position: absolute;
  top: 20px;
  right: 20px;
  font-size: 1.25rem;
  width: 240px;
  padding: 0.85dvh 0;
  margin: 0;
}

#progressBar {
  z-index: 100;
  position: absolute;
  top: 60dvh;
  left: 50dvw;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-width: max-content;
  background: rgba(0, 0, 0, 0.7);
  border: 2px solid var(--font-color);
  border-radius: 0;
  padding: 20px;
  box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.8);
}

#progressBar label {
  font-family: var(--font-base);
  font-size: x-large;
  color: var(--font-color);
  text-shadow: 0 0 5px forestgreen, 0 0 10px forestgreen, 0 0 15px forestgreen, 0 0 20px forestgreen, 0 0 25px forestgreen;
}
