:root {
  --deep:    #234B5E;
  --teal:    #3B7A78;
  --sand:    #E8DCC9;
  --copper:  #B86F4C;
  --mist:    #F4EFE6;
  --white:   #FDFAF5;
  --ink:     #1a2e38;
  --stone:   #8a9eaa;
  --font-display: 'Cormorant Garamond', serif;
  --font-body:    'DM Sans', sans-serif;
}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }

body {
  background: var(--mist);
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 300;
  line-height: 1.75;
  overflow-x: hidden;
}

/* ─── VAGUES SVG DÉCORATIVES ─── */
.wave-divider { width:100%; overflow:hidden; line-height:0; }
.wave-divider svg { display:block; }

/* ─── NAV ─── */
nav {
  position:fixed; top:0; left:0; right:0; z-index:100;
  padding:16px 60px;
  display:flex; justify-content:space-between; align-items:center;
  background: rgba(244,239,230,0.95);
  backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(35,75,94,0.1);
}

.nav-brand {
  display:flex; align-items:center; gap:14px;
  text-decoration:none;
}

/* Logo SVG NORIA HORIZON — demi-roue + vagues + point */
.logo-svg { width:44px; height:36px; }

.brand-text { line-height:1.2; }
.brand-name {
  font-family: var(--font-display);
  font-size:1.15rem;
  font-weight:600;
  letter-spacing:0.22em;
  color: var(--deep);
  display:block;
}
.brand-sub {
  font-size:0.58rem;
  letter-spacing:0.35em;
  text-transform:uppercase;
  color: var(--copper);
  display:block;
  font-weight:400;
}

.nav-links { display:flex; gap:30px; list-style:none; align-items:center; }
.nav-links a {
  text-decoration:none;
  font-size:0.75rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--deep);
  opacity:0.55;
  transition:opacity 0.3s, color 0.3s;
}
.nav-links a:hover { opacity:1; color:var(--copper); }

.nav-cta {
  background:var(--deep) !important;
  color:var(--white) !important;
  opacity:1 !important;
  padding:9px 22px;
  font-size:0.72rem !important;
  letter-spacing:0.18em !important;
  transition:background 0.3s !important;
}
.nav-cta:hover { background:var(--copper) !important; }

/* ─── HERO ─── */
#hero {
  min-height:100vh;
  display:flex; align-items:center;
  position:relative; overflow:hidden;
  padding:130px 60px 80px;
}

/* Vague décorative hero */
.hero-wave {
  position:absolute; bottom:0; left:0; right:0;
  pointer-events:none;
}

.hero-content {
  position:relative; z-index:2;
  max-width:640px;
}

.hero-eyebrow {
  font-size:0.72rem;
  letter-spacing:0.35em;
  text-transform:uppercase;
  color:var(--copper);
  margin-bottom:24px;
  display:flex; align-items:center; gap:12px;
  opacity:0;
  animation:fadeUp 0.9s ease forwards 0.2s;
}
.hero-eyebrow::before {
  content:'';
  width:32px; height:1px;
  background:var(--copper);
}

.hero-title {
  font-family:var(--font-display);
  font-size:clamp(3.2rem, 6vw, 5.5rem);
  font-weight:300;
  line-height:1.1;
  color:var(--deep);
  margin-bottom:28px;
  opacity:0;
  animation:fadeUp 0.9s ease forwards 0.4s;
}
.hero-title strong {
  font-weight:600;
  display:block;
  color:var(--copper);
}

.hero-sub {
  font-size:1rem;
  line-height:1.85;
  color:var(--ink);
  opacity:0;
  animation:fadeUp 0.9s ease forwards 0.6s;
  margin-bottom:48px;
  max-width:480px;
  padding-left:18px;
  border-left:2px solid var(--teal);
}

.hero-actions {
  display:flex; gap:16px; flex-wrap:wrap;
  opacity:0;
  animation:fadeUp 0.9s ease forwards 0.8s;
}

@keyframes fadeUp {
  from { opacity:0; transform:translateY(22px); }
  to   { opacity:1; transform:translateY(0); }
}

/* ─── BOUTONS ─── */
.btn-primary {
  background:var(--deep); color:var(--white);
  padding:14px 36px;
  font-family:var(--font-body); font-size:0.78rem;
  letter-spacing:0.18em; text-transform:uppercase;
  border:none; cursor:pointer; text-decoration:none;
  display:inline-block; transition:background 0.3s, transform 0.2s;
}
.btn-primary:hover { background:var(--copper); transform:translateY(-2px); }

.btn-ghost {
  background:transparent; color:var(--deep);
  padding:14px 36px;
  font-family:var(--font-body); font-size:0.78rem;
  letter-spacing:0.18em; text-transform:uppercase;
  border:1px solid rgba(35,75,94,0.3);
  cursor:pointer; text-decoration:none;
  display:inline-block; transition:all 0.3s;
}
.btn-ghost:hover { border-color:var(--teal); color:var(--teal); transform:translateY(-2px); }

/* ─── SECTIONS ─── */
section { padding:100px 60px; position:relative; z-index:1; }

.section-label {
  font-size:0.7rem;
  letter-spacing:0.38em;
  text-transform:uppercase;
  color:var(--copper);
  margin-bottom:14px;
  display:flex; align-items:center; gap:10px;
}
.section-label::before {
  content:'';
  width:24px; height:1px;
  background:var(--copper);
}

.section-title {
  font-family:var(--font-display);
  font-size:clamp(2.2rem, 4vw, 3.2rem);
  font-weight:300;
  line-height:1.2;
  color:var(--deep);
  margin-bottom:18px;
}
.section-title strong { font-weight:600; }

.section-sub {
  font-size:0.95rem;
  opacity:0.65;
  max-width:560px;
  line-height:1.85;
}

/* Divider vague */
.wave-sep {
  width:80px; height:2px;
  background:linear-gradient(to right, var(--copper), var(--teal));
  margin-bottom:32px;
  position:relative;
}
.wave-sep::after {
  content:'';
  position:absolute; left:88px; top:0.5px;
  width:140px; height:1px;
  background:linear-gradient(to right, var(--teal), transparent);
}

/* ─── COMMENT ÇA MARCHE ─── */
#comment { background:var(--sand); }

.steps-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:rgba(35,75,94,0.1);
  max-width:1100px;
  margin-top:56px;
  position:relative;
}

.steps-grid::after {
  content:'';
  position:absolute;
  bottom:0; left:0;
  height:3px; width:0%;
  background:linear-gradient(to right, var(--teal), var(--copper));
  transition:width 1.8s ease;
  z-index:2;
}
.steps-grid.sequence-done::after { width:100%; }

.step-card {
  background:var(--sand);
  padding:52px 42px;
  position:relative;
  overflow:hidden;
  opacity:1;
  transform:translateY(0);
  transition:background 0.3s, opacity 0.6s ease, transform 0.6s ease,
             box-shadow 0.4s ease, border-left 0.3s;
  border-left:3px solid transparent;
}
.step-card.illumine { opacity:1; transform:translateY(0); }
.step-card:hover {
  background:var(--white) !important;
  border-left:3px solid var(--copper);
  box-shadow: -4px 0 0 0 var(--copper), 0 12px 40px rgba(35,75,94,0.08);
  transform:translateY(-4px) !important;
}
.step-card:hover .step-num { color:var(--copper); }
.step-card:hover h3 { color:var(--copper); }

.step-num {
  font-size:0.68rem;
  letter-spacing:0.3em;
  color:var(--teal);
  display:block;
  margin-bottom:18px;
  text-transform:uppercase;
  transition:color 0.3s;
}

/* Point étape 03 */
.step-dot {
  display:inline-block;
  width:7px; height:7px; border-radius:50%;
  background:var(--copper);
  margin-left:10px; vertical-align:middle;
  opacity:0.5;
  box-shadow:0 0 0 0 rgba(184,111,76,0);
  transition:opacity 0.3s;
}

/* Pulse en canon — chaque point à son tour, délai décalé */
.sd-1 { animation:canonPulse 6s ease-in-out infinite 0s; }
.sd-2 { animation:canonPulse 6s ease-in-out infinite 2s; }
.sd-3 { animation:canonPulse 6s ease-in-out infinite 4s; }

@keyframes canonPulse {
  0%,30%,100% {
    transform:scale(1);
    opacity:0.45;
    box-shadow:0 0 0 0 rgba(184,111,76,0);
  }
  15% {
    transform:scale(1.8);
    opacity:1;
    box-shadow:0 0 0 6px rgba(184,111,76,0);
  }
  20% {
    box-shadow:0 0 0 8px rgba(184,111,76,0.15);
  }
}

/* Au survol de la carte — le point s'illumine fort */
.step-card:hover .step-dot {
  opacity:1;
  transform:scale(1.6);
  box-shadow:0 0 0 5px rgba(184,111,76,0.2);
  animation:none;
}

