/* POLY — Footer ----------------------------------------------------------- */

.poly-footer {
    background: var(--poly-white);
    color: var(--poly-body);
    border-top: 1px solid var(--poly-line);
}

/* ------------------------------------------------------------ closing cta */

.poly-footer__cta {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.75rem 3rem;
    margin-block-start: clamp(48px, 5vw, 80px);
    padding: clamp(30px, 3.4vw, 52px) clamp(26px, 3.4vw, 56px);
    border: 1px solid var(--poly-line);
    border-radius: var(--poly-radius-lg);
    background:
        radial-gradient(120% 150% at 100% 0%, rgba(47, 134, 201, .1), transparent 58%),
        linear-gradient(180deg, var(--poly-white), var(--poly-mist));
    overflow: hidden;
}

/* Brand rule along the leading edge so the card reads as a POLY element. */
.poly-footer__cta::before {
    content: "";
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--poly-brand), var(--poly-accent));
}

.poly-footer__cta-copy { max-width: 48ch; }

.poly-footer__cta-title {
    font-family: var(--poly-font-display);
    font-size: clamp(1.35rem, 2.1vw, 1.9rem);
    font-weight: 600;
    letter-spacing: -.022em;
    line-height: 1.25;
    color: var(--poly-title);
    text-wrap: balance;
}

.poly-footer__cta-intro {
    margin-top: .9rem;
    font-size: .9375rem;
    line-height: 1.7;
    color: var(--poly-muted);
    max-width: 46ch;
}

.poly-footer__cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

.poly-footer__cta-actions .poly-btn--ghost { background: var(--poly-white); }

/* ----------------------------------------------------------------- main */

.poly-footer__main {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr));
    gap: clamp(32px, 4vw, 64px);
    padding-block: clamp(52px, 5.6vw, 88px) clamp(40px, 4.4vw, 64px);
}

/* `.poly .` outranks Elementor's `.elementor img { height: auto }`. */
.poly .poly-footer__logo {
    width: auto;
    height: 68px;
    margin-bottom: 1.5rem;
}

.poly-footer__about {
    max-width: 38ch;
    font-size: .9375rem;
    line-height: 1.75;
    color: var(--poly-muted);
}

.poly-footer__title {
    margin-bottom: 1.35rem;
    font-family: var(--poly-font-body);
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--poly-brand);
}

.poly-footer__links { display: grid; gap: .7rem; }

.poly-footer__links a {
    font-size: .9375rem;
    color: var(--poly-body);
    text-decoration: none;
    transition: color .3s var(--poly-ease);
}

.poly-footer__links a:hover { color: var(--poly-brand); }

.poly-footer__contact { display: grid; gap: 1rem; }

.poly-footer__contact li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .75rem;
    font-size: .9375rem;
    line-height: 1.6;
    color: var(--poly-body);
}

.poly-footer__contact .poly-icon {
    width: 18px;
    height: 18px;
    margin-top: .2em;
    color: var(--poly-brand);
}

.poly-footer__contact a { color: inherit; text-decoration: none; transition: color .3s var(--poly-ease); }
.poly-footer__contact a:hover { color: var(--poly-brand); }

/* --------------------------------------------------------------- socials */

.poly-footer__socials { margin-top: 2.25rem; }

.poly-footer__socials .poly-footer__title { margin-bottom: .9rem; }

.poly-footer__social-list {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
}

.poly-footer__social {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 1px solid var(--poly-line);
    border-radius: var(--poly-radius);
    background: var(--poly-white);
    color: var(--poly-brand);
    transition: background-color .3s var(--poly-ease), border-color .3s var(--poly-ease),
                color .3s var(--poly-ease), transform .3s var(--poly-ease-out);
}

.poly-footer__social:hover,
.poly-footer__social:focus-visible {
    background: var(--poly-brand);
    border-color: var(--poly-brand);
    color: var(--poly-white);
    transform: translateY(-2px);
}

.poly-footer__social .poly-icon--brand { width: 17px; height: 17px; }

/* ---------------------------------------------------------- visit & map */

.poly-footer__visit {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
    border: 1px solid var(--poly-line);
    border-radius: var(--poly-radius-lg);
    background: var(--poly-white);
    overflow: hidden;
}

.poly-footer__visit--no-map { grid-template-columns: minmax(0, 1fr); }

.poly-footer__map {
    position: relative;
    min-height: 320px;
    background: var(--poly-mist-deep);
}

.poly-footer__map iframe {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    /* Pull the Google palette back towards the brand neutrals. */
    filter: saturate(.82) contrast(1.02);
}

.poly-footer__visit-panel {
    display: grid;
    align-content: start;
    gap: 1.25rem;
    padding: clamp(28px, 3vw, 44px);
    background: linear-gradient(180deg, var(--poly-white), var(--poly-mist));
}

.poly-footer__visit-title {
    font-family: var(--poly-font-display);
    font-size: clamp(1.15rem, 1.7vw, 1.45rem);
    font-weight: 600;
    color: var(--poly-title);
}

.poly-footer__address {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .75rem;
    font-size: .9375rem;
    line-height: 1.7;
    color: var(--poly-body);
}

.poly-footer__address .poly-icon {
    width: 18px;
    height: 18px;
    margin-top: .25em;
    color: var(--poly-brand);
}

.poly-footer__hours {
    display: grid;
    gap: .55rem;
    margin: 0;
    padding-block: 1.1rem;
    border-block: 1px solid var(--poly-line);
}

.poly-footer__hours > div {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: .35rem 1rem;
    font-size: .875rem;
}

.poly-footer__hours dt { color: var(--poly-muted); }

.poly-footer__hours dd {
    margin: 0;
    font-weight: 600;
    color: var(--poly-title);
    font-variant-numeric: tabular-nums;
}

.poly-footer__visit-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .85rem 1.5rem;
}

/* ------------------------------------------------------------------- bar */

.poly-footer__bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 2rem;
    margin-block-start: clamp(40px, 4.4vw, 64px);
    padding-block: 1.75rem;
    border-top: 1px solid var(--poly-line);
}

.poly-footer__copy { font-size: .8125rem; color: var(--poly-muted); }

.poly-footer__bar .poly-footer__links {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1.5rem;
}

.poly-footer__bar .poly-footer__links a { font-size: .8125rem; color: var(--poly-muted); }

/* ------------------------------------------------------------- responsive */

@media (max-width: 1024px) {
    .poly-footer__visit { grid-template-columns: minmax(0, 1fr); }
    .poly-footer__map { min-height: 280px; }
}

@media (max-width: 900px) {
    .poly-footer__main { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .poly-footer__brand { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
    .poly-footer__main { grid-template-columns: 1fr; }
    .poly-footer__cta { align-items: flex-start; }
    .poly-footer__cta-actions { width: 100%; }
    .poly-footer__cta-actions .poly-btn { flex: 1 1 100%; }
    .poly-footer__visit-actions .poly-btn { width: 100%; }
}
