:root {
  --wa-color: #25d366;
  --wa-hover: #1ebe57;
  --wa-bg: #ffffff;
  --wa-shadow: rgba(0, 0, 0, 0.15);
  --wa-size: 3.25rem;
  --wa-icon-size: calc(var(--wa-size) * 0.45);
  --wa-close-size: calc(var(--wa-size) * 0.45);
  --wa-close-icon-size: calc(var(--wa-close-size) * 0.6);
  --wa-offset: clamp(1rem, 0.75rem + 1vw, 1.5rem);
  --wa-transition: 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@media only screen and (min-width: 48rem) {
  :root {
    --wa-size: 3.75rem;
  }
}

.wa-widget {
  position: fixed;
  right: calc(var(--wa-offset) + env(safe-area-inset-right, 0px));
  bottom: calc(var(--wa-offset) + env(safe-area-inset-bottom, 0px));
  z-index: 9999;
  opacity: 0;
  transform: translateY(20px) scale(0.9);
  pointer-events: none;
  transition:
    opacity var(--wa-transition),
    transform var(--wa-transition);
}

.wa-widget.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

.wa-button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--wa-size);
  height: var(--wa-size);
  background-color: var(--wa-color);
  border-radius: 50%;
  box-shadow: 0 4px 12px var(--wa-shadow);
  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
  cursor: pointer;
}

.wa-button svg {
  width: var(--wa-icon-size);
  height: var(--wa-icon-size);
}

.wa-button:hover,
.wa-button:focus-visible {
  background-color: var(--wa-hover);
  transform: scale(1.05);
  outline: none;
}

.wa-close {
  position: absolute;
  top: calc(var(--wa-close-size) * -0.28);
  right: calc(var(--wa-close-size) * -0.28);
  z-index: 2;
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--wa-close-size);
  height: var(--wa-close-size);
  background-color: var(--wa-bg);
  color: #555;
  border: none;
  border-radius: 50%;
  box-shadow: 0 2px 6px var(--wa-shadow);
  cursor: pointer;
  opacity: 0;
  transform: scale(0.5);
  pointer-events: none;
  transition:
    opacity 0.3s ease 0.2s,
    transform 0.3s ease 0.2s,
    background-color 0.2s;
}

.wa-close svg {
  width: var(--wa-close-icon-size);
  height: var(--wa-close-icon-size);
}

.wa-widget.is-visible .wa-close {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}

.wa-close:hover,
.wa-close:focus-visible {
  background-color: #f0f0f0;
  color: #000;
  outline: none;
}
