* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body,
html {
  height: 100%;
  overflow: hidden;
  overflow-x: hidden;
}

body.loading .hotspot,
body.loading #walker,
body.loading #modal {
  display: none;
}

body.loading {
  overflow: hidden;
}

body.loading #walker,
body.loading #flowers-overlay,
body.loading #callouts-container,
body.loading #bottom-callouts-container,
body.loading #modal,
body.loading .hotspot {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s ease, visibility 0s 0.5s;
}

body.loading #background,
body.loading .first-background {
  opacity: 1;
  visibility: visible;
}

#loading-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: transparent;
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity 0.5s ease;
}

#loading-image {
  max-width: 25vw;
  width: auto;
  height: auto;
}

#background {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  display: flex;
  transform: translateX(0);
  z-index: 1;
  width: auto;
}

#background img {
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
}

.first-background {
  width: 100vw !important;
  object-fit: cover !important;
}

#walker {
  position: fixed;
  bottom: -2vh;
  height: auto;
  z-index: 15;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.5s ease;
  width: 1200px;
  left: 50%;
  transform: translateX(-50%);
}

.hotspot {
  position: absolute;
  width: clamp(170px, 12vw, 200px);
  height: clamp(170px, 12vw, 200px);
  cursor: pointer;
  z-index: 30;
  border-radius: 50%;
  transform-origin: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease, transform 0.3s ease;
}

.hotspots-ready .hotspot {
  opacity: 1;
  pointer-events: auto;
}

.hotspot img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 50%;
  pointer-events: none;
}

.hotspot.active {
  animation: pulse 2s infinite;
}

.hotspot.zoomed {
  transform: scale(1.8);
  z-index: 1002;
  animation: none;
}

@media (max-width: 768px) {
  .hotspot {
    width: clamp(150px, 20vw, 200px);
    height: clamp(150px, 20vw, 200px);
  }

  .hotspot img {
    width: 100%;
    height: 100%;
  }

  .hotspot.active {
    transform: scale(1.1);
  }

  .hotspot.zoomed {
    transform: scale(1.6);
  }
}

@media (max-width: 480px) {
  .hotspot {
    width: clamp(150px, 25vw, 200px);
    height: clamp(150px, 25vw, 200px);
  }
}

#callouts-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  z-index: 25;
  width: auto;
  pointer-events: none;
}

.hotspot-bird {
  left: 10%;
  top: 30%;
}
.hotspot-burr {
  left: 25%;
  top: 10%;
}
.hotspot-butterfly {
  left: 40%;
  top: 50%;
}
.hotspot-millipede {
  left: 30%;
  top: 15%;
}
.hotspot-moss {
  left: 35%;
  top: 8%;
}
.hotspot-pollen {
  left: 45%;
  top: 55%;
}
.hotspot-pond {
  left: 50%;
  top: 18%;
}
.hotspot-sand {
  left: 55%;
  top: 10%;
}
.hotspot-slug {
  left: 28%;
  top: 12%;
}
.hotspot-soil {
  left: 65%;
  top: 15%;
}

#bottom-callouts-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  z-index: 14;
  width: auto;
  pointer-events: none;
}

#modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 999;
  display: none;
  width: 100%;
  max-width: 1400px;
  height: auto;
  max-height: 95vh;
  border-radius: 8px;
  overflow: hidden;
}

#modal.visible {
  display: flex;
  justify-content: center;
  align-items: center;
}

#modal-content {
  position: relative;
  width: 100%;
  height: auto;
  max-height: 95vh;
  padding: 20px;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.image-container {
  position: relative;
  display: inline-block;
}

#modal-image {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 99vh;
  object-fit: contain;
  margin: 0 auto;
}

.modal-btn {
  position: absolute;
  cursor: pointer;
  z-index: 1003;
  pointer-events: all;
  background: none;
  border: none;
  outline: none;
  padding: 10px;
}

#modal-close {
  top: 10%;
  right: 6%;
  width: 6%;
}

#modal-prev {
  bottom: -1%;
  left: -5%;
  width: 35%;
}

#modal-next {
  bottom: -1%;
  right: -8%;
  width: 35%;
}

@media (max-width: 900px) and (min-width: 769px) {
  #modal-close {
    width: 8%;
    top: 10%;
    right: 6%;
  }

  #modal-prev {
    width: 40%;
    bottom: -3%;
    left: -6.5%;
  }

  #modal-next {
    width: 40%;
    bottom: -3%;
    right: -10%;
  }
}

@keyframes pulse {
  0% {
    transform: scale(0.95);
  }

  50% {
    transform: scale(1.1);
  }

  100% {
    transform: scale(0.95);
  }
}

@media (max-width: 600px) {
  #modal-prev,
  #modal-next {
    width: 60px;
  }
}

@media (min-width: 769px) {
  #walker {
    width: 1100px;
    bottom: -4vh;
  }
}

@media (max-width: 768px) {
  #walker {
    width: 1100px;
    bottom: -3vh;
  }

  #modal {
    width: 90% !important;
    height: auto;
    max-height: 80vh;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
  }

  #modal-close {
    width: 9%;
    top: 10%;
    right: 6%;
  }

  #modal-prev {
    width: 48%;
    bottom: -6%;
    left: -9%;
  }

  #modal-next {
    width: 48%;
    bottom: -6%;
    right: -13%;
  }
}

@media (max-width: 480px) {
  #walker {
    width: 1100px;
    bottom: -2vh;
  }

  #loading-image {
    max-width: 50vw;
  }

  #modal {
    width: 100% !important;
    height: auto;
    max-height: 90vh;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
  }

  #modal-close {
    width: 16%;
    top: 6%;
    right: 10%;
  }

  #modal-prev {
    width: 85%;
    bottom: -3%;
    left: -17%;
  }

  #modal-next {
    width: 85%;
    bottom: -3%;
    right: -24%;
  }
}

#flowers-overlay {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: auto;
  z-index: 20;
  pointer-events: none;
  display: flex;
  transform: translateX(0);
}

#flowers-overlay img {
  width: auto;
  height: 100%;
  object-fit: contain;
  display: block;
  margin-left: 0;
}

.wonder-yonder-button {
  position: absolute;
  bottom: 20px;
  transform: translateX(-50%);
  z-index: 1000;
  display: block;
  pointer-events: auto;
}

.wonder-yonder-button img {
  display: block;
  width: clamp(140px, 24vw, 244px);
  height: auto;
  transition: transform 0.2s ease-in-out;
}

@media (max-width: 480px) {
  .wonder-yonder-button {
    bottom: 15px;
  }
}
