/* ==============================================
   CONTACT PAGE
   ============================================== */


/* ==============================================
   INTRO SECTION --- dark
   ============================================== */

.contact-intro {
    background-color: #496580;
    padding: 4rem 2rem;
}

.contact-intro-inner {
    width: 100%;
    max-width: 56rem;
    margin: 0 auto;
    padding-left: 10vw;
    padding-right: 10vw;
}

.contact-intro h1 {
    font-family: 'Barlow', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1.75rem, 5vw, 3rem);
    font-weight: 700;
    color: #E5E4E2;
    margin: 0 0 0 0;
    line-height: 1.15;
    text-align: center;
}

.contact-intro-text {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1rem, 2vw, 1.125rem);
    color: #E5E4E2;
    line-height: 1.7;
    margin: 0 0 0 0;
    margin-top: 1.25rem;
    text-align: left;
}

.contact-info-list {
    display: grid;
    grid-template-columns: auto;
    gap: 1.25rem 0;
    align-items: start;
    justify-content: center;
    justify-items: start;
    width: 100%;
    max-width: 56rem;
    margin-top: 2rem;
    margin-left: auto;
    margin-right: auto;
    padding-left: 2rem;
    padding-right: 2rem;
}

.contact-info-item {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.contact-info-pair {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.contact-info-label {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #ACB6BD;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.contact-info-value {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(0.9375rem, 2vw, 1.0625rem);
    color: #E5E4E2;
    line-height: 1.4;
    overflow-wrap: break-word;
    min-width: 0;
}

.contact-info-link {
    text-decoration: none;
}

.contact-info-link:hover {
    color: #D3D3D3;
    text-decoration: underline;
}

@media (min-width: 48rem) {
    .contact-intro {
        padding-top: 5rem;
        padding-bottom: 5rem;
        padding-left: 3rem;
        padding-right: 3rem;
    }
}

@media (min-width: 22.1875rem) {
    .contact-info-list {
        padding-left: 23vw;
    }
}

@media (min-width: 35.9375rem) {
    .contact-info-list {
        grid-template-columns: auto auto;
        justify-content: space-between;
        gap: 0 3rem;
        padding-left: 17.25vw;
        padding-right: 3.5vw;
    }
}

@media (min-width: 37.5rem) {
    .contact-info-list {
        padding-left: 18.25vw;
        padding-right: 6.5vw;
    }
}

@media (min-width: 39.0625rem) {
    .contact-info-list {
        padding-left: 19.25vw;
        padding-right: 4.5vw;
    }
}

@media (min-width: 40.625rem) {
    .contact-info-list {
        padding-left: 20.25vw;
        padding-right: 7.5vw;
    }
}

@media (min-width: 42.1875rem) {
    .contact-info-list {
        padding-right: 7.5vw;
    }
}

@media (min-width: 43.75rem) {
    .contact-info-list {
        padding-right: 7.5vw;
    }
}

@media (min-width: 45.3125rem) {
    .contact-info-list {
        padding-right: 7.5vw;
    }
}

@media (min-width: 46.875rem) {
    .contact-info-list {
        padding-right: 9.5vw;
    }
}

@media (min-width: 48.4375rem) {
    .contact-info-list {
        padding-right: 7.5vw;
    }
}

@media (min-width: 50rem) {
    .contact-info-list {
        padding-left: 26.25vw;
        padding-right: 10.5vw;
    }
}

@media (min-width: 51.5625rem) {
    .contact-info-list {
        padding-left: 27.25vw;
    }
}

@media (min-width: 53.125rem) {
    .contact-info-list {
        padding-left: 25.25vw;
    }
}

@media (min-width: 54.6875rem) {
    .contact-info-list {
        padding-left: 25.25vw;
    }
}

@media (min-width: 56.25rem) {
    .contact-info-list {
        padding-left: 24.25vw;
        padding-right: 9.5vw;
    }
}

@media (min-width: 57.8125rem) {
    .contact-info-list {
        padding-left: 24.25vw;
        padding-right: 10.5vw;
    }
}

@media (min-width: 59.375rem) {
    .contact-info-list {
        padding-left: 25.25vw;
        padding-right: 11.5vw;
    }
}

@media (min-width: 62.5rem) {
    .contact-info-list {
        padding-left: 24.25vw;
    }
}

@media (min-width: 65.625rem) {
    .contact-info-list {
        padding-left: 23.25vw;
    }
}

@media (min-width: 68.75rem) {
    .contact-info-list {
        padding-left: 22.25vw;
    }
}

@media (min-width: 71.875rem) {
    .contact-info-list {
        padding-left: 20.25vw;
    }
}

@media (min-width: 75rem) {
    .contact-info-list {
        padding-left: 19.25vw;
        padding-right: 11.5vw;
    }
}


@media (min-width: 75rem) {
    .contact-intro {
        padding-left: 8vw;
        padding-right: 8vw;
    }
}


/* ==============================================
   EMBEDDED CHAT SECTION --- light
   ============================================== */

.contact-chat-section {
    background-color: #D3D3D3;
    padding: 4rem 2rem;
    scroll-margin-top: 2.25rem;
}

.contact-chat-inner {
    width: 100%;
    max-width: 56rem;
    margin: 0 auto;
}

.contact-chat-section h2 {
    font-family: 'Barlow', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1.375rem, 4vw, 2.25rem);
    font-weight: 700;
    color: #1A2530;
    margin: 0 0 0 0;
    line-height: 1.2;
    text-align: center;
}

.contact-chat-desc {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1rem, 2vw, 1.0625rem);
    color: #1A2530;
    line-height: 1.7;
    margin: 0 0 0 0;
    margin-top: 0.875rem;
}

