/* POLY — Contact ---------------------------------------------------------- */

.poly-contact__grid {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
    gap: clamp(40px, 5.5vw, 92px);
    align-items: start;
}

.poly-contact--no-form .poly-contact__grid { grid-template-columns: minmax(0, 1fr); }

.poly-contact__title { max-width: 15ch; }

.poly-contact__intro {
    margin-top: 1.4rem;
    max-width: 44ch;
    font-size: 1.0125rem;
    line-height: 1.75;
}

/* -------------------------------------------------------------- details */

.poly-contact__details {
    display: grid;
    gap: 0;
    margin-top: 2.5rem;
    border-top: 1px solid var(--poly-line);
}

.poly-contact__detail {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1.1rem;
    padding-block: 1.35rem;
    border-bottom: 1px solid var(--poly-line);
}

.poly-contact__detail-icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: var(--poly-radius);
    background: var(--poly-mist-deep);
    color: var(--poly-brand);
}

.poly-contact__detail-icon .poly-icon { width: 20px; height: 20px; }

.poly-contact__detail-body { display: flex; flex-direction: column; gap: .15rem; }

.poly-contact__detail-label {
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--poly-muted);
}

.poly-contact__detail-value {
    font-family: var(--poly-font-display);
    font-size: 1.0625rem;
    font-weight: 500;
    line-height: 1.45;
    color: var(--poly-title);
    text-decoration: none;
    transition: color .3s var(--poly-ease);
}

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

/* ----------------------------------------------------------------- form */

.poly-contact__form {
    padding: clamp(28px, 3.2vw, 48px);
    background: var(--poly-mist);
    border: 1px solid var(--poly-line);
    border-radius: var(--poly-radius-lg);
}

.poly-contact__form-title {
    margin-bottom: 1.75rem;
    font-size: clamp(1.2rem, 1.6vw, 1.45rem);
}

/* Contact Form 7 fields, restyled to match the design system. */
.poly-contact__form .poly-field { display: block; margin-bottom: 1.1rem; }

.poly-contact__form .poly-field__label {
    display: block;
    margin-bottom: .5rem;
    font-size: .8125rem;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--poly-title);
}

.poly-contact__form .poly-field__row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.1rem;
}

.poly-contact__form input[type="text"],
.poly-contact__form input[type="email"],
.poly-contact__form input[type="tel"],
.poly-contact__form textarea,
.poly-contact__form select {
    width: 100%;
    padding: .95rem 1.1rem;
    background: var(--poly-white);
    border: 1px solid var(--poly-line-strong);
    border-radius: var(--poly-radius);
    font-family: var(--poly-font-body);
    font-size: .9375rem;
    color: var(--poly-title);
    transition: border-color .3s var(--poly-ease), box-shadow .3s var(--poly-ease);
}

.poly-contact__form textarea { min-height: 132px; resize: vertical; }

.poly-contact__form input:focus,
.poly-contact__form textarea:focus,
.poly-contact__form select:focus {
    border-color: var(--poly-brand);
    box-shadow: 0 0 0 3px rgba(57, 67, 155, .12);
}

.poly-contact__form input::placeholder,
.poly-contact__form textarea::placeholder { color: var(--poly-muted); opacity: .72; }

.poly-contact__form input[type="submit"] {
    width: auto;
    margin-top: .5rem;
    padding: 1.05em 2rem;
    background: var(--poly-brand);
    border: 0;
    border-radius: var(--poly-radius);
    color: var(--poly-white);
    font-family: var(--poly-font-body);
    font-size: .9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color .3s var(--poly-ease);
}

.poly-contact__form input[type="submit"]:hover { background: var(--poly-brand-700); }

.poly-contact__form .wpcf7-not-valid-tip {
    margin-top: .4rem;
    font-size: .8125rem;
    color: #C0392B;
}

.poly-contact__form .wpcf7-response-output {
    margin: 1.5rem 0 0;
    padding: .9rem 1.1rem;
    border: 1px solid var(--poly-line-strong);
    border-radius: var(--poly-radius);
    font-size: .875rem;
}

.poly-contact__form .wpcf7-spinner { margin-left: .75rem; }

.poly-contact__form input[type="checkbox"] {
    width: 20px;
    height: 20px;
    margin: 0;
    border: 1px solid var(--poly-line-strong);
    border-radius: 3px;
    background: var(--poly-white);
}

.poly-contact__form input[type="checkbox"]:checked {
    background: var(--poly-brand);
    border-color: var(--poly-brand);
}

.poly-contact__form input[type="checkbox"]:checked::after {
    width: 11px;
    height: 6px;
    border: 2px solid #fff;
    border-top: 0;
    border-right: 0;
    border-radius: 0;
    background: none;
    transform: translate(-50%, -70%) rotate(-45deg);
}

.poly-contact__form .wpcf7-list-item { margin: 0; }

.poly-contact__form .poly-field__consent {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .75rem;
    align-items: start;
    font-size: .8125rem;
    line-height: 1.6;
    color: var(--poly-muted);
}

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

@media (max-width: 1023px) {
    .poly-contact__grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
    .poly-contact__form .poly-field__row { grid-template-columns: 1fr; }
    .poly-contact__form input[type="submit"] { width: 100%; }
}

/* Honeypot: kept out of sight and out of the tab order for people. Unscoped
   so it stays hidden wherever a form shortcode is placed. */
.poly-hp {
    position: absolute !important;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* Required marker and helper text inside labels. */
.poly-contact__form .poly-field__req { color: var(--poly-brand); }
.poly-contact__form .poly-field__consent a { color: var(--poly-brand); font-weight: 600; }

/* CF7 states: invalid fields get a visible edge, the response box a tone. */
.poly-contact__form .wpcf7-not-valid { border-color: #C0392B !important; }
.poly-contact__form form.invalid .wpcf7-response-output,
.poly-contact__form form.unaccepted .wpcf7-response-output,
.poly-contact__form form.spam .wpcf7-response-output,
.poly-contact__form form.failed .wpcf7-response-output {
    border-color: #C0392B;
    background: #FDF1EF;
    color: #8E2A1F;
}

.poly-contact__form form.sent .wpcf7-response-output {
    border-color: #2E8B57;
    background: #EEF8F2;
    color: #1F5E3B;
}
