:root {
  --primary:#1f4e79;
  --secondary:#e07a5f;
  --light:#f9f9f9;
  --dark:#333;
}
* { box-sizing: border-box; margin:0; padding:0; }
body { font-family:'Poppins', sans-serif; background: var(--light); color: var(--dark); line-height:1.6; }

/*
 * Enable smooth scrolling for anchor links (e.g. when navigating to service sections).
 * This small enhancement improves the user experience by avoiding abrupt jumps on the page.
 */
html { scroll-behavior: smooth; }
header { position:fixed; width:100%; top:0; left:0; background:rgba(255,255,255,0.95); box-shadow:0 2px 4px rgba(0,0,0,0.1); z-index:999; }
.container { max-width:1200px; margin:auto; padding:0 1rem; }
.navbar { display:flex; justify-content:space-between; align-items:center; padding:1rem 0; }
.logo a { font-weight:600; font-size:1.3rem; color: var(--primary); text-decoration:none; }
.nav-links { display:flex; gap:1rem; }
.nav-links a { color: var(--dark); text-decoration:none; padding:0.5rem; font-weight:500; position:relative; }
.nav-links a::after { content:''; display:block; height:2px; background: var(--secondary); width:0%; transition:width .3s; position:absolute; bottom:0; left:0; }
.nav-links a:hover::after { width:100%; }
.menu-toggle { display:none; cursor:pointer; flex-direction:column; gap:4px; }
.menu-toggle span { width:25px; height:3px; background: var(--primary); transition: all .3s ease; }
@media(max-width:768px) {
  .nav-links { display:none; flex-direction:column; background:white; position:absolute; top:100%; left:0; width:100%; box-shadow:0 4px 8px rgba(0,0,0,0.1); }
  .nav-links.open { display:flex; }
  .menu-toggle { display:flex; }
}
section { padding:5rem 1rem; margin-top:80px; }
.section-title { text-align:center; margin-bottom:3rem; font-size:2rem; color: var(--primary); }
.hero { height:90vh; display:flex; align-items:center; justify-content:center; text-align:center; padding:1rem; position:relative; color:white; }
.hero .hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -1;
}
.hero::before { content:''; position:absolute; inset:0; background:rgba(0,0,0,0.5); }
.hero-content { position:relative; z-index:1; }
.hero h1 { font-size:3rem; margin-bottom:1rem; }
.hero p { font-size:1.2rem; margin-bottom:2rem; }
.btn { background: var(--secondary); color:white; padding:0.75rem 1.5rem; border:none; border-radius:4px; cursor:pointer; text-decoration:none; font-weight:500; transition:background .3s; }
.btn:hover { background:#c76d55; }
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:2rem; }
.card {
  background:white;
  border-radius:8px;
  padding:2rem;
  box-shadow:0 4px 8px rgba(0,0,0,0.05);
  transition:transform .3s;
  /* Utilisation de flexbox pour que le bouton d'appel à l'action soit toujours ancré en bas de la carte */
  display:flex;
  flex-direction:column;
  text-align:center;
  min-height:280px;
}
.card h3 {
  margin-bottom:1rem;
}
.card p {
  flex-grow:1;
}
.card .btn {
  /* Place the call‑to‑action button at the bottom of the card */
  margin-top:auto;
  align-self:center;
}
.card:hover { transform:translateY(-5px); }
.card:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 16px rgba(0,0,0,0.15);
}
.card i { font-size:2rem; color: var(--secondary); margin-bottom:1rem; }
.gallery { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:1rem; }
.gallery img { width:100%; height:200px; object-fit:cover; border-radius:8px; }

/*
 * Make gallery and service images interactive: show a pointer on hover and apply a gentle zoom and shadow effect.
 * This encourages users to click the images to view them in grand format and gives a modern, premium feel.
 */
