/* Contact buttons: floating in a corner of every page (modules/contact-buttons/render.php). Colours and sizes
   come from variables on the wrapper; the only theme variable used is --accent. */
/* column-reverse: the round button stays in the corner, the menu and the bubble open above it */
.contact-buttons { position: fixed; bottom: calc(var(--cb-y, 20px) + env(safe-area-inset-bottom, 0px)); right: var(--cb-x, 20px); z-index: 90; display: flex; flex-direction: column-reverse; align-items: flex-end; gap: 10px; }
.contact-buttons[data-side="left"] { right: auto; left: var(--cb-x, 20px); align-items: flex-start; }
.contact-buttons__main { width: var(--cb-size, 56px); height: var(--cb-size, 56px); box-sizing: border-box; padding: 0; line-height: 1; border: 0; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: var(--cb-colour, var(--accent, #1a5bb5)); box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.45); cursor: pointer; }
.contact-buttons__main svg, .contact-buttons__main img { width: 55%; height: 55%; }
.contact-buttons__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; align-items: inherit; }
.contact-buttons__list .contact-buttons__item { min-height: 44px; display: inline-flex; align-items: center; gap: 10px; padding: 6px 16px 6px 6px; border: 0; border-radius: 999px; background: #fff; color: #1f2328; font: 600 0.95rem/1.2 system-ui, sans-serif; text-decoration: none; box-shadow: 0 6px 18px -8px rgba(0, 0, 0, 0.4); cursor: pointer; }
.contact-buttons__list .contact-buttons__item svg, .contact-buttons__list .contact-buttons__item img { width: 32px; height: 32px; padding: 6px; border-radius: 50%; color: #fff; background: var(--cb-colour, var(--accent, #1a5bb5)); box-sizing: border-box; }
.contact-buttons__bubble { margin: 0; max-width: 240px; padding: 10px 34px 10px 14px; position: relative; border-radius: 12px; background: #fff; color: #1f2328; font: 0.9rem/1.4 system-ui, sans-serif; box-shadow: 0 8px 24px -10px rgba(0, 0, 0, 0.45); }
/* 44×44 touch area around a small ×: the negative margin keeps it in the corner of the bubble */
.contact-buttons__close { position: absolute; top: 0; right: 0; width: 44px; height: 44px; margin: -8px -8px 0 0; padding: 0; border: 0; background: none; color: inherit; font-size: 18px; line-height: 1; cursor: pointer; }
/* the open menu takes the place of the greeting above the round button */
.contact-buttons:not([data-direct]) .contact-buttons__list:not([hidden]) ~ .contact-buttons__bubble { display: none; }
/* direct (set by the script): of several buttons only one is shown here and now; it is the round button */
.contact-buttons[data-direct] .contact-buttons__list .contact-buttons__item { width: var(--cb-size, 56px); height: var(--cb-size, 56px); min-height: 0; box-sizing: border-box; padding: 0; justify-content: center; border-radius: 50%; color: #fff; background: var(--cb-colour, var(--accent, #1a5bb5)); box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.45); line-height: 1; }
.contact-buttons[data-direct] .contact-buttons__list .contact-buttons__item svg, .contact-buttons[data-direct] .contact-buttons__list .contact-buttons__item img { width: 55%; height: 55%; padding: 0; background: none; }
.contact-buttons[data-direct] .contact-buttons__label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.contact-buttons[data-pulse] .contact-buttons__main, .contact-buttons[data-pulse][data-direct] .contact-buttons__item { animation: cb-pulse 2.4s ease-out infinite; }
@keyframes cb-pulse { 0% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.25); } 70% { box-shadow: 0 0 0 14px rgba(0, 0, 0, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); } }
@media (prefers-reduced-motion: reduce) { .contact-buttons[data-pulse] .contact-buttons__main, .contact-buttons[data-pulse][data-direct] .contact-buttons__item { animation: none; } }
@media (min-width: 1100px) { .contact-buttons [data-device="mobile"] { display: none !important; } }
@media (max-width: 1099px) { .contact-buttons [data-device="desktop"] { display: none !important; } }
.age-locked .contact-buttons { display: none; }
.contact-buttons [hidden], .contact-buttons[hidden] { display: none !important; }
/* Screen-reader text of a round button (the theme may not define the WordPress class). */
.contact-buttons .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.contact-buttons a { text-decoration: none; }
/* Not over the theme's open full-screen mobile menu (main.js puts menu-open on <html>). */
.menu-open .contact-buttons { display: none; }
