/* Phase 5 composition; hero, form shell, native FAQ and booking CTA are shared. */
.contact-hero .photo-hero-copy > p { margin-bottom: 26px; }
.contact-page-grid { display: grid; gap: 24px; align-items: stretch; }
.business-card { padding: 28px 24px; border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow); }
.business-detail { display: flex; align-items: start; gap: 18px; margin-bottom: 25px; }
.business-detail .icon-circle { flex-shrink: 0; background: var(--sage-dark); color: white; width: 52px; height: 52px; }
.business-detail h4, .business-detail address strong { display: block; margin: 3px 0 5px; font-size: 16px; line-height: 1.4; overflow-wrap: anywhere; }
.business-detail p, .contact-hours { font-size: 14px; line-height: 1.6; margin: 0; }
.business-detail > div, .business-detail address { min-width: 0; }
.business-detail .text-link { min-height: 44px; font-size: 13px; }
.contact-hours > div { display: grid; grid-template-columns: 48px 1fr; gap: 10px; margin-bottom: 4px; }
.contact-hours dd { margin: 0; }
.contact-business-note { display: grid; gap: 10px; font-size: 12px; line-height: 1.65; color: var(--muted); margin: 0; }
.contact-business-note .demo-badge { justify-self: start; }
.contact-page-form { scroll-margin-block: 30px 120px; }
.contact-page-form h3, .contact-actions h3, .location-card h3 { font: 500 27px/1.15 var(--font-heading); letter-spacing: -.025em; }
.contact-page-form h3 { margin-bottom: 22px; }
.contact-page-form textarea { min-height: 120px; }
.field-optional, .field-help { color: var(--muted); font-weight: 400; font-size: 11px; }
.field-error { color: #9c3528; font-size: 12px; line-height: 1.5; }
.contact-page-form [aria-invalid="true"] { border-color: #9c3528; }
.contact-page-form .form-note { margin-top: 16px; }
.contact-page-form .button { min-height: 48px; }
.contact-page-form .button:disabled { cursor: not-allowed; opacity: .7; }
.contact-privacy { margin: 8px 0 0; }
.privacy-note-button { min-height: 44px; border: 0; padding: 8px 0; background: transparent; color: var(--muted); font-size: 12px; text-decoration: underline; text-underline-offset: 4px; text-align: left; }
.location-card { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; padding: 32px 26px; min-height: 420px; background: linear-gradient(145deg, var(--sage), #e1e8e0); border: 1px solid var(--line); border-radius: var(--radius); text-align: center; }
.location-card::before { content: ''; position: absolute; z-index: -1; width: 270px; height: 270px; border: 1px solid rgb(83 108 91 / 12%); border-radius: 50%; box-shadow: 0 0 0 40px rgb(83 108 91 / 4%), 0 0 0 90px rgb(83 108 91 / 3%); }
.location-label { font-size: 11px; color: var(--muted); letter-spacing: .14em; text-transform: uppercase; }
.location-identity .icon-circle { margin-inline: auto; margin-bottom: 20px; background: var(--terracotta); color: white; }
.location-identity h3 { font-size: 29px; margin-bottom: 12px; }
.location-identity > p { margin-bottom: 0; font-size: 14px; }
.location-card #map-note { max-width: 250px; font-size: 15px; line-height: 1.6; margin: 0; }
.location-card .location-subnote { font-size: 12px; color: var(--muted); margin: -10px 0 0; }
.location-card .button { width: 100%; max-width: 300px; }
.location-identity address { font-size: 14px; }
.location-card .button { white-space: normal; overflow-wrap: anywhere; }
.location-card .button:disabled { cursor: not-allowed; opacity: .75; }
.location-card .text-link { justify-content: center; flex-wrap: wrap; }
.location-map { width: 100%; min-height: 240px; aspect-ratio: 4 / 3; background: var(--paper); border-radius: var(--radius); overflow: hidden; }
.location-map iframe { display: block; width: 100%; height: 100%; min-height: 240px; border: 0; }
.contact-quick { position: relative; overflow: hidden; background: var(--sage); }
.contact-foliage { position: absolute; width: 180px; right: -100px; top: -30px; opacity: .32; pointer-events: none; }
.contact-actions { display: grid; gap: 22px; position: relative; }
.contact-actions > li { display: flex; flex-direction: column; align-items: start; min-width: 0; background: var(--paper); border-radius: var(--radius); box-shadow: var(--shadow); padding: 28px; }
.contact-actions .icon-circle { margin-bottom: 22px; }
.contact-actions h3 { font-size: 25px; margin-bottom: 12px; }
.contact-actions p { color: var(--muted); font-size: 14px; line-height: 1.65; margin-bottom: 18px; }
.contact-actions .text-link { margin-top: auto; overflow-wrap: anywhere; }
.contact-faq { background: var(--paper); }
.contact-faq-list { display: grid; gap: 12px; }
.contact-page .mobile-menu a[aria-current="page"] { color: var(--terracotta-hover); font-weight: 700; }
@media (min-width: 600px) {
  .contact-hero .photo-hero-image { left: 24%; width: 76%; object-position: center top; }
  .contact-hero .photo-hero-copy { max-width: 580px; }
  .contact-page-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .location-card { grid-column: 1 / -1; min-height: 360px; }
  .contact-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .contact-hero .photo-hero-image { left: 32%; width: 68%; }
  .contact-page-grid { grid-template-columns: 1fr 1fr 1.04fr; gap: 24px; }
  .location-card { grid-column: auto; min-height: 0; }
  .business-card { padding: 30px 26px; }
  .contact-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .contact-actions > li { padding: 28px 25px; }
}
@media (max-width: 899px) {
  .contact-page-form input, .contact-page-form textarea { font-size: 16px; }
}
