:root{
  --bg:#e6eef3;               /* background color */
  --ink:#1f2328;
  --muted:#4d545c;
  --accent:#0b3c5d;          /* Main color of titles and subtitles */
  --panel:rgba(238,241,241,.62);
  --border:rgba(0,0,0,.08);
  --radius:22px;
  --max:1120px;
}

*{box-sizing:border-box}
html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust: 100%;
}
body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  background:var(--bg);
  color:var(--ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
img{
  display:block;
  max-width:100%;
  height:auto;
}
a{color:inherit; text-decoration:none}

/* Top bar */
.topbar{
  position:sticky; top:0; z-index:50;
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 26px;
  background:rgba(215,222,222,.92);
  backdrop-filter: blur(10px);
  border-bottom:1px solid var(--border);  /* thin line like screenshot */
}
.brand{display:flex; align-items:center; gap:12px}
.brand-logo{
  height:200px;
  width:auto;
  mix-blend-mode:multiply;
}

/* burger */
.burger{
  width:46px; height:38px;
  border:0; background:transparent; cursor:pointer;
  display:grid; gap:7px; place-content:center;
}
.burger span{
  width:28px; height:2px; background:var(--accent);
  border-radius:2px;
}

/* Overlay menu */
.overlay{
  position:fixed; inset:0; z-index:80;
  background:rgba(215,222,222,.97);
  transform:translateY(-100%);
  transition:transform .35s ease;
}
.overlay.open{transform:translateY(0)}
.overlay-inner{
  height:100%;
  display:grid;
  grid-template-columns: 1fr 1.6fr;
  gap:30px;
  padding:44px;
}
.overlay-nav{
  display:flex; flex-direction:column;
  gap:18px;
  align-self:center;
}
.overlay-nav a{
  font-size:40px;
  font-weight:750;
  letter-spacing:.01em;
  color:var(--accent);
  opacity:.92;
}
.overlay-nav a:hover{
  opacity:1;
  text-decoration:underline;
  text-underline-offset:10px;
}
.overlay-media{
  position:relative;
  align-self:center;
}
.overlay-media img{
  width:100%;
  height:72vh;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow: 0 22px 60px rgba(0,0,0,.16);
}
.close{
  position:absolute; top:-10px; right:-10px;
  width:44px; height:44px;
  border-radius:999px;
  border:1px solid var(--border);
  background:rgba(238,241,241,.92);
  color:var(--accent);
  font-size:28px;
  cursor:pointer;
}

/* Home (Accueil) */
.home{
  padding:72px 22px 30px;
  scroll-margin-top:240px;
}
.home-inner{
  max-width:var(--max);
  margin:0 auto;
}
.home-title{
  margin:0 auto 44px;
  text-align:center;
  color:var(--accent);
  font-weight:800;
  letter-spacing:.01em;
  line-height:1.06;
  font-size:58px;
}
.home-image-wrap{
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:18px;
}
.home-image{
  width:min(1100px, 100%);
  height:460px;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow: 0 20px 55px rgba(0,0,0,.14);
  background:#fff;
}

/* Optional decorative blocks like your screenshot */
.decor{
  width:84px; height:84px;
  opacity:.35;
  background:
    linear-gradient(#9aa3a3 0 0) 0 0/22px 22px,
    linear-gradient(#9aa3a3 0 0) 31px 31px/22px 22px,
    linear-gradient(#9aa3a3 0 0) 62px 0/22px 22px,
    linear-gradient(#9aa3a3 0 0) 0 62px/22px 22px;
  background-repeat:no-repeat;
  filter:grayscale(1);
}
.decor-left{ position:absolute; left:-10px; }
.decor-right{ position:absolute; right:-10px; }

/* Sections */
.section{
  max-width:var(--max);
  margin:0 auto;
  padding:80px 22px;
  scroll-margin-top:240px;
}
#realisations{
  padding-top:0;
  margin-top:-90px;
}
.section-title{
  margin:0 0 22px;
  font-size:56px;
  line-height:1.05;
  color:var(--accent);
  font-weight:800;
}
.section-subtitle{
  margin:0 0 28px;
  color:var(--muted);
  font-size:16px;
}

/* Services editorial layout */
.service{
  display:grid;
  grid-template-columns: 1.2fr 1fr;
  gap:36px;
  align-items:start;
  margin:0 0 78px;
}
.service--img-right{
  grid-template-columns: 1fr 1.2fr;
}
.service-text h3{
  margin:0 0 10px;
  font-size:42px;
  color:var(--accent);
  font-weight:850;
}
.lead{
  margin:0 0 18px;
  color:var(--accent);
  font-weight:750;
}
.service-text p{
  margin:0 0 12px;
  color:var(--muted);
  font-size:16px;
  line-height:1.7;
}
.service-media img{
  width:100%;
  height:420px;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow: 0 18px 50px rgba(0,0,0,.13);
}
.service-legend{
  margin:8px 0 0;
  font-size:14px;
  color:var(--muted);
  text-align:center;
  line-height:1.5;
  font-style:italic;
}

/* checklist */
.check{
  list-style:none;
  padding:0; margin:18px 0 24px;
  display:grid; gap:10px;
  color:var(--accent);
  font-weight:650;
}
.check li{
  position:relative;
  padding-left:28px;
}
.check li::before{
  content:"✓";
  position:absolute;
  left:0; top:0;
}

/* Projects Grid */
.projects-grid{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap:18px;
  width:100%;
}
.project-item{
  width:100%;
}
.project-description{
  margin:8px 0 0;
  font-size:14px;
  color:var(--muted);
  text-align:center;
  line-height:1.5;
}

/* Carousel */
.carousel{
  position:relative;
  width:100%;
}
.carousel-img{
  width:100%;
  height:250px;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow: 0 14px 40px rgba(0,0,0,.12);
  transition:opacity 0.6s ease-in-out;
}
.carousel-img.fade-out{
  opacity:0;
}
.carousel-dots{
  display:flex;
  justify-content:center;
  gap:8px;
  margin-top:12px;
}
.carousel-dot{
  width:10px;
  height:10px;
  border-radius:50%;
  background:var(--border);
  cursor:pointer;
  transition:background .3s ease;
}
.carousel-dot.active{
  background:var(--accent);
}

/* Panels */
.panel{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:26px;
  color:var(--muted);
  line-height:1.7;
}

/* À propos layout */
.apropos-content{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:36px;
  align-items:start;
}
.apropos-image img{
  width:100%;
  height:auto;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow: 0 18px 50px rgba(0,0,0,.13);
}

/* Contact */
.contact{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:18px;
  align-items:start;
}
.form{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:22px;
  display:grid;
  gap:12px;
}
label{ display:grid; gap:6px; color:var(--muted); font-size:14px; }
input, textarea{
  border-radius:14px;
  border:1px solid rgba(0,0,0,.14);
  padding:12px;
  font:inherit;
  background:#fff;
}
.btn{
  display:inline-block;
  border-radius:999px;
  padding:12px 18px;
  background:var(--accent);
  color:#fff;
  font-weight:750;
  border:0;
  cursor:pointer;
  margin-top:20px;
}

/* Footer */
.footer{
  padding:34px 22px 64px;
  text-align:center;
  color:rgba(0,0,0,.55);
}

/* Lightbox */
.lightbox{
  position:fixed; inset:0; z-index:90;
  display:none;
  place-items:center;
  background:rgba(0,0,0,.72);
  padding:30px;
}
.lightbox.open{ display:grid; }
.lightbox-img{
  max-width:min(1100px, 95vw);
  max-height:85vh;
  border-radius:18px;
  box-shadow: 0 22px 70px rgba(0,0,0,.35);
}
.lightbox-close{
  position:fixed;
  top:18px; right:18px;
  width:46px; height:46px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.35);
  background:rgba(0,0,0,.35);
  color:#fff;
  font-size:28px;
  cursor:pointer;
}

/* Responsive (tablets & smaller) */
@media (max-width: 980px){
  .overlay-inner{ grid-template-columns: 1fr; padding:26px; }
  .overlay-media img{ height:44vh; }
  .overlay-nav a{ font-size:34px; }

  .topbar{ padding:14px 18px; }
  .brand-logo{ height:110px; } /* important: header stays sane on tablets */

  .home{ padding:56px 18px 24px; }
  .home-title{ font-size:42px; margin-bottom:26px; line-height:1.15; }
  .home-image{ height:320px; }
  .decor{ display:none; }

  .section{
    padding:64px 18px;
    scroll-margin-top:150px;
  }
  .section-title{ font-size:44px; }

  .service{ grid-template-columns:1fr; }
  .service-media img{ height:320px; }

  .projects-grid{ grid-template-columns: repeat(2, 1fr); gap:14px; }
  .carousel-img{ height:220px; }

  .apropos-content{ grid-template-columns: 1fr; gap:24px; }

  .contact{ grid-template-columns: 1fr; }

  /* Better touch targets for tablets */
  .carousel-dot{
    width:12px;
    height:12px;
  }
}

/* Responsive (phones) */
@media (max-width: 600px){
  .topbar{
    padding:12px 14px;
  }
  .brand-logo{
    height:64px; /* phone-friendly */
  }

  .burger{
    width:44px; height:36px;
  }
  .burger span{
    width:26px;
  }

  .home{
    padding:44px 14px 18px;
  }
  .home-title{
    font-size:clamp(28px, 8vw, 36px);
    margin-bottom:18px;
    line-height:1.2;
  }
  .home-image{
    height:240px;
    border-radius:16px;
  }

  .section{
    padding:52px 14px;
    scroll-margin-top:100px;
  }
  .section-title{
    font-size:36px;
  }

  .home{
    scroll-margin-top:100px;
  }

  .service-text h3{
    font-size:32px;
  }

  .service-media img{
    height:240px;
    border-radius:16px;
  }

  .overlay-inner{
    padding:18px;
    gap:18px;
  }
  .overlay-nav a{
    font-size:28px;
  }
  .overlay-media img{
    height:36vh;
    border-radius:16px;
  }

  .projects-grid{ grid-template-columns: 1fr; gap:18px; }
  .carousel-img{ height:240px; border-radius:16px; }

  .project-description{
    font-size:13px;
  }

  .apropos-content{ grid-template-columns: 1fr; gap:18px; }

  .contact{
    gap:18px;
  }
  .contact-form input,
  .contact-form textarea{
    font-size:16px; /* Prevents zoom on iOS */
  }

  .service-legend{
    font-size:12px;
  }

  /* Improve touch targets */
  .carousel-dot{
    width:14px;
    height:14px;
  }

  button, a{
    min-height:44px; /* iOS recommended touch target */
  }
}

/* Landscape orientation on mobile devices */
@media (max-width: 900px) and (max-height: 500px) and (orientation: landscape){
  .topbar{
    padding:8px 14px;
    position:fixed;
  }

  .brand-logo{
    height:50px !important;
  }

  .burger{
    width:38px;
    height:32px;
  }

  .home{
    padding-top:70px;
    padding-bottom:12px;
  }

  .home-title{
    font-size:28px !important;
    margin-bottom:12px;
  }

  .home-image{
    height:180px !important;
  }

  .section{
    padding:32px 14px !important;
    scroll-margin-top:70px !important;
  }

  .section-title{
    font-size:28px !important;
    margin-bottom:16px;
  }

  .service-text h3{
    font-size:24px !important;
  }

  .service-media img{
    height:180px !important;
  }

  .carousel-img{
    height:160px !important;
  }

  .projects-grid{
    grid-template-columns: repeat(2, 1fr) !important;
    gap:12px;
  }

  .apropos-content{
    grid-template-columns: 1fr 1fr !important;
    gap:16px;
  }

  .apropos-image img{
    height:200px;
    object-fit:cover;
  }

  .panel{
    padding:16px;
    font-size:14px;
  }

  .contact{
    gap:12px;
  }

  .overlay-inner{
    padding:12px;
    gap:12px;
  }

  .overlay-nav a{
    font-size:24px !important;
  }

  .overlay-media{
    display:none;
  }
}
