@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/inter-400.woff2) format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/inter-500.woff2) format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/inter-600.woff2) format('woff2');}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/playfair-display-500.woff2) format('woff2');}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/playfair-display-600.woff2) format('woff2');}

:root{
  --navy:#101c2c;
  --navy-2:#182840;
  --gold:#a9834f;
  --gold-light:#c9a877;
  --cream:#f7f5f0;
  --ink:#1c1c1a;
  --ink-soft:#55564f;
  --line:#e2ded3;
  --white:#ffffff;
  --pole-societes:#a9834f;
  --pole-social:#b5623f;
  --pole-immobilier:#3f7a68;
  --pole-fiscal:#3f5a78;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{ overflow-x:hidden; }
body{
  font-family:'Inter', sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.6;
  overflow-x:hidden;      /* safety net: nothing may push the page sideways */
  max-width:100vw;
}
h1,h2,h3,.serif{ font-family:'Playfair Display', serif; font-weight:500; letter-spacing:-0.01em; }
a{ color:inherit; text-decoration:none; }
p{ text-align:justify; text-justify:inter-word; }

/* scroll reveal — applied via JS (.reveal), neutralised if JS is off or motion reduced */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.3,1); will-change:opacity, transform; }
.reveal.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
}
.wrap{ max-width:1180px; margin:0 auto; padding:0 40px; }
img{max-width:100%; display:block;}

/* header */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(247,245,240,0.94);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.nav{ display:flex; align-items:center; justify-content:space-between; padding:16px 40px; max-width:1180px; margin:0 auto; }
.logo-mark{ display:flex; align-items:center; gap:10px; }
.logo-mark img{ height:48px; width:auto; }
.nav ul{ display:flex; gap:36px; list-style:none; font-size:14px; letter-spacing:0.02em; }
.nav ul a{ color:var(--ink-soft); transition:color .2s; }
.nav ul a:hover, .nav ul a.active{ color:var(--navy); }
.nav .cta{
  border:1px solid var(--navy); color:var(--navy); padding:10px 22px;
  font-size:13px; letter-spacing:0.04em; border-radius:2px;
}
.nav .cta:hover{ background:var(--navy); color:var(--white); }

/* On desktop the wrapper is transparent to layout: the <ul> and the Contact
   button stay direct flex children of .nav, exactly as before. */
.nav-links{ display:contents; }

/* burger button — hidden on desktop, revealed below 900px */
.nav-toggle{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  width:46px; height:42px; padding:11px 10px; cursor:pointer;
  background:none; border:1px solid var(--line); border-radius:2px;
  transition:border-color .2s ease;
}
.nav-toggle:hover{ border-color:var(--gold); }
.nav-toggle:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
.nav-toggle span{
  display:block; width:100%; height:2px; background:var(--navy); border-radius:2px;
  transition:transform .3s ease, opacity .2s ease;
}
.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* breadcrumb */
.breadcrumb{ padding:20px 40px 0; max-width:1180px; margin:0 auto; font-size:13px; color:var(--ink-soft); }
.breadcrumb a{ color:var(--ink-soft); }
.breadcrumb a:hover{ color:var(--navy); }
.breadcrumb span{ margin:0 6px; color:var(--line); }

/* hero (home) */
.hero{
  background:linear-gradient(180deg, var(--navy) 0%, var(--navy-2) 100%);
  color:var(--white);
  padding:150px 0 130px;
  position:relative;
  overflow:hidden;
}
/* hero background: a photograph of the firm, served from our own files.
   .hero-bg-video is kept as an alias so a self-hosted <video> can be dropped
   in later without touching the layout. */
