* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  font-family: Georgia, "Times New Roman", serif;
  background: #0e0d0c;
  color: #f1eee8;
}

/* PAGE D’ACCUEIL */

.relief-screen {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #0e0d0c;
}

.relief-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(100%) contrast(1.08) brightness(0.78);
}

/* ================================= */
/* HOTSPOTS LUMINEUX PAGE D'ACCUEIL */
/* ================================= */

.hotspot {

  position: absolute;

  display: block;

  border-radius: 50%;

  text-decoration: none;

  background:
    radial-gradient(
      circle,
      rgba(255,255,255,0.95) 0%,
      rgba(255,255,255,0.55) 18%,
      rgba(255,255,255,0.15) 40%,
      rgba(255,255,255,0) 70%
    );

  filter: blur(8px);

  box-shadow:
    0 0 40px rgba(255,255,255,0.9),
    0 0 90px rgba(255,255,255,0.7),
    0 0 180px rgba(255,255,255,0.5);

  animation:
    hotspotPulse 4s ease-in-out infinite;

  transition:
    transform 1s ease,
    box-shadow 1s ease,
    opacity 1s ease;

    

}

.hotspot span {
  display: none;
}

.hotspot:hover {

  transform: scale(1.4);

  background:
    radial-gradient(
      circle,
      rgba(255,255,255,1) 0%,
      rgba(255,255,255,0.85) 15%,
      rgba(255,255,255,0.3) 40%,
      rgba(255,255,255,0) 75%
    );

  box-shadow:
    0 0 80px rgba(255,255,255,1),
    0 0 180px rgba(255,255,255,0.9),
    0 0 300px rgba(255,255,255,0.8);

  cursor: pointer;

}

@keyframes hotspotPulse {

  0% {

    opacity: 0.45;

    transform: scale(1);

  }

  50% {

    opacity: 1;

    transform: scale(1.25);

  }

  100% {

    opacity: 0.45;

    transform: scale(1);

  }

}

.hotspot span {

  display: none;

}

.hotspot:hover {

  cursor: pointer;

  transform: scale(1.15);

  background:
    radial-gradient(
      circle,
      rgba(255,255,255,0.5),
      rgba(255,255,255,0)
    );

  box-shadow:
    0 0 80px rgba(255,255,255,0.4);

}

@keyframes hotspotPulse {

  0% {

    opacity: .2;

  }

  50% {

    opacity: .55;

  }

  100% {

    opacity: .2;

  }

}
.hotspot-recit {
  left: 43%;
  top: 16%;
  width: 17%;
  height: 42%;
}

.hotspot-musique {
  left: 8%;
  top: 34%;
  width: 26%;
  height: 43%;
}

.hotspot-plan {
  right: 7%;
  top: 29%;
  width: 24%;
  height: 48%;
}

/* PAGES TEXTE */

.page {

  min-height: 100vh;

  display: flex;
  justify-content: center;
  align-items: center;

  background: #090909;

}
  

.retour {
  position: fixed;
  top: 28px;
  left: 32px;
  z-index: 20;
  color: rgba(238, 232, 220, 0.62);
  text-decoration: none;
  font-size: 0.9rem;
  letter-spacing: 0.08em;
}

.retour:hover {
  color: #eee8dc;
}

.texte {

  max-width: 700px;

  padding: 80px;

  text-align: center;

  background: rgba(255,255,255,0.03);

  backdrop-filter: blur(6px);

  border: 1px solid rgba(255,255,255,0.08);

}

.texte h1 {

  margin: 0 0 40px;

  font-size: clamp(1.8rem, 3vw, 3rem);

  font-weight: 400;

  line-height: 1.1;

  letter-spacing: 0.02em;

  color: rgba(238,232,220,0.82);

  text-transform: lowercase;

}

.texte {
    max-width: 620px;
}

.texte p {
    font-size: 0.88rem;
    line-height: 1.45;
}

/* PAGES IMAGE */

.image-page {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
  background: #0e0d0c;
}

.full-image {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(100%) contrast(1.04) brightness(0.82);
}

.retour-light {
  color: rgba(255, 255, 255, 0.7);
}

