/* ==========================================================================
   Component: datpro_contact_fab
   One floating contact button, bottom right. Never auto-opens.
   ========================================================================== */

.dp-fab {
  position: fixed;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  z-index: var(--z-fab);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.75rem;
}

.dp-fab__toggle {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: var(--r-pill);
  background: var(--dp-blue);
  color: #fff;
  box-shadow: 0 8px 24px rgba(0, 40, 104, 0.28);
  transition: background-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}

.dp-fab__toggle:hover {
  background: var(--dp-blue-700);
  transform: translateY(-2px);
}

.dp-fab__toggle svg {
  width: 25px;
  height: 25px;
}

.dp-fab__toggle .dp-fab__icon-close {
  display: none;
}

.dp-fab__toggle[aria-expanded="true"] .dp-fab__icon-open {
  display: none;
}

.dp-fab__toggle[aria-expanded="true"] .dp-fab__icon-close {
  display: block;
}

/* ---------- Panel --------------------------------------------------------- */

.dp-fab__panel {
  order: -1;
  width: min(17.5rem, calc(100vw - 2rem));
  padding: 0.5rem;
  background: #fff;
  border: 1px solid var(--dp-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px) scale(0.98);
  transform-origin: bottom right;
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease),
    visibility var(--dur) var(--ease);
}

.dp-fab__panel.is-open {
  opacity: 1;
  visibility: visible;
  transform: none;
}

.dp-fab__panel-title {
  padding: 0.5rem 0.625rem 0.375rem;
  color: var(--dp-text-subtle);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
}

.dp-fab__item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5625rem 0.625rem;
  border-radius: var(--r-sm);
  color: var(--dp-text);
  transition: background-color var(--dur-fast) var(--ease);
}

.dp-fab__item:hover {
  background: var(--dp-surface);
}

.dp-fab__item-icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: var(--r-sm);
  background: var(--dp-blue-50);
  color: var(--dp-blue);
}

.dp-fab__item-icon svg {
  width: 18px;
  height: 18px;
}

.dp-fab__item-text {
  min-width: 0;
}

.dp-fab__item-label {
  display: block;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  line-height: 1.35;
}

.dp-fab__item-value {
  display: block;
  color: var(--dp-text-subtle);
  font-size: var(--fs-xs);
  line-height: 1.4;
  overflow-wrap: anywhere;
}

@media (max-width: 479px) {
  .dp-fab {
    right: max(0.75rem, env(safe-area-inset-right));
    bottom: max(0.75rem, env(safe-area-inset-bottom));
  }

  .dp-fab__toggle {
    width: 52px;
    height: 52px;
  }
}
