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


/* ============================================================
   Page
   ============================================================ */

.contact-page {
    min-height: calc(100vh - 145px);

    position: relative;

    overflow: hidden;

    padding:
        9rem
        1.5rem
        6rem;
}


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

    margin: 0 auto;

    position: relative;
    z-index: 2;
}


/* ============================================================
   Background
   ============================================================ */

.contact-bg-glow {
    position: absolute;

    width: 430px;
    height: 430px;

    border-radius: 50%;

    background:
        rgba(15, 118, 110, 0.09);

    filter: blur(100px);

    pointer-events: none;
}


.contact-bg-glow-one {
    top: 5%;
    right: -120px;
}


.contact-bg-glow-two {
    bottom: -150px;
    left: -100px;

    width: 380px;
    height: 380px;

    background:
        rgba(20, 184, 166, 0.07);
}


/* ============================================================
   Heading
   ============================================================ */

.contact-heading {
    max-width: 760px;
    margin: 0 auto 4rem;
    text-align: center;
}


.contact-eyebrow {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;

    margin-bottom: 1.25rem;

    color: var(--accent);

    font-family: MonoLocal, monospace;
    font-size: 0.75rem;
    letter-spacing: 0.03em;
}


.contact-eyebrow-line {
    width: 32px;
    height: 1px;

    background:
        var(--accent);
}


.contact-title {
    margin: 0;

    color: #18181b;

    font-size:
        clamp(2.2rem, 5vw, 4rem);

    font-weight: 800;

    line-height: 1.25;

    letter-spacing: -0.03em;
}


.dark .contact-title {
    color: #fafafa;
}


.contact-title span {
    color: var(--accent);
}


.contact-description {
    max-width: 680px;
    margin: 1.5rem auto 0;
    color: #71717a;
    font-size: 0.95rem;
    line-height: 2.1;
    text-align: center;
}


.dark .contact-description {
    color: #a1a1aa;
}


/* ============================================================
   Main Layout
   ============================================================ */

.contact-layout {
    display: grid;

    grid-template-columns:
        minmax(280px, 0.85fr)
        minmax(400px, 1.15fr);

    gap: 3rem;

    align-items: start;
}


/* ============================================================
   Contact Info
   ============================================================ */

.contact-info {
    display: flex;

    flex-direction: column;

    gap: 0.8rem;
}


/* ============================================================
   Intro Card
   ============================================================ */

.contact-intro-card {
    display: flex;

    align-items: flex-start;

    gap: 1rem;

    padding: 1.4rem;

    margin-bottom: 0.6rem;

    border:
        1px solid #e4e4e7;

    border-radius: 1rem;

    background:
        rgba(250, 250, 250, 0.8);
}


.dark .contact-intro-card {
    border-color: #27272a;

    background:
        rgba(24, 24, 27, 0.65);
}


.contact-intro-icon {
    flex-shrink: 0;

    width: 44px;
    height: 44px;

    display: flex;

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

    border-radius: 0.75rem;

    background:
        rgba(15, 118, 110, 0.1);

    color:
        var(--accent);
}


.contact-intro-card h2 {
    margin: 0 0 0.4rem;

    color: #18181b;

    font-size: 1rem;

    font-weight: 700;
}


.dark .contact-intro-card h2 {
    color: #f4f4f5;
}


.contact-intro-card p {
    margin: 0;

    color: #71717a;

    font-size: 0.78rem;

    line-height: 1.9;
}


.dark .contact-intro-card p {
    color: #a1a1aa;
}


/* ============================================================
   Contact Method
   ============================================================ */

.contact-method {
    display: flex;

    align-items: center;

    gap: 1rem;

    padding: 1rem 1.1rem;

    border:
        1px solid #e4e4e7;

    border-radius: 0.9rem;

    background:
        rgba(255, 255, 255, 0.75);

    color: inherit;

    text-decoration: none;

    transition:
        transform 0.25s ease,
        border-color 0.25s ease,
        background-color 0.25s ease,
        box-shadow 0.25s ease;
}


.contact-method:hover {
    transform: translateX(-4px);

    border-color:
        rgba(15, 118, 110, 0.45);

    background:
        rgba(15, 118, 110, 0.035);

    box-shadow:
        0 10px 30px rgba(0, 0, 0, 0.04);
}


.dark .contact-method {
    border-color: #27272a;

    background:
        rgba(24, 24, 27, 0.65);
}


.dark .contact-method:hover {
    border-color:
        rgba(20, 184, 166, 0.4);

    background:
        rgba(15, 118, 110, 0.07);

    box-shadow:
        0 10px 30px rgba(0, 0, 0, 0.2);
}


