/* =================================================== Phone Button — bkbg-phb-* (style.css) =================================================== */ /* ── Floating container ────────────────────────────────────────────── */ .bkbg-phb-float { position: fixed; z-index: 99998; display: flex; flex-direction: column; align-items: center; gap: var(--phb-gap, 14px); pointer-events: none; /* hidden by default when scrollOffset > 0; frontend.js reveals */ } .bkbg-phb-float.bkbg-phb-visible { pointer-events: auto; } /* Position variants */ .bkbg-phb-float.bkbg-phb-bottom-right { bottom: 24px; right: 24px; align-items: flex-end; } .bkbg-phb-float.bkbg-phb-bottom-left { bottom: 24px; left: 24px; align-items: flex-start; } .bkbg-phb-float.bkbg-phb-bottom-center { bottom: 24px; left: 50%; transform: translateX(-50%); } .bkbg-phb-float.bkbg-phb-top-right { top: 24px; right: 24px; align-items: flex-end; } .bkbg-phb-float.bkbg-phb-top-left { top: 24px; left: 24px; align-items: flex-start; } /* ── Inline container ──────────────────────────────────────────────── */ .bkbg-phb-inline { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--phb-gap, 14px); } /* ── Single button item ────────────────────────────────────────────── */ .bkbg-phb-item { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; pointer-events: auto; } /* ── Pulse ring ────────────────────────────────────────────────────── */ .bkbg-phb-pulse { position: absolute; inset: -8px; border-radius: inherit; animation: bkbg-phb-pulse 2s ease-out infinite; pointer-events: none; } .bkbg-phb-phone .bkbg-phb-pulse { background: var(--phb-phone-pulse, #6366f1); } .bkbg-phb-whatsapp .bkbg-phb-pulse { background: var(--phb-wa-pulse, #25d366); } @keyframes bkbg-phb-pulse { 0% { transform: scale(1); opacity: 0.45; } 70% { transform: scale(1.7); opacity: 0; } 100% { transform: scale(1.7); opacity: 0; } } /* ── The button itself ─────────────────────────────────────────────── */ .bkbg-phb-btn { position: relative; display: flex; align-items: center; justify-content: center; text-decoration: none; cursor: pointer; border: none; outline: none; z-index: 1; transition: transform 0.18s cubic-bezier(.34,1.56,.64,1), box-shadow 0.18s ease; will-change: transform; flex-shrink: 0; } .bkbg-phb-btn:hover, .bkbg-phb-btn:focus-visible { transform: scale(1.12) translateY(-2px); } .bkbg-phb-btn:active { transform: scale(0.96); } /* ── Label ─────────────────────────────────────────────────────────── */ .bkbg-phb-label { white-space: nowrap; padding: 3px 10px; border-radius: 99px; pointer-events: none; user-select: none; } /* ── Label typography ──────────────────────────────────────────────── */ .bkbg-phb-label { font-family: var(--bkbg-phb-lb-font-family, inherit); font-size: var(--bkbg-phb-lb-font-size-d, 14px); font-weight: var(--bkbg-phb-lb-font-weight, 600); font-style: var(--bkbg-phb-lb-font-style, normal); text-decoration: var(--bkbg-phb-lb-text-decoration, none); text-transform: var(--bkbg-phb-lb-text-transform, none); line-height: var(--bkbg-phb-lb-line-height-d, 1.2); letter-spacing: var(--bkbg-phb-lb-letter-spacing-d, 0.01em); word-spacing: var(--bkbg-phb-lb-word-spacing-d, normal); } @media (max-width: 1024px) { .bkbg-phb-label { font-size: var(--bkbg-phb-lb-font-size-t, var(--bkbg-phb-lb-font-size-d, 14px)); line-height: var(--bkbg-phb-lb-line-height-t, var(--bkbg-phb-lb-line-height-d, 1.2)); letter-spacing: var(--bkbg-phb-lb-letter-spacing-t, var(--bkbg-phb-lb-letter-spacing-d, 0.01em)); word-spacing: var(--bkbg-phb-lb-word-spacing-t, var(--bkbg-phb-lb-word-spacing-d, normal)); } } @media (max-width: 767px) { .bkbg-phb-label { font-size: var(--bkbg-phb-lb-font-size-m, var(--bkbg-phb-lb-font-size-t, var(--bkbg-phb-lb-font-size-d, 14px))); line-height: var(--bkbg-phb-lb-line-height-m, var(--bkbg-phb-lb-line-height-t, var(--bkbg-phb-lb-line-height-d, 1.2))); letter-spacing: var(--bkbg-phb-lb-letter-spacing-m, var(--bkbg-phb-lb-letter-spacing-t, var(--bkbg-phb-lb-letter-spacing-d, 0.01em))); word-spacing: var(--bkbg-phb-lb-word-spacing-m, var(--bkbg-phb-lb-word-spacing-t, var(--bkbg-phb-lb-word-spacing-d, normal))); } } /* ── Floating label floats beside the button ───────────────────────── */ .bkbg-phb-float .bkbg-phb-item { flex-direction: row; align-items: center; gap: 8px; } .bkbg-phb-float.bkbg-phb-bottom-right .bkbg-phb-item, .bkbg-phb-float.bkbg-phb-top-right .bkbg-phb-item { flex-direction: row-reverse; /* label on left, button on right */ } /* ── Editor preview wrapper (no real behaviour) ────────────────────── */ .bkbg-phb-editor-wrap { padding: 8px; } .bkbg-phb-preview a { pointer-events: none; } /* ── Reduced motion ────────────────────────────────────────────────── */ @media (prefers-reduced-motion: reduce) { .bkbg-phb-pulse { animation: none; opacity: 0; } .bkbg-phb-btn { transition: none; } } /* ── Print ─────────────────────────────────────────────────────────── */ @media print { .bkbg-phb-float { display: none !important; } }