.music-panel,
.plan-panel {
  position: absolute;
  right: 6vw;
  bottom: 8vh;
  z-index: 5;
  width: min(420px, calc(100% - 48px));
  padding: 28px;
  background: rgba(12, 11, 10, 0.58);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.16);
}

.music-panel h1,
.plan-panel h1 {
  margin: 0 0 18px;
  font-weight: 400;
  font-size: clamp(2rem, 4vw, 4rem);
  text-transform: lowercase;
}

.music-panel p,
.plan-panel p {
  color: rgba(255,255,255,0.72);
  line-height: 1.7;
}

.music-link {
  display: inline-block;
  margin-top: 20px;
  color: rgba(255,255,255,0.84);
  text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,0.5);
  letter-spacing: 0.08em;
}

.plan-point {
  position: absolute;
  left: 49.5%;
  top: 48%;
  z-index: 4;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: rgba(160, 0, 0, 0.9);
  box-shadow: 0 0 0 8px rgba(160, 0, 0, 0.22);
  animation: pulse 2s infinite ease-in-out;
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 0.9;
  }

  50% {
    transform: scale(1.35);
    opacity: 0.45;
  }
}

@media (max-width: 700px) {
  .relief-image {
    object-position: center;
  }

  .hotspot-recit {
    left: 37%;
    top: 12%;
    width: 26%;
    height: 42%;
  }

  .hotspot-musique {
    left: 3%;
    top: 35%;
    width: 34%;
    height: 42%;
  }

  .hotspot-plan {
    right: 3%;
    top: 32%;
    width: 34%;
    height: 44%;
  }

  .retour {
    top: 18px;
    left: 20px;
  }

  .texte {
    padding-top: 14vh;
  }

  .music-panel,
  .plan-panel {
    left: 24px;
    right: 24px;
    bottom: 32px;
    width: auto;
  }
}
/* ========================= */
/* PAGE MUSIQUE */
/* ========================= */

.music-page {

  width: 100vw;
  height: 100vh;

  overflow: hidden;

  position: relative;

  background: black;

}

.music-background {

  position: absolute;

  inset: 0;

  width: 100%;
  height: 100%;

  object-fit: cover;

  filter:
    contrast(1.05)
    brightness(0.85);

}

.music-overlay {

  position: absolute;

  inset: 0;

  background:
    rgba(0,0,0,0.15);

}

/* ========================= */
/* HALO INTERACTIF */
/* ========================= */

#soundTrigger {

  position: absolute;

  left: 52%;
  top: 38%;

  transform: translate(-50%, -50%);

  width: 180px;
  height: 180px;

  border-radius: 50%;

  cursor: pointer;

  z-index: 20;

  background:
    radial-gradient(
      circle,
      rgba(255,255,255,0.35),
      rgba(255,255,255,0)
    );

  animation:
    pulse 4s ease-in-out infinite;

  transition:
    opacity 1s ease;

}

#soundTrigger:hover {

  background:
    radial-gradient(
      circle,
      rgba(255,255,255,0.55),
      rgba(255,255,255,0)
    );

}

#soundTrigger.played {

  opacity: 0;

  pointer-events: none;

}

.light-text {

  position: absolute;

  left: 50%;
  top: 50%;

  transform: translate(-50%, -50%);

  color: rgba(255,255,255,0.85);

  font-family: Georgia, serif;

  font-size: 1rem;

  letter-spacing: 0.15em;

  text-transform: lowercase;

  opacity: 0;

  transition: opacity .5s ease;

}

#soundTrigger:hover .light-text {

  opacity: 1;

}

@keyframes pulse {

  0% {

    opacity: .25;

    transform:
      translate(-50%, -50%)
      scale(1);

  }

  50% {

    opacity: .7;

    transform:
      translate(-50%, -50%)
      scale(1.2);

  }

  100% {

    opacity: .25;

    transform:
      translate(-50%, -50%)
      scale(1);

  }

}

#soundLine {
  position: absolute;
  left: 0;
  bottom: 6vh;
  width: 100vw;
  height: 120px;
  z-index: 15;
  pointer-events: none;
  opacity: 0.85;
}