/* --- ec-panel container --- */

.ec-panel {
    display: flex;
    flex-direction: column;
    background-color: #ffffff;
    border-radius: 0.75rem;
    box-shadow: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.14);
    overflow: hidden;
    width: 100%;
    max-height: 38rem;
    margin-top: 2rem;
}

/* --- ec-panel header --- */

.ec-header {
    background-color: #0F3350;
    padding: 0.75rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    flex-shrink: 0;
}

.ec-header-title {
    font-family: 'Barlow', 'Arial Narrow', Arial, sans-serif;
    font-weight: 600;
    font-size: 0.9375rem;
    color: #E5E4E2;
    margin: 0 0 0 0;
    line-height: 1.2;
}

.ec-header-sub {
    font-family: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
    font-size: 0.75rem;
    color: #ACB6BD;
    margin: 0 0 0 0;
    line-height: 1.3;
}

/* --- messages area --- */

.ec-messages {
    flex: 1 1 0;
    overflow-y: auto;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    background-color: #f4f6f8;
    min-height: 8rem;
}

.ec-panel:has(.ec-message--user) .ec-messages {
    min-height: 20rem;
}

.ec-message {
    max-width: 85%;
    padding: 0.625rem 0.875rem;
    border-radius: 0.5rem;
    font-family: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.5;
    overflow-wrap: break-word;
    white-space: pre-wrap;
}

.ec-message--bot {
    background-color: #ffffff;
    color: #1A2530;
    align-self: flex-start;
    border-bottom-left-radius: 0.125rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.ec-message--user {
    background-color: #2D6FA3;
    color: #ffffff;
    align-self: flex-end;
    border-bottom-right-radius: 0.125rem;
}

.ec-intro-bold {
    font-weight: 700;
    color: #0F3350;
}

.ec-list {
    padding-left: 1.25rem;
    margin: 0.375rem 0 0 0;
    list-style-type: disc;
}

.ec-list li {
    padding: 0.125rem 0;
    line-height: 1.5;
}

/* --- typing indicator --- */

@keyframes ec-dot-bounce {
    0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
    40%           { transform: translateY(-0.375rem); opacity: 1; }
}

.ec-message--typing {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.875rem 1rem;
    background-color: #ffffff;
    align-self: flex-start;
    border-radius: 0.5rem;
    border-bottom-left-radius: 0.125rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.ec-message--typing .dot {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background-color: #7393B3;
    animation: ec-dot-bounce 1.2s ease-in-out infinite;
    flex-shrink: 0;
}

.ec-message--typing .dot:nth-child(2) { animation-delay: 0.2s; }
.ec-message--typing .dot:nth-child(3) { animation-delay: 0.4s; }

/* --- complete state --- */

.ec-complete {
    flex: 1 1 0;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem 1.5rem;
    text-align: center;
    background-color: #f4f6f8;
    gap: 0.75rem;
}

.ec-panel.is-complete .ec-complete  { display: flex; }
.ec-panel.is-complete .ec-messages  { display: none; }
.ec-panel.is-complete .ec-input-row { display: none; }

.ec-complete p {
    font-family: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
    font-size: 0.9375rem;
    color: #496580;
    margin: 0 0 0 0;
    line-height: 1.5;
}

.ec-complete-check {
    width: 2.5rem;
    height: 2.5rem;
    fill: #2D6FA3;
}

/* --- input row --- */

.ec-input-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem;
    border-top: 0.0625rem solid #D3D3D3;
    background-color: #ffffff;
    flex-shrink: 0;
}

.ec-input {
    flex: 1 1 0;
    min-width: 0;
    border: 0.0625rem solid #ACB6BD;
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem;
    font-family: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.4;
    color: #1A2530;
    background-color: #ffffff;
    resize: none;
    overflow-y: hidden;
    max-height: 6rem;
    outline: none;
    transition: border-color 0.15s ease;
}

.ec-input:focus {
    border-color: #2D6FA3;
}

.ec-input:disabled {
    background-color: #f4f6f8;
    cursor: not-allowed;
}

.ec-send-btn {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background-color: #2D6FA3;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background-color 0.15s ease;
}

.ec-send-btn:hover {
    background-color: #1E5280;
}

.ec-send-btn:disabled {
    background-color: #ACB6BD;
    cursor: not-allowed;
}

.ec-send-icon {
    width: 1rem;
    height: 1rem;
    fill: #ffffff;
    pointer-events: none;
}

@media (max-width: 47.9375rem) {
    .ec-messages {
        min-height: 11.5rem;
    }
    .ec-panel:has(.ec-message--user) .ec-messages {
        min-height: 18rem;
    }
    .ec-input {
        font-size: 1rem;
    }
    .contact-chat-section:focus-within {
        padding-bottom: 0.5rem;
    }
}

@media (max-width: 22rem) {
    .ec-messages {
        min-height: 14rem;
    }
}

@media (min-width: 48rem) {
    .contact-chat-section {
        padding-top: 5rem;
        padding-bottom: 5rem;
        padding-left: 3rem;
        padding-right: 3rem;
        scroll-margin-top: 4rem;
    }
    .ec-panel {
        max-height: 75vh;
    }
}

@media (min-width: 75rem) {
    .contact-chat-section {
        padding-left: 8vw;
        padding-right: 8vw;
    }
}


/* ==============================================
   FALLBACK FORM SECTION --- dark
   ============================================== */

.contact-form-section {
    background-color: #496580;
    padding: 4rem 2rem;
}

.contact-form-inner {
    width: 100%;
    max-width: 44rem;
    margin: 0 auto;
}

.contact-form-section h2 {
    font-family: 'Barlow', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1.375rem, 4vw, 2.25rem);
    font-weight: 700;
    color: #E5E4E2;
    margin: 0 0 0 0;
    line-height: 1.2;
    text-align: center;
}