/* Icon */

.contact-method-icon {
    width: 40px;
    height: 40px;

    flex-shrink: 0;

    display: flex;

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

    border-radius: 0.7rem;

    background:
        #f4f4f5;

    color:
        #52525b;

    transition:
        background-color 0.25s ease,
        color 0.25s ease;
}

.contact-method-icon img {
    width: 22px;
    height: 22px;
    object-fit: contain;
}


.dark .contact-method-icon {
    background:
        #27272a;

    color:
        #d4d4d8;
}


.contact-method:hover .contact-method-icon {
    background:
        rgba(15, 118, 110, 0.1);

    color:
        var(--accent);
}


/* Content */

.contact-method-content {
    display: flex;

    flex-direction: column;

    min-width: 0;

    gap: 0.15rem;
}


.contact-method-label {
    color: #71717a;

    font-family: MonoLocal, monospace;

    font-size: 0.65rem;

    text-transform: uppercase;
}


.dark .contact-method-label {
    color: #71717a;
}


.contact-method-value {
    overflow: hidden;

    color: #27272a;

    font-size: 0.78rem;

    text-overflow: ellipsis;

    white-space: nowrap;
}


.dark .contact-method-value {
    color: #e4e4e7;
}


/* Arrow */

.contact-method-arrow {
    margin-right: auto;

    color: #a1a1aa;

    font-size: 1rem;

    direction: ltr;

    transition:
        transform 0.25s ease,
        color 0.25s ease;
}


.contact-method:hover .contact-method-arrow {
    color: var(--accent);

    transform:
        translate(-3px, -3px);
}


/* ============================================================
   Availability
   ============================================================ */

.contact-availability {
    display: flex;

    align-items: center;

    gap: 0.75rem;

    margin-top: 0.8rem;

    padding: 1rem;

    border-radius: 0.8rem;

    background:
        rgba(15, 118, 110, 0.05);
}


.availability-dot {
    width: 8px;
    height: 8px;

    flex-shrink: 0;

    border-radius: 50%;

    background:
        #10b981;

    box-shadow:
        0 0 0 5px
        rgba(16, 185, 129, 0.1);

    animation:
        availabilityPulse 2s ease-in-out infinite;
}


.contact-availability div {
    display: flex;

    flex-direction: column;

    gap: 0.15rem;
}


.contact-availability strong {
    color:
        #27272a;

    font-size: 0.78rem;
}


.dark .contact-availability strong {
    color: #e4e4e7;
}


.contact-availability span:last-child {
    color:
        #71717a;

    font-size: 0.68rem;
}


@keyframes availabilityPulse {

    0%,
    100% {
        box-shadow:
            0 0 0 5px
            rgba(16, 185, 129, 0.1);
    }

    50% {
        box-shadow:
            0 0 0 9px
            rgba(16, 185, 129, 0.03);
    }
}


/* ============================================================
   Form Card
   ============================================================ */

.contact-form-card {
    position: relative;

    padding: 2rem;

    border:
        1px solid #e4e4e7;

    border-radius: 1.25rem;

    background:
        rgba(250, 250, 250, 0.82);

    backdrop-filter: blur(12px);

    -webkit-backdrop-filter: blur(12px);

    box-shadow:
        0 20px 60px
        rgba(0, 0, 0, 0.05);
}


.dark .contact-form-card {
    border-color:
        #27272a;

    background:
        rgba(24, 24, 27, 0.78);

    box-shadow:
        0 20px 60px
        rgba(0, 0, 0, 0.3);
}


/* ============================================================
   Form Header
   ============================================================ */

.form-card-header {
    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: 1rem;

    margin-bottom: 2rem;
}


.form-card-label {
    display: block;

    margin-bottom: 0.5rem;

    color:
        var(--accent);

    font-family: MonoLocal, monospace;

    font-size: 0.65rem;

    letter-spacing: 0.05em;
}


.form-card-header h2 {
    margin: 0;

    color:
        #18181b;

    font-size: 1.25rem;

    font-weight: 700;
}


.dark .form-card-header h2 {
    color: #f4f4f5;
}


.form-code {
    display: flex;

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

    width: 42px;
    height: 42px;

    border:
        1px solid
        rgba(15, 118, 110, 0.2);

    border-radius: 0.7rem;

    background:
        rgba(15, 118, 110, 0.06);

    color:
        var(--accent);

    font-family: MonoLocal, monospace;

    font-size: 0.8rem;
}


