/* Native blocks retain editable contact details, introduction, portrait and map. */
.contact-heading, .contact-layout, .contact-place {
  --contact-divider-space: var(--section-space);
  width: calc(100% - 2 * var(--section-gutter)); max-width: var(--measure-feature); margin-inline: auto;
}
.contact-heading { padding: var(--section-space) 0 var(--heading-gap); }
.contact-heading h1 { font-size: var(--type-title); margin: 0; text-align: start; }
.contact-layout {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: min-content 1fr;
  align-items: start; gap: var(--card-space) var(--layout-gap); padding-bottom: var(--contact-divider-space);
}
.contact-layout > * { min-width: 0; margin: 0; }
.contact-direct { grid-column: 1; display: grid; align-content: start; gap: 22px; }
.contact-direct > * { margin: 0; }
.contact-method h2 { margin: 0 0 4px; font: 16px/1.5 var(--font-ui); color: #52615e; }
.contact-method p { margin: 0; }
.contact-method a {
  display: inline-flex; align-items: center; min-height: 44px; max-width: 100%;
  font: clamp(19px, 1.8vw, 25px)/1.4 var(--font-reading); overflow-wrap: anywhere;
  text-decoration-line: underline; text-decoration-color: currentColor; text-decoration-thickness: var(--link-underline-width); text-underline-offset: var(--link-underline-offset);
}
.contact-method a:is(:hover, :focus-visible) { color: var(--color-blue); text-decoration-color: currentColor; text-decoration-thickness: var(--link-underline-active-width); }
.contact-layout .contact-form {
  grid-column: 2; grid-row: 1 / 3; padding: var(--panel-space);
  background: var(--surface-support); border-radius: var(--radius-card); align-content: start;
}
.contact-form h2 { margin: 0 0 var(--copy-heading-gap); font-size: var(--type-card); }
.contact-form .site-form { margin: 0; gap: 6px; grid-template-columns: minmax(0, 1fr); }
.contact-form .site-form label { margin: 12px 0 0; font-family: var(--font-ui); }
.contact-form .site-form label:first-of-type { margin-top: 0; }
.contact-form .site-form input:not([type=hidden]), .contact-form .site-form textarea {
  background: var(--color-paper); border: 1px solid var(--control-border); border-radius: var(--radius-control);
  padding: 10px 12px; font: var(--type-ui)/var(--leading-ui) var(--font-ui);
}
.contact-form .site-form input:not([type=hidden]) { max-width: none; width: 100%; min-height: 48px; }
.contact-form .site-form textarea { min-height: 138px; }
.contact-form .site-form button { width: auto; min-width: 140px; padding: 10px 18px; margin-top: 12px; justify-self: start; }
.contact-form .form-result:empty { display: none; }
.contact-profile {
  grid-column: 1; display: grid; grid-template-columns: minmax(0, 170px) minmax(0, 1fr);
  gap: 24px; align-content: start; align-items: start;
}
.contact-profile > * { min-width: 0; margin: 0; }
.contact-profile .contact-photo { width: 100%; border-radius: var(--radius-card); overflow: hidden; }
.contact-profile .contact-photo img {
  display: block; width: 100%; height: 232px; min-height: 0; max-height: none;
  object-fit: cover; object-position: 50% 27%; transform: scale(1.12); transform-origin: 50% 32%;
}
.contact-profile-copy > p { margin: 0; font-size: 16px; line-height: 1.65; }
.contact-profile-copy > .contact-identity { font: italic 20px/1.5 var(--font-reading); margin: 0 0 16px; }
.contact-social-group { grid-column: 1 / -1; margin-top: 0; }
.contact-social-group h2 { margin: 0 0 8px; font: 16px/1.5 var(--font-ui); color: #52615e; }
.contact-layout .contact-social { margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; font-size: 22px; }
.contact-layout .contact-social .wp-social-link { background: var(--surface-support); color: var(--color-blue); margin: 0; border-radius: 50%; transform: none; }
.contact-layout .contact-social .wp-social-link a {
  width: 44px; height: 44px; padding: 11px; display: grid; place-items: center; border-radius: 50%;
  transition: background-color var(--interaction-duration), color var(--interaction-duration);
}
.contact-layout .contact-social svg { width: 22px; height: 22px; fill: currentColor; }
.contact-layout .contact-social a:is(:hover, :focus-visible) { background: #c8dcda; color: var(--color-ink); }
.contact-place {
  display: grid; grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); gap: var(--layout-gap);
  padding: var(--contact-divider-space) 0 var(--section-space); border-top: 1px solid var(--color-sand);
}
.contact-place > * { min-width: 0; margin: 0; }
.contact-address h2 { font-size: var(--type-card); margin: 0 0 14px; }
.contact-address p { margin: 0 0 16px; font-size: 17px; line-height: 1.65; }
.contact-address p:last-child { margin: 16px 0 0; font: 15px/1.6 var(--font-ui); }
.contact-address a { display: inline-block; padding-block: 8px; }
.contact-place .contact-map {
  position: relative; isolation: isolate; max-width: none; width: 100%; margin: 0; overflow: hidden;
}
.contact-map iframe { display: block; width: 100%; height: 330px; border: 0; border-radius: var(--radius-card); background: var(--surface-support); }
/* Keep the corner cutouts independent of the external frame's clipping. */
.contact-map::after {
  --map-corner: transparent calc(var(--radius-card) - .5px), var(--surface-page) var(--radius-card);
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    radial-gradient(circle at bottom right, var(--map-corner)) top left,
    radial-gradient(circle at bottom left, var(--map-corner)) top right,
    radial-gradient(circle at top right, var(--map-corner)) bottom left,
    radial-gradient(circle at top left, var(--map-corner)) bottom right;
  background-size: var(--radius-card) var(--radius-card); background-repeat: no-repeat;
}
@media (forced-colors: active) {
  .contact-map::after { --map-corner: transparent calc(var(--radius-card) - .5px), Canvas var(--radius-card); forced-color-adjust: none; }
}
@media (min-width: 741px) { html:has(.contact-layout) { scrollbar-gutter: stable; } }
@media (max-width: 1050px) {
  .contact-profile { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .contact-profile .contact-photo { max-width: 174px; }
  .contact-profile .contact-photo img { height: 208px; }
}
@media (max-width: 740px) {
  .contact-layout { display: flex; flex-direction: column; align-items: stretch; gap: var(--layout-gap); }
  .contact-direct { gap: 14px; }
  .contact-method a { font-size: clamp(18px, 5.2vw, 22px); }
  .contact-form .site-form button { width: 100%; }
  .contact-profile { grid-template-columns: minmax(0, 114px) minmax(0, 1fr); gap: 20px; }
  .contact-profile .contact-photo { max-width: none; }
  .contact-profile .contact-photo img { height: 174px; }
  .contact-profile-copy > .contact-identity { font-size: 18px; margin-bottom: 12px; }
  .contact-place { grid-template-columns: minmax(0, 1fr); }
  .contact-address h2 { margin-bottom: 12px; }
  .contact-address p { margin-bottom: 8px; }
  .contact-address p:last-child { margin-top: 8px; }
  .contact-place iframe { height: 300px; }
}
@media (max-width: 370px) {
  .contact-profile { grid-template-columns: minmax(0, 1fr); }
  .contact-profile .contact-photo { max-width: 150px; }
  .contact-profile .contact-photo img { height: 200px; }
}
@media (prefers-reduced-motion: reduce) { .contact-layout .contact-social a { transition: none; } }
