/**
 * BCW Photography — Editorial Luxe
 * Implementation du design Claude Design "BCW Editorial Luxe.dc.html"
 * Page unique : masthead, hero divise, sommaire, manifeste, plates,
 * galerie filtrable, reservation, visionneuse d'albums plein ecran.
 */

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  background: #0d0b0b;
  color: #f3ece7;
  font-family: 'Lato', sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a { color: #c98a70; text-decoration: none; }
a:hover { color: #d4a574; }

img {
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
}

::selection { background: rgba(168, 107, 85, .55); color: #fff; }

::-webkit-scrollbar { width: 9px; }
::-webkit-scrollbar-track { background: #0d0b0b; }
::-webkit-scrollbar-thumb {
  background: linear-gradient(#a86b55, #7d4e3c);
  border-radius: 999px;
  border: 2px solid #0d0b0b;
}
html { scrollbar-width: thin; scrollbar-color: #a86b55 #0d0b0b; }

:focus-visible { outline: 2px solid #a86b55; outline-offset: 3px; }

/* ---------- Animations ---------- */

/* Amplitude reduite vs prototype (1.02->1.1) : limite le flou d'agrandissement */
@keyframes bcwKen  { from { transform: scale(1.01); } to { transform: scale(1.05); } }
@keyframes bcwFade { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes bcwReveal {
  from { opacity: 0; transform: scale(1.045); filter: blur(10px); }
  to   { opacity: 1; transform: scale(1);     filter: blur(0); }
}

.bcw-f1 { animation: bcwFade 1s cubic-bezier(.22,1,.36,1) .15s both; }
.bcw-f2 { animation: bcwFade 1s cubic-bezier(.22,1,.36,1) .38s both; }
.bcw-f3 { animation: bcwFade 1s cubic-bezier(.22,1,.36,1) .6s  both; }
.bcw-f4 { animation: bcwFade 1s cubic-bezier(.22,1,.36,1) .82s both; }

/* Revelation au scroll avec profondeur 3D (initialisee par editorial.js) :
   les blocs se redressent en entrant dans le viewport */
.ed-reveal {
  opacity: 0;
  transform: perspective(1000px) translateY(46px) rotateX(7deg) scale(.985);
  transform-origin: 50% 90%;
  will-change: opacity, transform;
  transition: opacity 1s cubic-bezier(.22,1,.36,1), transform 1s cubic-bezier(.22,1,.36,1);
}
.ed-reveal.on { opacity: 1; transform: perspective(1000px) translateY(0) rotateX(0deg) scale(1); }
html.no-js .ed-reveal { opacity: 1; transform: none; }

/* Parallaxe de profondeur au defilement (CSS scroll-driven, sans JS) :
   les photos des plates glissent legerement plus lentement que la page.
   L'image est sur-dimensionnee (scale) pour couvrir le debattement. */
.ed-par { height: 100%; }
.ed-par img { display: block; }

@supports (animation-timeline: view()) {
  .ed-zoom .ed-par,
  .ed-plate3 .ed-par {
    animation: ed-parallax linear both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
    will-change: transform;
  }
}

@keyframes ed-parallax {
  from { transform: translateY(3.2%) scale(1.09); }
  to   { transform: translateY(-3.2%) scale(1.09); }
}

/* ---------- Typo utilitaires ---------- */

.ed-kicker {
  font-size: 11px;
  letter-spacing: .34em;
  text-transform: uppercase;
  color: #8a7d76;
}

.ed-roman { font-family: 'Playfair Display', serif; font-style: italic; color: #a86b55; }

.ed-rule { width: 34px; height: 1px; background: rgba(168, 107, 85, .5); }

/* ---------- Masthead ---------- */

.ed-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 24px clamp(24px, 4vw, 64px);
  background: rgba(13, 11, 11, .2);
  border-bottom: 1px solid rgba(243, 236, 231, .08);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  transition: padding .5s cubic-bezier(.22,1,.36,1), background .5s ease, border-color .5s ease;
}

.ed-nav.scrolled {
  padding: 14px clamp(24px, 4vw, 64px);
  background: rgba(13, 11, 11, .9);
  border-bottom-color: rgba(168, 107, 85, .25);
}

.ed-nav-left  { display: flex; align-items: center; gap: 30px; }
.ed-nav-right { display: flex; align-items: center; justify-content: flex-end; gap: 30px; }

.ed-nav-link {
  color: #f3ece7;
  font-size: 11px;
  letter-spacing: .26em;
  text-transform: uppercase;
}
.ed-nav-link:hover { color: #d4a574; }

.ed-nav-logo { display: flex; align-items: center; justify-content: center; }
.ed-nav-logo img {
  height: 56px;
  width: auto;
  object-fit: contain;
  transition: height .45s ease;
}
.ed-nav.scrolled .ed-nav-logo img { height: 42px; }

.ed-nav-est {
  font-size: 11px;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: #8a7d76;
}

.ed-btn-book {
  display: inline-block;
  padding: 10px 24px;
  border: 1px solid rgba(168, 107, 85, .6);
  border-radius: 999px;
  color: #f3ece7;
  font-size: 11px;
  letter-spacing: .24em;
  text-transform: uppercase;
  transition: all .3s ease;
}
.ed-btn-book:hover { background: #a86b55; border-color: #a86b55; color: #fff; }

/* ---------- Hero divise ---------- */

.ed-hero {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1.02fr .98fr;
}

.ed-hero-text {
  position: relative;
  background: #0d0b0b;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(40px, 7vw, 120px) clamp(34px, 5vw, 90px);
  border-right: 1px solid rgba(243, 236, 231, .1);
}

.ed-hero-eyebrow { display: flex; align-items: center; gap: 14px; margin-bottom: 30px; }
.ed-hero-eyebrow .no { font-family: 'Playfair Display', serif; font-style: italic; color: #d4a574; font-size: 1.05rem; }
.ed-hero-eyebrow .line { width: 40px; height: 1px; background: rgba(168, 107, 85, .6); }

.ed-hero-text h1 {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2.8rem, 5.6vw, 5.4rem);
  line-height: 1.02;
  letter-spacing: -.02em;
  color: #f7f2ee;
}
.ed-hero-text h1 em { font-style: italic; color: #d4a574; }

.ed-hero-text > p {
  margin-top: 34px;
  max-width: 46ch;
  font-size: 1.08rem;
  line-height: 1.8;
  font-weight: 300;
  color: #cbbfb6;
}

.ed-hero-cta { margin-top: 44px; display: flex; align-items: center; gap: 30px; flex-wrap: wrap; }
.ed-hero-cta a {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.15rem;
  color: #f3ece7;
  border-bottom: 1px solid rgba(212, 165, 116, .5);
  padding-bottom: 5px;
  transition: color .3s ease, border-color .3s ease;
}
.ed-hero-cta a:hover { color: #d4a574; border-color: #d4a574; }

.ed-hero-loc {
  position: absolute;
  left: clamp(34px, 5vw, 90px);
  bottom: 36px;
  font-size: 10.5px;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: #6f645d;
}

.ed-hero-photo { position: relative; overflow: hidden; background: #100e0e; }
.ed-hero-photo .bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center 22%;
  animation: bcwKen 28s ease-in-out infinite alternate;
}
.ed-hero-photo .veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(13,11,11,.1), rgba(13,11,11,.5));
}
.ed-hero-photo .credit { position: absolute; right: 26px; bottom: 26px; text-align: right; }
.ed-hero-photo .credit .name { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.15rem; color: #f7f2ee; }
.ed-hero-photo .credit .plate { margin-top: 4px; font-size: 10px; letter-spacing: .28em; text-transform: uppercase; color: #d4a574; }

/* ---------- Sommaire ---------- */

.ed-contents { border-bottom: 1px solid rgba(243, 236, 231, .1); background: #0d0b0b; }
.ed-contents .inner {
  max-width: 1600px;
  margin: 0 auto;
  padding: 26px clamp(24px, 4vw, 64px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.ed-contents .label { font-size: 10.5px; letter-spacing: .32em; text-transform: uppercase; color: #8a7d76; }
.ed-contents .links { display: flex; align-items: center; gap: clamp(24px, 4vw, 64px); flex-wrap: wrap; }
.ed-contents .links a { display: flex; align-items: baseline; gap: 10px; color: #f3ece7; }
.ed-contents .links a:hover { color: #d4a574; }
.ed-contents .links .num { font-family: 'Playfair Display', serif; font-style: italic; color: #a86b55; font-size: 1rem; }
.ed-contents .links .txt { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; }

/* ---------- Manifeste ---------- */

.ed-manifesto {
  max-width: 1080px;
  margin: 0 auto;
  padding: clamp(90px, 15vh, 200px) 6vw;
  text-align: center;
}
.ed-manifesto .head { display: inline-flex; align-items: center; gap: 14px; margin-bottom: 40px; }
.ed-manifesto blockquote {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-style: italic;
  font-size: clamp(1.6rem, 3.3vw, 2.7rem);
  line-height: 1.45;
  letter-spacing: -.01em;
  color: #f3ece7;
}
.ed-manifesto .sig {
  margin-top: 38px;
  font-size: 11px;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: #8a7d76;
}

/* ---------- Plates ---------- */

.ed-plates {
  max-width: 1600px;
  margin: 0 auto;
  padding: 0 clamp(24px, 5vw, 72px) clamp(60px, 10vh, 140px);
}

.ed-section-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  padding-bottom: 40px;
  border-bottom: 1px solid rgba(243, 236, 231, .1);
  margin-bottom: clamp(50px, 8vh, 110px);
}
.ed-section-head h2 {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2rem, 4.2vw, 3.4rem);
  line-height: 1;
  letter-spacing: -.01em;
}
.ed-section-head h2 .num {
  font-style: italic;
  color: #a86b55;
  font-size: .55em;
  vertical-align: middle;
  margin-right: 16px;
}
.ed-section-head .side {
  flex: none;
  font-size: 11px;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: #8a7d76;
}

.ed-zoom { overflow: hidden; border-radius: 12px; }
.ed-zoom img {
  width: 100%;
  display: block;
  transition: transform 1.2s cubic-bezier(.22,1,.36,1);
}
.ed-zoom:hover img { transform: scale(1.045); }

.ed-plate1 {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: clamp(30px, 4vw, 70px);
  align-items: center;
}
.ed-plate1 .roman { font-family: 'Playfair Display', serif; font-style: italic; font-size: 3rem; color: rgba(168,107,85,.5); line-height: 1; }
.ed-plate1 h3 { margin-top: 16px; font-family: 'Playfair Display', serif; font-weight: 500; font-size: 2rem; line-height: 1.08; }
.ed-plate1 .rule { width: 44px; height: 1px; background: #a86b55; margin: 22px 0; }
.ed-plate1 p { font-size: 1rem; line-height: 1.85; font-weight: 300; color: #c9bcb3; }
.ed-plate1 .meta { margin-top: 24px; font-size: 10.5px; letter-spacing: .28em; text-transform: uppercase; color: #8a7d76; }

/* Plate IV : miroir de la Plate I (texte a gauche, portrait a droite),
   image en ratio naturel plafonnee en hauteur */
.ed-plate4 {
  grid-template-columns: 340px 1fr;
  margin-top: clamp(50px, 9vh, 120px);
}
.ed-plate4 .ed-zoom { justify-self: center; }
.ed-plate4 img {
  width: auto;
  max-width: 100%;
  height: clamp(480px, 82vh, 800px);
  object-fit: cover;
}

.ed-plate2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 3vw, 44px);
  align-items: end;
  margin-top: clamp(50px, 9vh, 120px);
}
/* Léa : hauteur reduite de moitie vs ratio naturel (3:2 portrait -> 4:3),
   cadrage cale sur le visage et la main */
.ed-plate2 .tall img  { aspect-ratio: 4 / 3; height: auto; object-fit: cover; object-position: center 22%; }
.ed-plate2 .short img { height: clamp(300px, 50vh, 520px); object-fit: cover; }
.ed-plate2 .caption { margin-top: 22px; display: flex; align-items: baseline; gap: 16px; }
.ed-plate2 .caption .roman { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.6rem; color: rgba(168,107,85,.6); }
.ed-plate2 .caption .title { font-family: 'Playfair Display', serif; font-size: 1.35rem; }
.ed-plate2 .caption .meta { margin-top: 5px; font-size: 10.5px; letter-spacing: .26em; text-transform: uppercase; color: #8a7d76; }

.ed-plate3 { position: relative; overflow: hidden; border-radius: 12px; margin-top: clamp(50px, 9vh, 120px); }
.ed-plate3 img {
  width: 100%;
  height: clamp(360px, 70vh, 760px);
  object-fit: cover;
  display: block;
  transition: transform 1.4s cubic-bezier(.22,1,.36,1);
}
.ed-plate3:hover img { transform: scale(1.04); }
.ed-plate3 .veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(13,11,11,.72) 0%, rgba(13,11,11,.15) 55%, transparent 100%);
}
.ed-plate3 .text {
  position: absolute;
  left: clamp(28px, 4vw, 64px);
  top: 50%;
  transform: translateY(-50%);
  max-width: 30ch;
}
.ed-plate3 .roman { font-family: 'Playfair Display', serif; font-style: italic; font-size: 2.4rem; color: rgba(243,236,231,.55); line-height: 1; }
.ed-plate3 h3 { margin-top: 14px; font-family: 'Playfair Display', serif; font-weight: 500; font-size: clamp(1.8rem, 3vw, 2.8rem); line-height: 1.06; color: #f7f2ee; }
.ed-plate3 p { margin-top: 18px; font-size: 1rem; line-height: 1.8; font-weight: 300; color: #e2d6cd; }

/* ---------- Galerie ---------- */

.ed-gallery {
  background: #0a0808;
  border-top: 1px solid rgba(243, 236, 231, .08);
  padding: clamp(80px, 12vh, 160px) clamp(24px, 5vw, 72px);
}
.ed-gallery .inner { max-width: 1600px; margin: 0 auto; }
.ed-gallery .ed-section-head { margin-bottom: 56px; }

.ed-filters { display: flex; gap: 8px; flex-wrap: wrap; }
.ed-filter {
  padding: 9px 20px;
  border-radius: 999px;
  cursor: pointer;
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  transition: all .3s ease;
  background: transparent;
  color: #c9bcb3;
  border: 1px solid rgba(243, 236, 231, .18);
}
.ed-filter:hover { border-color: rgba(168, 107, 85, .6); color: #f3ece7; }
.ed-filter.active { background: #a86b55; color: #fff; border-color: #a86b55; }

.ed-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(18px, 2.4vw, 40px);
}

.ed-card { margin: 0; cursor: pointer; }
.ed-card .frame { position: relative; overflow: hidden; border-radius: 12px; background: #1e1a1a; }
.ed-card .frame img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  display: block;
  filter: brightness(.94);
  transition: transform 1.1s cubic-bezier(.22,1,.36,1), filter .5s ease;
}
.ed-card:hover .frame img { transform: scale(1.05); filter: brightness(1.04); }

.ed-wm {
  position: absolute;
  bottom: 8px; right: 11px;
  font-family: 'Lato', sans-serif;
  font-size: 9.5px;
  letter-spacing: .08em;
  color: rgba(255, 255, 255, .28);
  pointer-events: none;
  text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}

.ed-card figcaption {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 2px 0;
  border-top: 1px solid rgba(243, 236, 231, .14);
  margin-top: 14px;
}
.ed-card .id { display: flex; align-items: baseline; gap: 12px; }
.ed-card .num { font-family: 'Playfair Display', serif; font-style: italic; font-size: .95rem; color: #a86b55; }
.ed-card .name { font-family: 'Playfair Display', serif; font-size: 1.15rem; color: #f3ece7; line-height: 1.1; }
.ed-card .cat { margin-top: 4px; font-size: 9px; letter-spacing: .24em; text-transform: uppercase; color: #8a7d76; }
.ed-card .frames { flex: none; font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: #a86b55; }

/* ---------- Reservation ---------- */

.ed-booking {
  position: relative;
  overflow: hidden;
  padding: clamp(90px, 14vh, 200px) clamp(24px, 6vw, 90px);
}
.ed-booking .bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center 28%;
}
.ed-booking .veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(10,8,8,.95) 0%, rgba(10,8,8,.8) 52%, rgba(10,8,8,.5) 100%);
}
.ed-booking .inner {
  position: relative;
  z-index: 2;
  max-width: 1500px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: center;
}
.ed-booking .head { display: inline-flex; align-items: center; gap: 14px; margin-bottom: 26px; }
.ed-booking h2 {
  font-family: 'Playfair Display', serif;
  font-weight: 400;
  font-size: clamp(2.2rem, 4.6vw, 3.8rem);
  line-height: 1.04;
  letter-spacing: -.015em;
  max-width: 15ch;
}
.ed-booking h2 em { font-style: italic; color: #d4a574; }
.ed-booking .lede {
  margin-top: 24px;
  max-width: 44ch;
  font-size: 1.06rem;
  line-height: 1.8;
  font-weight: 300;
  color: #d8ccc3;
}

.ed-contact-rows { margin-top: 36px; display: flex; flex-direction: column; gap: 18px; }
.ed-contact-row { display: flex; align-items: center; gap: 15px; }
.ed-contact-row .icon {
  width: 40px; height: 40px;
  border: 1px solid rgba(168, 107, 85, .5);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #d4a574;
  flex: none;
}
.ed-contact-row .k { font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: #8a7d76; }
.ed-contact-row .v { font-size: 1.02rem; user-select: text; -webkit-user-select: text; }

.ed-form {
  background: rgba(19, 16, 16, .72);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(243, 236, 231, .12);
  padding: clamp(26px, 3vw, 44px);
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.ed-field { display: flex; flex-direction: column; gap: 8px; }
.ed-field label {
  font-size: 10px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: #a86b55;
}
.ed-field input,
.ed-field select,
.ed-field textarea {
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(243, 236, 231, .2);
  padding: 11px 2px;
  color: #f3ece7;
  font-family: 'Lato', sans-serif;
  font-size: 1rem;
  outline: none;
  border-radius: 0;
  transition: border-color .3s ease;
}
.ed-field textarea { resize: vertical; }
.ed-field input:focus,
.ed-field select:focus,
.ed-field textarea:focus { border-bottom-color: #a86b55; }
.ed-field select option { background: #1e1a1a; color: #f3ece7; }

.ed-captcha-line { display: flex; align-items: baseline; gap: 18px; }
.ed-captcha-line .question {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.25rem;
  color: #d4a574;
  white-space: nowrap;
}
.ed-captcha-line input { flex: 1; min-width: 80px; }
.ed-captcha-refresh {
  background: none;
  border: none;
  color: #8a7d76;
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  cursor: pointer;
  padding: 4px 0;
}
.ed-captcha-refresh:hover { color: #d4a574; }

.ed-submit {
  margin-top: 6px;
  padding: 15px;
  background: #a86b55;
  color: #fff;
  border: none;
  border-radius: 999px;
  font-family: 'Lato', sans-serif;
  font-size: 11px;
  letter-spacing: .24em;
  text-transform: uppercase;
  font-weight: 700;
  cursor: pointer;
  transition: background .3s ease, opacity .3s ease;
}
.ed-submit:hover { background: #c98a70; }
.ed-submit:disabled { background: #4a3d37; cursor: not-allowed; }

.ed-form-note {
  font-size: 10px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: #6f645d;
  text-align: center;
}

.ed-form-msg {
  display: none;
  padding: 13px 16px;
  font-size: .92rem;
  border: 1px solid;
  text-align: center;
}
.ed-form-msg.success { border-color: rgba(129, 199, 132, .45); color: #a8e6b0; background: rgba(81, 207, 102, .08); }
.ed-form-msg.error   { border-color: rgba(255, 138, 128, .45); color: #ffb3ab; background: rgba(255, 107, 107, .07); }

.ed-honeypot {
  position: absolute;
  left: -9999px;
  top: -9999px;
  height: 0;
  width: 0;
  overflow: hidden;
}

/* ---------- Footer ---------- */

.ed-footer {
  background: #080606;
  padding: 60px clamp(24px, 5vw, 72px) 40px;
  border-top: 1px solid rgba(243, 236, 231, .08);
}
.ed-footer .top {
  max-width: 1600px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.ed-footer .top img { height: 50px; width: auto; object-fit: contain; opacity: .9; }
.ed-footer .socials { display: flex; gap: 26px; }
.ed-footer .socials a,
.ed-footer .bottom a {
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #c9bcb3;
}
.ed-footer .socials a:hover, .ed-footer .bottom a:hover { color: #d4a574; }
.ed-footer .bottom {
  max-width: 1600px;
  margin: 32px auto 0;
  padding-top: 24px;
  border-top: 1px solid rgba(243, 236, 231, .07);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.ed-footer .bottom p { font-size: 12px; color: #7a6f68; letter-spacing: .04em; }
.ed-footer .bottom a { font-size: 12px; text-transform: none; letter-spacing: .04em; text-decoration: underline; color: #7a6f68; }

/* ---------- Visionneuse d'album ---------- */

.ed-viewer {
  position: fixed;
  inset: 0;
  z-index: 5000;
  background: rgba(8, 6, 6, .97);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  display: none;
  flex-direction: column;
  animation: bcwFade .3s ease both;
}
.ed-viewer.open { display: flex; }

.ed-viewer .bar {
  flex: none;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  padding: 22px clamp(24px, 4vw, 48px);
}
.ed-viewer .bar .id { display: flex; align-items: baseline; gap: 16px; }
.ed-viewer .bar .name { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.5rem; color: #f7f2ee; }
.ed-viewer .bar .cat { font-size: 10px; letter-spacing: .28em; text-transform: uppercase; color: #d4a574; }
.ed-viewer .bar .side { display: flex; align-items: center; gap: 26px; }
.ed-viewer .bar .counter { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1rem; color: rgba(243,236,231,.7); }
.ed-viewer .bar .close {
  font-size: 11px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: #c9bcb3;
  cursor: pointer;
  background: none;
  border: none;
  font-family: 'Lato', sans-serif;
}
.ed-viewer .bar .close:hover { color: #d4a574; }

.ed-viewer .stage {
  flex: 1;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  padding: 0 clamp(66px, 9vw, 120px);
}

.ed-viewer .navbtn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5002;
  width: 56px; height: 56px;
  border-radius: 50%;
  border: 1px solid rgba(243, 236, 231, .2);
  background: rgba(30, 26, 26, .6);
  color: #f3ece7;
  font-size: 1.2rem;
  cursor: pointer;
  transition: all .3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ed-viewer .navbtn:hover { background: rgba(168, 107, 85, .85); border-color: #a86b55; }
.ed-viewer .navbtn.prev { left: clamp(14px, 3vw, 44px); }
.ed-viewer .navbtn.next { right: clamp(14px, 3vw, 44px); }

.ed-viewer .photo-wrap {
  position: relative;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  max-height: 100%;
}
.ed-viewer .photo-wrap img {
  max-width: min(900px, 86vw);
  max-height: 68vh;
  object-fit: contain;
  display: block;
  border-radius: 10px;
  box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .9);
  animation: bcwReveal .6s cubic-bezier(.22,1,.36,1) both;
}
.ed-viewer .photo-wrap .wm {
  position: absolute;
  bottom: 12px; right: 16px;
  font-size: 11px;
  letter-spacing: .1em;
  color: rgba(255, 255, 255, .32);
  pointer-events: none;
  text-shadow: 0 1px 4px rgba(0, 0, 0, .5);
}

.ed-viewer .strip {
  flex: none;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 16px clamp(24px, 4vw, 48px) 8px;
  overflow-x: auto;
  justify-content: safe center;
  scrollbar-width: none;
}
.ed-viewer .strip::-webkit-scrollbar { display: none; }
.ed-viewer .strip img {
  width: 58px; height: 74px;
  object-fit: cover;
  border-radius: 6px;
  cursor: pointer;
  flex: none;
  transition: all .3s ease;
  border: 1px solid rgba(243, 236, 231, .15);
  opacity: .45;
}
.ed-viewer .strip img.active {
  border-color: #a86b55;
  opacity: 1;
  outline: 1px solid #a86b55;
  outline-offset: 1px;
}

.ed-viewer .albums-nav {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  padding: 8px 0 24px;
}
.ed-viewer .albums-nav button {
  cursor: pointer;
  font-size: 10px;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: #8a7d76;
  background: none;
  border: none;
  font-family: 'Lato', sans-serif;
}
.ed-viewer .albums-nav button:hover { color: #d4a574; }
.ed-viewer .albums-nav .dot { width: 4px; height: 4px; border-radius: 50%; background: #a86b55; }

/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
  .ed-plate1 { grid-template-columns: 1fr; }
  .ed-grid { grid-template-columns: repeat(2, 1fr); }
  .ed-booking .inner { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  .ed-nav { grid-template-columns: auto 1fr; padding: 14px 18px; gap: 12px; }
  .ed-nav-left { display: none; }
  .ed-nav-logo { justify-content: flex-start; }
  .ed-nav-logo img { height: 44px; }
  .ed-nav-est { display: none; }

  .ed-hero { grid-template-columns: 1fr; min-height: unset; }
  .ed-hero-text { min-height: 72vh; border-right: none; border-bottom: 1px solid rgba(243,236,231,.1); padding-top: 120px; }
  .ed-hero-photo { min-height: 58vh; }
  .ed-hero-loc { position: static; margin-top: 40px; }

  .ed-plate2 { grid-template-columns: 1fr; align-items: start; }
  .ed-grid { grid-template-columns: 1fr; }

  .ed-viewer .stage { padding: 0 10px; }
  .ed-viewer .navbtn { width: 42px; height: 42px; font-size: 1rem; }
  .ed-viewer .photo-wrap img { max-width: 94vw; max-height: 62vh; }
}

/* ---------- Accessibilite : mouvement reduit ---------- */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .ed-hero-photo .bg { animation: none; }
  .bcw-f1, .bcw-f2, .bcw-f3, .bcw-f4 { animation-duration: .01ms; animation-delay: 0s; }
  .ed-reveal { opacity: 1; transform: none; transition: none; }
  .ed-viewer, .ed-viewer .photo-wrap img { animation: none; }
  .ed-zoom img, .ed-plate3 img, .ed-card .frame img { transition: none; }
  .ed-zoom .ed-par, .ed-plate3 .ed-par { animation: none; }
}

@media print {
  body { display: none !important; }
}
