/* ==========================
   ROUTE & ROUTINE
========================== */

:root{

--forest:#54695E;
--sage:#C6D0C4;
--cream:#FBFAF7;
--stone:#F3F5F2;
--charcoal:#222222;
--text:#727272;

}


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

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


html {
    scroll-behavior: smooth;
}


body {

    font-family: "Nunito", sans-serif;

    background: var(--cream);

    color: var(--charcoal);

    line-height: 1.7;

}


h1,
h2,
h3,
.logo {

    font-family: "Quicksand", sans-serif;

    font-weight: 700;

    letter-spacing: -0.03em;

    line-height: 1.1;

}

/* ==========================
   ANIMATION
========================== */

.reveal {

    opacity: 0;

    transform: translateY(30px);

    transition: all .8s ease;

}


.reveal.active {

    opacity: 1;

    transform: translateY(0);

}


/* ==========================
   NAV
========================== */

header {

    position: sticky;

    top: 0;

    z-index: 1000;

    backdrop-filter: blur(20px);

    background: rgba(250,248,244,.88);

}


nav {

    display: flex;

    justify-content: space-between;

    align-items: center;

    padding: 22px 8%;

}


.logo {

    font-size: 26px;

    font-weight: 700;

    color: var(--forest);

}


.nav-links {

    display: flex;

    gap: 28px;

}


.nav-links a {

    text-decoration: none;

    color: var(--text);

    font-weight: 500;

    transition: .25s;

}


.nav-links a:hover {

    color: var(--forest);

}


.menu-toggle {

    display: none;

    background: none;

    border: none;

    font-size: 32px;

    color: var(--forest);

    cursor: pointer;

}

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

.hero {

    position: relative;

    height: 88vh;

    min-height: 650px;

    overflow: hidden;

    display: flex;

    align-items: center;

}


.hero img {

    position: absolute;

    inset: 0;

    width: 100%;

    height: 100%;

    object-fit: cover;

    object-position: center;

}


.hero::before {

    content: "";

    position: absolute;

    inset: 0;

    background: linear-gradient(
        90deg,
        rgba(251,250,247,.96) 0%,
        rgba(251,250,247,.90) 25%,
        rgba(251,250,247,.65) 45%,
        rgba(251,250,247,.20) 65%,
        rgba(251,250,247,0) 85%
    );

    z-index: 1;

}


.hero::after {

    content: "";

    position: absolute;

    bottom: -1px;

    left: 0;

    width: 100%;

    height: 45px;

    background: var(--cream);

    clip-path: ellipse(80% 100% at 50% 100%);

    z-index: 3;

}


.hero-text {

    position: relative;

    z-index: 2;

    max-width: 560px;

    margin-left: 8%;

}


.hero h1 {

    font-size: 72px;

    line-height: 1.05;

    letter-spacing: -1px;

    margin-bottom: 28px;

}


.hero h1 span {

    color: var(--forest);

    font-style: italic;

    font-weight: 400;

}


.hero-sub {

    font-size: 20px;

    line-height: 1.9;

    color: var(--text);

}

/* ==========================
   BUTTONS
========================== */

a.button {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    width: fit-content;

    padding: 16px 34px;

    background: var(--forest);

    color: #FFFFFF !important;

    border-radius: 999px;

    text-decoration: none;

    font-weight: 600;

    font-size: 16px;

    line-height: 1;

    cursor: pointer;

    position: relative;

    z-index: 20;

}


a.button:hover {

    background: #24473D;

    color: #FFFFFF !important;

    transform: translateY(-4px);

    box-shadow: 0 18px 40px rgba(47,93,80,.18);

}


form button {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    padding: 16px 34px;

    background: var(--forest);

    color: white;

    border: none;

    border-radius: 999px;

    font-weight: 600;

    font-family: "Nunito", sans-serif;

    font-size: 16px;

    cursor: pointer;

    transition: .25s;

}


form button:hover {

    background: #24473D;

    transform: translateY(-3px);

    box-shadow: 0 18px 40px rgba(47,93,80,.18);

}


/* ==========================
   SECTIONS
========================== */

section {

    padding: 40px 8%;

}


#services {

    margin-top: 24px;

}


.section-title {

    margin-bottom: 30px;

}


.section-title h2 {

    font-size: 44px;

    font-weight: 700;

    letter-spacing: -0.03em;

    line-height: 1.15;

    margin-bottom: 12px;

}


.section-title p {

    font-size: 18px;

    color: var(--text);

}


/* ==========================
   SERVICES
========================== */

.service-container {

    display: grid;

    grid-template-columns: repeat(
        auto-fit,
        minmax(320px, 1fr)
    );

    gap: 32px;

}


.service-block {

    background: white;

    padding: 44px;

    border-radius: 32px;

    border: 1px solid #ececec;

    box-shadow: none;

    transition: .3s;

}


.service-block:hover {

    transform: translateY(-4px);

    box-shadow: 0 20px 50px rgba(0,0,0,.06);

}


.service-block h3 {

    font-size: 30px;

    margin-bottom: 20px;

    color: var(--forest);

}


/* ==========================
   ACCORDION
========================== */

