.bloom-contact {
  --bloom-contact-primary: var(--b-color-primary, var(--primary, #6366f1));
  --bloom-contact-primary-hover: var(--b-color-primary-hover, var(--primary-d-1, #4f46e5));
  --bloom-contact-accent: var(--b-color-accent, var(--secondary, #8b5cf6));
  --bloom-contact-background: var(--b-color-bg, var(--background, #f8fafc));
  --bloom-contact-surface: var(--b-color-surface, var(--surface, #ffffff));
  --bloom-contact-surface-soft: var(--b-color-surface-soft, var(--surface-soft, #f5f3ff));
  --bloom-contact-text: var(--b-color-text, var(--text, #111827));
  --bloom-contact-muted: var(--b-color-text-muted, var(--text-muted, #4b5563));
  --bloom-contact-border: var(--b-color-border, var(--border, #e5e7eb));
  --bloom-contact-card-radius: var(--b-radius-xl, var(--radius, 24px));
  --bloom-contact-button-radius: var(--b-radius-m, 12px);
  --bloom-contact-content-width: 1180px;
  --bloom-contact-section-spacing: 72px;
  --bloom-contact-form-gap: 16px;
  --bloom-contact-shadow: var(--b-shadow-m, 0 18px 50px rgba(15, 23, 42, .11));
  --bloom-contact-focus: color-mix(in srgb, var(--bloom-contact-accent) 28%, transparent);
  --bloom-contact-on-primary: #ffffff;
  position: relative;
  isolation: isolate;
  box-sizing: border-box;
  color: var(--bloom-contact-text);
  background: var(--bloom-contact-background);
  padding: var(--bloom-contact-section-spacing) 20px;
  font-family: var(--b-font-body, var(--body-font-family, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif));
  line-height: 1.55;
}

.bloom-contact *,
.bloom-contact *::before,
.bloom-contact *::after { box-sizing: border-box; }

.bloom-contact--theme-saas {
  --bloom-contact-primary: #6366f1;
  --bloom-contact-primary-hover: #4f46e5;
  --bloom-contact-accent: #8b5cf6;
  --bloom-contact-background: #f8f7ff;
  --bloom-contact-surface: #ffffff;
  --bloom-contact-surface-soft: #f5f3ff;
  --bloom-contact-text: #111827;
  --bloom-contact-muted: #4b5563;
  --bloom-contact-border: #e2ddfd;
  --bloom-contact-shadow: 0 24px 70px rgba(79, 70, 229, .12);
}

.bloom-contact--theme-light {
  --bloom-contact-primary: #2563eb;
  --bloom-contact-primary-hover: #1d4ed8;
  --bloom-contact-accent: #7c3aed;
  --bloom-contact-background: #f8fafc;
  --bloom-contact-surface: #ffffff;
  --bloom-contact-surface-soft: #f1f5f9;
  --bloom-contact-text: #0f172a;
  --bloom-contact-muted: #475569;
  --bloom-contact-border: #dbe3ee;
}

.bloom-contact--theme-dark,
.bloom-contact--detected-dark {
  --bloom-contact-primary: #a5b4fc;
  --bloom-contact-primary-hover: #c4b5fd;
  --bloom-contact-accent: #c084fc;
  --bloom-contact-background: #0b1020;
  --bloom-contact-surface: #141a2e;
  --bloom-contact-surface-soft: #1c2440;
  --bloom-contact-text: #f8fafc;
  --bloom-contact-muted: #cbd5e1;
  --bloom-contact-border: #34405f;
  --bloom-contact-shadow: 0 28px 90px rgba(0, 0, 0, .38);
  --bloom-contact-on-primary: #111827;
}

.bloom-contact--background-transparent { background: transparent; }
.bloom-contact--background-soft { background: var(--bloom-contact-surface-soft); }
.bloom-contact--background-solid { background: var(--bloom-contact-background); }
.bloom-contact--background-gradient,
.bloom-contact--theme-saas.bloom-contact--background-inherit {
  background:
    radial-gradient(circle at 12% 5%, color-mix(in srgb, var(--bloom-contact-primary) 14%, transparent), transparent 34%),
    radial-gradient(circle at 88% 12%, color-mix(in srgb, var(--bloom-contact-accent) 14%, transparent), transparent 34%),
    linear-gradient(180deg, #ffffff 0%, var(--bloom-contact-background) 58%, color-mix(in srgb, var(--bloom-contact-accent) 7%, #ffffff) 100%);
}
.bloom-contact--theme-dark.bloom-contact--background-gradient,
.bloom-contact--detected-dark.bloom-contact--background-gradient {
  background:
    radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--bloom-contact-primary) 18%, transparent), transparent 38%),
    radial-gradient(circle at 90% 8%, color-mix(in srgb, var(--bloom-contact-accent) 18%, transparent), transparent 34%),
    var(--bloom-contact-background);
}

.bloom-contact__inner { width: min(var(--bloom-contact-content-width), 100%); margin: 0 auto; position: relative; z-index: 1; }
.bloom-contact__header { max-width: 760px; margin: 0 auto clamp(34px, 5vw, 64px); text-align: center; }
.bloom-contact__title {
  margin: 0 0 14px;
  color: var(--bloom-contact-text);
  font-family: var(--b-font-display, var(--heading-font-family, inherit));
  font-size: clamp(2.35rem, 5vw, 4.5rem);
  font-weight: 750;
  line-height: 1.02;
  letter-spacing: -.035em;
}
.bloom-contact--theme-saas .bloom-contact__title {
  background: linear-gradient(135deg, var(--bloom-contact-primary), var(--bloom-contact-accent));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.bloom-contact__intro { color: var(--bloom-contact-muted); font-size: clamp(1rem, 1.6vw, 1.15rem); }
.bloom-contact__intro > :first-child { margin-top: 0; }
.bloom-contact__intro > :last-child { margin-bottom: 0; }
.bloom-contact__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.25fr); gap: clamp(24px, 4vw, 48px); align-items: start; }

.bloom-contact__details,
.bloom-contact__form-panel,
.bloom-contact__map {
  background: color-mix(in srgb, var(--bloom-contact-surface) 96%, transparent);
  border: 1px solid var(--bloom-contact-border);
  border-radius: var(--bloom-contact-card-radius);
  box-shadow: var(--bloom-contact-shadow);
  padding: clamp(24px, 4vw, 40px);
  backdrop-filter: blur(12px);
}
.bloom-contact__section-title { margin: 0 0 22px; color: var(--bloom-contact-text); font-size: clamp(1.35rem, 2.5vw, 2rem); line-height: 1.15; }
.bloom-contact__list { margin: 0; }
.bloom-contact__item { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 18px; padding: 15px 0; border-bottom: 1px solid var(--bloom-contact-border); }
.bloom-contact__item:first-child { padding-top: 0; }
.bloom-contact__item:last-child { border-bottom: 0; }
.bloom-contact__item dt { color: var(--bloom-contact-text); font-weight: 750; }
.bloom-contact__item dd { margin: 0; min-width: 0; color: var(--bloom-contact-muted); overflow-wrap: anywhere; }
.bloom-contact__item a,
.bloom-contact__socials a,
.bloom-contact__map-fallback a { color: var(--bloom-contact-primary); font-weight: 750; text-decoration-thickness: .08em; text-underline-offset: .18em; }
.bloom-contact__item a:hover,
.bloom-contact__socials a:hover,
.bloom-contact__map-fallback a:hover { color: var(--bloom-contact-primary-hover); }
.bloom-contact__line { display: block; }
.bloom-contact__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }

.bloom-contact__button,
.bloom-contact .wpcf7-submit,
.bloom-contact .ff-btn-submit {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 48px;
  border: 1px solid var(--bloom-contact-primary);
  border-radius: var(--bloom-contact-button-radius);
  padding: 11px 19px;
  background: var(--bloom-contact-primary);
  color: var(--bloom-contact-on-primary);
  box-shadow: 0 12px 28px color-mix(in srgb, var(--bloom-contact-primary) 28%, transparent);
  font: inherit;
  font-weight: 800;
  line-height: 1.1;
  text-decoration: none;
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease;
}
.bloom-contact__button:hover,
.bloom-contact .wpcf7-submit:hover,
.bloom-contact .ff-btn-submit:hover {
  transform: translateY(-1px);
  border-color: var(--bloom-contact-primary-hover);
  background: var(--bloom-contact-primary-hover);
  color: var(--bloom-contact-on-primary);
  box-shadow: 0 16px 34px color-mix(in srgb, var(--bloom-contact-primary) 34%, transparent);
}
.bloom-contact__button--secondary {
  background: var(--bloom-contact-surface-soft);
  color: var(--bloom-contact-primary);
  box-shadow: none;
}
.bloom-contact__button--secondary:hover { color: var(--bloom-contact-on-primary); }
.bloom-contact__reveal,
.bloom-contact__link-button { border: 0; padding: 0; background: none; color: var(--bloom-contact-primary); font: inherit; font-weight: 750; text-decoration: underline; text-underline-offset: .18em; cursor: pointer; }
.bloom-contact__socials { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 24px; }
.bloom-contact__notice { border: 1px dashed var(--bloom-contact-border); border-radius: max(10px, calc(var(--bloom-contact-card-radius) - 10px)); padding: 18px; background: var(--bloom-contact-surface-soft); color: var(--bloom-contact-muted); }

.bloom-contact__map { margin-top: clamp(24px, 4vw, 48px); }
.bloom-contact__map-toggle { width: 100%; border: 0; background: none; color: var(--bloom-contact-text); padding: 0; display: flex; align-items: center; justify-content: space-between; gap: 20px; font: inherit; font-size: 1.25rem; font-weight: 800; cursor: pointer; text-align: left; }
.bloom-contact__map-toggle span:last-child { font-size: 1.8rem; transition: transform .18s ease; }
.bloom-contact__map-toggle[aria-expanded="true"] span:last-child { transform: rotate(45deg); }
.bloom-contact__map-panel:not([hidden]) { margin-top: 22px; }
.bloom-contact__map-frame { display: block; width: 100%; min-height: 360px; border: 1px solid var(--bloom-contact-border); border-radius: max(10px, calc(var(--bloom-contact-card-radius) - 8px)); }
.bloom-contact__map-fallback { margin-top: 18px; padding: 16px; border: 1px solid var(--bloom-contact-border); border-radius: max(10px, calc(var(--bloom-contact-card-radius) - 10px)); background: var(--bloom-contact-surface-soft); }
.bloom-contact__map-fallback p { margin-top: 0; }

.bloom-contact .my-custom-form .form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.bloom-contact .my-custom-form .form-column { min-width: 0; }
.bloom-contact .my-custom-form input:not([type="submit"]),
.bloom-contact .my-custom-form select,
.bloom-contact .my-custom-form textarea,
.bloom-contact .frm-fluent-form input:not([type="submit"]),
.bloom-contact .frm-fluent-form select,
.bloom-contact .frm-fluent-form textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--bloom-contact-border);
  border-radius: max(8px, calc(var(--bloom-contact-button-radius) - 1px));
  background: var(--bloom-contact-surface-soft);
  color: var(--bloom-contact-text);
  padding: 13px 15px;
  min-height: 48px;
  font: inherit;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.bloom-contact .my-custom-form input::placeholder,
.bloom-contact .my-custom-form textarea::placeholder,
.bloom-contact .frm-fluent-form input::placeholder,
.bloom-contact .frm-fluent-form textarea::placeholder { color: color-mix(in srgb, var(--bloom-contact-muted) 78%, transparent); opacity: 1; }
.bloom-contact .my-custom-form input:focus,
.bloom-contact .my-custom-form select:focus,
.bloom-contact .my-custom-form textarea:focus,
.bloom-contact .frm-fluent-form input:focus,
.bloom-contact .frm-fluent-form select:focus,
.bloom-contact .frm-fluent-form textarea:focus {
  outline: none;
  border-color: var(--bloom-contact-primary);
  background: var(--bloom-contact-surface);
  box-shadow: 0 0 0 4px var(--bloom-contact-focus);
}
.bloom-contact .my-custom-form textarea,
.bloom-contact .frm-fluent-form textarea { min-height: 150px; resize: vertical; }
.bloom-contact .my-custom-form > p,
.bloom-contact .my-custom-form .form-row,
.bloom-contact .frm-fluent-form .ff-el-group { margin: 0 0 16px; }
.bloom-contact .my-custom-form br { display: none; }
.bloom-contact .form-footer { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; align-items: center; margin-top: 8px; }
.bloom-contact .footer-captcha { color: var(--bloom-contact-muted); line-height: 1.45; }
.bloom-contact .footer-captcha a { color: var(--bloom-contact-primary); }
.bloom-contact .wpcf7-not-valid-tip,
.bloom-contact .ff-el-is-error .text-danger { color: #b42318; }
.bloom-contact .wpcf7-response-output { margin: 18px 0 0; border-radius: max(8px, calc(var(--bloom-contact-button-radius) - 1px)); padding: 12px 14px; }

.bloom-contact :focus-visible { outline: 3px solid var(--bloom-contact-accent); outline-offset: 3px; }

@media (max-width: 800px) {
  .bloom-contact { padding-inline: 16px; }
  .bloom-contact__grid { grid-template-columns: minmax(0, 1fr); }
  .bloom-contact__item { grid-template-columns: minmax(0, 1fr); gap: 5px; }
  .bloom-contact .my-custom-form .form-row,
  .bloom-contact .form-footer { grid-template-columns: minmax(0, 1fr); }
  .bloom-contact__button { flex: 1 1 145px; }
  .bloom-contact__map-frame { min-height: 300px; }
}

@media (prefers-reduced-motion: reduce) {
  .bloom-contact__button,
  .bloom-contact .wpcf7-submit,
  .bloom-contact .ff-btn-submit,
  .bloom-contact__map-toggle span:last-child,
  .bloom-contact .my-custom-form input,
  .bloom-contact .my-custom-form select,
  .bloom-contact .my-custom-form textarea { transition: none; }
}

/* P01C responsive contact behaviour, business-hours state and uniform form rhythm. */
.bloom-contact__grid--form-only { grid-template-columns: minmax(0, 1fr); }
.bloom-contact__grid--form-only .bloom-contact__form-panel { width: min(760px, 100%); margin-inline: auto; }

.bloom-contact__phone-mobile,
.bloom-contact__address-mobile,
.bloom-contact__button--mobile-only { display: none; }
.bloom-contact__phone-desktop { display: inline; }
.bloom-contact__address-desktop { display: grid; }

.bloom-contact__closed-badge {
  display: none;
  margin-inline-start: .45em;
  border: 1px solid color-mix(in srgb, var(--bloom-contact-muted) 35%, transparent);
  border-radius: 999px;
  padding: .15em .5em;
  color: var(--bloom-contact-muted);
  font-size: .72em;
  font-weight: 800;
  letter-spacing: .02em;
  vertical-align: middle;
}
.bloom-contact--closed .bloom-contact__closed-badge { display: inline-flex; }
.bloom-contact__closed-only:not(.bloom-contact__closed-badge) { display: none; }
.bloom-contact[data-bloom-hide-actions-when-closed="1"].bloom-contact--closed .bloom-contact__open-only { display: none !important; }
.bloom-contact[data-bloom-hide-actions-when-closed="1"].bloom-contact--closed .bloom-contact__closed-only:not(.bloom-contact__closed-badge) { display: inline; }

.bloom-contact__item--phone dd > span,
.bloom-contact__item--address dd > span { min-width: 0; }
.bloom-contact__item--phone [data-bloom-contact-revealed],
.bloom-contact__item--address [data-bloom-contact-revealed] { overflow-wrap: anywhere; }

.bloom-contact .my-custom-form {
  display: grid;
  gap: var(--bloom-contact-form-gap);
}
.bloom-contact .my-custom-form > *,
.bloom-contact .my-custom-form > p,
.bloom-contact .my-custom-form .form-row,
.bloom-contact .my-custom-form .form-footer { margin-block: 0 !important; }
.bloom-contact .my-custom-form .form-row,
.bloom-contact .form-footer { gap: var(--bloom-contact-form-gap); }
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap { display: block; }
.bloom-contact .frm-fluent-form .ff-el-group { margin-bottom: var(--bloom-contact-form-gap) !important; }
.bloom-contact .frm-fluent-form .ff-el-group:last-child { margin-bottom: 0 !important; }

/* The module renders one provider-agnostic disclosure below the selected form. */
.bloom-contact[data-bloom-recaptcha-notice="1"] .footer-captcha { display: none !important; }
.bloom-contact__recaptcha-notice {
  margin: var(--bloom-contact-form-gap) 0 0;
  color: var(--bloom-contact-muted);
  font-size: .82rem;
  line-height: 1.5;
}
.bloom-contact__recaptcha-notice a { color: var(--bloom-contact-primary); }
body.bloom-contact-hide-recaptcha-badge .grecaptcha-badge { visibility: hidden !important; }

@media (max-width: 800px) {
  .bloom-contact__phone-desktop,
  .bloom-contact__address-desktop,
  .bloom-contact__button--desktop-only { display: none !important; }
  .bloom-contact__phone-mobile { display: inline; }
  .bloom-contact__address-mobile { display: grid; }
  .bloom-contact__button--mobile-only:not([hidden]) { display: inline-flex; }
  .bloom-contact__form-panel { scroll-margin-top: 24px; }
}


/* P01D mobile-first action scope, map placement and contact-hours disclosure. */
.bloom-contact__grid {
  grid-template-areas:
    "details form"
    "map map";
}
.bloom-contact__details { grid-area: details; }
.bloom-contact__form-panel { grid-area: form; }
.bloom-contact__map { grid-area: map; margin-top: 0; }
.bloom-contact__grid--no-map { grid-template-areas: "details form"; }
.bloom-contact__grid--form-only {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "form"
    "map";
}
.bloom-contact__grid--form-only.bloom-contact__grid--no-map { grid-template-areas: "form"; }

.bloom-contact__hours-disclosure { margin: 0; }
.bloom-contact__hours-disclosure > summary { display: none; }
.bloom-contact__hours-lines { display: block !important; }

@media (max-width: 800px) {
  .bloom-contact__grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "details"
      "map"
      "form";
  }
  .bloom-contact__grid--no-map {
    grid-template-areas:
      "details"
      "form";
  }
  .bloom-contact__grid--form-only {
    grid-template-areas:
      "map"
      "form";
  }
  .bloom-contact__grid--form-only.bloom-contact__grid--no-map { grid-template-areas: "form"; }

  .bloom-contact__item--hours-accordion > dt { display: none; }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-disclosure > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: var(--bloom-contact-primary);
    font-weight: 800;
    cursor: pointer;
    list-style: none;
  }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-disclosure > summary::-webkit-details-marker { display: none; }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-disclosure > summary::after {
    content: "+";
    font-size: 1.35em;
    line-height: 1;
    transition: transform .18s ease;
  }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-disclosure[open] > summary::after { transform: rotate(45deg); }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-lines { display: none !important; padding-top: 12px; }
  .bloom-contact__item--hours-accordion .bloom-contact__hours-disclosure[open] .bloom-contact__hours-lines { display: block !important; }
}

/* P01E disclosure controls and joined subject/message treatment. */
.bloom-contact__item--hours-accordion > dt { display: none; }
.bloom-contact__hours-disclosure { width: 100%; }
.bloom-contact__hours-disclosure > summary,
.bloom-contact__reveal {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 42px;
  box-sizing: border-box;
  border: 1px solid var(--bloom-contact-border);
  border-radius: max(8px, calc(var(--bloom-contact-button-radius) - 1px));
  padding: .7rem .85rem;
  background: var(--bloom-contact-surface-soft);
  color: var(--bloom-contact-primary);
  font: inherit;
  font-weight: 800;
  line-height: 1.2;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  list-style: none;
  transition: border-color .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease;
}
.bloom-contact__hours-disclosure > summary::-webkit-details-marker { display: none; }
.bloom-contact__hours-disclosure > summary::after {
  content: "+";
  flex: 0 0 auto;
  margin-inline-start: 1rem;
  font-size: 1.35em;
  line-height: 1;
  transition: transform .18s ease;
}
.bloom-contact__hours-disclosure[open] > summary::after { transform: rotate(45deg); }
.bloom-contact__hours-disclosure > summary:hover,
.bloom-contact__hours-disclosure > summary:focus-visible,
.bloom-contact__reveal:hover,
.bloom-contact__reveal:focus-visible {
  border-color: var(--bloom-contact-primary);
  background: color-mix(in srgb, var(--bloom-contact-primary) 10%, var(--bloom-contact-surface));
  color: var(--bloom-contact-primary-hover);
  box-shadow: 0 0 0 3px var(--bloom-contact-focus);
}
.bloom-contact__hours-disclosure .bloom-contact__hours-lines { display: none !important; padding: 12px 2px 0; }
.bloom-contact__hours-disclosure[open] .bloom-contact__hours-lines { display: block !important; }
.bloom-contact__item--phone dd,
.bloom-contact__item--address dd,
.bloom-contact__item--hours dd { width: 100%; }

/* The direct CF7 subject and message fields intentionally form one joined control group. */
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-subject"] {
  position: relative;
  z-index: 1;
}
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-subject"] input {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-subject"] + .wpcf7-form-control-wrap[data-name="your-message"] {
  margin-top: calc(-1 * var(--bloom-contact-form-gap)) !important;
}
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-message"] textarea {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-subject"] input:focus,
.bloom-contact .my-custom-form > .wpcf7-form-control-wrap[data-name="your-message"] textarea:focus {
  position: relative;
  z-index: 2;
}

@media (prefers-reduced-motion: reduce) {
  .bloom-contact__hours-disclosure > summary::after,
  .bloom-contact__hours-disclosure > summary,
  .bloom-contact__reveal { transition: none; }
}

/* P01E-r2 desktop disclosure width and CF7 joined-corner hotfix. */
.bloom-contact__item--hours-accordion > dd {
  grid-column: 1 / -1;
  width: 100%;
}

/* Use the submitted field names so the rule survives CF7 wrapper variations. */
.bloom-contact .my-custom-form input[name="your-subject"] {
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}
.bloom-contact .my-custom-form textarea[name="your-message"] {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}
/* P01E-r4 explicit phone status layout: row div contains meta and action divs. */
.bloom-contact__item--phone {
  position: relative;
}
.bloom-contact__contact-term {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  border: 0;
  white-space: nowrap;
}
.bloom-contact__item--phone > .bloom-contact__contact-value {
  grid-column: 1 / -1;
  width: 100%;
}
.bloom-contact__contact-row {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  align-items: center;
  gap: 18px;
  width: 100%;
}
.bloom-contact__contact-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: .4rem;
  min-width: 0;
}
.bloom-contact__contact-label {
  color: var(--bloom-contact-text);
  font-weight: 750;
}
.bloom-contact__contact-status {
  display: flex;
  align-items: flex-start;
  min-width: 0;
}
.bloom-contact__item--phone .bloom-contact__closed-badge {
  margin-inline-start: 0;
}
.bloom-contact__contact-action {
  min-width: 0;
}

@media (max-width: 800px) {
  .bloom-contact__contact-row {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 5px;
  }
  .bloom-contact__contact-action {
    width: 100%;
  }
}


/* P01F after-hours contact availability. */
.bloom-contact__after-hours-status {
  display: inline-flex;
  align-items: center;
  width: max-content;
  padding: 3px 8px;
  border: 1px solid color-mix(in srgb, var(--bloom-contact-border) 82%, transparent);
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  line-height: 1.2;
}
.bloom-contact__after-hours-status.is-available {
  color: color-mix(in srgb, #16a34a 78%, var(--bloom-contact-text));
  border-color: color-mix(in srgb, #16a34a 45%, var(--bloom-contact-border));
}
.bloom-contact__after-hours-status.is-unavailable {
  color: var(--bloom-contact-muted);
}
.bloom-contact [data-bloom-after-hours-unavailable="1"] {
  cursor: not-allowed;
  opacity: .58;
}
/* P02B public city selector. The existing Contact cards and form remain unchanged. */
.bloom-contact__branch-selector {
  max-width: 760px;
  margin: 0 auto clamp(28px, 4vw, 44px);
  text-align: center;
}
.bloom-contact__branch-selector-label {
  margin: 0 0 12px;
  color: var(--bloom-contact-muted);
  font-size: .9rem;
  font-weight: 750;
  letter-spacing: .02em;
}
.bloom-contact__branch-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}
.bloom-contact__branch-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  border: 1px solid var(--bloom-contact-border);
  border-radius: 999px;
  padding: 9px 16px;
  background: var(--bloom-contact-surface-soft);
  color: var(--bloom-contact-primary);
  font: inherit;
  font-weight: 800;
  line-height: 1.15;
  text-decoration: none;
  transition: border-color .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.bloom-contact__branch-tab:hover,
.bloom-contact__branch-tab:focus-visible {
  border-color: var(--bloom-contact-primary);
  background: color-mix(in srgb, var(--bloom-contact-primary) 10%, var(--bloom-contact-surface));
  color: var(--bloom-contact-primary-hover);
  box-shadow: 0 0 0 3px var(--bloom-contact-focus);
  transform: translateY(-1px);
}
.bloom-contact__branch-tab.is-active {
  border-color: var(--bloom-contact-primary);
  background: var(--bloom-contact-primary);
  color: var(--bloom-contact-on-primary);
  box-shadow: 0 10px 24px color-mix(in srgb, var(--bloom-contact-primary) 24%, transparent);
}
.bloom-contact__branch-tab.is-active:hover,
.bloom-contact__branch-tab.is-active:focus-visible {
  border-color: var(--bloom-contact-primary-hover);
  background: var(--bloom-contact-primary-hover);
  color: var(--bloom-contact-on-primary);
}
.bloom-contact__branch-hq {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  border: 1px solid currentColor;
  border-radius: 999px;
  padding: 1px 6px;
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .05em;
  line-height: 1;
  opacity: .82;
}

@media (max-width: 800px) {
  .bloom-contact__branch-selector { margin-bottom: 30px; }
  .bloom-contact__branch-tabs { gap: 8px; }
  .bloom-contact__branch-tab { flex: 1 1 140px; }
}

@media (prefers-reduced-motion: reduce) {
  .bloom-contact__branch-tab { transition: none; }
}

/* P03-R2 backend-owned reusable layout. The attribute-free shortcode defaults to one compact details card. */
.bloom-contact--layout-details .bloom-contact__inner { width: min(560px, 100%); }
.bloom-contact--layout-details .bloom-contact__branch-selector { max-width: 560px; }
.bloom-contact--layout-details .bloom-contact__details--standalone { width: 100%; }
.bloom-contact--layout-details .bloom-contact__actions { margin-top: 24px; }

/* P03-R3 backend-owned reusable shell. Component mode leaves section composition to MASON or another parent layout. */
.bloom-contact--shell-component {
  isolation: auto;
  background: transparent;
  padding: 0;
}
.bloom-contact--shell-component.bloom-contact--background-soft,
.bloom-contact--shell-component.bloom-contact--background-solid,
.bloom-contact--shell-component.bloom-contact--background-gradient,
.bloom-contact--shell-component.bloom-contact--theme-saas.bloom-contact--background-inherit,
.bloom-contact--shell-component.bloom-contact--theme-dark.bloom-contact--background-gradient,
.bloom-contact--shell-component.bloom-contact--detected-dark.bloom-contact--background-gradient {
  background: transparent;
}
.bloom-contact--shell-component .bloom-contact__inner {
  width: 100%;
  margin: 0;
}
/* P03-R4: details + component is an intrinsically compact CTA panel; parent layouts own placement. */
.bloom-contact--shell-component.bloom-contact--layout-details {
  width: 100%;
  max-width: 480px;
}
.bloom-contact--shell-component.bloom-contact--layout-details .bloom-contact__inner,
.bloom-contact--shell-component.bloom-contact--layout-details .bloom-contact__branch-selector {
  width: 100%;
  max-width: 480px;
}
