/*
 * Kontakt: intro and the form card beside the contact details. The form
 * pieces (.contact-form, .contact-card, .contact-done) are also used by
 * the Współpraca page and the checkout details step.
 */

.contact {
    position: relative;
    isolation: isolate;
    overflow-x: clip;
    padding-bottom: clamp(80px, 9vw, 140px);
    background: var(--c-sand);
}

/* ---------- intro ---------- */

.contact-intro {
    position: relative;
    z-index: 2;
    max-width: 760px;
    margin: clamp(20px, 4vw, 56px) auto 0;
    padding: 0 var(--gutter);
    text-align: center;
}

.contact-intro__title {
    margin: .3em 0 0;
    font-family: var(--font-script);
    font-weight: 400;
    font-size: clamp(3.4375rem, 6.9vw, 6.875rem);
    line-height: 1.05;
    color: var(--c-accent);
    text-wrap: balance;
}

.contact-intro__lead { max-width: 34em; margin: .9em auto 0; font-size: clamp(1.0625rem, 1.35vw, 1.25rem); text-wrap: balance; }

/* ---------- layout ---------- */

.contact-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
    align-items: start;
    gap: clamp(32px, 4.5vw, 72px);
    max-width: calc(1180px + 2 * var(--gutter));
    margin: clamp(40px, 5vw, 72px) auto 0;
    padding: 0 var(--gutter);
}

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

.contact-card {
    --frame-shadow: 0 30px 50px -30px rgba(80, 30, 25, .45), 0 2px 8px rgba(80, 30, 25, .05);
    position: relative;
    margin: 0 14px 14px 0;
    padding: clamp(24px, 3.2vw, 48px);
    border-radius: 22px;
    background: var(--c-white);
    scroll-margin-top: 24px;
}

.contact-card__title {
    margin: 0;
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: clamp(2rem, 2.8vw, 2.625rem);
    line-height: 1.05;
    color: var(--c-accent);
}

.contact-card__sub { margin: .5em 0 0; font-size: 1rem; color: var(--c-ink-2); }

.contact-form {
    --field: var(--c-card);
    --error: #A3122A;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 20px;
    margin-top: clamp(22px, 2.4vw, 32px);
}