.hero-bg-media, .hero-bg-video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;
}
.hero-overlay{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(16,28,44,0.82) 0%, rgba(16,28,44,0.72) 55%, rgba(16,28,44,0.92) 100%);
}
.hero-inner{ max-width:1180px; margin:0 auto; padding:0 40px; position:relative; z-index:2; }
.hero .eyebrow{
  color:var(--gold-light); font-size:13px; letter-spacing:0.18em; text-transform:uppercase; margin-bottom:22px; display:block;
}
.hero h1{ font-size:clamp(40px, 5.2vw, 68px); line-height:1.08; max-width:820px; margin-bottom:30px; }
.hero p{ font-size:18px; line-height:1.7; color:#c7cbd4; max-width:560px; margin-bottom:44px; }
.hero-actions{ display:flex; gap:16px; }
.btn-primary{
  background:var(--gold); color:var(--navy); padding:14px 28px; font-size:14px;
  font-weight:600; letter-spacing:0.02em; border-radius:2px; display:inline-block;
}
.btn-primary:hover{ background:var(--gold-light); }
.btn-ghost{
  border:1px solid rgba(255,255,255,0.35); color:var(--white); padding:14px 28px;
  font-size:14px; letter-spacing:0.02em; border-radius:2px; display:inline-block;
}
.btn-ghost:hover{ border-color:var(--white); }
.hero-locations{
  display:flex; gap:48px; margin-top:64px; padding-top:32px; border-top:1px solid rgba(255,255,255,0.15); flex-wrap:wrap;
}
/* The three items are links (Maps / tel:) but must not look like links:
   same colour and no underline, only a discreet hover cue. */
.hero-locations div, .hero-locations a{ font-size:13px; color:#a8adba; display:block; }
.hero-locations a{ text-decoration:none; transition:color .2s ease; }
.hero-locations a strong{ transition:color .2s ease; }
.hero-locations a:hover{ color:var(--white); }
.hero-locations a:hover strong{ color:var(--gold-light); }
.hero-locations a:focus-visible{ outline:2px solid var(--gold-light); outline-offset:4px; }
.hero-locations strong{ display:block; color:var(--white); font-size:14px; letter-spacing:0.04em; margin-bottom:4px; }

/* generic page hero (sub pages) */
.page-hero{
  background:linear-gradient(180deg, var(--navy) 0%, var(--navy-2) 100%);
  color:var(--white); padding:64px 40px 72px;
}
.page-hero .eyebrow{ color:var(--gold-light); font-size:13px; letter-spacing:0.16em; text-transform:uppercase; margin-bottom:14px; display:block; }
.page-hero h1{ font-size:38px; color:var(--white); max-width:720px; }
.page-hero p{ color:#c7cbd4; margin-top:16px; max-width:640px; font-size:16px; }

/* stats band */
.stats{ background:var(--white); border-bottom:1px solid var(--line); }
.stats-grid{ display:grid; grid-template-columns:repeat(4,1fr); }
.stat{ padding:44px 40px; text-align:center; border-right:1px solid var(--line); }
.stat:last-child{ border-right:none; }
.stat .num{ font-family:'Playfair Display', serif; font-weight:500; font-size:36px; color:var(--navy); transition:color .2s; }
.stat .lbl{ font-size:13px; color:var(--ink-soft); margin-top:6px; letter-spacing:0.02em; }
a.stat{ text-decoration:none; display:block; cursor:pointer; transition:background .25s ease; }
a.stat:hover{ background:#fdfbf7; }
a.stat:hover .num{ color:var(--gold); }

/* section generic */
section{ padding:112px 40px; }
.section-head{ max-width:660px; margin-bottom:64px; }
.section-head .eyebrow{ color:var(--gold); font-size:13px; letter-spacing:0.16em; text-transform:uppercase; margin-bottom:16px; display:block; }
.section-head h2{ font-size:clamp(30px, 3.2vw, 42px); line-height:1.15; color:var(--navy); margin-bottom:18px; }
.section-head p{ color:var(--ink-soft); font-size:16.5px; line-height:1.7; }

/* about */
.about{ background:var(--white); }
.about-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.about-text p{ color:var(--ink-soft); margin-bottom:18px; font-size:15.5px; }
.about-visual{
  aspect-ratio:4/5; background:linear-gradient(160deg, var(--navy) 0%, var(--navy-2) 60%, #24344c 100%);
  border-radius:4px; position:relative; display:flex; align-items:flex-end; padding:32px;
}
.about-visual span{ color:var(--gold-light); font-size:13px; letter-spacing:0.1em; text-transform:uppercase; }

/* expertises grid (teaser + overview) */
.expertises{ background:var(--cream); }
.exp-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); align-items:start; }
.exp-card{
  background:var(--white); padding:44px 32px 40px; display:flex; flex-direction:column; height:100%;
  position:relative; transition:background .25s ease, transform .25s ease, box-shadow .25s ease;
}
.exp-card:before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--pole-color, var(--gold));
  transform:scaleX(0); transform-origin:left; transition:transform .35s ease;
}
.exp-card:hover:before{ transform:scaleX(1); }
.exp-card:hover{ background:#fdfbf7; transform:translateY(-4px); box-shadow:0 14px 34px rgba(16,28,44,0.09); z-index:2; }
.exp-card h3{ font-size:20px; margin-bottom:12px; }
.exp-card p{ font-size:14px; color:var(--ink-soft); margin-bottom:20px; }
.exp-card .lnk{ font-size:13px; color:var(--navy); font-weight:600; border-bottom:1px solid var(--gold); padding-bottom:2px; margin-top:auto; align-self:flex-start; }
.exp-toggle{
  font-size:13px; color:var(--navy); font-weight:600; border:none; border-bottom:1px solid var(--gold);
  padding:0 0 2px; background:none; cursor:pointer; align-self:flex-start; margin-top:auto; font-family:'Inter', sans-serif;
}
.exp-toggle:hover{ color:var(--gold); }
.exp-panel{ margin-top:28px; padding-top:24px; border-top:1px solid var(--line); }
.exp-panel .pole-block{ background:none; border:none; padding:0; }
.exp-panel .pole-block h3{ color:var(--navy); margin-bottom:10px; }
.exp-panel .pole-block ul{ list-style:none; }
.exp-panel .pole-block li{ font-size:13.5px; color:var(--ink-soft); padding:8px 0 8px 18px; border-top:1px solid var(--line); position:relative; }
.exp-panel .pole-block li:first-child{ border-top:none; }
.exp-panel .pole-block li:before{ content:"—"; position:absolute; left:0; color:var(--gold); }
.exp-panel .pole-team{ background:var(--cream); border-radius:4px; }
.exp-panel .pole-team-list{ display:flex; flex-wrap:wrap; gap:10px; }
.exp-panel .pole-team-list a{ background:var(--white); border:1px solid var(--line); padding:8px 14px; border-radius:2px; font-size:13px; color:var(--navy); font-weight:500; }
.exp-panel .pole-team-list a:hover{ border-color:var(--gold); }

/* quote */
.quote{ background:var(--navy); color:var(--white); text-align:center; }
.quote-inner{ max-width:760px; margin:0 auto; }
.quote h2{ font-size:30px; line-height:1.4; color:var(--white); font-weight:400; }
.quote .attrib{ margin-top:28px; color:var(--gold-light); font-size:14px; letter-spacing:0.04em; }

/* team teaser + full index */
.team{ background:var(--white); }
.team-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
.team-grid.cols-5{ grid-template-columns:repeat(5,1fr); gap:20px; }
.member{ }
.member .photo{
  aspect-ratio:3/4; background:linear-gradient(150deg,#dcd6c8,#c9c2ae); border-radius:3px; margin-bottom:16px;
  display:flex; align-items:center; justify-content:center;
  font-family:'Playfair Display', serif; font-weight:500; font-size:28px; color:var(--navy);
}
.member h4{ font-size:15px; font-weight:500; color:var(--navy); font-family:'Playfair Display', serif; transition:color .2s ease; }
.member p{ font-size:13px; color:var(--ink-soft); margin-top:2px; }
.member:hover h4{ color:var(--gold); }

/* portrait hover: subtle zoom + light lift (uniform on all photos) */
.member .photo, .member-card .photo, .avocat-photo{ overflow:hidden; }
.member .photo img, .member-card .photo img, .avocat-photo img{
  transition:transform .55s cubic-bezier(.2,.7,.3,1), filter .45s ease;
}
.member:hover .photo img,
.member-card:hover .photo img,
.avocat-photo:hover img{ transform:scale(1.045); filter:brightness(1.06) contrast(1.04); }
.team-footer{ margin-top:48px; text-align:center; }
.team-footer a{ font-size:14px; color:var(--navy); font-weight:600; border-bottom:1px solid var(--gold); padding-bottom:3px; }

.pole-tag{
  display:inline-block; font-size:11px; letter-spacing:0.04em; text-transform:uppercase;
  padding:3px 9px; border-radius:2px; margin:8px 6px 0 0; color:var(--white);
}

.team-index-section{ margin-bottom:72px; }
.team-index-section:last-child{ margin-bottom:0; }
.team-index-head{ display:flex; align-items:baseline; gap:16px; margin-bottom:32px; border-bottom:1px solid var(--line); padding-bottom:16px; }
.team-index-head h2{ font-size:24px; color:var(--navy); }
.team-index-head span{ font-size:13px; color:var(--ink-soft); }
.team-index-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
.team-index-grid.cols-5{ grid-template-columns:repeat(5,1fr); gap:20px; }
.team-index-grid.cols-5 .member-card{ padding:18px; }
.associes-photo{ margin:0 auto 40px; border-radius:4px; overflow:hidden; max-width:480px; }
.associes-photo img{ width:100%; display:block; }
.member-card{ border:1px solid var(--line); background:var(--white); border-radius:4px; padding:24px; transition:border-color .25s ease, transform .25s ease, box-shadow .25s ease; display:flex; flex-direction:column; height:100%; }
.member-card:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:0 12px 28px rgba(16,28,44,0.08); }
.member-card .photo{ width:100%; }
.member-card .role{ font-size:12px; color:var(--ink-soft); margin-top:2px; }
.member-card .lnk{ display:inline-block; margin-top:auto; padding-top:14px; font-size:13px; color:var(--navy); font-weight:600; border-bottom:1px solid var(--gold); align-self:flex-start; }

/* cta */
.cta-band{ background:var(--cream); }
.cta-box{
  background:var(--white); border:1px solid var(--line); border-radius:4px;
  padding:64px; display:flex; align-items:center; justify-content:space-between; gap:40px;
}
.cta-box h2{ font-size:28px; color:var(--navy); max-width:420px; }
.cta-box p{ color:var(--ink-soft); margin-top:12px; max-width:420px; font-size:15px; }

/* avocat bio page */
.avocat-hero{ background:var(--white); padding:72px 40px; border-bottom:1px solid var(--line); }
.avocat-hero-grid{ display:grid; grid-template-columns:260px 1fr; gap:56px; align-items:start; }
.avocat-photo{
  aspect-ratio:3/4; background:linear-gradient(150deg,#dcd6c8,#c9c2ae); border-radius:4px;
  display:flex; align-items:center; justify-content:center; font-family:'Playfair Display', serif; font-weight:500; font-size:44px; color:var(--navy);
}
.avocat-title{ font-size:13px; color:var(--gold); text-transform:uppercase; letter-spacing:0.14em; margin-bottom:12px; }
.avocat-name{ font-size:40px; color:var(--navy); margin-bottom:10px; }
.avocat-role{ font-size:16px; color:var(--ink-soft); margin-bottom:20px; }
.avocat-facts{ display:flex; flex-direction:column; gap:24px; max-width:420px; margin-top:20px; padding-top:28px; border-top:1px solid var(--line); }
.avocat-facts h5{ font-size:12px; text-transform:uppercase; letter-spacing:0.08em; color:var(--ink-soft); margin-bottom:10px; }
.avocat-facts p, .avocat-facts a{ font-size:14.5px; color:var(--ink); }
.avocat-contact-block .contact-line{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.avocat-contact-block .contact-line:last-child{ margin-bottom:0; }
.icon-contact{ width:16px; height:16px; flex-shrink:0; color:var(--gold); }
.detail-accordion{ border-top:1px solid var(--line); padding-top:4px; }
.detail-toggle{
  display:flex; align-items:center; justify-content:space-between; width:100%;
  font-size:12px; text-transform:uppercase; letter-spacing:0.08em; color:var(--navy); font-weight:600;
  border:none; border-bottom:1px solid var(--line); background:none; cursor:pointer; padding:14px 0; font-family:'Inter', sans-serif;
}
.detail-toggle:hover{ color:var(--gold); }
.detail-toggle .toggle-arrow{ color:var(--gold); font-weight:400; }
.detail-panel{ padding:14px 0 4px; }
.detail-panel p{ margin-bottom:6px; }
.detail-panel p:last-child{ margin-bottom:0; }
.avocat-body{ background:var(--cream); padding:72px 40px; }
.avocat-body .wrap{ max-width:840px; }
.avocat-body p{ font-size:16px; color:var(--ink-soft); margin-bottom:20px; }
.avocat-body p:last-child{ margin-bottom:0; }

/* expertise detail page */
.pole-block{ background:var(--white); border:1px solid var(--line); border-radius:4px; padding:40px; margin-bottom:32px; }
.pole-block h3{ font-size:20px; color:var(--navy); margin-bottom:18px; }
.pole-block ul{ list-style:none; }
.pole-block li{ font-size:15px; color:var(--ink-soft); padding:10px 0 10px 22px; border-top:1px solid var(--line); position:relative; }
.pole-block li:first-child{ border-top:none; }
.pole-block li:before{ content:"—"; position:absolute; left:0; color:var(--gold); }
.pole-team{ background:var(--cream); border-radius:4px; padding:32px 40px; }
.pole-team h3{ font-size:16px; color:var(--navy); margin-bottom:20px; text-transform:uppercase; letter-spacing:0.06em; }
.pole-team-list{ display:flex; flex-wrap:wrap; gap:14px; }
.pole-team-list a{
  background:var(--white); border:1px solid var(--line); padding:10px 18px; border-radius:2px; font-size:14px; color:var(--navy); font-weight:500;
}
.pole-team-list a:hover{ border-color:var(--gold); }

/* nous rejoindre */
.join-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:start; }
.join-text p{ color:var(--ink-soft); margin-bottom:18px; font-size:15.5px; }
.join-list{ list-style:none; margin-top:28px; }
.join-list li{ font-size:15px; color:var(--ink-soft); padding:14px 0 14px 22px; border-top:1px solid var(--line); position:relative; }
.join-list li:first-child{ border-top:none; }
.join-list li:before{ content:"—"; position:absolute; left:0; color:var(--gold); }
.join-form{ background:var(--white); border:1px solid var(--line); border-radius:4px; padding:40px; }
.join-form h3{ font-size:18px; color:var(--navy); margin-bottom:24px; }
.join-form label{ display:block; font-size:12px; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-soft); margin-bottom:6px; }
.join-form .field{ margin-bottom:20px; }
.join-form .field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.join-form input, .join-form textarea{
  width:100%; border:1px solid var(--line); border-radius:2px; padding:11px 14px; font-family:'Inter', sans-serif;
  font-size:14.5px; color:var(--ink); background:var(--cream);
}
.join-form textarea{ min-height:120px; resize:vertical; }
.join-form input:focus, .join-form textarea:focus{ outline:none; border-color:var(--gold); }
.join-form button{
  background:var(--navy); color:var(--white); border:none; padding:14px 30px; font-size:14px;
  font-weight:600; letter-spacing:0.02em; border-radius:2px; cursor:pointer; width:100%;
}
.join-form button:hover{ background:var(--navy-2); }

/* contact */
.contact-prominent{ background:var(--white); border-bottom:1px solid var(--line); padding:56px 40px; }
.contact-prominent-inner{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:24px 64px; }
.contact-prominent-item{
  display:flex; align-items:center; gap:14px; font-family:'Playfair Display', serif; font-weight:600;
  font-size:28px; color:var(--navy); transition:color .2s;
}
.contact-prominent-item:hover{ color:var(--gold); }
.contact-prominent-item .icon-contact{ width:26px; height:26px; }
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:start; }
.contact-hours{
  display:inline-block; background:var(--bg-accent, var(--cream)); background:var(--cream);
  border:1px solid var(--line); border-radius:2px; padding:10px 18px; font-size:13.5px; color:var(--ink-soft); margin-bottom:32px;
}
.location-card{ background:var(--white); border:1px solid var(--line); border-radius:4px; padding:32px; margin-bottom:24px; }
.location-card h3{ font-size:19px; color:var(--navy); margin-bottom:16px; }
.location-card p{ font-size:14.5px; color:var(--ink-soft); margin-bottom:8px; }
.location-card p:last-child{ margin-bottom:0; }
.location-card a{ color:var(--navy); font-weight:500; }
.location-card .lbl{ color:var(--ink-soft); }

/* legal content */
.legal-content{ max-width:760px; }
.legal-content h2{ font-size:19px; color:var(--navy); margin:36px 0 14px; }
.legal-content h2:first-child{ margin-top:0; }
.legal-content p{ font-size:15px; color:var(--ink-soft); margin-bottom:16px; }
.legal-content a{ color:var(--navy); font-weight:500; }

/* footer */
footer{ background:var(--navy); color:#c7cbd4; padding:72px 40px 32px; }
.foot-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:56px; border-bottom:1px solid rgba(255,255,255,0.12); }
/* width:auto — the height alone drives the size, the logo keeps its ratio
   whatever width/height attributes the markup declares. */
.foot-brand img{ height:34px; width:auto; margin-bottom:16px; filter:brightness(0) invert(1); }
.foot-brand p{ font-size:14px; color:#9199a8; max-width:280px; }
footer h5{ color:var(--white); font-size:13px; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:18px; font-weight:600; }
footer ul{ list-style:none; font-size:14px; }
footer li{ margin-bottom:10px; color:#9199a8; }
footer a:hover{ color:var(--white); }
.foot-bottom{ display:flex; justify-content:space-between; padding-top:28px; font-size:13px; color:#7d8494; }
.foot-sep{ margin:0 8px; color:#4a5364; }
.foot-bottom a[data-consent="reopen"]{ cursor:pointer; }

/* ---------- cookie / tracker consent banner ---------- */
.cookie-banner{
  position:fixed; left:0; right:0; bottom:0; z-index:200;
  background:var(--navy); color:#c7cbd4;
  border-top:2px solid var(--gold);
  box-shadow:0 -8px 30px rgba(16,28,44,0.28);
  transform:translateY(100%); transition:transform .45s cubic-bezier(.2,.7,.3,1);
}
.cookie-banner.is-open{ transform:translateY(0); }
.cookie-inner{
  max-width:1180px; margin:0 auto; padding:24px 40px;
  display:flex; align-items:center; gap:40px;
}
.cookie-text strong{
  display:block; color:var(--white); font-family:'Playfair Display', serif;
  font-size:17px; font-weight:600; margin-bottom:6px;
}
.cookie-text p{ font-size:13.5px; line-height:1.6; color:#a8adba; text-align:left; margin:0; }
.cookie-text a{ color:var(--gold-light); border-bottom:1px solid rgba(201,168,119,0.5); }
.cookie-text a:hover{ color:var(--white); }
.cookie-actions{ display:flex; gap:12px; flex-shrink:0; }
/* Both buttons deliberately share identical styling: refusing must be as easy
   and as visible as accepting (CNIL). */
.cookie-btn{
  font-family:'Inter', sans-serif; font-size:14px; font-weight:600; letter-spacing:0.02em;
  padding:12px 30px; border-radius:2px; cursor:pointer;
  background:var(--white); color:var(--navy); border:1px solid var(--white);
  transition:background .2s ease, color .2s ease;
}
.cookie-btn:hover{ background:var(--gold); border-color:var(--gold); color:var(--navy); }
.cookie-btn:focus-visible{ outline:2px solid var(--gold-light); outline-offset:3px; }

@media (max-width:900px){
  .cookie-inner{ flex-direction:column; align-items:stretch; gap:20px; padding:22px 24px; }
  .cookie-actions{ justify-content:stretch; }
  .cookie-btn{ flex:1; padding:13px 16px; }
}
@media (max-width:640px){
  .cookie-inner{ padding:20px 18px; }
  .cookie-text p{ font-size:13px; }
}
@media (prefers-reduced-motion: reduce){
  .cookie-banner{ transition:none; }
}

/* ------------------------------------------------------------------
   Responsive
   Note: most containers (section, footer, .page-hero…) carry their own
   horizontal padding AND wrap a .wrap that adds 40px more. On narrow
   screens that doubling squeezes content and pushes wide blocks out of
   the viewport, so below 640px the outer padding is dropped and .wrap
   becomes the single source of horizontal padding.
   ------------------------------------------------------------------ */
@media (max-width:900px){
  /* burger menu: the links move into a panel that drops under the header */
  .nav{ position:relative; }
  .nav-toggle{ display:flex; }
  .nav-links{
    display:block; position:absolute; top:100%; left:0; right:0; z-index:60;
    background:var(--cream); border-top:1px solid var(--line);
    border-bottom:1px solid var(--line); box-shadow:0 16px 32px rgba(16,28,44,0.12);
    padding:6px 18px 18px;
    opacity:0; visibility:hidden; transform:translateY(-10px);
    transition:opacity .25s ease, transform .25s ease, visibility .25s;
  }
  .nav-links.is-open{ opacity:1; visibility:visible; transform:none; }
  .nav-links ul{ display:block; }
  .nav-links li{ border-bottom:1px solid var(--line); }
  .nav-links li a{ display:block; padding:15px 2px; font-size:15px; }
  .nav-links li a.active{ color:var(--navy); font-weight:600; }
  .nav-links .cta{ display:block; margin-top:18px; text-align:center; padding:13px 22px; }

  .hero h1{ font-size:clamp(32px, 6.4vw, 44px); }
  .stats-grid, .exp-grid, .team-grid, .team-index-grid{ grid-template-columns:repeat(2,1fr); }
  .team-index-grid.cols-5, .team-grid.cols-5{ grid-template-columns:repeat(2,1fr); }
  .about-grid{ grid-template-columns:1fr; }
  .foot-grid{ grid-template-columns:1fr 1fr; }
  .contact-grid{ grid-template-columns:1fr; gap:40px; }
  .cta-box{ flex-direction:column; align-items:stretch; gap:28px; }
  .avocat-hero-grid{ grid-template-columns:1fr; gap:32px; }
  .avocat-photo{ max-width:260px; }
  .avocat-facts{ grid-template-columns:1fr; }
  .join-grid{ grid-template-columns:1fr; }
  .join-form .field-row{ grid-template-columns:1fr; }
}

@media (max-width:640px){
  /* single source of horizontal padding */
  .wrap{ padding:0 18px; }
  section{ padding:56px 0; }
  .hero{ padding:92px 0 72px; }
  .hero-inner{ padding:0 18px; }
  .page-hero{ padding:44px 0 48px; }
  .avocat-hero{ padding:44px 0; }
  .avocat-body{ padding:44px 0; }
  .contact-prominent{ padding:32px 0; }
  footer{ padding:52px 0 22px; }
  .nav{ padding:14px 18px; }
  .breadcrumb{ padding:16px 18px 0; }

  /* one column for anything that would otherwise overflow */
  .exp-grid, .stats-grid, .foot-grid{ grid-template-columns:1fr; }
  .stat{ border-right:none; border-bottom:1px solid var(--line); padding:32px 20px; }
  .stat:last-child{ border-bottom:none; }

  .section-head{ margin-bottom:40px; }
  .exp-card{ padding:32px 22px; }
  .member-card{ padding:18px; }
  .location-card{ padding:22px; }
  .join-form{ padding:24px 20px; }

  /* CTA band: centred, button spans the width */
  .cta-box{ padding:34px 22px; text-align:center; }
  .cta-box h2, .cta-box p{ max-width:none; }
  .cta-box .btn-primary{ flex:1; text-align:center; word-break:break-word; padding:14px 18px; }

  /* prominent phone/email: stack and keep the long address inside the screen */
  .contact-prominent-inner{ flex-direction:column; align-items:center; gap:16px; text-align:center; }
  .contact-prominent-item{ font-size:19px; max-width:100%; word-break:break-word; }
  .contact-prominent-item .icon-contact{ width:20px; height:20px; }

  /* justified text produces wide gaps in narrow columns */
  p{ text-align:left; }

  .hero-actions{ flex-wrap:wrap; gap:12px; }
  .hero-locations{ gap:24px; margin-top:44px; }
  .foot-bottom{ flex-wrap:wrap; gap:10px; justify-content:flex-start; }
  .team-index-head{ flex-wrap:wrap; gap:6px; }
}
