/* ==========================================================
   VARIABLES GLOBALES
   Centralise les couleurs, les polices et la largeur maximale.
   Modifier une valeur ici met Ã  jour toutes les pages projet.
   ========================================================== */
:root {
  --teal: #0b7c7b;
  --teal-dark: #08605f;
  --plum: #60384e;
  --light: #eff5f5;
  --ink: #141414;
  --ink-10: rgba(20, 20, 20, 0.1);
  --display: "Bricolage Grotesque", sans-serif;
  --body: "Nunito", sans-serif;
  --maxw: 1180px;
}

/* ==========================================================
   RESET ET BASES
   Supprime les marges par dÃ©faut et rend les dimensions plus
   prÃ©visibles sur tous les navigateurs.
   ========================================================== */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  background: var(--light);
  color: var(--ink);
  font: 16px/1.65 var(--body);
  overflow-x: hidden;
}
img {
  display: block;
  max-width: 100%;
}
a {
  color: inherit;
  text-decoration: none;
}
button {
  font: inherit;
}

/* Conteneur centrÃ© commun Ã  toutes les sections. */
.wrap {
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 32px;
}

/* HiÃ©rarchie typographique gÃ©nÃ©rale. */
h1,
h2 {
  font-family: "Eloquent", var(--display);
  font-weight: 100;
  letter-spacing: -0.02em;
  line-height: 1.05;
}
h3 {
  color: var(--teal);
  line-height: 1.2;
}
.eyebrow {
  color: var(--teal);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.btn {
  display: inline-block;
  border: 1.5px solid var(--teal);
  border-radius: 2px;
  font-size: 0.88rem;
  transition: 0.25s;
}
.btn {
  padding: 14px 27px;
}
.btn:hover,
.nav-cta:hover {
  background: var(--teal-dark);
  border-color: var(--teal-dark);
  color: #fff;
}

/* ==========================================================
   NAVIGATION PRINCIPALE
   Le header reste visible pendant le dÃ©filement. Le fond
   translucide et le flou conservent la lisibilitÃ© du menu.
   ========================================================== */
  /* ---------- NAV ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:100;
    background:rgba(239,245,245,0.86);
    backdrop-filter:blur(8px);
    border-bottom:1px solid var(--ink-10);
  }
  nav{ display:flex; align-items:center; justify-content:space-between; padding:20px 32px; max-width:var(--maxw); margin:0 auto; }
  .logo{ font-family:var(--serif-display); font-weight:800; font-size:1.15rem; letter-spacing:-0.01em; display:flex; align-items:center; }
  .logo span{ color:var(--teal); }
  .logo-mark{ height:42px; width:auto; display:block; }
  footer .logo-mark{ height:22px; }
  .nav-links{ display:flex; align-items:center; gap:36px; list-style:none; font-weight:600; font-size:0.92rem; }
  .nav-links a{ position:relative; }
  .nav-links a:not(.nav-cta)::after{
    content:''; position:absolute; left:0; bottom:-4px; height:2px; width:0; background:var(--teal);
    transition:width .25s ease;
  }
  .nav-links a:not(.nav-cta):hover::after{ width:100%; }
  .nav-cta{
    background:var(--teal); color:var(--light); padding:10px 22px; font-weight:700; font-size:0.85rem;
    transition:background .25s ease, transform .25s ease; border-radius:2px;
  }
  .nav-cta:hover{ background:var(--teal-dark); transform:translateY(-1px); }
  .burger{ display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:6px; }
  .burger span{ width:24px; height:2px; background:var(--ink); display:block; }
    /* ---------- RESPONSIVE ---------- */
  @media (max-width:900px){
    .nav-links{ display:none; }
    .burger{ display:flex; }
    .hero{ grid-template-columns:1fr; padding-top:140px; }
    .hero-visual{ max-width:340px; margin:0 auto; }
    .grid-work{ grid-template-columns:repeat(2,1fr); }
    .services-grid{ grid-template-columns:repeat(2,1fr); }
    .about-wrap, .contact-grid{ grid-template-columns:1fr; }
    .about-photo{ max-width:300px; margin:0 auto; }
    .about-accent{ right:calc(10% + 6px); }
  }
@media (max-width: 560px) {
  .wrap {
    padding-inline: 20px;
  }

  nav {
    padding: 16px 20px;
  }

  .hero {
    padding-top: 140px;
  }
  }

  /* mobile nav panel */
  .mobile-nav{
    position:fixed; top:0; right:-100%; width:78%; max-width:320px; height:100vh; background:var(--light);
    z-index:200; box-shadow:-4px 0 24px rgba(0,0,0,0.12); transition:right .35s ease;
    padding:100px 32px 32px; display:flex; flex-direction:column; gap:28px;
  }
  .mobile-nav.open{ right:0; }
  .mobile-nav a{ font-weight:700; font-size:1.3rem; }
  .mobile-nav .nav-cta{ display:inline-block; text-align:center; }
  .scrim{ position:fixed; inset:0; background:rgba(20,20,20,0.35); z-index:150; opacity:0; pointer-events:none; transition:opacity .35s ease; }
  .scrim.show{ opacity:1; pointer-events:auto; }

.scrim {
  position: fixed;
  inset: 0;
  z-index: 150;
  opacity: 0;
  pointer-events: none;
  background: #14141459;
  transition: opacity 0.35s;
}
.scrim.show {
  opacity: 1;
  pointer-events: auto;
}

/* ==========================================================
   EN-TÃŠTE DE LA FICHE PROJET
   PrÃ©sente le titre et le rÃ©sumÃ© Ã  gauche, puis les informations
   essentielles du projet dans le bloc .meta Ã  droite.
   ========================================================== */
.project-hero {
  padding: 160px 0 72px;
  background: #fff;
}
.breadcrumb {
  margin-bottom: 30px;
  color: #6b6b6b;
  font-size: 0.82rem;
}
.breadcrumb a {
  color: var(--plum);
  font-weight: 700;
}
.hero-grid {
  display: grid;
  grid-template-columns: 1.25fr 0.75fr;
  gap: 70px;
  align-items: end;
}
.project-hero h1 {
  max-width: 16ch;
  margin: 16px 0 24px;
  font-size: clamp(2.7rem, 4vw, 5.5rem);
}
.lead {
  max-width: 58ch;
  font-size: 16px;
}
.meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  padding: 28px;
  background: var(--light);
}
.meta dt {
  margin-bottom: 5px;
  color: var(--plum);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.meta dd {
  font-weight: 100;
  line-height: 1.35;
  font-size: 14px;
}

/* ==========================================================
   IMAGE DE COUVERTURE
   Le ratio 16/9 donne une grande entrÃ©e visuelle. object-fit
   remplit le cadre sans dÃ©former l'image.
   ========================================================== */
.cover {
  padding: 0 0 110px;
  background: #fff;
}
.cover figure {
  overflow: hidden;
  aspect-ratio: 16/9;
  background: var(--teal);
}
.cover img,
.gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
section {
  padding: 110px 0;
}

/* ==========================================================
   CONTEXTE ET OBJECTIFS
   Mise en page en deux colonnes : titre Ã  gauche, explications
   et objectifs du projet Ã  droite.
   ========================================================== */
.story {
  display: grid;
  grid-template-columns: 0.75fr 1.25fr;
  gap: 100px;
}
.story h2,
.section-head h2,
.result h2,
.next h2 {
  margin-top: 14px;
  font-size: clamp(2rem, 3vw, 3.3rem);
}
.copy {
  max-width: 62ch;
}
.copy p + p {
  margin-top: 20px;
}
.objectives {
  display: grid;
  gap: 16px;
  margin-top: 30px;
  list-style: none;
}
.objectives li {
  padding: 18px 20px;
  border-left: 3px solid var(--teal);
  background: #fff;
  font-weight: 700;
}

/* ==========================================================
   DÃ‰MARCHE CRÃ‰ATIVE
   Trois Ã©tapes placÃ©es cÃ´te Ã  cÃ´te sur ordinateur, puis empilÃ©es
   sur les Ã©crans plus Ã©troits.
   ========================================================== */
.approach {
  background: var(--plum);
  color: var(--light);
}
.approach .eyebrow,
.approach h3 {
  color: #eff5f5;
}
.section-head {
  max-width: 700px;
  margin-bottom: 52px;
}
.steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: #ffffff30;
}
.step {
  min-height: 230px;
  padding: 34px;
  background: var(--plum);
}
.step span {
  display: block;
  margin-bottom: 42px;
  font:
    800 1.4rem "Nunito Bold",
    var(--body);
  opacity: 0.28;
}
.step p {
  margin-top: 12px;
  color: #eff5f5d1;
}

