/* Styles confined to the appointments and contact page. */
.contact-intro { margin-bottom: 24px; }
.contact-booking-options {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
    align-items: start;
    margin-bottom: 34px;
}
.contact-booking-card {
    padding: 24px;
    background: #f4f8fa;
    border: 1px solid #d7e4eb;
    border-radius: 6px;
}
.contact-booking-card h2 {
    margin: 0 0 18px;
    font: 700 25px/1.3 'Lora', serif;
    color: #2479aa;
}
.contact-action { white-space: normal; padding: 12px 18px; }
.contact-zoom-form { margin-top: 22px; }
.contact-zoom-form legend { font-size: 18px; }
.contact-zoom-form .contact-phone-field { margin-bottom: 0; }
.contact-turnstile-slot { min-height: 65px; margin: 16px 0; }
.contact-booking-column {
    display: grid;
    gap: 24px;
    align-content: start;
}
.contact-booking-column .contact-booking-card {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
}
.contact-booking-column .contact-action { margin-top: 6px; }
.contact-booking-column .contact-card-with-image {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 180px;
    gap: 28px;
    align-items: center;
}
.contact-card-copy { min-width: 0; }
.contact-booking-copy-mobile { display: none; }
.contact-portrait, .contact-secretary-photo { margin: 0; width: 180px; max-width: 100%; }
.contact-portrait img { display: block; width: 100%; height: auto; border-radius: 6px; }
.contact-secretary-photo img { display: block; width: 100%; height: 140px; object-fit: cover; border-radius: 6px; }
.contact-video-icon { width: 24px; height: 24px; margin-right: 10px; vertical-align: -4px; color: #84939c; }
.contact-booking-card.contact-zoom-card { background: #fafafa; border-color: #e1e1e1; }
.contact-zoom-card h2 { font-size: 21px; color: #44545e; margin-bottom: 14px; }
.contact-zoom-toggle { color: #44545e; background: transparent; border: 1px solid #84939c; }
.contact-zoom-toggle:hover, .contact-zoom-toggle:focus { color: #263b48; background: #edf1f3; border-color: #44545e; }
.contact-zoom-card [hidden] { display: none !important; }
#zoom-details { width: 100%; margin-top: 18px; }
.contact-secretary p:last-child { margin-bottom: 0; }
.contact-secretary-email { overflow-wrap: anywhere; }
.contact-number a { overflow-wrap: anywhere; }
.contact-location {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    padding: 24px;
    margin-bottom: 34px;
    border: 1px solid #d7e4eb;
    border-radius: 6px;
    background: #f4f8fa;
}
.contact-location h2 {
    margin: 0 0 18px;
    font: 700 25px/1.3 'Lora', serif;
    color: #2479aa;
}
.contact-location-details p { margin-bottom: 22px; }
.contact-location-brand {
    display: inline-block;
    max-width: 100%;
    padding: 22px 24px;
    background: #01a5a7;
    border-radius: 4px;
}
.contact-location-logo { display: block; width: 260px; max-width: 100%; height: auto; }
.contact-static-map { margin: 0; }
.contact-static-map img { display: block; width: 100%; height: auto; border-radius: 4px; }
.contact-static-map figcaption { margin-top: 8px; font-size: 13px; line-height: 1.5; }
.contact-map-image { position: relative; }
/* Pin tip anchored to the hospital symbol in the uncropped source image. */
.contact-map-marker {
    position: absolute;
    left: 44.5%;
    top: 58.2%;
    transform: translate(-50%, -100%);
    display: flex;
    flex-direction: column;
    align-items: center;
    pointer-events: none;
}
.contact-map-label {
    width: 210px;
    padding: 10px 12px;
    margin-bottom: 4px;
    background: #fff;
    border: 1px solid #d7e4eb;
    border-radius: 5px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
    text-align: center;
    font-size: 15px;
    line-height: 1.4;
    pointer-events: auto;
}
.contact-map-label strong { display: block; color: #222a31; }
.contact-map-label a { display: inline-block; margin-top: 5px; text-decoration: underline; }
.contact-map-pin { display: block; width: 32px; height: 44px; }
@media (max-width: 400px) {
    .contact-map-label { width: 170px; padding: 8px; font-size: 13px; }
    .contact-map-pin { width: 26px; height: 36px; }
}
@media (max-width: 767px) {
    .contact-page-content { padding-left: 0; padding-right: 0; text-align: center; }
    .contact-page-content .form-control { text-align: center; }
    .contact-location-brand { display: block; width: fit-content; margin-left: auto; margin-right: auto; }
    .contact-location { grid-template-columns: 1fr; padding: 20px; }
    .contact-booking-options { grid-template-columns: 1fr; }
    .contact-portrait { width: 100%; margin: 20px auto 0; }
    .contact-secretary-photo, .contact-video-icon { display: none; }
    .contact-booking-card { padding: 20px 14px; }
    .contact-booking-column .contact-booking-card { display: block; }
    .contact-booking-copy-desktop { display: none; }
    .contact-booking-copy-mobile { display: block; }
    .contact-booking-copy-mobile p:last-child { margin-bottom: 8px; }
    .contact-booking-column .contact-in-person .contact-action {
        display: block;
        width: 100%;
        margin-top: 0;
    }
}
/* Let nested grid items shrink within narrow screens. */
.contact-booking-column,
.contact-booking-card,
.contact-location-details,
.contact-location-map,
.contact-zoom-form fieldset { min-width: 0; }
.contact-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.contact-request-status:empty { display: none; }
.contact-request-status { margin: 16px 0 0; }
.contact-status-error { color: #a12626; }

/* Company disclosures and professional registration. */
.contact-legal { margin: 8px 0 20px; padding-top: 24px; border-top: 1px solid #d7e4eb; }
.contact-legal h2 { margin: 0 0 24px; color: #2479aa; font: 700 25px/1.3 'Lora', serif; }
.contact-legal-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.contact-legal h3 { margin: 0 0 14px; color: #44545e; font: 700 20px/1.3 'Lora', serif; }
.contact-legal p { margin-bottom: 16px; }
.contact-legal p:last-child { margin-bottom: 0; }
.contact-legal a { color: #2479aa; text-decoration: underline; overflow-wrap: anywhere; }
@media (max-width: 767px) {
    .contact-legal-columns { grid-template-columns: 1fr; gap: 28px; }
}