.accordion {

    width: 100%;

    padding: 18px;

    margin-top: 12px;

    background: var(--stone);

    border: none;

    border-radius: 14px;

    text-align: left;

    font-size: 15px;

    font-weight: 600;

    cursor: pointer;

    transition: .25s;

}


.accordion:hover {

    background: #E4EAE4;

}


.panel {

    max-height: 0;

    overflow: hidden;

    padding: 0 18px;

    margin-top: 10px;

    margin-bottom: 14px;

    background: white;

    border-left: 4px solid var(--forest);

    border-radius: 12px;

    transition:
        max-height .6s ease,
        padding .4s ease;

    line-height: 1.8;

}


.panel p {

    padding-bottom: 14px;

    font-size: 15px;

    color: var(--text);

}


/* ==========================
   ABOUT
========================== */

.about-box {

    width: 100%;

    background: white;

    padding: 42px;

    border-radius: 28px;

    box-shadow: 0 18px 50px rgba(0,0,0,.04);

}


/* ==========================
   ABOUT TEXT
========================== */

.about-box p {

    margin-bottom:18px;

    line-height:1.85;

    font-size:16px;

    color:var(--text);

}


.about-box p:last-child {

    margin-bottom:0;

}

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

form {

    width: 100%;

    max-width: 1000px;

    display: flex;

    flex-direction: column;

    gap: 18px;

}


label {

    font-weight: 600;

    color: #444;

}


input,
textarea,
select {

    width: 100%;

    padding: 18px;

    border: 1px solid #ddd;

    border-radius: 14px;

    background: white;

    font-size: 16px;

    font-family: "Nunito", sans-serif;

}


input:focus,
textarea:focus,
select:focus {

    outline: none;

    border-color: var(--sage);

    box-shadow: 0 0 0 4px rgba(168,184,165,.2);

}


textarea {

    min-height: 180px;

    resize: vertical;

}

/* ==========================
   PRIVACY NOTE
========================== */

.privacy-note{

    font-size:14px;

    color:var(--text);

    line-height:1.6;

    margin-top:6px;

}


.privacy-note a{

    color:var(--forest);

    text-decoration:none;

    font-weight:600;

}


.privacy-note a:hover{

    text-decoration:underline;

}

/* ==========================
   CHECKBOX
========================== */

.checkbox-group {

    display:none;

    padding:24px;

    background:white;

    border-radius:18px;

    border:1px solid #eee;

}


.checkbox-group label {

    display:flex;

    align-items:center;

    gap:12px;

    margin-bottom:14px;

}

/* ==========================
   FOOTER
========================== */

footer{

    padding:60px;

    text-align:center;

    color:#777;

    border-top:1px solid rgba(0,0,0,.05);

}


.footer-links{

    margin-top:18px;

}


.footer-links a{

    color:var(--text);

    text-decoration:none;

    margin:0 6px;

    transition:.25s;

}


.footer-links a:hover{

    color:var(--forest);

}


.cookie-note{

    margin-top:18px;

    font-size:14px;

    color:#888;

}

/* ==========================
   LEGAL PAGES
========================== */

.about-box h3{

    margin-top:40px;

    margin-bottom:16px;

    color:var(--forest);

    font-size:26px;

}


.about-box h3:first-child{

    margin-top:0;

}


.about-box p{

    margin-bottom:16px;

    line-height:1.8;

    color:var(--text);

}


.about-box ul{

    margin:0 0 20px 24px;

    line-height:1.8;

    color:var(--text);

}


.about-box li{

    margin-bottom:8px;

}

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

@media(max-width:768px){

    nav{

        display:flex;

        justify-content:space-between;

        align-items:center;

        padding:18px 8%;

    }


    .menu-toggle{

        display:block;

    }


    .nav-links{

        position:absolute;

        top:100%;

        left:0;

        width:100%;

        background:var(--cream);

        display:flex;

        flex-direction:column;

        align-items:center;

        gap:20px;

        overflow:hidden;

        max-height:0;

        opacity:0;

        padding:0;

        box-shadow:none;

        transition:
        max-height .4s ease,
        opacity .3s ease,
        padding .4s ease,
        box-shadow .3s ease;

    }


    .nav-links.active{

        max-height:320px;

        opacity:1;

        padding:24px;

        box-shadow:
        0 10px 30px rgba(0,0,0,.06);

    }


    .nav-links a{

        width:100%;

        padding:14px 0;

        text-align:center;

        font-size:18px;

    }


    .hero{

        position:relative;

        height:70vh;

        min-height:500px;

        display:flex;

        align-items:flex-start;

        padding-top:90px;

        overflow:hidden;

    }


    .hero img{

        position:absolute;

        inset:0;

        width:100%;

        height:100%;

        object-fit:cover;

    }


    .hero-text{

        margin-left:8%;

        max-width:90%;

        padding-bottom:20px;

        transform:translateY(-60px);

    }


    .hero h1{

        font-size:clamp(28px, 6vw, 44px);

        line-height:1.1;

    }


    .hero-sub{

        font-size:16px;

        line-height:1.7;

        max-width:min(320px, 80%);

    }

}