@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');

:root{
  --green:#24483c;
  --deep:#142c25;
  --sage:#758b78;
  --cream:#f4f1e8;
  --white:#fff;
  --text:#24312c;
  --line:#dfe4dc;
  --max:1180px
}

*{
  box-sizing:border-box
}

html{
  scroll-behavior:smooth
}

body{
  margin:0;
  color:var(--text);
  background:var(--cream);
  font-family:"DM Sans",Arial,sans-serif;
  line-height:1.7
}

a{
  color:inherit;
  text-decoration:none
}

/* HEADER */

.site-header{
  position:fixed;
  z-index:20;
  top:0;
  left:0;
  right:0;
  height:78px;
  padding:10px max(5vw,24px);
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:rgba(244,241,232,.94);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(36,72,60,.08)
}

.brand img{
  height:54px;
  width:auto;
  display:block
}

.nav{
  display:flex;
  align-items:center;
  gap:25px;
  font-size:14px;
  font-weight:600
}

.nav a:hover{
  color:var(--sage)
}

.nav-cta{
  padding:11px 18px;
  border:1px solid var(--green);
  border-radius:30px
}

.menu-toggle{
  display:none;
  border:0;
  background:none;
  font-size:25px;
  color:var(--green)
}


/* HERO */

.hero{
  min-height:760px;
  position:relative;
  display:flex;
  align-items:center;
  overflow:hidden
}

.hero-image{
  position:absolute;
  inset:0;
  overflow:hidden
}

.hero-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block
}

.hero-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    rgba(20,44,37,.82),
    rgba(20,44,37,.30) 65%,
    rgba(20,44,37,.08)
  )
}

.hero-content{
  position:relative;
  z-index:2;
  color:white;
  width:min(1180px,100%);
  margin:100px auto 50px;
  padding:50px 30px
}

.eyebrow{
  letter-spacing:.15em;
  font-size:12px;
  font-weight:700;
  margin:0 0 14px;
  color:var(--sage)
}

.hero .eyebrow{
  color:#dce8d9
}

.hero h1{
  font:500 clamp(42px,6vw,76px)/1.08 Manrope,Arial,sans-serif;
  margin:0 0 25px;
  max-width:850px;
  letter-spacing:-.04em
}

.hero h1 em{
  font-style:normal;
  font-weight:500
}

.hero-text{
  font-size:19px;
  max-width:700px
}

.actions{
  display:flex;
  gap:20px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:32px
}

.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:13px 21px;
  border-radius:30px;
  font-weight:700;
  font-size:14px;
  transition:.2s;
  border:0;
  cursor:pointer
}

.button-light{
  background:white;
  color:var(--green)
}

.button-dark{
  background:var(--green);
  color:white
}

.button:hover{
  transform:translateY(-2px)
}

.text-link{
  display:inline-block;
  margin-top:15px;
  font-weight:700;
  color:var(--green)
}

.text-link.light{
  color:white;
  margin-top:0
}

.text-link span{
  margin-left:8px
}

.scroll-hint{
  position:absolute;
  z-index:2;
  bottom:25px;
  left:max(30px,calc((100vw - var(--max))/2 + 30px));
  color:white;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.12em
}

.scroll-hint span{
  margin-left:10px
}


/* SECTIONS */

.section{
  max-width:var(--max);
  margin:auto;
  padding:110px 30px
}

.section-kicker{
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:30px;
  font-weight:700;
  color:var(--sage);
  margin-bottom:28px
}

.section h2{
  font:500 clamp(34px,4vw,55px)/1.12 Manrope,Arial,sans-serif;
  color:var(--deep);
  margin:0 0 20px;
  letter-spacing:-.035em
}

.section-heading{
  max-width:780px;
  margin-bottom:55px
}

.section-heading>p{
  font-size:17px
}


/* CONCEPT */

.concept-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:start
}

.lead-copy{
  max-width:650px
}

.lead-copy p{
  font-size:17px
}

.lead-copy strong{
  font-size:19px;
  color:var(--green)
}

.principles{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:25px;
  margin-top:75px;
  border-top:1px solid var(--line)
}

.principles article{
  padding:30px 10px 0
}

.number{
  font-size:12px;
  color:var(--sage);
  font-weight:700
}

.principles h3{
  font-size:21px;
  margin:24px 0 8px
}


/* SOLUTIONS */

.solutions{
  padding-top:30px
}

.cards{
  display:grid;
  grid-template-columns:1.2fr 1fr 1fr;
  gap:22px
}

.card{
  background:white;
  overflow:hidden
}

.card-image{
  height:290px;
  overflow:hidden
}

.card-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
  transition:transform .5s ease
}

.card:hover .card-image img{
  transform:scale(1.04)
}

.card-body{
  padding:25px
}

.card-body>span{
  font-size:12px;
  color:var(--sage);
  font-weight:700
}

.card-body h3{
  font-size:22px;
  margin:18px 0 8px
}

.card-body p{
  margin:0
}


/* FEATURE / APPROCHE */

.feature{
  display:grid;
  grid-template-columns:1fr 1fr;
  background:white
}

.feature-image{
  min-height:650px;
  overflow:hidden
}

.feature-image img{
  width:100%;
  height:100%;
  min-height:650px;
  object-fit:cover;
  object-position:center;
  display:block
}

.feature-content{
  padding:110px max(30px,calc((100vw - var(--max))/2 + 30px)) 110px 80px;
  align-self:center
}