.step-card h3 {
  font-family:var(--font-display);
  font-size:1.3rem; font-weight:600;
  margin-bottom:14px; color:var(--deep);
  transition:color 0.3s;
}
.step-card p { font-size:0.88rem; opacity:0.65; line-height:1.8; }

/* ─── TUNNEL ─── */
#tunnel {
  background:var(--deep);
  color:var(--white);
  overflow:hidden;
  position:relative;
}

/* Motif vagues en fond tunnel */
#tunnel::before {
  content:'';
  position:absolute; inset:0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40'%3E%3Cpath d='M0 20 Q30 5 60 20 Q90 35 120 20' fill='none' stroke='rgba(184,111,76,0.04)' stroke-width='1.5'/%3E%3C/svg%3E");
  background-size:120px 40px;
}

#tunnel .section-title { color:var(--white); }
#tunnel .section-sub { color:var(--white); opacity:0.5; }

.tunnel-instant-horizon {
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  font-weight: 500;
  color: var(--copper);
  opacity: 0.82;
  line-height: 1.1;
  margin-bottom: 24px;
  letter-spacing: 0;
}

.tunnel-top {
  max-width:1250px; margin:0 auto 48px;
  position:relative; z-index:2;
}

.tunnel-grid {
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:70px; align-items:center;
  max-width:1250px; margin:0 auto;
  position:relative; z-index:2;
}

.tunnel-image-wrap {
  display:flex; align-items:center; justify-content:center;
  padding:22px; background:var(--deep); border-radius:22px;
}
.tunnel-image {
  width:100%;
  max-width:600px;
  height:auto;
  display:block;
  margin:0 auto;
  border-radius:18px;
  box-shadow:0 30px 80px rgba(0,0,0,0.5), 0 0 40px rgba(184,111,76,0.08);
}

.tunnel-steps { display:flex; flex-direction:column; gap:26px; margin-top:44px; }
.tunnel-step { display:flex; gap:20px; align-items:flex-start; }

.tunnel-step-circle {
  width:36px; height:36px;
  border:1px solid var(--teal);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:0.78rem; color:var(--teal); flex-shrink:0;
  font-family:var(--font-display);
}

.tunnel-step-text h4 {
  font-family:var(--font-display);
  font-size:1rem; color:var(--white); margin-bottom:4px; font-weight:600;
}
.tunnel-step-text p { font-size:0.83rem; opacity:0.45; line-height:1.7; }

.tunnel-form {
  background:rgba(253,250,245,0.04);
  border:1px solid rgba(184,111,76,0.2);
  padding:46px 42px; position:relative;
}
.tunnel-form::before, .tunnel-form::after {
  content:''; position:absolute;
  width:18px; height:18px;
  border-color:var(--copper); border-style:solid; opacity:0.4;
}
.tunnel-form::before { top:12px; left:12px; border-width:2px 0 0 2px; }
.tunnel-form::after  { bottom:12px; right:12px; border-width:0 2px 2px 0; }

.tunnel-form h3 {
  font-family:var(--font-display);
  font-size:1.6rem; color:var(--white); margin-bottom:6px; font-weight:300;
}
.tunnel-form > p { font-size:0.8rem; opacity:0.35; margin-bottom:30px; color:var(--white); }

.form-group { margin-bottom:18px; }
.form-group label {
  display:block; font-size:0.68rem; letter-spacing:0.2em;
  text-transform:uppercase; opacity:0.4; margin-bottom:7px; color:var(--white);
}
.form-group input, .form-group select {
  width:100%;
  background:rgba(253,250,245,0.05);
  border:none; border-bottom:1px solid rgba(184,111,76,0.3);
  padding:11px 0 11px 4px;
  font-family:var(--font-body); font-size:0.9rem;
  color:var(--white); outline:none; transition:border-color 0.3s;
}
.form-group input:focus, .form-group select:focus { border-bottom-color:var(--copper); }
.form-group select option { background:var(--deep); }

.btn-copper-full {
  width:100%; background:var(--copper); color:var(--white);
  padding:14px; font-family:var(--font-body);
  font-size:0.78rem; letter-spacing:0.18em; text-transform:uppercase;
  border:none; cursor:pointer; margin-top:8px;
  transition:opacity 0.3s, transform 0.2s;
}
.btn-copper-full:hover { opacity:0.85; transform:translateY(-2px); }

/* ─── ÉQUIPE ─── */
#equipe { }
.equipe-header { max-width:580px; margin-bottom:60px; }

.team-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  border:1px solid rgba(35,75,94,0.1);
}

.team-card {
  cursor:pointer; position:relative;
  border-right:1px solid rgba(35,75,94,0.1);
  transition:background 0.3s; overflow:hidden;
}
.team-card:last-child { border-right:none; }
.team-card:hover { background:var(--sand); }

.team-card::after {
  content:''; position:absolute;
  top:0; left:0; right:0; height:3px;
  background:var(--copper);
  transform:scaleX(0); transition:transform 0.3s;
}
.team-card:hover::after { transform:scaleX(1); }