.gallery a img, .service-details a img {
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.gallery a img:hover, .service-details a img:hover {
  transform: scale(1.05);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.testimonial-container { position:relative; }
.testimonial { display:none; text-align:center; }
.testimonial.active { display:block; }
.testimonial p { font-style:italic; margin-bottom:1rem; }
.testimonial h4 { font-weight:600; }
.service-details { display:flex; flex-wrap:wrap; gap:2rem; margin-bottom:2rem; }
.service-details img { flex:1 1 300px; border-radius:8px; height:250px; object-fit:cover; }
.service-details div { flex:1 1 400px; }
.about {
  /* Disposition en colonnes pour l'illustration et le texte dans la page À propos */
  display: flex;
  flex-wrap: wrap;
  gap: 2rem;
  align-items: center;
}
.about img {
  /* Taille adaptable de l'image d'équipe dans la page À propos */
  flex: 1 1 300px;
  max-width: 40%;
  height: auto;
  border-radius: 8px;
  object-fit: cover;
}
.about-text {
  flex: 1 1 400px;
}
/*
 * Lightbox overlay for viewing images. When a user clicks on a thumbnail in the galerie
 * or dans la section des services, the selected photo opens in this modal overlay.
 * The overlay covers the entire viewport with a semi‑transparent background and
 * centers the image. A close button allows the user to exit the lightbox.
 */
.lightbox {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.8);
  align-items: center;
  justify-content: center;
  z-index: 10000;
}
.lightbox.active {
  display: flex;
}
.lightbox img {
  max-width: 90%;
  max-height: 80vh;
  border-radius: 8px;
}
.lightbox .close {
  position: absolute;
  top: 30px;
  right: 40px;
  font-size: 2rem;
  color: #fff;
  cursor: pointer;
}

/*
 * Mise en forme de la section Contact.
 * La carte de contact présente les informations de manière soignée avec un fond blanc,
 * une ombre douce et des icônes simples. Les liens sont colorés selon la palette et
 * soulignés au survol. La mise en page flex des lignes permet d’aligner les icônes et le texte.
 */
.contact-card {
  background: white;
  border-radius: 8px;
  padding: 2rem;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  max-width: 600px;
  margin: auto;
  text-align: left;
}
.contact-card p {
  margin-bottom: 1rem;
  font-size: 1.1rem;
}
.contact-card .contact-details {
  list-style: none;
  padding: 0;
  margin: 0;
}
.contact-card .contact-details li {
  display: flex;
  align-items: flex-start;
  margin-bottom: 1rem;
  font-size: 1.1rem;
}
.contact-card .contact-details .icon {
  margin-right: 0.75rem;
  font-size: 1.2rem;
  line-height: 1.2;
}
.contact-card a {
  color: var(--primary);
  text-decoration: none;
}
.contact-card a:hover {
  text-decoration: underline;
}
/* Mise en page de la section contact sous forme de deux colonnes : carte et formulaire. */
.contact-section {
  display: flex;
  flex-wrap: wrap;
  gap: 2rem;
  justify-content: center;
  align-items: flex-start;
  margin-top: 2rem;
}
/* Ajustement de la carte de contact lorsqu’elle est associée au formulaire */
.contact-section .contact-card {
  flex: 1 1 280px;
  margin: 0;
  max-width: 100%;
}
/* Colonne du formulaire de contact */
.contact-form {
  background: white;
  border-radius: 8px;
  padding: 2rem;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  flex: 1 1 320px;
  max-width: 500px;
}
.contact-form h3 {
  margin-top: 0;
  font-size: 1.5rem;
  margin-bottom: 1rem;
}
.contact-form label {
  font-weight: 600;
  margin-bottom: 0.25rem;
  display: block;
}
.contact-form input,
.contact-form textarea {
  padding: 0.75rem;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 1rem;
  width: 100%;
  margin-bottom: 1rem;
}
.contact-form button {
  background: var(--secondary);
  color: white;
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.3s;
  font-weight: 500;
  align-self: flex-start;
}
.contact-form button:hover {
  background: #c76d55;
}
footer { background: var(--primary); color:white; padding:2rem 1rem; text-align:center; margin-top:3rem; }
footer a { color: var(--secondary); text-decoration:none; font-weight:500; }
