/* ===============================================
  VARIABLES
  =============================================== */
:root {
  /* Colors */
  --box-color: rgba(173, 216, 230, 0.486);
  --primary-text-color: lavender;
  --primary-bg-color: black;
  --menu-color: rgba(173, 216, 230, 0.416);
  --menu-hover-color: rgba(173, 216, 230, 0.703);
  --menu-focus-color: lightskyblue;
  
  /* Cube properties */
  --spinning-cube-size: 6em;
  --cube-face-translate: calc(var(--spinning-cube-size) / 2);
  --cube-width: 1em;
  --cube-bg-color: rgba(0, 153, 255, 0.3);

  @property --cube-face-translate {
    syntax: "<length>";
    initial-value: 3em;
    inherits: true;
  }

  /* Wrapper properties */
  --wrapper-blur: 2px;
  --wrapper-contrast: 8;
  --wrapper-brightness: 1;
  
  /* 3D settings */
  --perspective-value: 2em;
  --perspective-origin-value: 50% calc(50% - 0em);
  
  /* Backgrounds */
  --background-image: url(img/sky_fyros_night_thunder.webp);
  --background-size: 100%;
  --background-position: center;
  
  /* Patterns */
  --checkerbox: repeating-conic-gradient(
    from 45deg,
    #111 0deg 90deg,
    #222 90deg 180deg
  );
  
  /* Circle properties */
  --circle-size: 22em;
  --sky-distance: 0em;
  
  /* Animation */
  --cube-rotation-time: 10s;
  --sky-rotation-time: 300s;
}


/* ===============================================
  BASE STYLES
  =============================================== */
body {
  background-color: var(--primary-bg-color);
  min-height: 100svh;
  contain:paint;
  text-rendering: optimizeSpeed;
}

img{
  max-width:100%;
  height:auto;
  vertical-align:middle;
  font-style: italic;
  background-repeat:no-repeat;
  background-size: cover;
  shape-margin: 0.75rem;
}


/* ===============================================
  OVERLAY & MENU
  =============================================== */
.overlay {
  position: absolute;
  color: var(--menu-color);
  z-index: 1;
  overflow: hidden;
  font-size: 66px;
  font-family: Arial, Helvetica, sans-serif;
  width:10em;
  max-width: 10em;
}

.menu-item:hover,
.menu-item.active,
.menu-item:focus {
  position: relative;
  filter: none;
  background: transparent;
  cursor: pointer;
  color: var(--menu-hover-color);
  transition: all 0.1s ease-in-out;
  isolation: isolate;
}

.menu-item:focus {
  color: var(--menu-focus-color);
  outline: none;

}

.menu-item.active::after{
  content: '';
  position: absolute;
  left: -50%;
  width: 300%;
  height: 4rem;
  top: 20%;
  background: linear-gradient(
    to right,
    transparent,
    var(--menu-focus-color), 
    var(--menu-color), 
    transparent
  );
  opacity: 0.3;
  filter: blur(1rem);
  z-index: -1;
  transform: perspective(20em) rotateY(5deg);
  animation: pulse-light 2s infinite alternate;
}

@keyframes pulse-light {
  from { opacity: 0.6; filter: blur(0.4rem); }
  to { opacity: 0.9; filter: blur(0.7rem); }
}

input[type="radio"] {
  display: none;
}

/* ===============================================
  SELECTORS AND INDICATORS
  =============================================== */
.buttons{
  margin-top: 10px;
  width:1.2rem;
  height:1.2rem;
  cursor:pointer;
}

.background-select-buttons {
  position: fixed;
  display: flex;
  flex-direction: column;
  right: 0px;
  top: 0px;
  z-index:2;
  padding:15px;
}

.background-select-button,.buttons {
 position: relative;
 z-index:2;
 margin: 2px;
 font-size: 16px;
 filter: brightness(0.3);
 transition: filter 0.5s ease;
 cursor: pointer;
}

.background-select-button:hover, .buttons:hover {
 filter: brightness(2); 
}

.background-select-button:has(> input[type="radio"]:checked) {
  filter: brightness(1);
}

/* Background selection styles
  Uses :has() for modern browsers and fallback with ~ selector
  Each radio button changes the background image and size variables */

input[value="fish"]:checked ~ .stage,
body:has(input[value="fish"]:checked) {
  --background-image: url(img/fish.webp);
  --background-size: contain;
}

