.bwf-button {
  --bwf-green: #25d366;
  position: fixed;
  z-index: 99999;
  right: 24px;
  bottom: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 58px;
  height: 58px;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 999px;
  background: var(--bwf-green);
  box-shadow: 0 10px 26px rgba(20, 97, 57, .25);
  color: #fff;
  text-decoration: none;
  animation: bwf-breathe 3.2s ease-in-out infinite;
  transition: min-width .25s ease, padding .25s ease, transform .25s ease, box-shadow .25s ease;
}

.bwf-button--left { right: auto; left: 24px; }
.bwf-button:hover,
.bwf-button:focus-visible { min-width: 174px; padding: 0 18px 0 10px; transform: translateY(-3px); box-shadow: 0 14px 34px rgba(20, 97, 57, .32); color: #fff; }
.bwf-button:focus-visible { outline: 3px solid #d7b46a; outline-offset: 3px; }
.bwf-button__icon { display: grid; flex: 0 0 58px; width: 58px; height: 58px; place-items: center; }
.bwf-button__icon svg { width: 31px; height: 31px; fill: currentColor; }
.bwf-button__label { max-width: 0; overflow: hidden; font: 700 15px/1.1 Arial, sans-serif; letter-spacing: .01em; white-space: nowrap; opacity: 0; transform: translateX(6px); transition: max-width .22s ease, opacity .18s ease, transform .22s ease; }
.bwf-button:hover .bwf-button__label,
.bwf-button:focus-visible .bwf-button__label { max-width: 120px; opacity: 1; transform: translateX(0); }

@keyframes bwf-breathe {
  0%, 100% { box-shadow: 0 10px 26px rgba(20, 97, 57, .24), 0 0 0 0 rgba(37, 211, 102, .28); }
  50% { box-shadow: 0 12px 30px rgba(20, 97, 57, .30), 0 0 0 8px rgba(37, 211, 102, 0); }
}

@media (max-width: 767px) {
  .bwf-button { right: 17px; bottom: 18px; width: 56px; min-width: 56px; height: 56px; }
  .bwf-button--left { right: auto; left: 17px; }
  .bwf-button__icon { flex-basis: 56px; width: 56px; height: 56px; }
  .bwf-button:hover { min-width: 56px; padding: 0; transform: none; }
  .bwf-button:hover .bwf-button__label { max-width: 0; opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .bwf-button { animation: none; transition: none; }
  .bwf-button__label { transition: none; }
}
