.companion-cube-container {
  width: 100%;
  aspect-ratio: 1/1;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 2rem auto;
  position: relative;

  // Ground shadow beneath the cube
  &::after {
    content: "";
    position: absolute;
    bottom: -30%;
    left: 50%;
    transform: translateX(-50%);
    width: 250%;
    height: 50%;
    background: radial-gradient(
      ellipse,
      rgba(0, 0, 0, 0.7) 0%,
      rgba(0, 0, 0, 0.5) 40%,
      transparent 70%
    );
    border-radius: 50%;
    filter: blur(8px);
    z-index: -1;

    @include media-down(md) {
      bottom: -4%;
      filter: blur(6px);
    }

    @include media-down(sm) {
      bottom: -3%;
      filter: blur(4px);
    }
  }
}

.cube-one,
.cube-two {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  aspect-ratio: 1/1;
  overflow: hidden;
  z-index: 30;

  .companion-cube-face {
    animation: dropCycle 24s cubic-bezier(0.68, -0.1, 0.265, 1.1) infinite;
  }
}

.cube-two .companion-cube-face {
  animation-delay: -12s;
}

@keyframes dropCycle {
  0% {
    transform: translateY(-150%);
  }
  12.5% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(0);
  }
  62.5% {
    transform: translateY(150%);
  }
  62.51%,
  100% {
    transform: translateY(-150%);
  }
}

.companion-cube-face {
  width: 100%;
  height: 100%;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #e8e0d5 0%, #d0c8bd 50%, #beb6ab 100%);
  border-radius: 8px;
  box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.3);

  clip-path: polygon(
    /* Top left corner */ 0% 0%,
    0% 35%,
    /* Left indent */ 6% 37.5%,
    6% 62.5%,
    0% 65%,
    /* Bottom left corner */ 0% 100%,
    35% 100%,
    /* Bottom indent */ 37.5% 94%,
    62.5% 94%,
    65% 100%,
    /* Bottom right corner */ 100% 100%,
    100% 65%,
    /* Right indent */ 94% 62.5%,
    94% 37.5%,
    100% 35%,
    /* Top right corner */ 100% 0%,
    65% 0%,
    /* Top indent */ 62.5% 6%,
    37.5% 6%,
    35% 0%
  );

  @include media-down(md) {
    border-radius: 6px;
  }
}

.cube-center-circle {
  position: absolute;
  width: 70%;
  height: 70%;
  background: linear-gradient(135deg, #6a6a6a 0%, #4a4a4a 50%, #3a3a3a 100%);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}

.center-inner-ring {
  position: absolute;
  width: 60%;
  height: 60%;
  border: 2px solid #5a5a5a;
  border-radius: 50%;
  background: linear-gradient(135deg, #e8e0d5 0%, #d0c8bd 50%, #beb6ab 100%);
  border-radius: 50%;

  @include media-down(md) {
    border-width: 1.5px;
  }
}

.grey-bar {
  position: absolute;
  background-color: #5a5a5a;

  &.horizontal-top,
  &.horizontal-bottom {
    height: 2.5%;
  }

  &.vertical-left,
  &.vertical-right {
    width: 2.5%;
  }

  &.horizontal-top {
    left: 0;
    right: 0;
    top: 37.5%;
  }

  &.horizontal-bottom {
    left: 0;
    right: 0;
    bottom: 37.5%;
  }

  &.vertical-left {
    left: 37.5%;
    top: 0;
    bottom: 0;
  }

  &.vertical-right {
    right: 37.5%;
    top: 0;
    bottom: 0;
  }
}

// Pink connector bars extending from center
.pink-bar {
  position: absolute;
  background: #ff80bf;

  &.vertical {
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 5%;
  }

  &.horizontal {
    top: 50%;
    right: 0;
    left: 0;
    transform: translateY(-50%);
    height: 5%;
  }
}

.heart-icon {
  font-size: 5rem;
  z-index: 3;
  color: #ffc0e5;
  pointer-events: none;
  -webkit-text-stroke: 2px #8b5a6f;
  animation: heartPulse 3s ease-in-out infinite;

  @include media-down(lg) {
    font-size: 4rem;
  }

  @include media-down(md) {
    font-size: 3rem;
    -webkit-text-stroke: 1.5px #8b5a6f;
  }

  @include media-down(sm) {
    font-size: 2rem;
    -webkit-text-stroke: 1px #8b5a6f;
  }
}

.portal-icon {
  width: 100%;
  aspect-ratio: 1/1;
  position: relative;
  overflow: visible;
  z-index: 1;

  .portal {
    content: "";
    position: absolute;

    transform: translateX(-10%) scaleY(0);
    width: 120%;
    height: 20%;

    border-radius: 50%;
    border: 8px solid;

    background: radial-gradient(
      ellipse at center,
      rgba(0, 0, 0, 0.95) 0%,
      rgba(0, 0, 0, 0.85) 60%,
      rgba(0, 0, 0, 0.6) 100%
    );

    @include media-down(lg) {
      border-width: 6px;
    }

    @include media-down(md) {
      border-width: 4px;
    }

    @include media-down(sm) {
      border-width: 2px;
    }
  }

  .blue-portal {
    bottom: -10%;
    z-index: 20;

    border-color: #0096ff;
    box-shadow:
      inset 0 0 40px rgba(0, 150, 255, 0.3),
      inset 0 0 20px rgba(0, 150, 255, 0.5);
    animation: portalCycle 24s cubic-bezier(0.68, -0.1, 0.265, 1.1) infinite;
  }

  .orange-portal {
    top: -10%;
    z-index: 40;
    border-color: #ff7800;
    box-shadow:
      0 0 30px 8px rgba(255, 120, 0, 0.8),
      0 0 60px 12px rgba(255, 120, 0, 0.5),
      inset 0 0 30px rgba(255, 120, 0, 0.6);
    animation: portalCycle 24s cubic-bezier(0.68, -0.1, 0.265, 1.1) infinite;
    animation-delay: 0.2s;
  }
}

@keyframes portalCycle {
  0%,
  12% {
    transform: translateX(-10%) scaleY(1);
  }
  12.5%,
  48% {
    transform: translateX(-10%) scaleY(0);
  }
  49%,
  60.5% {
    transform: translateX(-10%) scaleY(1);
  }
  61%,
  100% {
    transform: translateX(-10%) scaleY(0);
  }
}

// Pulsing heart animation
@keyframes heartPulse {
  0%,
  100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.3);
    opacity: 0.85;
  }
}
