﻿/*=====================================================
                    RESET
======================================================*/

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    font-family:"Poppins",sans-serif;
    color:#2A2A2A;
    background:#ffffff;
    line-height:1.7;
}

img{
    max-width:100%;
    display:block;
}

a{
    text-decoration:none;
}

button{
    border:none;
    cursor:pointer;
    font-family:inherit;
}

input,
textarea,
select{
    font-family:inherit;
}


/*=====================================================
                COLOUR VARIABLES
======================================================*/

:root{

    --primary:#0B7D4D;

    --primary-dark:#075C38;

    --gold:#C79B3B;

    --text:#1F2933;

    --text-light:#667085;

    --border:#E5E7EB;

    --light:#F8FAFC;

    --white:#ffffff;

    --shadow:0 15px 45px rgba(0,0,0,.06);

}


/*=====================================================
                COMMON CONTAINER
======================================================*/

.contact-hero .container,
.contact-section .container,
.contact-map .container,
.contact-cta .container{

    width:92%;

    max-width:1280px;

    margin:auto;

}
/*=====================================================
                    CONTACT HERO
======================================================*/

.contact-hero{
    position:relative;
    overflow:hidden;
    background:linear-gradient(135deg,#F8FCFA 0%,#EEF7F2 100%);
    padding:130px 0 90px;

}

.contact-hero::before{

    content:"";

    position:absolute;

    width:420px;

    height:420px;

    top:-180px;

    right:-150px;

    border-radius:50%;

    background:rgba(11,125,77,.08);

}

.contact-hero::after{

    content:"";

    position:absolute;

    width:500px;

    height:500px;

    bottom:-250px;

    left:-180px;

    border-radius:50%;

    background:rgba(199,155,59,.08);

}

.contact-hero .container{

    position:relative;

    z-index:2;

    text-align:center;

}

.contact-hero .section-tag{

    display:inline-block;

    padding:10px 22px;

    border-radius:50px;

    background:rgba(11,125,77,.10);

    color:var(--primary);

    font-size:.9rem;

    font-weight:600;

    text-transform:uppercase;

    letter-spacing:1px;

    margin-bottom:22px;

}

.contact-hero h1{

    font-size:clamp(2.6rem,5vw,3.4rem);

    font-weight:700;

    color:var(--text);

    line-height:1.15;
    margin-top:100px;
    margin-bottom:24px;

}

.contact-hero p{

    max-width:760px;

    margin:auto;

    color:var(--text-light);

    font-size:1.08rem;

    line-height:1.9;

}
/*=====================================================
                CONTACT SECTION
======================================================*/

.contact-section{

    padding:100px 0;

    background:#ffffff;

}

.contact-wrapper{

    display:grid;

    grid-template-columns:40% 60%;

    gap:70px;

    align-items:start;

}
/*=====================================================
                CONTACT INFORMATION
======================================================*/

.contact-info{

    display:flex;

    flex-direction:column;

    gap:45px;

}

.info-intro span{

    color:var(--gold);

    font-weight:600;

    text-transform:uppercase;

    letter-spacing:2px;

    font-size:.9rem;

}

.info-intro h2{

    margin:18px 0;

    font-size:2.3rem;

    color:var(--text);

    line-height:1.3;

}

.info-intro p{

    color:var(--text-light);

    font-size:1rem;

    line-height:1.9;

}
/*=====================================================
                CONTACT CARDS
======================================================*/

.info-cards{

    display:flex;

    flex-direction:column;

    gap:22px;

}

.info-card{

    display:flex;

    align-items:flex-start;

    gap:20px;

    padding:24px;

    background:#fff;

    border-radius:18px;

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

    transition:.35s;

    box-shadow:var(--shadow);

}

.info-card:hover{

    transform:translateY(-6px);

    border-color:var(--gold);

}

.info-card .icon{

    width:65px;

    height:65px;

    background:linear-gradient(135deg,var(--brand-green-dark),#15945C);
    border-radius:16px;

    display:flex;

    align-items:center;

    justify-content:center;

    color:var(--brand-gold);

    font-size:24px;

    flex-shrink:0;

}

.info-card h4{

    margin-bottom:8px;

    font-size:1.15rem;

    color:var(--text);

}

.info-card p{

    color:var(--text-light);

    font-size:.95rem;

    line-height:1.8;

}
/*=====================================================
                CONTACT FORM
======================================================*/

.contact-form-card{

    background:var(--white);

    border-radius:22px;

    padding:50px;

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

    box-shadow:var(--shadow);

}

.contact-form-card h3{

    font-size:2rem;

    color:var(--text);

    margin-bottom:12px;

    font-weight:700;

}

.contact-form-card > p{

    color:var(--text-light);

    line-height:1.8;

    margin-bottom:35px;

}

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

.contact-form{
    display:flex;
    flex-direction:column;
    gap:22px;
}

.contact-form .form-row{
    display:flex;
    gap:20px;
    width:100%;
}

.contact-form .form-group{
    flex:1;
    min-width:0;
}

.contact-form .form-group input,
.contact-form .form-group select,
.contact-form .form-group textarea{

    width:100%;
    display:block;
    box-sizing:border-box;
}


/*=====================================================
                    ROWS
======================================================*/

.form-row{

    display:grid;

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

    gap:20px;

}

.form-group{

    width:100%;

}


/*=====================================================
                    INPUTS
======================================================*/

.form-group input,
.form-group select{

    width:100%;

    height:58px;

    padding:0 20px;

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

    border-radius:14px;

    background:#fff;

    color:var(--text);

    font-size:15px;

    transition:.3s ease;

}

.form-group textarea{

    width:100%;

    min-height:200px;

    padding:18px 20px;

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

    border-radius:14px;

    background:#fff;

    color:var(--text);

    font-size:15px;

    resize:vertical;

    transition:.3s ease;

}

.form-group input::placeholder,
.form-group textarea::placeholder{

    color:#98A2B3;

}


/*=====================================================
                    FOCUS
======================================================*/

.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus{

    outline:none;

    border-color:var(--primary);

    box-shadow:0 0 0 4px rgba(11,125,77,.08);

}


/*=====================================================
                PROJECT TYPE
======================================================*/

.form-group select{

    cursor:pointer;

    appearance:none;

    -webkit-appearance:none;

    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%236B7280' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");

    background-repeat:no-repeat;

    background-position:right 18px center;

    background-size:18px;

    padding-right:48px;

}
/*=====================================================
            SERVICE OPTIONS
======================================================*/

.form-title{

    display:block;

    margin-bottom:16px;

    font-size:15px;

    font-weight:600;

    color:var(--text);

}

.service-options{

    display:grid;

    grid-template-columns:repeat(4,1fr);

    gap:14px;

}

.service-option{

    position:relative;

    display:flex;

    justify-content:center;

    align-items:center;

    gap:10px;

    padding:15px;

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

    border-radius:14px;

    background:#FAFAFA;

    cursor:pointer;

    transition:.3s;

}

.service-option:hover{

    border-color:var(--gold);

    background:#FFF8EA;

}

.service-option input{

    width:18px;

    height:18px;

    accent-color:var(--brand-gold);

}

.service-option span{

    font-size:14px;

    color:var(--text);

    font-weight:500;

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

.contact-btn{

    width:100%;

    height:60px;

    border:none;

    border-radius:16px;

    background:var(--brand-green-dark);

    color:#fff;

    font-size:16px;

    font-weight:600;

    display:flex;

    justify-content:center;

    align-items:center;

    gap:12px;

    transition:.35s;

}

.contact-btn:hover{

    transform:translateY(-3px);

    box-shadow:0 18px 40px rgba(11,125,77,.25);
    background: #0B7D4D

}

.contact-btn i{

    transition:.3s;

}

.contact-btn:hover i{

    transform:translateX(5px);

}
/*=====================================================
                    GOOGLE MAP
======================================================*/

.contact-map{

    padding:100px 0;

    background:#F8FAFC;

}

.map-heading{

    text-align:center;

    max-width:750px;

    margin:0 auto 55px;

}

.map-heading span{

    display:inline-block;

    color:var(--gold);

    font-weight:600;

    text-transform:uppercase;

    letter-spacing:2px;

    margin-bottom:12px;

    font-size:.9rem;

}

.map-heading h2{

    font-size:2.4rem;

    color:var(--text);

    margin-bottom:18px;

}

.map-heading p{

    color:var(--text-light);

    line-height:1.9;

}

.map-card{

    overflow:hidden;

    border-radius:22px;

    background:#fff;

    box-shadow:var(--shadow);

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

}

.map-card iframe{

    width:100%;

    height:500px;

    border:none;

}
/*=====================================================
                DJANGO MESSAGES
======================================================*/

.messages{

    margin-bottom:30px;

}

.messages .success{

    background:#E8F7EE;

    border-left:5px solid var(--primary);

    color:var(--primary-dark);

    padding:18px 24px;

    border-radius:10px;

    font-weight:500;

}

.errorlist{

    list-style:none;

    margin-top:8px;

    color:#D62828;

    font-size:13px;

}

.errorlist li{

    margin-top:4px;

}
/*==================================================
                RESPONSIVE
==================================================*/

/* Large laptops */
@media (max-width:1200px){

    .contact-wrapper{
        grid-template-columns:45% 55%;
        gap:40px;
    }

}


/* Tablets */
@media (max-width:992px){

    .contact-wrapper{

        grid-template-columns:1fr;

        gap:60px;

    }

    .contact-info{

        order:2;

    }

    .contact-form-card{

        order:1;

    }

    .contact-form-card{

        padding:35px;

    }

}


/* Large Phones */
@media (max-width:768px){

    .contact-hero{

        padding:90px 0 70px;

    }

    .contact-hero h1{

        font-size:2.4rem;

    }

    .contact-hero p{

        font-size:16px;

    }

    .contact-section{

        padding:70px 0;

    }

    .contact-form-card{

        padding:30px 25px;

    }

    .contact-form-card h3{

        font-size:1.8rem;

    }

    /* FORM */

    .contact-form .form-row{

        flex-direction:column;

        gap:18px;

    }

    .contact-form .form-group{

        width:100%;

    }

    .contact-form .form-group input,

    .contact-form .form-group select,

    .contact-form .form-group textarea{

        width:100%;

    }

    /* SERVICES */

    .service-options{

        display:grid;

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

        gap:15px;

    }

    .service-option{

        width:100%;

        justify-content:flex-start;

    }

    /* INFO CARDS */

    .info-card{

        padding:20px;

    }

    .info-card .icon{

        width:55px;

        height:55px;

        font-size:20px;

    }

}


/* Mobile */

@media (max-width:576px){

    .contact-hero{

        text-align:center;

    }

    .contact-hero h1{

        font-size:2rem;

    }

    .contact-form-card{

        padding:25px 18px;

        border-radius:16px;

    }

    .contact-form-card h3{

        font-size:1.5rem;

        text-align:center;

    }

    .contact-form-card>p{

        text-align:center;

    }

    /* SERVICES */

    .service-options{

        grid-template-columns:1fr;

    }

    .service-option{

        width:100%;

    }

    /* INFO CARD */

    .info-card{

        flex-direction:column;

        align-items:flex-start;

        text-align:left;

    }

    .info-card .icon{

        margin-bottom:10px;

    }

    /* MAP */

    .map-card iframe{

        height:320px;

    }

}


/* Small phones */

@media (max-width:400px){

    .contact-form-card{

        padding:20px 15px;

    }

    .contact-form .form-group input,

    .contact-form .form-group select,

    .contact-form .form-group textarea{

        padding:14px 16px;

        font-size:14px;

    }

    .contact-btn{

        padding:16px;

        font-size:15px;

    }

}
