/* Breathing Circle */

@keyframes breathe {
  0% {
    transform: scale(1);
    box-shadow: 0 0 15px currentColor;
  }
  35% {
    transform: scale(1.14);
    box-shadow: 0 0 30px currentColor;
  }
  45% {
    transform: scale(1.12);
    box-shadow: 0 0 28px currentColor;
  }
  75% {
    transform: scale(1.04);
    box-shadow: 0 0 18px currentColor;
  }
  100% {
    transform: scale(1);
    box-shadow: 0 0 15px currentColor;
  }
}

.breathing-circle-wrapper {
  width: 100%;
  display: flex;
  justify-content: center;
  transition: transform 0.5s ease;
  cursor: pointer;
}

.breathing-circle-wrapper:hover {
  transform: scale(1.1);
}

.breathing-circle-wrapper:active {
  transform: scale(0.95);
}

.breathing-circle-wrapper:has(.shrinking),
.breathing-circle-wrapper:has(.stretching) {
  cursor: default;
}

.breathing-circle-wrapper:has(.shrinking):hover,
.breathing-circle-wrapper:has(.stretching):hover,
.breathing-circle-wrapper:has(.shrinking):active,
.breathing-circle-wrapper:has(.stretching):active {
  transform: none;
}

.breathing-circle {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: currentColor;
  transition: width 0.5s ease, height 0.5s ease, border-radius 0.5s ease, box-shadow 0.3s ease, opacity 0.3s ease;
  box-shadow: 0 0 15px currentColor;
  opacity: 0.8;
  animation: breathe 4.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.breathing-circle-wrapper:hover .breathing-circle {
  box-shadow: 0 0 35px currentColor;
  opacity: 1;
}

.breathing-circle.pre-activation-circle {
  opacity: 0;
  pointer-events: none;
}

.breathing-circle-wrapper:has(.pre-activation-circle) {
  pointer-events: none;
}

.breathing-circle-wrapper:has(.pre-activation-circle):hover {
  transform: none;
}

.breathing-circle.fade-in {
  transition: width 0.5s ease, height 0.5s ease, border-radius 0.5s ease, box-shadow 0.3s ease, opacity 1.5s ease-out;
}

.breathing-circle.shrinking {
  width: 5px;
  height: 5px;
  cursor: default;
  box-shadow: 0 0 10px currentColor;
  animation: breathe 4.5s cubic-bezier(0.4, 0, 0.6, 1) infinite paused;
  transform: scale(1);
}

.breathing-circle.shrinking:hover {
  transform: none;
}

.breathing-circle.stretching {
  width: 100%;
  height: 5px;
  border-radius: 2px;
  cursor: default;
  box-shadow: 0 0 10px currentColor;
  animation: none;
}

.breathing-circle.stretching:hover {
  transform: none;
}

.breathing-circle.fade-out {
  opacity: 0;
  transition: opacity 0.3s ease;
  animation: none;
}

.breathing-circle.hidden {
  display: none;
}