.feature-content p{
  max-width:600px
}


/* CONSTRUCTION */

.construction{
  padding-top:100px
}

.construction-grid{
  width:100%;
}

.construction-images{
  width:100%;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
}

.construction-images img{
  width:100%;
  aspect-ratio:16 / 9;
  height:auto;
  object-fit:cover;
  display:block;
}


/* REALISATION */

.realization{
  max-width:none;
  background:white;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:center;
  padding:110px max(30px,calc((100vw - var(--max))/2 + 30px))
}

.realization-image{
  width:100%;
  min-height:550px;
  overflow:hidden
}

.realization-image img{
  width:100%;
  height:550px;
  object-fit:cover;
  object-position:center;
  display:block
}

.realization-content{
  max-width:620px
}

.realization-content p{
  font-size:17px
}

.realization-label{
  color:var(--sage);
  font-size:12px!important;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase;
  margin-bottom:20px
}


/* ANCIEN PROJECT - COMPATIBILITE */

.project{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:center;
  background:white;
  padding:110px max(30px,calc((100vw - var(--max))/2 + 30px))
}

.project-image{
  min-height:550px;
  overflow:hidden
}

.project-image img{
  width:100%;
  height:550px;
  object-fit:cover;
  display:block
}

.project-content{
  max-width:620px
}

.project-content p{
  font-size:17px
}


/* QUOTE */

.quote-section{
  background:var(--green);
  color:white;
  text-align:center;
  padding:100px 30px
}

.quote-mark{
  font:500 70px/1 Manrope,Arial,sans-serif;
  opacity:.5
}

.quote-section blockquote{
  font:500 clamp(30px,4vw,48px)/1.25 Manrope,Arial,sans-serif;
  margin:10px auto 25px;
  letter-spacing:-.03em
}

.quote-section>p{
  font-size:11px;
  letter-spacing:.2em
}


/* CONTACT */

.contact-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:80px
}

.contact-grid>div>p{
  font-size:17px
}

.contact-email{
  display:inline-block;
  margin-top:15px;
  color:var(--green);
  font-weight:700
}

.contact-form{
  display:grid;
  gap:17px
}

.contact-form label{
  font-size:13px;
  font-weight:600
}

.contact-form input,
.contact-form textarea{
  display:block;
  width:100%;
  margin-top:7px;
  border:1px solid #ccd5cd;
  background:white;
  padding:13px 14px;
  font:inherit;
  color:var(--text);
  border-radius:2px
}

.contact-form textarea{
  resize:vertical
}

.contact-form .button{
  justify-self:start;
  margin-top:5px
}


/* FOOTER */

.footer{
  background:#10231e;
  color:white;
  padding:55px 30px 25px;
  text-align:center
}

.footer-brand img{
  height:65px;
  width:auto;
  margin-bottom:10px
}

.footer-brand p{
  margin:0;
  color:#c8d2cd
}

.footer-links{
  display:flex;
  justify-content:center;
  gap:25px;
  flex-wrap:wrap;
  margin:28px 0;
  font-size:13px
}

.footer-links a:hover{
  color:#b9c9b9
}

.footer-bottom{
  font-size:12px;
  color:#91a29a;
  border-top:1px solid rgba(255,255,255,.12);
  padding-top:22px
}


/* RESPONSIVE */

@media(max-width:900px){

  .site-header{
    height:70px
  }

  .brand img{
    height:48px
  }

  .menu-toggle{
    display:block
  }

  .nav{
    display:none;
    position:absolute;
    top:70px;
    left:0;
    right:0;
    background:var(--cream);
    padding:20px 25px;
    flex-direction:column;
    align-items:flex-start;
    gap:16px;
    border-bottom:1px solid var(--line)
  }

  .nav.open{
    display:flex
  }

  .hero{
    min-height:720px
  }

  .hero-content{
    padding:30px 24px;
    margin-top:80px
  }

  .hero h1{
    font-size:45px
  }

  .hero-text{
    font-size:16px
  }

  .section{
    padding:75px 24px
  }

  .concept-grid,
  .construction-grid,
  .project,
  .contact-grid,
  .feature,
  .realization{
    grid-template-columns:1fr;
    gap:35px
  }

  .principles,
  .cards{
    grid-template-columns:1fr
  }

  .solutions{
    padding-top:40px
  }

  .feature-image{
    min-height:380px
  }

  .feature-image img{
    min-height:380px;
    height:380px
  }

  .feature-content{
    padding:75px 24px
  }

  .construction-images{
    grid-template-columns:1fr
  }

  .construction-images img{
    height:320px
  }

  .project{
    padding:75px 24px
  }

  .project-image{
    min-height:360px
  }

  .project-image img{
    height:360px
  }

  .realization{
    padding:75px 24px
  }

  .realization-image{
    min-height:360px
  }

  .realization-image img{
    height:360px
  }

  .scroll-hint{
    left:24px
  }

  .footer-links{
    gap:15px
  }
}







/* =========================
   MOBILE — IMAGES
   ========================= */

@media (max-width: 768px) {

  .hero-image {
    height: 100vh;
  }

  .card-image {
    height: 220px;
  }

  .feature-image {
    height: 300px;
  }

  .realization-image {
    height: 280px;
  }

.construction-images {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

.construction-images img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}

  .hero-image img,
  .card-image img,
  .feature-image img,
  .realization-image img,
  .construction-images img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

}