.team-photo {
  width:100%; aspect-ratio:1;
  display:flex; align-items:center; justify-content:center;
  font-size:3.2rem;
  background:linear-gradient(135deg, var(--sand), #c8d8e0);
  position:relative; overflow:hidden;
}
.team-photo img {
  width:100%; height:100%;
  object-fit:cover; object-position:center top;
  position:absolute; inset:0; z-index:1;
  transition:transform 0.4s ease;
}
.team-card:hover .team-photo img { transform:scale(1.04); }
.team-photo::before {
  content:''; position:absolute; inset:0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Ccircle cx='30' cy='30' r='28' fill='none' stroke='rgba(35,75,94,0.06)' stroke-width='1'/%3E%3C/svg%3E");
  background-size:60px 60px;
}

/* Badge fondateur */
.founder-badge {
  position:absolute; top:12px; left:12px;
  background:var(--copper); color:var(--white);
  font-size:0.6rem; letter-spacing:0.15em; text-transform:uppercase;
  padding:3px 10px; z-index:2;
}

.team-emoji { font-size:3rem; position:relative; z-index:1; }

.team-overlay {
  position:absolute; inset:0;
  background:rgba(35,75,94,0.82);
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  opacity:0; transition:opacity 0.3s; padding:20px;
}
.team-card:hover .team-overlay { opacity:1; }
.team-overlay p { color:var(--white); font-size:0.8rem; text-align:center; opacity:0.8; }

.team-info { padding:22px 20px 26px; }
.team-name { font-family:var(--font-display); font-size:1.05rem; font-weight:600; margin-bottom:4px; color:var(--deep); }
.team-role { font-size:0.73rem; color:var(--teal); letter-spacing:0.06em; display:block; margin-bottom:6px; }
.team-location { font-size:0.7rem; opacity:0.4; margin-bottom:10px; display:block; }
.team-contacts { display:flex; gap:10px; }
.team-contacts a { font-size:0.68rem; color:var(--copper); text-decoration:none; opacity:0.8; transition:opacity 0.2s; }
.team-contacts a:hover { opacity:1; }

/* ─── MODAL ─── */
.modal-overlay {
  display:none; position:fixed; inset:0; z-index:200;
  background:rgba(26,46,56,0.9); backdrop-filter:blur(10px);
  align-items:center; justify-content:center; padding:40px;
}
.modal-overlay.open { display:flex; }

.modal {
  background:var(--white); max-width:720px; width:100%;
  max-height:88vh; overflow-y:auto;
  padding:60px; position:relative;
  animation:modalIn 0.35s ease;
}
.modal::before, .modal::after {
  content:''; position:absolute;
  width:28px; height:28px;
  border-color:var(--copper); border-style:solid; opacity:0.35;
}
.modal::before { top:16px; left:16px; border-width:2px 0 0 2px; }
.modal::after  { bottom:16px; right:16px; border-width:0 2px 2px 0; }

@keyframes modalIn {
  from { opacity:0; transform:scale(0.96) translateY(16px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}

.modal-close {
  position:absolute; top:20px; right:24px;
  background:none; border:none; cursor:pointer;
  font-size:1.2rem; color:var(--ink); opacity:0.3; transition:opacity 0.2s;
}
.modal-close:hover { opacity:1; }

.modal-header { display:flex; gap:28px; align-items:flex-start; margin-bottom:36px; }
.modal-photo {
  width:88px; height:88px;
  background:linear-gradient(135deg, var(--sand), #c8d8e0);
  display:flex; align-items:center; justify-content:center;
  font-size:2.2rem; flex-shrink:0;
  border:1px solid rgba(35,75,94,0.1);
}
.modal-info h2 { font-family:var(--font-display); font-size:1.7rem; font-weight:300; margin-bottom:6px; color:var(--deep); }
.role-badge {
  display:inline-block; background:var(--copper); color:var(--white);
  font-size:0.65rem; letter-spacing:0.14em; text-transform:uppercase;
  padding:3px 12px; margin-bottom:12px;
}
.modal-info .contact-links { display:flex; gap:14px; flex-wrap:wrap; }
.modal-info .contact-links a { font-size:0.8rem; color:var(--stone); text-decoration:none; transition:color 0.2s; }
.modal-info .contact-links a:hover { color:var(--copper); }

.modal-bio {
  font-size:0.93rem; line-height:1.85; opacity:0.75; margin-bottom:22px;
  border-left:2px solid var(--teal); padding-left:18px;
}
.modal-tags { display:flex; flex-wrap:wrap; gap:8px; }
.modal-tag {
  background:var(--sand); border:1px solid rgba(35,75,94,0.12);
  font-size:0.7rem; padding:5px 13px; letter-spacing:0.07em; color:var(--ink);
}

/* ─── MISSION ─── */
#mission { background:var(--sand); }

.mission-grid {
  display:grid; grid-template-columns:1fr 1fr;
  gap:80px; align-items:center;
  max-width:1100px; margin:0 auto;
}

.mission-visual {
  position:relative; height:420px;
  display:flex; align-items:center; justify-content:center;
}

/* 3 cercles orbitaux — 1 point chacun */
.mission-rings {
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
}

.m-ring {
  position:absolute; border-radius:50%;
  display:flex; align-items:flex-start; justify-content:center;
}
.m-ring-a {
  width:190px; height:190px;
  border:1px solid rgba(184,111,76,0.28);
  animation:cwSpin 9s linear infinite;
}
.m-ring-b {
  width:290px; height:290px;
  border:1px solid rgba(59,122,120,0.22);
  animation:ccwSpin 16s linear infinite;
}
.m-ring-c {
  width:390px; height:390px;
  border:1px solid rgba(35,75,94,0.15);
  animation:cwSpin 26s linear infinite;
}

.ring-dot {
  width:7px; height:7px; border-radius:50%;
  margin-top:-3.5px;
  animation:dotGlow 2.5s ease-in-out infinite;
}
.m-ring-a .ring-dot {
  background:var(--copper);
  box-shadow:0 0 10px rgba(184,111,76,0.7);
}
.m-ring-b .ring-dot {
  background:var(--teal);
  box-shadow:0 0 10px rgba(59,122,120,0.7);
  animation-delay:0.8s;
}
.m-ring-c .ring-dot {
  background:var(--deep); width:5px; height:5px; margin-top:-2.5px;
  box-shadow:0 0 8px rgba(35,75,94,0.6);
  animation-delay:1.6s;
}

@keyframes cwSpin  { from{transform:rotate(0deg);}  to{transform:rotate(360deg);} }
@keyframes ccwSpin { from{transform:rotate(0deg);}  to{transform:rotate(-360deg);} }
@keyframes dotGlow {
  0%,100% { transform:scale(1);   opacity:0.5; }
  50%     { transform:scale(1.9); opacity:1; }
}

/* Roue NORIA centrale */
.noria-wheel-mission {
  position:absolute;
  width:140px; height:140px;
  animation:cwSpin 22s linear infinite;
}

/* Point central pulsant */
.mission-center-dot {
  position:absolute;
  width:12px; height:12px; border-radius:50%;
  background:var(--copper);
  box-shadow:0 0 0 0 rgba(184,111,76,0.4);
  animation:centerPulse 3.5s ease-in-out infinite;
}
@keyframes centerPulse {
  0%,100% { transform:scale(1);   box-shadow:0 0 0 0 rgba(184,111,76,0.4); }
  50%     { transform:scale(1.3); box-shadow:0 0 0 14px rgba(184,111,76,0); }
}

.mission-pillars { display:flex; flex-direction:column; gap:0; margin-top:44px; }
.pillar {
  display:flex; gap:20px; align-items:flex-start;
  padding:24px 0; border-bottom:1px solid rgba(35,75,94,0.08);
  transition:padding-left 0.25s;
}
.pillar:last-child { border-bottom:none; }
.pillar:hover { padding-left:10px; }
.pillar-mark { width:3px; height:38px; background:var(--teal); flex-shrink:0; margin-top:4px; }
.pillar h4 { font-family:var(--font-display); font-size:1.05rem; font-weight:600; margin-bottom:5px; color:var(--deep); }
.pillar p { font-size:0.86rem; opacity:0.6; line-height:1.75; }

/* ─── VALEURS ─── */
#valeurs { background:var(--deep); }
#valeurs .section-title { color:var(--white); }
#valeurs .section-sub { color:var(--white); opacity:0.5; }
#valeurs .section-label { color:var(--copper); }
#valeurs .section-label::before { background:var(--copper); }

.valeurs-grid {
  display:grid; grid-template-columns:repeat(5,1fr);
  gap:1px; background:rgba(253,250,245,0.06);
  max-width:1100px; margin-top:56px;
}
.valeur-card {
  background:var(--deep); padding:40px 28px;
  border-top:2px solid transparent;
  transition:background 0.3s, border-color 0.3s;
}
.valeur-card:hover { background:rgba(253,250,245,0.05); border-color:var(--copper); }
.valeur-num {
  font-family:var(--font-display); font-size:2.5rem; font-weight:300;
  color:var(--copper); opacity:0.3; margin-bottom:16px; display:block;
}
.valeur-card h3 {
  font-family:var(--font-display); font-size:1.1rem; font-weight:600;
  color:var(--white); margin-bottom:10px; letter-spacing:0.05em;
}
.valeur-card p { font-size:0.82rem; color:var(--white); opacity:0.45; line-height:1.7; }

/* ─── SERVICES ─── */
#services { }
.services-header { text-align:center; margin-bottom:60px; }
.services-header .section-sub { margin:0 auto; }
.services-header .wave-sep { margin:0 auto 32px; }

.services-grid {
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:1px; background:rgba(35,75,94,0.08);
  max-width:1100px; margin:0 auto;
}
.service-card {
  background:var(--white); padding:0;
  position:relative; overflow:hidden; transition:transform 0.3s;
  display:flex; flex-direction:column;
}
.service-card:hover { transform:translateY(-4px); }
.service-card:hover::after { transform:scaleY(1); }
.service-card::after {
  content:''; position:absolute;
  left:0; top:0; bottom:0; width:3px;
  background:var(--copper); transform:scaleY(0);
  transform-origin:bottom; transition:transform 0.35s;
}

.service-img {
  width:100%; height:180px;
  object-fit:cover; object-position:center;
  display:block;
  filter:saturate(0.7) brightness(0.9);
  transition:filter 0.4s ease, transform 0.4s ease;
}
.service-card:hover .service-img {
  filter:saturate(0.9) brightness(1);
  transform:scale(1.04);
}
.service-img-wrap {
  overflow:hidden; height:180px; position:relative;
}
.service-img-wrap::after {
  content:'';
  position:absolute; inset:0;
  background:linear-gradient(to bottom, transparent 50%, rgba(35,75,94,0.3) 100%);
}
.service-content { padding:28px 30px 32px; }
.service-card h3 { font-family:var(--font-display); font-size:1.1rem; font-weight:600; margin-bottom:10px; color:var(--deep); }
.service-card p { font-size:0.86rem; opacity:0.6; line-height:1.75; }

/* Carte "à venir" sans image */
.service-card-empty {
  background:var(--mist);
  border:1px dashed rgba(35,75,94,0.25);
  display:flex; align-items:center; justify-content:center;
  min-height:280px;
}
.service-card-empty .service-content { text-align:center; }
.service-card-empty .empty-tag {
  font-size:0.65rem; letter-spacing:0.25em; text-transform:uppercase;
  color:var(--copper); opacity:0.6; display:block; margin-bottom:10px;
}

/* ─── PARTENAIRES DÉFILANTS ─── */
#partenaires { background:var(--sand); text-align:center; overflow:hidden; }
#partenaires .section-sub { margin:0 auto; }

.partners-ticker-wrap {
  width:100%; overflow:hidden;
  margin-top:52px;
  display:flex; flex-direction:column; gap:18px;
}

.partners-track {
  display:flex; gap:24px;
  width:max-content;
}

.partners-track-right { animation: tickerRight 28s linear infinite; }
.partners-track-left  { animation: tickerLeft  28s linear infinite; }

@keyframes tickerRight {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@keyframes tickerLeft {
  0%   { transform: translateX(-50%); }
  100% { transform: translateX(0); }
}

.partners-track:hover { animation-play-state: paused; }

.partner-logo {
  width:150px; height:56px; flex-shrink:0;
  background:var(--white); border:1px solid rgba(35,75,94,0.08);
  display:flex; align-items:center; justify-content:center;
  font-size:0.7rem; letter-spacing:0.12em; text-transform:uppercase;
  opacity:0.5; transition:all 0.3s; cursor:default;
  animation: none !important;
}
.partner-logo:hover { opacity:1; border-color:var(--copper); box-shadow:0 0 18px rgba(184,111,76,0.3); }

.partner-note { margin-top:28px; font-size:0.78rem; opacity:0.4; font-style:italic; }

/* ─── CONTACT ─── */
#contact {
  background:var(--ink); color:var(--white);
  text-align:left; position:relative; overflow:hidden;
}
#contact::before {
  content:'';
  position:absolute; inset:0;
  background:radial-gradient(ellipse 80% 60% at 50% 100%, rgba(59,122,120,0.08) 0%, transparent 60%);
}
#contact .section-title { color:var(--white); }
#contact .section-sub { color:var(--white); opacity:0.4; margin-bottom:48px; }
#contact .section-label { color:var(--copper); }
#contact .section-label::before { background:var(--copper); }

.contact-inner {
  max-width:540px; margin:0 auto;
  position:relative; z-index:2;
}
.contact-inner .form-group { margin-bottom:18px; text-align:left; }
.contact-inner .form-group label { color:var(--white); font-size:0.68rem; letter-spacing:0.2em; text-transform:uppercase; opacity:0.4; display:block; margin-bottom:7px; }
.contact-inner .form-group input,
.contact-inner .form-group textarea {
  width:100%; background:rgba(253,250,245,0.04);
  border:none; border-bottom:1px solid rgba(184,111,76,0.25);
  padding:11px 0 11px 4px; font-family:var(--font-body);
  font-size:0.9rem; color:var(--white); outline:none; resize:none;
  transition:border-color 0.3s;
}
.contact-inner .form-group input:focus,
.contact-inner .form-group textarea:focus { border-bottom-color:var(--copper); }
.koalendar-link { display:block; margin-top:22px; font-size:0.78rem; opacity:0.35; color:var(--white); }
.koalendar-link a { color:var(--teal); text-decoration:none; }

/* ─── FOOTER ─── */
footer {
  background:#0e1e26; color:var(--white);
  padding:32px 60px;
  display:flex; justify-content:space-between; align-items:center;
}
.footer-brand { font-family:var(--font-display); font-size:0.95rem; letter-spacing:0.2em; color:var(--copper); }
.footer-brand small { display:block; font-size:0.55rem; letter-spacing:0.3em; opacity:0.4; font-family:var(--font-body); margin-top:2px; }
.footer-links { display:flex; gap:26px; list-style:none; }
.footer-links a { text-decoration:none; font-size:0.7rem; opacity:0.3; color:var(--white); letter-spacing:0.1em; transition:opacity 0.2s; }
.footer-links a:hover { opacity:0.7; }
.footer-copy { font-size:0.68rem; opacity:0.2; letter-spacing:0.07em; }

/* ─── REVEAL ─── */
.reveal { opacity:1; transform:translateY(0); transition:opacity 0.65s ease, transform 0.65s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }

/* ─── GOUTTES D'EAU ─── */
.eau-container {
  position:fixed; inset:0; pointer-events:none; z-index:50; overflow:hidden;
}
.goutte-eau {
  position:absolute; top:-30px; opacity:0;
  animation:tomberEau ease-in linear infinite;
  will-change:transform, opacity;
}
.goutte-eau:nth-child(1)  { left: 7%;  animation-duration:8s;  animation-delay: 1s;  width:10px; }
.goutte-eau:nth-child(2)  { left:20%;  animation-duration:11s; animation-delay:10s;  width: 7px; }
.goutte-eau:nth-child(3)  { left:36%;  animation-duration: 9s; animation-delay:18s;  width:12px; }
.goutte-eau:nth-child(4)  { left:51%;  animation-duration:10s; animation-delay: 5s;  width: 8px; }
.goutte-eau:nth-child(5)  { left:65%;  animation-duration: 8s; animation-delay:24s;  width:11px; }
.goutte-eau:nth-child(6)  { left:78%;  animation-duration:12s; animation-delay: 7s;  width: 9px; }
.goutte-eau:nth-child(7)  { left:88%;  animation-duration: 9s; animation-delay:32s;  width:10px; }
.goutte-eau:nth-child(8)  { left:44%;  animation-duration:11s; animation-delay:15s;  width: 7px; }
@keyframes tomberEau {
  0%   { opacity:0;    transform:translateY(0) scaleY(1); }
  5%   { opacity:0.7; }
  40%  { transform:translateY(40vh) translateX(8px) scaleY(1.15); opacity:0.6; }
  75%  { transform:translateY(75vh) translateX(-5px) scaleY(1.1); opacity:0.4; }
  92%  { opacity:0.15; }
  100% { opacity:0;    transform:translateY(108vh) translateX(4px) scaleY(1); }
}

/* ─── RESPONSIVE ─── */
@media(max-width:900px){
  nav { padding:14px 22px; }
  .nav-links { display:none; }
  section { padding:70px 22px; }
  #hero { padding:100px 22px 60px; }
  .steps-grid, .valeurs-grid, .services-grid { grid-template-columns:1fr; gap:1px; }
  .tunnel-grid { grid-template-columns:1fr; gap:44px; }
  .team-grid { grid-template-columns:repeat(2,1fr); }
  .mission-grid { grid-template-columns:1fr; }
  .mission-visual { height:240px; }
  footer { flex-direction:column; gap:18px; text-align:center; }
  .footer-links { display:none; }
  .modal { padding:30px 20px; }
  .modal-header { flex-direction:column; }
}

/* ─── ANIMATION GOUTTE 3D TUNNEL ─── */
.tunnel-step-circle {
  width:36px; height:36px;
  border:1px solid var(--teal);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:0.78rem; color:var(--teal); flex-shrink:0;
  font-family:var(--font-display);
  position:relative;
  transform-style:preserve-3d;
  perspective:200px;
}

.tunnel-step:nth-child(1) .tunnel-step-circle { animation:drop3d 4s ease-in-out infinite 0s; }
.tunnel-step:nth-child(2) .tunnel-step-circle { animation:drop3d 4s ease-in-out infinite 0.7s; }
.tunnel-step:nth-child(3) .tunnel-step-circle { animation:drop3d 4s ease-in-out infinite 1.4s; }
.tunnel-step:nth-child(4) .tunnel-step-circle {
  animation:impact3d 4s ease-in-out infinite 2.1s;
  border-color:var(--copper); color:var(--copper);
}

.tunnel-step:nth-child(4) .tunnel-step-circle::before {
  content:""; position:absolute;
  width:36px; height:36px; border-radius:50%;
  border:1.5px solid var(--copper);
  animation:ripple 4s ease-out infinite 2.1s; opacity:0;
}
.tunnel-step:nth-child(4) .tunnel-step-circle::after {
  content:""; position:absolute;
  width:36px; height:36px; border-radius:50%;
  border:1px solid var(--teal);
  animation:ripple 4s ease-out infinite 2.5s; opacity:0;
}

@keyframes drop3d {
  0%, 60%, 100% { transform:rotateX(0deg) scale(1); opacity:0.5; border-color:var(--teal); color:var(--teal); box-shadow:none; }
  10% { transform:rotateX(25deg) scaleY(0.85) translateY(-3px); opacity:0.7; }
  20% { transform:rotateX(50deg) scaleY(0.6) translateY(-1px); opacity:0.9; border-color:var(--copper); color:var(--copper); }
  28% { transform:rotateX(70deg) scaleY(0.3) scaleX(1.2); opacity:1; box-shadow:0 4px 12px rgba(184,111,76,0.3); }
  35% { transform:rotateX(0deg) scale(1.15); opacity:1; border-color:var(--copper); box-shadow:0 0 0 4px rgba(184,111,76,0.15); }
  45% { transform:rotateX(0deg) scale(1); opacity:0.6; border-color:var(--teal); box-shadow:none; }
}

@keyframes impact3d {
  0%, 15%, 100% { transform:scale(1); opacity:0.5; border-color:var(--copper); box-shadow:none; }
  30% { transform:scale(1.3); opacity:1; box-shadow:0 0 0 6px rgba(184,111,76,0.2), 0 0 0 12px rgba(184,111,76,0.08); }
  40% { transform:scale(0.9); opacity:0.8; }
  50% { transform:scale(1.1); opacity:1; }
  60% { transform:scale(1); opacity:0.7; }
}

@keyframes ripple {
  0%   { transform:scale(1);   opacity:0.8; }
  70%  { transform:scale(3.5); opacity:0; }
  100% { transform:scale(3.5); opacity:0; }
}

/* ═══════════════════════════════════════
   AMBIANCE AQUATIQUE UNIFIÉE
   ═══════════════════════════════════════ */
@keyframes aqua {
  0%,100% { transform: translateY(0px) translateX(0px); }
  25%     { transform: translateY(-5px) translateX(2px); }
  50%     { transform: translateY(-3px) translateX(-2px); }
  75%     { transform: translateY(-6px) translateX(1px); }
}
@keyframes dropHit {
  0%,100% { transform: translateY(0px) scale(1); }
  8%      { transform: translateY(-8px) scale(1.03); }
  16%     { transform: translateY(4px) scale(0.98); }
  28%     { transform: translateY(-4px) scale(1.01); }
  40%     { transform: translateY(2px) scale(0.995); }
  55%     { transform: translateY(0px) scale(1); }
}
@keyframes borderBreath {
  0%,100% { border-left-color: var(--teal); }
  50%     { border-left-color: var(--copper); }
}
@keyframes surfaceRipple {
  0%   { box-shadow: 0 0 0 0px rgba(59,122,120,0.4); }
  60%  { box-shadow: 0 0 0 18px rgba(59,122,120,0); }
  100% { box-shadow: 0 0 0 0px rgba(59,122,120,0); }
}
@keyframes waveSepAnim {
  0%,100% { transform: scaleX(1) translateX(0); }
  50%     { transform: scaleX(1.06) translateX(3px); }
}

.valeur-card:nth-child(1) { animation: aqua 6s ease-in-out infinite 0s; }
.valeur-card:nth-child(2) { animation: aqua 6s ease-in-out infinite 1.4s; }
.valeur-card:nth-child(3) { animation: aqua 6s ease-in-out infinite 2.8s; }
.valeur-card:nth-child(4) { animation: aqua 6s ease-in-out infinite 0.7s; }
.valeur-card:nth-child(5) { animation: aqua 6s ease-in-out infinite 2.1s; }

.pillar:nth-child(1) { animation: aqua 6s ease-in-out infinite 0s,   dropHit 11s ease-in-out infinite 2s; }
.pillar:nth-child(2) { animation: aqua 6s ease-in-out infinite 1.4s, dropHit 11s ease-in-out infinite 5.5s; }
.pillar:nth-child(3) { animation: aqua 6s ease-in-out infinite 2.8s, dropHit 11s ease-in-out infinite 8.5s; }

.pillar:nth-child(1) .pillar-mark { animation: borderBreath 6s ease-in-out infinite, surfaceRipple 11s ease-out infinite 2s; }
.pillar:nth-child(2) .pillar-mark { animation: borderBreath 6s ease-in-out infinite 1.8s, surfaceRipple 11s ease-out infinite 5.5s; }
.pillar:nth-child(3) .pillar-mark { animation: borderBreath 6s ease-in-out infinite 3.5s, surfaceRipple 11s ease-out infinite 8.5s; }

.team-card:nth-child(1) { animation: aqua 6s ease-in-out infinite 0s,   dropHit 12s ease-in-out infinite 3s; }
.team-card:nth-child(2) { animation: aqua 6s ease-in-out infinite 1.4s, dropHit 12s ease-in-out infinite 6.5s; }
.team-card:nth-child(3) { animation: aqua 6s ease-in-out infinite 2.8s, dropHit 12s ease-in-out infinite 9.5s; }
.team-card:nth-child(4) { animation: aqua 6s ease-in-out infinite 0.7s, dropHit 12s ease-in-out infinite 1.5s; }
.team-card:nth-child(5) { animation: aqua 6s ease-in-out infinite 2.1s, dropHit 12s ease-in-out infinite 4.5s; }
.team-card:nth-child(6) { animation: aqua 6s ease-in-out infinite 3.5s, dropHit 12s ease-in-out infinite 7.5s; }
.team-card:nth-child(7) { animation: aqua 6s ease-in-out infinite 1.0s, dropHit 12s ease-in-out infinite 2.5s; }

.service-card:nth-child(1) { animation: aqua 6s ease-in-out infinite 0s; }
.service-card:nth-child(2) { animation: aqua 6s ease-in-out infinite 1.4s; }
.service-card:nth-child(3) { animation: aqua 6s ease-in-out infinite 2.8s; }
.service-card:nth-child(4) { animation: aqua 6s ease-in-out infinite 0.7s; }
.service-card:nth-child(5) { animation: aqua 6s ease-in-out infinite 2.1s; }
.service-card:nth-child(6) { animation: aqua 6s ease-in-out infinite 3.5s; }

.step-card.illumine:nth-child(1) { animation: aqua 6s ease-in-out infinite 0s; }
.step-card.illumine:nth-child(2) { animation: aqua 6s ease-in-out infinite 1.4s; }
.step-card.illumine:nth-child(3) { animation: aqua 6s ease-in-out infinite 2.8s; }

.partner-logo:nth-child(1) { }
.partner-logo:nth-child(2) { }
.partner-logo:nth-child(3) { }
.partner-logo:nth-child(4) { }
.partner-logo:nth-child(5) { }
.partner-logo:nth-child(6) { }

.wave-sep { animation: waveSepAnim 6s ease-in-out infinite; transform-origin: left center; }
.wave-sep::after { animation: waveSepAnim 6s ease-in-out infinite 1.4s; transform-origin: left center; }

.valeur-card:hover,
.pillar:hover,
.team-card:hover,
.service-card:hover,
.step-card:hover,
.partner-logo:hover { animation: none !important; }
.pillar:hover .pillar-mark { animation: none !important; }

@media (prefers-reduced-motion: reduce) {
  .valeur-card, .pillar, .team-card, .service-card,
  .step-card, .partner-logo, .wave-sep, .pillar-mark {
    animation: none !important;
  }
}

/* HERO CENTRÉ */
#hero { justify-content:center; }
#hero .hero-content { text-align:center; max-width:760px; margin:0 auto; }
#hero .hero-eyebrow { justify-content:center; }
#hero .hero-sub { border-left:none; border-top:1px solid var(--teal); border-bottom:1px solid var(--teal); padding:14px 0; max-width:580px; margin:0 auto 0; }
.hero-buttons { display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:40px; }
.hero-btn { background:transparent; border:1px solid rgba(35,75,94,0.3); color:var(--deep); padding:12px 26px; font-family:var(--font-body); font-size:0.76rem; letter-spacing:0.16em; text-transform:uppercase; text-decoration:none; display:inline-block; transition:all 0.3s; cursor:pointer; }
.hero-btn:hover { background:var(--deep); color:var(--white); transform:translateY(-2px); }
.hero-btn.primary { background:var(--deep); color:var(--white); }
.hero-btn.primary:hover { background:var(--copper); border-color:var(--copper); }

/* SERVICE MODAL */
.service-overlay { display:none; position:fixed; inset:0; z-index:250; background:rgba(26,46,56,0.88); backdrop-filter:blur(10px); align-items:center; justify-content:center; padding:40px; }
.service-overlay.open { display:flex; }
.service-modal { background:var(--white); max-width:680px; width:100%; max-height:88vh; overflow-y:auto; padding:52px; position:relative; animation:modalIn 0.35s ease; }
.svc-close { position:absolute; top:18px; right:22px; background:none; border:none; cursor:pointer; font-size:1.2rem; color:var(--ink); opacity:0.3; }
.svc-close:hover { opacity:1; }
.service-modal-img { width:100%; height:200px; object-fit:cover; margin-bottom:28px; }
.service-modal h2 { font-family:var(--font-display); font-size:1.9rem; font-weight:300; color:var(--deep); margin-bottom:14px; }
.service-modal-desc { font-size:0.92rem; line-height:1.85; opacity:0.7; margin-bottom:24px; border-left:2px solid var(--teal); padding-left:16px; }
.service-prix { display:inline-block; background:var(--sand); border:1px solid rgba(184,111,76,0.3); padding:10px 18px; font-family:var(--font-display); font-size:1.1rem; color:var(--deep); margin-bottom:24px; }
.service-prix span { font-size:0.66rem; letter-spacing:0.14em; text-transform:uppercase; opacity:0.5; display:block; margin-bottom:3px; }
.service-details { list-style:none; margin-bottom:28px; padding:0; }
.service-details li { font-size:0.85rem; opacity:0.65; padding:5px 0 5px 16px; position:relative; }
.service-details li::before { content:''; position:absolute; left:0; top:13px; width:6px; height:1px; background:var(--copper); }

/* DEVIS MODAL */
.devis-overlay { display:none; position:fixed; inset:0; z-index:300; background:rgba(26,46,56,0.92); backdrop-filter:blur(10px); align-items:center; justify-content:center; padding:40px; }
.devis-overlay.open { display:flex; }
.devis-modal { background:var(--white); max-width:620px; width:100%; max-height:90vh; overflow-y:auto; padding:48px; position:relative; animation:modalIn 0.35s ease; }
.devis-close { position:absolute; top:18px; right:22px; background:none; border:none; cursor:pointer; font-size:1.2rem; color:var(--ink); opacity:0.3; }
.devis-close:hover { opacity:1; }
.devis-modal h2 { font-family:var(--font-display); font-size:1.9rem; font-weight:300; color:var(--deep); margin-bottom:6px; }
.devis-modal .sub { font-size:0.82rem; opacity:0.4; margin-bottom:30px; }
.devis-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.devis-field { margin-bottom:16px; }
.devis-field label { display:block; font-size:0.64rem; letter-spacing:0.2em; text-transform:uppercase; opacity:0.4; margin-bottom:7px; }
.devis-field input, .devis-field select, .devis-field textarea { width:100%; background:transparent; border:none; border-bottom:1px solid rgba(35,75,94,0.2); padding:10px 0 10px 2px; font-family:var(--font-body); font-size:0.9rem; color:var(--ink); outline:none; resize:none; }
.devis-field input:focus, .devis-field select:focus, .devis-field textarea:focus { border-bottom-color:var(--copper); }
.devis-confirm { font-size:0.8rem; color:var(--teal); margin-top:12px; display:none; text-align:center; }

/* CONTACT 3 NIVEAUX */
.contact-levels { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; max-width:960px; margin:0 auto; position:relative; z-index:2; }
.contact-level { background:rgba(255,255,255,0.04); border:1px solid rgba(184,111,76,0.15); padding:30px 24px; text-align:center; }
.contact-level.highlight { border-color:var(--copper); background:rgba(184,111,76,0.08); }
.contact-level-tag { font-size:0.6rem; letter-spacing:0.25em; text-transform:uppercase; color:var(--copper); display:block; margin-bottom:12px; }
.contact-level h3 { font-family:var(--font-display); font-size:1.15rem; font-weight:300; color:var(--white); margin-bottom:10px; }
.contact-level p { font-size:0.8rem; opacity:0.4; color:var(--white); margin-bottom:20px; line-height:1.6; }
@media(max-width:900px){ .contact-levels { grid-template-columns:1fr; } .devis-row { grid-template-columns:1fr; } }

/* OVERRIDE SÉCURITÉ */
.step-card, .valeur-card, .team-card, .service-card, .pillar, .reveal {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}
.steps-grid, .valeurs-grid, .team-grid, .services-grid {
  background: transparent !important;
}

/* MENU ACTIF AU SCROLL */
.nav-anchor.active { opacity:1 !important; color:var(--copper) !important; }
.nav-anchor.active::after { content:''; display:block; height:2px; background:var(--copper); margin-top:3px; animation:navUnderline 0.3s ease; }
@keyframes navUnderline { from{transform:scaleX(0);} to{transform:scaleX(1);} }

/* BOUTON REMONTER */
#backToTop {
  position:fixed; bottom:30px; right:30px; z-index:120;
  width:52px; height:52px; border-radius:50%;
  background:var(--white); border:1px solid rgba(184,111,76,0.3);
  box-shadow:0 6px 20px rgba(35,75,94,0.15);
  cursor:pointer; opacity:0; pointer-events:none;
  transition:opacity 0.4s ease, transform 0.3s ease;
  display:flex; align-items:center; justify-content:center;
}
#backToTop.show { opacity:1; pointer-events:all; }
#backToTop:hover { transform:translateY(-3px); }
#backToTop svg { width:30px; height:30px; animation:cwSpin 8s linear infinite; }

/* ÉLÉMENTS D'ACTION */
.action-key {
  position:relative;
  transition:color 0.6s ease, text-shadow 0.6s ease, box-shadow 0.6s ease, transform 0.6s ease;
}
h3.action-key.lit, h2.action-key.lit {
  color:var(--copper) !important;
  text-shadow:0 0 28px rgba(184,111,76,0.75), 0 0 50px rgba(184,111,76,0.35);
}
button.action-key.lit, a.action-key.lit {
  box-shadow:0 0 32px rgba(184,111,76,0.75), 0 0 0 2px rgba(184,111,76,0.5), 0 0 60px rgba(184,111,76,0.2);
  transform:translateY(-2px);
}

/* SILLAGE DE SCROLL — luminosité cuivrée renforcée */
.step-card, .valeur-card, .team-card, .service-card, .pillar, .partner-logo {
  transition:box-shadow 0.5s ease;
}
.swept {
  box-shadow:0 0 40px rgba(184,111,76,0.45), 0 0 80px rgba(184,111,76,0.15) !important;
}

.team-location.locatable {
  cursor: pointer;
  text-decoration: underline dotted rgba(184,111,76,0.5);
  transition: color 0.2s, text-decoration-color 0.2s;
}
.team-location.locatable:hover {
  color: var(--copper);
  text-decoration-color: var(--copper);
}

/* ─── MAP OVERLAY ─── */
.map-overlay {
  display:none; position:fixed; inset:0; z-index:260;
  background:rgba(26,46,56,0.9); backdrop-filter:blur(10px);
  align-items:center; justify-content:center; padding:24px;
}
.map-overlay.open { display:flex; }
.map-modal {
  background:var(--white); max-width:920px; width:100%;
  padding:0; position:relative;
  animation:modalIn 0.35s ease;
  overflow:hidden;
}
.map-modal-header {
  padding:22px 28px 16px; display:flex; align-items:center; justify-content:space-between;
  border-bottom:1px solid rgba(35,75,94,0.08);
}
.map-modal-header h3 {
  font-family:var(--font-display); font-size:1.3rem; font-weight:300; color:var(--deep); margin:0;
}
.map-modal-header p {
  font-size:0.8rem; opacity:0.5; margin-top:4px;
}
.map-close {
  background:none; border:none; cursor:pointer;
  font-size:1.2rem; color:var(--ink); opacity:0.35; transition:opacity 0.2s;
}
.map-close:hover { opacity:1; }
#expertsMapContainer {
  width:100%; height:480px;
}
@media(max-width:900px){
  #expertsMapContainer { height:340px; }
  .map-modal { max-width:100%; }
}

/* Marqueur personnalisé — point cuivre pulsant, bien visible même dézoomé */
.expert-marker {
  position:relative; width:26px; height:26px;
}
.expert-marker .dot-core {
  position:absolute; top:9px; left:9px;
  width:14px; height:14px; border-radius:50%;
  background:var(--copper);
  box-shadow: 0 0 0 3px rgba(253,250,245,0.9), 0 0 14px 4px rgba(184,111,76,0.85);
  z-index:2;
}
.expert-marker.active .dot-core {
  background:var(--deep);
  box-shadow: 0 0 0 3px rgba(253,250,245,0.9), 0 0 16px 5px rgba(35,75,94,0.9);
}
.expert-marker .dot-pulse {
  position:absolute; inset:0; border-radius:50%;
  background:rgba(184,111,76,0.55);
  animation: markerPulse 2s ease-out infinite;
}
.expert-marker.active .dot-pulse {
  background:rgba(35,75,94,0.55);
}
.expert-marker .dot-pulse-2 {
  position:absolute; inset:0; border-radius:50%;
  background:rgba(184,111,76,0.4);
  animation: markerPulse 2s ease-out infinite 0.6s;
}
.expert-marker.active .dot-pulse-2 {
  background:rgba(35,75,94,0.4);
}
@keyframes markerPulse {
  0%   { transform:scale(0.5); opacity:1; }
  80%  { transform:scale(2.6); opacity:0; }
  100% { transform:scale(2.6); opacity:0; }
}
.leaflet-popup-content-wrapper {
  border-radius:0; font-family:var(--font-body);
}
.leaflet-popup-content { margin:12px 16px; font-size:0.85rem; color:var(--ink); }
.leaflet-popup-content strong { color:var(--deep); font-family:var(--font-display); font-size:1rem; }
/* ─── TARIFS ─── */
#tarifs { background:var(--mist); }
.tarifs-header { text-align:center; margin-bottom:56px; }
.tarifs-header .section-sub { margin:0 auto; }
.tarifs-header .wave-sep { margin:0 auto 32px; }
.tarifs-subtitle {
  font-family: var(--font-display);
  font-size: 1.3rem;
  font-weight: 400;
  color: var(--deep);
  opacity: 0.75;
  margin-bottom: 20px;
}

.tarifs-top { margin-bottom:48px; }

.tarifs-columns {
  display:grid; grid-template-columns:0.85fr 1.15fr;
  gap:60px; max-width:1300px; margin:0 auto;
  align-items:start;
}

.tarifs-image-col {
  position:sticky; top:110px;
  display:flex; justify-content:center;
}
.tarifs-image {
  width:100%; max-width:420px; height:auto; display:block;
  border-radius:18px;
  box-shadow:0 25px 60px rgba(35,75,94,0.22);
}

.tarifs-content-col { text-align:left; }
.tarifs-block-title {
  font-family:var(--font-display); font-size:1.7rem; font-weight:600;
  color:var(--deep); margin-bottom:8px;
}
.tarifs-block .tarifs-subtitle { font-size:1rem; text-align:left; margin-bottom:14px; }
.tarifs-block .section-sub { font-size:0.86rem; text-align:left; max-width:none; margin-bottom:26px; }
.tarifs-block .tarifs-note { text-align:left; }

.tarifs-mini-grid {
  display:grid; grid-template-columns:1fr 1fr;
  gap:14px; margin-bottom:24px;
}
.tarifs-mini-grid .tarif-card { padding:24px 16px; background:var(--white); text-align:center; }
.tarifs-mini-grid .tarif-formule { font-size:0.62rem; margin-bottom:10px; letter-spacing:0.14em; }
.tarifs-mini-grid .tarif-prix { font-size:1.55rem; }
.tarifs-mini-grid .tarif-prix span { font-size:0.72rem; }
.tarifs-mini-grid .tarif-equiv { font-size:0.68rem; margin:6px 0 12px; }
.tarifs-mini-grid .tarif-economie { font-size:0.62rem; margin-bottom:12px; }
.tarifs-mini-grid .tarif-btn { font-size:0.64rem; padding:9px; }
.tarifs-mini-grid .tarif-badge { font-size:0.54rem; padding:4px 12px; }
.tarif-span-2 { grid-column:1 / -1; }

@media(max-width:900px){
  .tarifs-columns { grid-template-columns:1fr; gap:44px; }
  .tarifs-image-col { position:static; }
  .tarifs-content-col { text-align:center; }
  .tarifs-block .tarifs-subtitle,
  .tarifs-block .section-sub,
  .tarifs-block .tarifs-note { text-align:center; }
}

.tarifs-grid {
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:1px; background:rgba(35,75,94,0.1);
  max-width:1100px; margin:0 auto;
}
.tarif-card {
  background:var(--white); padding:40px 26px;
  text-align:center; position:relative;
  transition:transform 0.3s, box-shadow 0.3s;
}
.tarif-card:hover { transform:translateY(-4px); box-shadow:0 12px 40px rgba(35,75,94,0.1); }
.tarif-card.best {
  background:var(--deep);
}
.tarif-badge {
  position:absolute; top:-1px; left:50%; transform:translateX(-50%);
  background:var(--copper); color:var(--white);
  font-size:0.6rem; letter-spacing:0.15em; text-transform:uppercase;
  padding:5px 16px; white-space:nowrap;
}
.tarif-formule {
  font-size:0.72rem; letter-spacing:0.25em; text-transform:uppercase;
  color:var(--teal); margin-bottom:18px; display:block;
}
.tarif-card.best .tarif-formule { color:var(--copper); }
.tarif-prix {
  font-family:var(--font-display); font-size:2.4rem; font-weight:600;
  color:var(--deep); line-height:1;
}
.tarif-card.best .tarif-prix { color:var(--white); }
.tarif-prix span { font-size:0.9rem; font-weight:300; opacity:0.6; }
.tarif-equiv {
  font-size:0.78rem; opacity:0.5; margin:8px 0 22px;
}
.tarif-card.best .tarif-equiv { color:var(--white); opacity:0.55; }
.tarif-economie {
  font-size:0.72rem; color:var(--copper); font-weight:500; margin-bottom:18px;
}
.tarif-card.best .tarif-economie { color:var(--sand); }
.tarif-btn {
  display:block; width:100%; padding:12px; margin-top:10px;
  background:transparent; border:1px solid rgba(35,75,94,0.25);
  color:var(--deep); font-family:var(--font-body); font-size:0.74rem;
  letter-spacing:0.14em; text-transform:uppercase;
  cursor:pointer; text-decoration:none; transition:all 0.3s;
}
.tarif-btn:hover { background:var(--deep); color:var(--white); border-color:var(--deep); }
.tarif-card.best .tarif-btn { border-color:rgba(253,250,245,0.3); color:var(--white); }
.tarif-card.best .tarif-btn:hover { background:var(--copper); border-color:var(--copper); }
.tarifs-note {
  text-align:center; margin-top:28px; font-size:0.78rem; opacity:0.45; font-style:italic;
}
@media(max-width:900px){ .tarifs-grid { grid-template-columns:1fr; } }

/* ───── NORIA PRISME ───── */
#prisme { background:var(--ink); color:var(--white); text-align:center; }
.prisme-inner { max-width:1300px; margin:0 auto; }
.prisme-title {
  font-family:var(--font-display); font-weight:300;
  font-size:clamp(2.4rem, 5vw, 3.6rem); color:var(--white);
  letter-spacing:0.04em; margin-bottom:10px;
}
.prisme-title strong { font-weight:600; color:var(--copper); }

/* ───── NORIA PRISME · LE SOMMET ───── */
#prisme-sommet { background:var(--ink); color:var(--white); text-align:left; }
#prisme-sommet .prisme-title { text-align:left; margin-bottom:4px; }
.prisme-sommet-tagline {
  font-family:var(--font-display); font-weight:400;
  font-size:1.3rem; color:var(--white); opacity:0.85;
  margin-bottom:18px;
}
.prisme-sommet-word {
  font-size:1.8em; font-weight:600; color:var(--copper);
  display:inline-block;
}
.prisme-tagline {
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:1.15rem; color:var(--white); opacity:0.7;
  max-width:640px; margin-bottom:28px; line-height:1.6;
}

.prisme-grid {
  display:grid; grid-template-columns:1.9fr 1fr;
  gap:50px; align-items:center; text-align:left; margin-top:40px;
}
.prisme-visual {
  display:flex; align-items:center; justify-content:center;
  padding:22px; background:var(--ink); border-radius:22px;
}
.prisme-visual svg { width:100%; max-width:460px; height:auto; }
.prisme-image {
  width:100%;
  max-width:900px;
  height:auto;
  display:block;
  margin:0 auto;
  border-radius:18px;
  box-shadow:0 30px 80px rgba(0,0,0,0.45), 0 0 50px rgba(184,111,76,0.05);
}

.prisme-ray {
  stroke-dasharray: 9 7;
  animation: prismeRayFlow 1.4s linear infinite;
  animation-play-state: paused;
}
@keyframes prismeRayFlow {
  to { stroke-dashoffset: -16; }
}

.prisme-beam-core {
  animation: prismeTrackPulse 3.5s ease-in-out infinite;
  animation-play-state: paused;
}
@keyframes prismeTrackPulse {
  0%, 100% { opacity:0.35; }
  50% { opacity:0.6; }
}

.prisme-beam-travel {
  transform-box: fill-box;
  transform-origin: center;
  animation: prismeTravel 3.5s ease-in infinite;
  animation-play-state: paused;
}
@keyframes prismeTravel {
  0%   { transform:translateX(0);    opacity:0; }
  8%   { opacity:1; }
  62%  { transform:translateX(58px); opacity:1; }
  72%  { transform:translateX(62px); opacity:0; }
  100% { transform:translateX(62px); opacity:0; }
}

.prisme-beam-dot-big {
  transform-box: fill-box;
  transform-origin: center;
  animation: prismeDotPulse 3.5s ease-in-out infinite;
  animation-play-state: paused;
}
@keyframes prismeDotPulse {
  0%, 58%  { transform:scale(1);    filter:brightness(1); }
  72%      { transform:scale(1.8);  filter:brightness(2); }
  86%      { transform:scale(1.2);  filter:brightness(1.3); }
  100%     { transform:scale(1);    filter:brightness(1); }
}

.prisme-entry-dot {
  transform-box: fill-box;
  transform-origin: center;
  animation: prismeEntryPulse 3.5s ease-in-out infinite;
  animation-play-state: paused;
}
@keyframes prismeEntryPulse {
  0%, 88%, 100% { transform:scale(1);   opacity:0.75; filter:brightness(1); }
  6%            { transform:scale(2);   opacity:1;    filter:brightness(1.8); }
  16%           { transform:scale(1.1); opacity:0.85; filter:brightness(1.1); }
}

.prisme-body {
  animation: prismeInnerGlow 3.5s ease-in-out infinite;
  animation-play-state: paused;
}
@keyframes prismeInnerGlow {
  0%, 10%  { filter:brightness(1); opacity:0.95; }
  62%      { filter:brightness(1.55); opacity:1; }
  74%      { filter:brightness(1.15); opacity:0.97; }
  100%     { filter:brightness(1); opacity:0.95; }
}

/* Démarrage des animations au scroll seulement */
.prisme-visual.in-view .prisme-ray,
.prisme-visual.in-view .prisme-beam-core,
.prisme-visual.in-view .prisme-beam-travel,
.prisme-visual.in-view .prisme-beam-dot-big,
.prisme-visual.in-view .prisme-entry-dot,
.prisme-visual.in-view .prisme-body {
  animation-play-state: running;
}

/* Titre qui s'illumine à l'arrivée */
.prisme-title { transition:text-shadow 0.6s ease, opacity 0.6s ease; }
.prisme-title.illumine strong {
  animation: prismeTitleGlow 1.6s ease-out;
}
@keyframes prismeTitleGlow {
  0%   { text-shadow:0 0 0 rgba(184,111,76,0); }
  40%  { text-shadow:0 0 22px rgba(184,111,76,0.75); }
  100% { text-shadow:0 0 0 rgba(184,111,76,0); }
}

.prisme-intro { font-size:0.92rem; line-height:1.85; opacity:0.7; margin-bottom:16px; }

.prisme-points { margin:28px 0 32px; display:flex; flex-direction:column; gap:20px; }
.prisme-point {
  display:flex; align-items:flex-start; gap:14px;
  opacity:0.4; line-height:1.6;
  border-bottom:1px solid rgba(253,250,245,0.08); padding-bottom:16px;
  transition:opacity 0.5s ease, border-color 0.5s ease, transform 0.5s ease;
}
.prisme-point span {
  font-family:var(--font-display); font-size:1rem; color:var(--teal);
  opacity:0.7; flex-shrink:0; min-width:24px;
  transition:color 0.5s ease, opacity 0.5s ease;
}
.prisme-point-body { display:flex; flex-direction:column; gap:6px; }
.prisme-point-title {
  font-family:var(--font-display); font-size:1.02rem; font-weight:600;
  color:var(--white); letter-spacing:0.01em;
}
.prisme-point-desc { font-size:0.85rem; opacity:0.85; line-height:1.7; margin:0; }
.prisme-point.illumine {
  opacity:1; border-color:rgba(184,111,76,0.35); transform:translateX(4px);
}
.prisme-point.illumine span { color:var(--copper); opacity:1; }

.prisme-point.illumine-final {
  opacity:1; transform:translateX(4px);
  background:rgba(184,111,76,0.14);
  border-color:var(--copper);
  padding:14px 16px 14px 14px;
  color:var(--white);
}
.prisme-point.illumine-final span {
  color:var(--copper); opacity:1;
  text-shadow:0 0 12px rgba(184,111,76,0.6);
}

.prisme-pricing { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.prisme-price-card {
  background:rgba(255,255,255,0.04); border:1px solid rgba(184,111,76,0.2);
  padding:24px 20px; text-align:center; position:relative;
  transition:transform 0.3s, box-shadow 0.3s;
}
.prisme-price-card:hover { transform:translateY(-4px); box-shadow:0 12px 40px rgba(0,0,0,0.25); }
.prisme-price-label { font-size:0.68rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--copper); opacity:0.85; display:block; margin-bottom:10px; }
.prisme-price { font-family:var(--font-display); font-size:1.9rem; color:var(--white); margin-bottom:16px; font-weight:300; }
.prisme-price span { font-size:0.9rem; opacity:0.5; }

.prisme-price-card.best {
  background:var(--copper); border-color:var(--copper);
}
.prisme-price-card.best .prisme-price-label { color:var(--ink); opacity:0.85; }
.prisme-price-card.best .prisme-price { color:var(--white); }
.prisme-price-card.best .tarif-btn { border-color:rgba(255,255,255,0.4); color:var(--white); }
.prisme-price-card.best .tarif-btn:hover { background:var(--deep); color:var(--white); border-color:var(--deep); }

@media(max-width:900px){
  .prisme-grid { grid-template-columns:1fr; text-align:center; }
  .prisme-points { text-align:left; }
  .prisme-pricing { grid-template-columns:1fr; }
}

.disc-q-text { font-family:var(--font-display); font-size:clamp(1.3rem,2.5vw,1.8rem); font-weight:300; color:var(--white); margin-bottom:36px; line-height:1.4; }
.disc-options { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.disc-option { background:rgba(255,255,255,0.04); border:1px solid rgba(184,111,76,0.15); padding:18px 22px; cursor:pointer; font-family:var(--font-body); font-size:0.9rem; color:var(--white); opacity:0.75; transition:all 0.25s; text-align:left; line-height:1.5; }
.disc-option:hover { background:rgba(184,111,76,0.12); border-color:var(--copper); opacity:1; transform:translateX(4px); }
.disc-option.selected { background:rgba(184,111,76,0.2); border-color:var(--copper); opacity:1; }
.disc-q-num { font-size:0.68rem; letter-spacing:0.3em; text-transform:uppercase; color:var(--copper); opacity:0.6; margin-bottom:16px; display:block; }
.disc-profile-badge { display:inline-block; background:var(--copper); color:var(--white); font-size:0.65rem; letter-spacing:0.2em; text-transform:uppercase; padding:4px 14px; margin-bottom:16px; }
.disc-profile-letter { font-family:var(--font-display); font-size:5rem; font-weight:600; color:var(--copper); line-height:1; margin-bottom:8px; }
.disc-profile-name { font-family:var(--font-display); font-size:1.6rem; font-weight:300; color:var(--white); margin-bottom:20px; }
.disc-profile-text { font-size:0.88rem; color:var(--white); opacity:0.65; line-height:1.8; margin-bottom:20px; }
.disc-profile-section { margin-bottom:20px; }
.disc-profile-section h4 { font-family:var(--font-display); font-size:0.9rem; font-weight:600; color:var(--copper); letter-spacing:0.1em; text-transform:uppercase; margin-bottom:10px; }
.disc-profile-section ul { list-style:none; padding:0; }
.disc-profile-section ul li { font-size:0.85rem; color:var(--white); opacity:0.6; padding:4px 0; padding-left:16px; position:relative; }
.disc-profile-section ul li::before { content:""; position:absolute; left:0; top:12px; width:6px; height:1px; background:var(--copper); }
.disc-expert-rec { background:rgba(184,111,76,0.1); border-left:3px solid var(--copper); padding:16px 20px; margin-top:24px; }
.disc-expert-rec p { font-size:0.82rem; color:var(--white); opacity:0.7; line-height:1.6; }
.disc-expert-rec strong { color:var(--copper); font-weight:500; }
@media(max-width:900px){ #disc-result > div { grid-template-columns:1fr; gap:40px; } .disc-options { grid-template-columns:1fr; } }

/* ─── BANDEAU RGPD ─── */
.cookie-banner {
  position:fixed; left:0; right:0; bottom:0; z-index:400;
  background:var(--ink); color:var(--white);
  padding:20px 28px;
  display:flex; align-items:center; justify-content:space-between; gap:28px;
  flex-wrap:wrap;
  border-top:1px solid rgba(184,111,76,0.3);
  box-shadow:0 -8px 30px rgba(0,0,0,0.35);
  transform:translateY(0);
  transition:transform 0.4s ease, opacity 0.4s ease;
}
.cookie-banner.hidden {
  transform:translateY(100%);
  opacity:0;
  pointer-events:none;
}
.cookie-banner p {
  font-size:0.82rem; line-height:1.6; opacity:0.75;
  max-width:720px; margin:0;
}
.cookie-actions { display:flex; gap:12px; flex-shrink:0; }
.cookie-btn {
  font-family:var(--font-body); font-size:0.74rem; letter-spacing:0.1em; text-transform:uppercase;
  padding:11px 24px; cursor:pointer; border:1px solid rgba(253,250,245,0.3);
  background:transparent; color:var(--white); transition:all 0.25s;
  white-space:nowrap;
}
.cookie-btn.cookie-accept { background:var(--copper); border-color:var(--copper); }
.cookie-btn.cookie-accept:hover { background:var(--white); color:var(--copper); border-color:var(--white); }
.cookie-btn.cookie-refuse:hover { border-color:var(--white); }

@media(max-width:900px){
  .cookie-banner { padding:18px 20px; flex-direction:column; align-items:flex-start; }
  .cookie-actions { width:100%; }
  .cookie-btn { flex:1; text-align:center; }
}

/* ═══════════════════════════════════════
   AJUSTEMENTS MOBILE (26/09/2026)
   ═══════════════════════════════════════ */

/* Boutons "Nous contacter" lisibles sur fond sombre (Prisme + Sommet) */
#prisme .prisme-price-card:not(.best) .tarif-btn,
#prisme-sommet .tarif-btn {
  color:var(--mist); border-color:rgba(244,239,230,0.35);
}
#prisme .prisme-price-card:not(.best) .tarif-btn:hover,
#prisme-sommet .tarif-btn:hover {
  background:var(--copper); border-color:var(--copper); color:var(--white);
}

/* Bouton menu (caché sur ordinateur) */
.nav-toggle { display:none; }

@media(max-width:900px){
  /* Le grand cercle de la section Mission ne dépasse plus de l'écran */
  .mission-visual { overflow:hidden; }

  /* Bouton ☰ */
  .nav-toggle {
    display:flex; flex-direction:column; justify-content:center; gap:5px;
    width:44px; height:44px; padding:10px;
    background:none; border:none; cursor:pointer;
  }
  .nav-toggle span {
    display:block; width:24px; height:2px; background:var(--deep);
    transition:transform 0.3s, opacity 0.3s;
  }
  nav.open .nav-toggle span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
  nav.open .nav-toggle span:nth-child(2) { opacity:0; }
  nav.open .nav-toggle span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

  /* Menu déroulant */
  nav.open .nav-links {
    display:flex; flex-direction:column; align-items:stretch; gap:0;
    position:absolute; top:100%; left:0; right:0;
    background:rgba(244,239,230,0.98); backdrop-filter:blur(16px);
    padding:8px 22px 22px;
    border-bottom:1px solid rgba(35,75,94,0.1);
    box-shadow:0 18px 40px rgba(35,75,94,0.12);
    max-height:calc(100vh - 72px); overflow-y:auto;
  }
  nav.open .nav-links li { border-bottom:1px solid rgba(35,75,94,0.08); }
  nav.open .nav-links li:last-child { border-bottom:none; }
  nav.open .nav-links a { display:block; padding:14px 0; font-size:0.8rem; opacity:0.8; }
  nav.open .nav-links .nav-cta { text-align:center; margin-top:14px; padding:14px; }
  nav.open .nav-anchor.active::after { display:none; }

  /* Contact : cartes l'une sous l'autre */
  #contact .contact-levels { grid-template-columns:1fr !important; }
}

@media(max-width:500px){
  /* Coordonnées des experts sur deux lignes propres */
  .team-contacts { flex-direction:column; gap:4px; }
}
