/* =========================================================
   SMARTER APPLIANCES
   CONTACT PAGE

   Visual system converted from:
   src/routes/contact.tsx

   Existing Django contact functionality retained.
   ========================================================= */

:root {
    --contact-obsidian: oklch(0.168 0.020 220);
    --contact-teal-deep: oklch(0.3 0.0401 213.75);
    --contact-mint: oklch(0.778 0.1454 169.75);
    --contact-mint-dark: oklch(0.6775 0.1257 170.29);
    --contact-paper: oklch(0.972 0.006 80);
    --contact-warm: oklch(0.92 0.009 80);

    --contact-border-5:
        color-mix(
            in oklab,
            var(--contact-obsidian) 5%,
            transparent
        );

    --contact-border-10:
        color-mix(
            in oklab,
            var(--contact-obsidian) 10%,
            transparent
        );

    --contact-border-15:
        color-mix(
            in oklab,
            var(--contact-obsidian) 15%,
            transparent
        );

    --contact-text-50:
        color-mix(
            in oklab,
            var(--contact-obsidian) 50%,
            transparent
        );

    --contact-text-60:
        color-mix(
            in oklab,
            var(--contact-obsidian) 60%,
            transparent
        );
}


/* =========================================================
   BASE
   ========================================================= */

.contact-page {
    width: 100%;
    overflow-x: hidden;

    background: var(--contact-paper);
    color: var(--contact-obsidian);

    font-family: "DM Sans", sans-serif;
}


.contact-page h1,
.contact-page h2 {
    font-family: "Space Grotesk", sans-serif;
}


.contact-container {
    width: 100%;
    max-width: 1280px;

    margin-left: auto;
    margin-right: auto;
}


.contact-form-container {
    width: 100%;
    max-width: 768px;

    margin-left: auto;
    margin-right: auto;
}


/* =========================================================
   REVEAL
   ========================================================= */

@keyframes contactReveal {

    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}


.contact-reveal {
    animation:
        contactReveal
        0.8s
        cubic-bezier(0.16, 1, 0.3, 1)
        both;
}


/* =========================================================
   HERO

   Exact Vite structure:
   px-6 py-24
   max-w-7xl
   ========================================================= */

.contact-hero {
    padding: 96px 24px;

    border-bottom:
        1px solid
        var(--contact-border-5);
}


.contact-hero__eyebrow {
    margin-bottom: 24px;

    color: var(--contact-mint-dark);

    font-family: "Space Grotesk", sans-serif;

    font-size: 12px;
    font-weight: 700;

    line-height: 16px;

    text-transform: uppercase;

    letter-spacing: 0.1em;
}


.contact-hero__title {
    max-width: 18ch;

    margin: 0;

    color: var(--contact-obsidian);

    font-family: "Space Grotesk", sans-serif;

    font-size: 48px;
    font-weight: 700;

    line-height: 0.95;

    letter-spacing: -0.05em;
}


.contact-hero__description {
    max-width: 58ch;

    margin: 32px 0 0;

    color: var(--contact-text-60);

    font-size: 18px;
    font-weight: 400;

    line-height: 1.625;
}


/* =========================================================
   CONTACT DETAILS

   Vite:
   px-6 py-12
   max-w-3xl
   border-t
   pt-12
   ========================================================= */

.contact-details {
    padding: 48px 24px;
}


.contact-details__inner {
    padding-top: 48px;

    border-top:
        1px solid
        var(--contact-border-10);
}


.contact-details__title {
    margin: 0 0 32px;

    color: var(--contact-obsidian);

    font-size: 24px;
    font-weight: 700;

    line-height: 32px;

    letter-spacing: -0.025em;
}


.contact-details__grid {
    display: grid;

    grid-template-columns: minmax(0, 1fr);

    gap: 32px;
}


.contact-detail__label {
    margin: 0 0 8px;

    color: var(--contact-text-50);

    font-size: 12px;
    font-weight: 700;

    line-height: 16px;

    text-transform: uppercase;

    letter-spacing: 0.1em;
}