/* ==========================================================
   GALERIE
   Deux colonnes par dÃ©faut. Lorsqu'une seule image est prÃ©sente,
   elle occupe automatiquement toute la largeur disponible.
   ========================================================== */
.gallery-section {
  background: #fff;
}
.gallery {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.gallery figure {
  overflow: hidden;
  aspect-ratio: 4/5;
  background: var(--light);
}
.gallery figure:first-child:last-child {
  grid-column: 1/-1;
  aspect-ratio: 16/9;
}

/* ==========================================================
   RÃ‰SULTAT ET LIVRABLES
   Les Ã©lÃ©ments .tags rÃ©sument les prestations effectuÃ©es.
   .placeholder sert Ã  repÃ©rer un texte restant Ã  personnaliser.
   ========================================================== */
.result {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 90px;
}
.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 28px;
}
.tags span {
  padding: 8px 14px;
  border: 1px solid #ddd;
  border-radius: 30px;
  color: var(--ink);
  font-size: 0.8rem;
}
.placeholder {
  margin-top: 24px;
  padding: 18px 20px;
  color: var(--ink);
  border: 1px solid var(--plum);
  font-family: "Nunito Italic";
}
/* Témoignage client avec guillemet décoratif à droite */
.client-quote {
  position: relative;
  overflow: hidden;
  margin: 0;
  padding: 28px 100px 28px 34px;
  background: var(--plum);
  color: var(--light);
}