.contact-form__field { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.contact-form__field--full { grid-column: 1 / -1; }

.contact-form__label { padding: 0; font-size: 0.9375rem; font-weight: 500; }
.contact-form__required { color: var(--c-accent); }
.contact-form__optional { font-size: 0.875rem; font-weight: 400; color: var(--c-ink-2); }

.contact-input {
    width: 100%;
    min-height: 52px;
    padding: 13px 16px;
    border: 1.3px solid rgba(26, 26, 26, .22);
    border-radius: 10px;
    background: var(--field);
    color: var(--c-ink);
    font: inherit;
    font-size: 1.0625rem;
    transition: border-color .2s, box-shadow .2s, background .2s;
}

.contact-input:hover { border-color: rgba(110, 20, 35, .45); }

.contact-input:focus {
    border-color: var(--c-accent);
    outline: none;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(110, 20, 35, .16);
}

textarea.contact-input { min-height: 170px; line-height: 1.55; resize: vertical; }

select.contact-input {
    appearance: none;
    padding-right: 46px;
    background: var(--field) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E1423' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center / 20px;
    cursor: pointer;
}
.contact-input[aria-invalid="true"] { border-color: var(--error); background: #fff; }

.contact-form__help { display: flex; justify-content: space-between; gap: 12px; margin: 0; font-size: 0.875rem; color: var(--c-ink-2); }
.contact-form__count { flex: none; white-space: nowrap; }

.contact-form__error {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--error);
}

.contact-form__error svg { flex: none; width: 16px; height: 16px; }

.contact-form__summary {
    grid-column: 1 / -1;
    padding: 16px 18px;
    border: 1px solid rgba(163, 18, 42, .35);
    border-radius: 12px;
    background: #FBEFF0;
    color: var(--error);
    font-size: 0.9688rem;
}

.contact-form__summary { scroll-margin-top: 24px; }
.contact-form__summary:focus { outline: 2px solid var(--error); outline-offset: 2px; }
.contact-form__summary p { margin: 0 0 6px; }
.contact-form__summary ul { margin: 6px 0 0; padding-left: 20px; }
.contact-form__summary a { color: var(--error); }

/* ---------- chips (radio buttons or checkboxes) ---------- */

.contact-choices { min-width: 0; margin: 0; padding: 0; border: 0; }
.contact-choices legend { margin-bottom: 10px; }
.contact-choices__chips { display: flex; flex-wrap: wrap; gap: 10px; }
.contact-choices .contact-form__error { margin-top: 8px; }

.contact-chip { position: relative; }
.contact-chip input { position: absolute; width: 1px; height: 1px; opacity: 0; }

.contact-chip span {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 9px 18px;
    border: 1.3px solid rgba(110, 20, 35, .3);
    border-radius: 999px;
    background: var(--field);
    font-size: 0.9688rem;
    cursor: pointer;
    transition: background .2s, border-color .2s, color .2s;
}

.contact-chip span:hover { border-color: var(--c-accent); }
.contact-chip input:checked + span { border-color: var(--c-accent); background: var(--c-accent); color: #fff; }
.contact-chip input:focus-visible + span { outline: 2px solid var(--c-accent); outline-offset: 3px; }

/* ---------- checkbox, privacy, submit ---------- */

.contact-check { display: flex; align-items: flex-start; gap: 12px; font-size: 0.9688rem; cursor: pointer; }

.contact-check input {
    appearance: none;
    display: grid;
    flex: none;
    place-items: center;
    width: 24px;
    height: 24px;
    margin: 1px 0 0;
    border: 1.5px solid rgba(110, 20, 35, .5);
    border-radius: 6px;
    background: var(--field);
    cursor: pointer;
}

.contact-check input:checked { border-color: var(--c-accent); background: var(--c-accent); }

.contact-check input:checked::after {
    content: "";
    width: 6px;
    height: 11px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: translateY(-1px) rotate(45deg);
}

.contact-form__honeypot { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.contact-form__privacy { margin: 0; font-size: 0.875rem; line-height: 1.55; color: var(--c-ink-2); }
.contact-form__privacy a { color: var(--c-accent); text-underline-offset: 3px; }

.contact-form__submit { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; }
.contact-form__submit .btn { min-width: 230px; }

/* ---------- sent ---------- */

.contact-done { padding: clamp(20px, 4vw, 48px) 0; text-align: center; scroll-margin-top: 24px; }
.contact-done:focus { outline: none; }

.contact-done__icon {
    display: grid;
    place-items: center;
    width: 78px;
    height: 78px;
    margin: 0 auto 22px;
    border-radius: 50%;
    background: var(--c-accent);
    color: #fff;
    box-shadow: 0 14px 30px -14px rgba(110, 20, 35, .7);
}

.contact-done__icon svg { width: 34px; height: 34px; }
.contact-done p { max-width: 28em; margin: 10px auto 26px; font-size: 1.0625rem; }

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

.contact-aside { position: sticky; top: 28px; }

.contact-aside__photo {
    --frame-shadow: 0 24px 40px -26px rgba(80, 30, 25, .45);
    margin: 0 14px 14px 0;
    overflow: hidden;
    aspect-ratio: 1.25;
    border-radius: 22px;
    background: #E3D6C6;
}

.contact-aside__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; }

.contact-info { display: grid; gap: 22px; margin: clamp(30px, 3vw, 40px) 0 0; padding: 0; list-style: none; }
.contact-info > li { display: grid; grid-template-columns: 48px 1fr; align-items: start; gap: 16px; }

.contact-info__icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--c-ivory);
    color: var(--c-accent);
    box-shadow: inset 0 0 0 1px rgba(110, 20, 35, .15);
}

.contact-info__icon svg { width: 22px; height: 22px; }

.contact-info__title {
    margin: 2px 0;
    font-size: 0.8125rem;
    font-weight: 500;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--c-ink-2);
}

.contact-info__content { font-size: 1.0625rem; }

.contact-info__content a {
    color: var(--c-accent);
    text-decoration-color: rgba(110, 20, 35, .35);
    text-underline-offset: 4px;
    overflow-wrap: anywhere;
}

.contact-info__content a:hover { text-decoration-color: currentColor; }

.contact-info__socials { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 0; padding: 0; list-style: none; }

.contact-info__socials a {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 1.3px solid var(--c-accent);
    border-radius: 50%;
    text-decoration: none;
    transition: background .25s, color .25s;
}

.contact-info__socials a:hover,
.contact-info__socials a:focus-visible { background: var(--c-accent); color: #fff; }
.contact-info__socials svg { width: 20px; height: 20px; }

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

/* form first, the details below it in two columns */
@media (max-width: 960px) {
    .contact-grid { grid-template-columns: minmax(0, 1fr); }

    .contact-aside {
        position: static;
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        align-items: start;
        gap: 32px;
    }

    .contact-info { margin: 0; }
}

@media (max-width: 640px) {
    .contact-form { grid-template-columns: minmax(0, 1fr); }
    .contact-aside { grid-template-columns: minmax(0, 1fr); }
    .contact-card { --frame-x: 8px; --frame-y: 8px; margin: 0 8px 8px 0; }
    .contact-aside__photo { --frame-x: 8px; --frame-y: 8px; margin: 0 8px 8px 0; }
    .contact-form__submit .btn { width: 100%; }
}