/* ============================================================
   Form
   ============================================================ */

.contact-form {
    display: flex;

    flex-direction: column;

    gap: 1.15rem;
}


.form-group {
    display: flex;

    flex-direction: column;

    gap: 0.5rem;
}


.form-group label {
    display: flex;

    align-items: center;

    gap: 0.25rem;

    color:
        #3f3f46;

    font-size: 0.78rem;

    font-weight: 600;
}


.dark .form-group label {
    color:
        #d4d4d8;
}


.form-group label span {
    color:
        #ef4444;
}


.form-group label small {
    margin-right: 0.25rem;

    color:
        #a1a1aa;

    font-size: 0.65rem;

    font-weight: 400;
}


/* ============================================================
   Inputs
   ============================================================ */

.form-group input,
.form-group textarea {
    width: 100%;

    border:
        1px solid #e4e4e7;

    border-radius: 0.7rem;

    outline: none;

    background:
        #fff;

    color:
        #18181b;

    font-family: inherit;

    font-size: 0.8rem;

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


.form-group input {
    height: 46px;

    padding:
        0 0.9rem;
}


.form-group textarea {
    min-height: 150px;

    padding:
        0.8rem 0.9rem;

    resize: vertical;

    line-height: 1.9;
}


.form-group input::placeholder,
.form-group textarea::placeholder {
    color:
        #a1a1aa;
}


.form-group input:focus,
.form-group textarea:focus {
    border-color:
        var(--accent);

    box-shadow:
        0 0 0 3px
        rgba(15, 118, 110, 0.1);
}


.dark .form-group input,
.dark .form-group textarea {
    border-color:
        #3f3f46;

    background:
        #18181b;

    color:
        #f4f4f5;
}


.dark .form-group input:focus,
.dark .form-group textarea:focus {
    border-color:
        #14b8a6;

    background:
        #18181b;

    box-shadow:
        0 0 0 3px
        rgba(20, 184, 166, 0.1);
}


/* ============================================================
   Submit
   ============================================================ */

.contact-submit {
    width: 100%;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 0.6rem;

    height: 48px;

    margin-top: 0.3rem;

    border: none;

    border-radius: 0.7rem;

    background:
        var(--accent);

    color: #fff;

    cursor: pointer;

    font-family: inherit;

    font-size: 0.82rem;

    font-weight: 600;

    box-shadow:
        0 8px 25px
        rgba(15, 118, 110, 0.18);

    transition:
        background-color 0.25s ease,
        transform 0.25s ease,
        box-shadow 0.25s ease;
}


.contact-submit:hover {
    background:
        var(--accent-light);

    transform:
        translateY(-2px);

    box-shadow:
        0 12px 30px
        rgba(15, 118, 110, 0.25);
}


.contact-submit:active {
    transform:
        translateY(0);
}


/* ============================================================
   Form Note
   ============================================================ */

.form-note {
    margin: 0.25rem 0 0;

    color:
        #a1a1aa;

    text-align: center;

    font-size: 0.65rem;

    line-height: 1.8;
}


/* ============================================================
   Django Form Errors
   ============================================================ */

.form-group .errorlist {
    margin: 0;

    padding: 0;

    list-style: none;

    color:
        #ef4444;

    font-size: 0.68rem;
}


.form-group input.error,
.form-group textarea.error {
    border-color:
        #ef4444;
}


/* ============================================================
   Responsive
   ============================================================ */

@media (max-width: 900px) {

    .contact-page {
        padding-top: 8rem;
    }


    .contact-layout {
        grid-template-columns: 1fr;

        gap: 2rem;
    }


    .contact-info {
        display: grid;

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


    .contact-intro-card,
    .contact-availability {
        grid-column: 1 / -1;
    }

}


@media (max-width: 640px) {

    .contact-page {
        padding:
            7rem
            1rem
            4rem;
    }


    .contact-heading {
        margin-bottom: 2.5rem;
    }


    .contact-title {
        font-size: 2.1rem;
    }


    .contact-description {
        font-size: 0.85rem;
    }


    .contact-info {
        display: flex;
    }


    .contact-form-card {
        padding: 1.25rem;
    }


    .form-card-header {
        margin-bottom: 1.5rem;
    }


    .form-card-header h2 {
        font-size: 1.05rem;
    }


    .contact-method:hover {
        transform: none;
    }

}


/* ============================================================
   Reduced Motion
   ============================================================ */

@media (prefers-reduced-motion: reduce) {

    .availability-dot {
        animation: none;
    }

}