.contact-form-desc {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1rem, 2vw, 1.0625rem);
    color: #E5E4E2;
    line-height: 1.7;
    margin: 0 0 0 0;
    margin-top: 0.875rem;
    text-align: center;
}

/* --- neutralize any global form styles --- */
.contact-form {
    background: none;
    padding: 0;
    border-radius: 0;
    box-shadow: none;
    max-width: none;
    margin: 0 0 0 0;
    margin-top: 2rem;
    display: block;
}

.contact-field {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin-top: 1.25rem;
}

.contact-field:first-of-type {
    margin-top: 0;
}

.contact-label {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: #E5E4E2;
    line-height: 1.3;
}

.contact-optional {
    font-weight: 400;
    color: #ACB6BD;
}

.contact-input {
    width: 100%;
    border: 0.0625rem solid #7393B3;
    border-radius: 0.375rem;
    padding: 0.625rem 0.875rem;
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: 1rem;
    line-height: 1.4;
    color: #1A2530;
    background-color: #D6E0EF;
    outline: none;
    transition: border-color 0.15s ease;
    box-sizing: border-box;
    max-width: 100%;
    min-width: 0;
    overflow-wrap: break-word;
}

.contact-input::placeholder {
    color: #496580;
}

.contact-input:focus {
    border-color: #2D6FA3;
    background-color: #D6E0EF;
}

.contact-textarea {
    resize: vertical;
    overflow-y: auto;
    min-height: 8rem;
}

.contact-form .btn {
    display: block;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 48rem) {
    .contact-form-section {
        padding-top: 5rem;
        padding-bottom: 5rem;
        padding-left: 3rem;
        padding-right: 3rem;
    }
}

@media (min-width: 75rem) {
    .contact-form-section {
        padding-left: 8vw;
        padding-right: 8vw;
    }
}


/* ==============================================
   PAYMENT SECTION --- light
   ============================================== */

.contact-payment-section {
    background-color: #D3D3D3;
    padding: 4rem 2rem;
}

.contact-payment-inner {
    width: 100%;
    max-width: 44rem;
    margin: 0 auto;
}

.contact-payment-section h2 {
    font-family: 'Barlow', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1.375rem, 4vw, 2.25rem);
    font-weight: 700;
    color: #1A2530;
    margin: 0 0 0 0;
    line-height: 1.2;
    text-align: center;
}

.contact-payment-desc {
    font-family: 'Source Sans 3', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    font-size: clamp(1rem, 2vw, 1.0625rem);
    color: #1A2530;
    line-height: 1.7;
    margin: 0 0 0 0;
    margin-top: 0.875rem;
}

.contact-payment-link {
    color: #2D6FA3;
    text-decoration: none;
}

.contact-payment-link:hover {
    color: #1E5280;
    text-decoration: underline;
}

.contact-payment-inner .btn {
    display: block;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 48rem) {
    .contact-payment-section {
        padding-top: 5rem;
        padding-bottom: 5rem;
        padding-left: 3rem;
        padding-right: 3rem;
    }
}

@media (min-width: 75rem) {
    .contact-payment-section {
        padding-left: 8vw;
        padding-right: 8vw;
    }
}
