/* =========================================================
   CONTACT — location, business information & map
   (banner styles come from services.css; form lives in the footer)
   ========================================================= */

.banner_section {
    min-height: 78vh;
    min-height: 78svh;
}

.contact_section {
    padding-block: var(--section) var(--section-sm);
}

.contact_head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    margin-bottom: clamp(2.5rem, 5vw, 4rem);
    text-align: center;
}

.contact_grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: clamp(1rem, 2vw, 1.5rem);
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.info_card {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    gap: .6rem;
    min-height: 15rem;
    padding: clamp(1.5rem, 2.5vw, 2.25rem);
    overflow: hidden;
    background: var(--ivory-soft);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    transition: transform 1s var(--ease-out), box-shadow 1s var(--ease), color var(--t) var(--ease);
}

.info_card::before {
    content: "";
    position: absolute;
    inset: auto 0 0 0;
    z-index: -1;
    height: 0;
    background: var(--forest);
    transition: height .9s var(--ease-out);
}

.info_card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-soft);
}

.info_card:hover::before {
    height: 100%;
}

.info_card>i {
    display: grid;
    place-items: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: auto;
    font-size: 1.25rem;
    color: var(--forest);
    border: 1px solid var(--line-strong);
    border-radius: 50%;
    transition: color var(--t) var(--ease), border-color var(--t) var(--ease);
}

.info_label {
    margin-top: 1.5rem;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--sage-ink);
    transition: color var(--t) var(--ease);
}

.info_card strong {
    font-family: var(--font-serif);
    font-size: clamp(1.25rem, 1.1rem + .5vw, 1.55rem);
    font-weight: 400;
    line-height: 1.25;
    color: var(--forest);
    font-variant-numeric: lining-nums;
    overflow-wrap: anywhere;
    transition: color var(--t) var(--ease);
}

.info_card .link_arrow {
    margin-top: .75rem;
    transition: color var(--t) var(--ease);
}

.info_card:hover>i,
.info_card:hover strong,
.info_card:hover .link_arrow {
    color: var(--ivory);
}

.info_card:hover>i {
    border-color: rgba(245, 241, 232, .4);
}

.info_card:hover .info_label {
    color: var(--sand);
}

.map_frame {
    position: relative;
    aspect-ratio: 21 / 9;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: var(--sand-soft);
}

.map_frame iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    filter: grayscale(.35) sepia(.12) saturate(.9);
    transition: filter 1s var(--ease);
}

.map_frame:hover iframe {
    filter: none;
}

.contact_strip {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 2rem;
    margin-top: clamp(1.5rem, 3vw, 2.5rem);
    padding-top: 1.5rem;
    border-top: 1px solid var(--line);
}

.contact_strip p {
    color: var(--text-muted);
}

.contact_strip .fa-whatsapp {
    font-size: 1.1rem;
}

@media (max-width: 1024px) {
    .contact_grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .contact_grid {
        grid-template-columns: 1fr;
    }

    .info_card {
        min-height: 0;
    }

    .map_frame {
        aspect-ratio: 4 / 5;
    }
}
