.tp-contact-rail {
  position: fixed;
  right: calc(16px + env(safe-area-inset-right, 0px));
  bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  z-index: 25;
  display: flex;
  flex-direction: column;
  gap: 10px;
  isolation: isolate;
}

.tp-contact-rail[hidden],
body:has(.consent-banner:not([hidden])) .tp-contact-rail,
body:has(.menu-toggle[aria-expanded="true"]) .tp-contact-rail,
body:has(.products-toggle[aria-expanded="true"]) .tp-contact-rail,
body:has(dialog[open]) .tp-contact-rail {
  display: none !important;
}

.tp-contact-link {
  position: relative;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  padding: 0;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #203730;
  color: #fff;
  box-shadow: 0 4px 16px rgb(14 37 29 / .2);
  text-decoration: none;
  transition: transform 160ms ease, background 160ms ease;
}

.tp-contact-link svg { display: block; flex: none; pointer-events: none; }
.tp-contact-phone { color: #93e4c9; }
.tp-contact-email { background: #93e4c9; color: #17352b; }
.tp-contact-link:hover { color: #fff; background: #294d3f; }
.tp-contact-email:hover { color: #17352b; background: #b8f4de; }
.tp-contact-link:active { transform: scale(.95); }
.tp-contact-link:focus-visible { outline: 3px solid #203730; outline-offset: 3px; box-shadow: 0 0 0 7px #fff; }

.tp-contact-label {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%);
  padding: 7px 11px;
  border-radius: 6px;
  background: #203730;
  color: #fff;
  font: 600 13px/1.4 Inter, Arial, sans-serif;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
}

.tp-contact-link:focus-visible .tp-contact-label { opacity: 1; visibility: visible; }

@media (hover: hover) and (pointer: fine) {
  .tp-contact-link:hover { transform: translateX(-3px); }
  .tp-contact-link:hover .tp-contact-label { opacity: 1; visibility: visible; }
}

@media (max-width: 700px) {
  .tp-contact-rail {
    right: calc(10px + env(safe-area-inset-right, 0px));
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    gap: 8px;
  }
  .tp-contact-link { width: 48px; height: 48px; }
  .tp-contact-link svg { width: 23px; height: 23px; }
  .tp-contact-whatsapp svg { width: 25px; height: 25px; }
}

@media (max-width: 670px) {
  .product-detail-actions { margin-right: 60px; }
  .product-detail-actions > .button { width: 100%; text-align: center; }
}

@keyframes tp-phone-pulse {
  0%, 24%, 100% {
    transform: scale(1);
    background: #203730;
    box-shadow: 0 4px 16px rgb(14 37 29 / .2), 0 0 0 0 rgb(147 228 201 / 0);
  }
  12% {
    transform: scale(1.12);
    background: #34594d;
    box-shadow: 0 4px 16px rgb(14 37 29 / .2), 0 0 0 7px rgb(147 228 201 / .22);
  }
}

@media (prefers-reduced-motion: no-preference) {
  .tp-contact-phone {
    animation: tp-phone-pulse 5s ease-in-out 1s infinite;
  }
  .tp-contact-phone:is(:hover, :focus-visible, :active) {
    animation: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tp-contact-link { transition: none; }
  .tp-contact-link:hover, .tp-contact-link:active { transform: none; }
}

@media print {
  .tp-contact-rail { display: none !important; }
}