input[value="frog"]:checked ~ .stage,
body:has(input[value="frog"]:checked) {
  --background-image: url(img/frog.gif);
  --background-size:75%;
}

input[value="smirk"]:checked ~ .stage,
body:has(input[value="smirk"]:checked) {
  --background-image: url(img/smirk.webp);
  --background-size: contain;
  --menu-color: red;
  --menu-hover-color: green;
  --menu-focus-color: blue;
}

.sound-indicator{
  position:fixed;
  bottom:15px;
  right:15px;
  width:30px;
  height:30px;
  border-radius:50%;
  background:rgba(0,0,0,0.5);
  color:white;
  font-size:16px;
  z-index:2;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  filter:brightness(0.5);
  opacity:1;
  transition: opacity 0.5s ease;
}

.sound-indicator.hidden {
  opacity: 0;
}

/* ===============================================
  CONTENT AREA (cube)
  =============================================== */
.content {
  display: none;
  padding: 0.5em;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 5px;
  transition: opacity 0.5s ease;
  position: absolute;
  opacity: 0;
  font-size: 0.5em;
  text-align: center;
  min-width: calc(var(--spinning-cube-size) + 2em) !important;
  max-width: calc(var(--spinning-cube-size) + 10em) !important;
  width: max-content !important;
  max-inline-size: calc(var(--spinning-cube-size) + 10em) !important;
  overflow-wrap: break-word;
  white-space: normal;
  cursor: pointer;
}

.content.active {
  display: block;
  opacity: 1;
}
.content.active * {
  max-width: 100%;
}

#content-6 {
  hyphens: auto;
}
.scene a{
  display: contents;
  max-width:100%;
  color: inherit;
  text-decoration-line: none;
}

.content.active key {
  color: blue;
}

/* ===============================================
  STAGE & SCENE
  =============================================== */
.stage {
  font-size: 80px;
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  color: var(--primary-text-color);
}

.scene {
  position: relative;
  transform-style: preserve-3d;
  perspective: var(--perspective-value);
  perspective-origin: var(--perspective-origin-value);
}

/* ===============================================
  CIRCLE BACKGROUND
  =============================================== */
.circle {
  perspective: 10em;
  position: absolute;
  transform-style: preserve-3d;
  width: var(--circle-size);
  height: var(--circle-size);
  background-color: #000;
  top: calc(var(--circle-size) / -2);
  left: calc(var(--circle-size) / -2);
  border-radius: 50%;
  background-image: var(--background-image);
  background-size: var(--background-size);
  image-rendering:pixelated;
  background-repeat:no-repeat;
  transform-origin: center center;
  box-shadow: inset 0 0 5em rgba(0, 0, 0, 0.7);
  animation: sky var(--sky-rotation-time) infinite linear;
}

/* ===============================================
  SPINNING CUBE
  =============================================== */
.spinning-cube-wrapper { 
  font-size: 65px;
  display: flex;
  justify-content: center;
  align-items: center;
  position: absolute;
  height: 7em;
  filter: blur(var(--wrapper-blur)) contrast(var(--wrapper-contrast)) brightness(1.27);
  transform: translateY(-3em) translateX(3em);
  perspective: 10em;
  perspective-origin: var(--perspective-origin-value);
}

.spinning-cube-wrapper.activating-wrapper {
  animation: wrapper-activate 0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955);
  --wrapper-brightness: 1.5; /* Only change brightness */
}

.spinning-cube {
  width: var(--spinning-cube-size);
  height: var(--spinning-cube-size);
  position: absolute;
  transform-style: preserve-3d;
  animation: rotate var(--cube-rotation-time) infinite linear;
  top: 0;
  left: -3em;
}



.spinning-cube-face {
  position: absolute;
  transform-style: preserve-3d;
  width: var(--spinning-cube-size);
  height: var(--spinning-cube-size);
  background: var(--cube-bg-color);
  box-shadow: 0 0 1em #000a inset;
  transition: background 1s ease-in-out, transform 0.8s ease-in-out;
  background-size: 100% 100%;
  cursor: pointer;
}