.contact-detail__value {
    margin: 0;

    color: var(--contact-obsidian);

    font-style: normal;

    font-size: 16px;
    font-weight: 400;

    line-height: 1.5;

    text-decoration: none;

    transition: color 0.2s ease;
}


a.contact-detail__value:hover {
    color: var(--contact-mint-dark);
}


/* =========================================================
   FORM

   Vite:
   px-6 pb-24 pt-12
   max-w-3xl
   space-y-6
   ========================================================= */

.contact-form-section {
    padding:
        48px
        24px
        96px;
}


.contact-form {
    display: flex;

    flex-direction: column;

    gap: 24px;
}


.contact-form__grid {
    display: grid;

    grid-template-columns: minmax(0, 1fr);

    gap: 24px;
}


/* =========================================================
   FIELD
   ========================================================= */

.contact-field {
    width: 100%;
}


.contact-field__label {
    display: block;

    margin-bottom: 8px;

    color: var(--contact-text-50);

    font-size: 12px;
    font-weight: 700;

    line-height: 16px;

    text-transform: uppercase;

    letter-spacing: 0.1em;
}


.contact-field__label span {
    font-weight: 500;

    letter-spacing: 0.05em;

    opacity: 0.7;
}


.contact-field__control {
    display: block;

    width: 100%;

    min-height: 46px;

    margin: 0;

    padding: 12px 16px;

    border:
        1px solid
        var(--contact-border-15);

    border-radius: 2px;

    outline: 0;

    background: #ffffff;

    color: var(--contact-obsidian);

    font-family: "DM Sans", sans-serif;

    font-size: 14px;
    font-weight: 400;

    line-height: 20px;

    transition:
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}


.contact-field__control:hover {
    border-color:
        color-mix(
            in oklab,
            var(--contact-obsidian) 25%,
            transparent
        );
}


.contact-field__control:focus {
    border-color: var(--contact-mint);

    box-shadow:
        0 0 0 1px
        var(--contact-mint);
}


.contact-field__textarea {
    min-height: 120px;

    resize: vertical;
}


.contact-field__select {
    appearance: auto;

    cursor: pointer;
}


/* =========================================================
   POSTCODE
   ========================================================= */

.contact-postcode {
    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        auto;

    gap: 12px;
}


.contact-postcode__button {
    display: inline-flex;

    align-items: center;
    justify-content: center;

    min-height: 46px;

    padding: 12px 20px;

    border:
        1px solid
        var(--contact-obsidian);

    border-radius: 2px;

    background: transparent;

    color: var(--contact-obsidian);

    font-family: "DM Sans", sans-serif;

    font-size: 12px;
    font-weight: 700;

    line-height: 16px;

    letter-spacing: 0.1em;

    white-space: nowrap;

    cursor: pointer;

    transition:
        background-color 0.2s ease,
        color 0.2s ease,
        border-color 0.2s ease;
}


.contact-postcode__button:hover {
    background: var(--contact-obsidian);

    color: var(--contact-paper);
}


.contact-postcode__button:disabled {
    opacity: 0.5;

    cursor: wait;
}


.contact-field__message {
    min-height: 18px;

    margin: 6px 0 0;

    color: #a83b32;

    font-size: 12px;

    line-height: 18px;
}


/* =========================================================
   SUBMIT BUTTON

   Exact Vite visual:
   glow-mint
   bg-mint
   px-10 py-4
   text-sm
   font-bold
   tracking-widest
   ========================================================= */

.contact-submit {
    display: inline-flex;

    align-items: center;
    justify-content: center;

    width: fit-content;

    min-height: 52px;

    padding: 16px 40px;

    border: 0;

    border-radius: 2px;

    background: var(--contact-mint);

    color: var(--contact-obsidian);

    font-family: "DM Sans", sans-serif;

    font-size: 14px;
    font-weight: 700;

    line-height: 20px;

    letter-spacing: 0.1em;

    cursor: pointer;

    transition:
        box-shadow 0.2s ease,
        opacity 0.2s ease;
}