.client-quote::after {
  content: "”";
  position: absolute;
  top: 50%;
  right: 24px;
  color: var(--light);
  font-family: "Eloquent";
  font-size: 8rem;
  opacity: 0.35;
  pointer-events: none;
}

@media (max-width: 560px) {
  .client-quote {
    padding: 24px 65px 24px 24px;
  }

  .client-quote::after {
    right: 14px;
    font-size: 5.5rem;
  }
}
/* ==========================================================
   PROJET SUIVANT
   Appel Ã  l'action placÃ© en fin de page pour poursuivre la
   navigation dans le portfolio.
   ========================================================== */
.next {
  padding: 90px 0;
  background: var(--teal);
  color: var(--light);
}
.next .wrap {
  display: flex;
  justify-content: space-between;
  gap: 40px;
  align-items: end;
}
.next .eyebrow {
  color: #eff5f5;
}
.next .btn {
  border-color: var(--light);
  color: var(--light);
}

/* ==========================================================
   PIED DE PAGE
   ========================================================== */
footer {
  padding: 32px 0;
  background: var(--plum);
  color: #eff5f5;
}
.footer-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
  font-size: 0.82rem;
}
footer .logo-mark {
  height: 22px;
}

/* ==========================================================
   TABLETTES â€” jusqu'Ã  900 px
   Cache le menu classique et empile les grilles principales.
   ========================================================== */
@media (max-width: 900px) {
  .nav-links {
    display: none;
  }
  .burger {
    display: flex;
  }
  .hero-grid,
  .story,
  .result {
    grid-template-columns: 1fr;
    gap: 44px;
  }
  .steps {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================
   TÃ‰LÃ‰PHONES â€” jusqu'Ã  560 px
   RÃ©duit les espacements et affiche toutes les sections sur
   une seule colonne pour conserver une lecture confortable.
   ========================================================== */
@media (max-width: 560px) {
  .wrap {
    padding: 0 20px;
  }
  nav {
    padding: 16px 20px;
  }
  .project-hero {
    padding: 125px 0 55px;
  }
  .meta {
    grid-template-columns: 1fr;
  }
  .cover {
    padding-bottom: 76px;
  }
  .cover figure {
    aspect-ratio: 4/5;
  }
  section {
    padding: 76px 0;
  }
  .gallery {
    grid-template-columns: 1fr;
  }
  .gallery figure:first-child:last-child {
    grid-column: auto;
    aspect-ratio: 4/5;
  }
  .next .wrap {
    display: block;
  }
  .next .btn {
    margin-top: 28px;
  }
}

/* ==========================================================
   ACCESSIBILITÃ‰
   DÃ©sactive les animations si la personne a demandÃ© moins de
   mouvements dans les rÃ©glages de son appareil.
   ========================================================== */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  * {
    transition-duration: 0.001ms !important;
  }
}