/* Cube face transforms */
.spinning-cube-face.front { transform: rotateY(0deg) translateZ(var(--cube-face-translate)); }
.spinning-cube-face.back { transform: rotateY(180deg) translateZ(var(--cube-face-translate)); }
.spinning-cube-face.right { transform: rotateY(90deg) translateZ(var(--cube-face-translate)); }
.spinning-cube-face.left { transform: rotateY(-90deg) translateZ(var(--cube-face-translate)); }
.spinning-cube-face.top { transform: rotateX(90deg) translateZ(var(--cube-face-translate)); }
.spinning-cube-face.bottom { transform: rotateX(-90deg) translateZ(var(--cube-face-translate)); }

/* ===============================================
  MENU COLOR CONTROLS
  =============================================== */
/* Common face styling for hover and active states */
[id^="menu-"]:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face^="content-"],
[id^="menu-"]:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face^="content-"] {
  background-position: center;
  background-repeat: no-repeat;
  background-blend-mode: luminosity;
  image-rendering: pixelated;
}

/* Face 1 */
#menu-1:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-1"],
#menu-1:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-1"] {
  background-color: rgba(255, 0, 0, 0.5);
  background-image: url(img/home.gif);
  
}

/* Face 2 */
#menu-2:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-2"],
#menu-2:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-2"] {
  background-color: rgba(255, 255, 255, 0.5);
  background-image: url(https://blob.gifcities.org/gifcities/5XODJ5EPRUG6ROINVPVHP6ADSDRAJQLC.gif);
  background-blend-mode: hue;
}

/* Face 3 */
#menu-3:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-3"],
#menu-3:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-3"] {
  background-color:rgba(0, 255, 0, 0.5);
  background-image: url(img/frog.gif);
  background-blend-mode:normal;

}
/* Face 4 */
#menu-4:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-4"],
#menu-4:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-4"] {
  background-color: rgba(255, 255, 0, 0.5);
  background-image: url(https://blob.gifcities.org/gifcities/2UYOFIARIVYMHSAPY76NSH6HSIEPOZMT.gif);
}

/* Face 5 */
#menu-5:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-5"],
#menu-5:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-5"] {
  background-color: rgba(255, 0, 255, 0.5);
  background-image: url(https://blob.gifcities.org/gifcities/2PZU3L3JSEOCT2DK4IYJQJJCZZGR3YV4.gif);
  background-blend-mode: lighten;
}

/* Face 6 */
#menu-6:hover ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-6"],
#menu-6:checked ~ .spinning-cube-wrapper .spinning-cube-face[data-face="content-6"] {
  background-color: rgba(0, 255, 255, 0.5);
  background-image: url(https://blob.gifcities.org/gifcities/VVG3L6R2O5VITUVHPXUS5WISMONXLSOE.gif);
}

/* ===============================================
  ANIMATIONS
  =============================================== */
@keyframes rotate {
  from { transform: rotateX(0deg) rotateY(0deg); }
  to { transform: rotateX(360deg) rotateY(360deg); }
}

@keyframes sky {
  from { transform: rotateX(0deg) translateZ(var(--sky-distance)) rotateZ(0deg); }
  to { transform: rotateX(0deg) translateZ(var(--sky-distance)) rotateZ(360deg); }
}

@keyframes wrapper-activate {
  0% { transform: translateY(-3em) translateX(3em) scale3d(1, 1, 1); --cube-face-translate: 3em }
  50% { transform: translateY(-3em) translateX(3em) scale3d(0.8, 0.8,0.8); --cube-face-translate: 9em; }
  100% { transform: translateY(-3em) translateX(3em) scale3d(0.6, 0.6, 0.6); --cube-face-translate: 27em; }
}

.help-footer{
  display:none;
  position:absolute;
  z-index:10;
  bottom:0px;
  left:0px;
  color:white;
}
/* ===============================================
  RESPONSIVE DESIGN
  =============================================== */
@media (max-width: 768px) {
  :root {
    --spinning-cube-size: 5em;
    --circle-size: 25em;
  }

  .overlay {
    font-size: 50px;
  }
  
  .stage {
    font-size: 50px;
  }

  .spinning-cube-wrapper {
    filter: blur(1px) contrast(9);
    transform: translateY(0) translateX(0.5em);
    width: 100%;
  }

  .content.active {
    display: none;
  }

  .menu-item {
    width: 100%;
    margin: 3px 0;
  }

  .help-footer{
    display:inline-block;
    z-index: 9;
  }
}