.contact-submit:hover {
    box-shadow:
        0 0 30px
        color-mix(
            in oklab,
            var(--contact-mint) 45%,
            transparent
        );
}


.contact-submit:disabled {
    opacity: 0.6;

    cursor: wait;
}


/* =========================================================
   INLINE STATUS
   ========================================================= */

.contact-form__message {
    display: none;

    margin: -4px 0 0;

    font-size: 14px;

    line-height: 1.5;
}


.contact-form__message--error {
    display: block;

    color: #a83b32;
}


/* =========================================================
   VITE'S FINAL h-24
   ========================================================= */

.contact-bottom-space {
    height: 96px;
}


/* =========================================================
   CUSTOM MODAL
   ========================================================= */

body.contact-modal-open {
    overflow: hidden;
}


.contact-modal {
    position: fixed;

    inset: 0;

    z-index: 10000;

    display: none;

    align-items: center;
    justify-content: center;

    padding: 24px;
}


.contact-modal.is-open {
    display: flex;
}


.contact-modal__backdrop {
    position: absolute;

    inset: 0;

    background:
        rgba(13, 29, 31, 0.72);

    backdrop-filter: blur(4px);
}


.contact-modal__dialog {
    position: relative;

    z-index: 1;

    width: 100%;
    max-width: 480px;

    padding: 40px;

    border:
        1px solid
        var(--contact-border-10);

    border-radius: 2px;

    background: var(--contact-paper);

    box-shadow:
        0 30px 80px
        rgba(0, 0, 0, 0.20);
}


.contact-modal__close {
    position: absolute;

    top: 14px;
    right: 16px;

    width: 32px;
    height: 32px;

    padding: 0;

    border: 0;

    background: transparent;

    color: var(--contact-text-50);

    font-family: "DM Sans", sans-serif;

    font-size: 26px;
    font-weight: 300;

    cursor: pointer;
}


.contact-modal__eyebrow {
    margin-bottom: 12px;

    color: var(--contact-mint-dark);

    font-size: 11px;
    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: 0.1em;
}


.contact-modal__title {
    margin: 0 0 16px;

    color: var(--contact-obsidian);

    font-size: 28px;
    font-weight: 700;

    line-height: 1.1;

    letter-spacing: -0.025em;
}


.contact-modal__message {
    margin: 0 0 28px;

    color: var(--contact-text-60);

    font-size: 15px;

    line-height: 1.6;
}


.contact-modal__button {
    padding: 12px 24px;

    border: 0;

    border-radius: 2px;

    background: var(--contact-obsidian);

    color: var(--contact-paper);

    font-family: "DM Sans", sans-serif;

    font-size: 12px;
    font-weight: 700;

    letter-spacing: 0.1em;

    cursor: pointer;
}


/* =========================================================
   SM = Tailwind 640px
   ========================================================= */

@media (min-width: 640px) {

    .contact-details__grid {
        grid-template-columns:
            repeat(3, minmax(0, 1fr));
    }


    .contact-form__grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

}


/* =========================================================
   LG = Tailwind 1024px
   ========================================================= */

@media (min-width: 1024px) {

    .contact-hero__title {
        font-size: 60px;
    }

}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 575px) {

    .contact-hero {
        padding:
            72px
            20px;
    }


    .contact-hero__title {
        font-size: 42px;
    }


    .contact-hero__description {
        font-size: 17px;
    }


    .contact-details {
        padding:
            48px
            20px;
    }


    .contact-form-section {
        padding:
            40px
            20px
            72px;
    }


    .contact-postcode {
        grid-template-columns:
            minmax(0, 1fr);
    }


    .contact-postcode__button {
        width: 100%;
    }


    .contact-submit {
        width: 100%;
    }


    .contact-modal {
        padding: 16px;
    }


    .contact-modal__dialog {
        padding:
            36px
            24px
            28px;
    }

}