/* LUNE 29 / Paris light + streetlamps + lunar phases + neighbourhood scene + neighbourhood lamp glow - 2026-09-15, live revision 8.
   No image replacement, no page-wide filters, no changes to booking styles.
   All enhancement styles require the public runtime marker. */
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready {
  isolation: isolate;
  --l29-atmosphere-duration: 1.6s;
  --l29-atmosphere-easing: ease;
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-settled {
  --l29-atmosphere-duration: 30s;
  --l29-atmosphere-easing: linear;
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-adjusting {
  --l29-atmosphere-duration: .45s;
  --l29-atmosphere-easing: ease;
}
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-layer {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity 1.6s ease;
}
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-image {
  /* Inherit the existing responsive WebP/background-position without new assets. */
  background-image: inherit;
  background-size: inherit;
  background-position: inherit;
  background-repeat: no-repeat;
  filter: brightness(var(--l29-light-brightness, 1))
          saturate(var(--l29-light-saturation, 1))
          contrast(var(--l29-light-contrast, 1))
          sepia(var(--l29-light-sepia, 0));
  transition: opacity 1.6s ease,
              filter var(--l29-atmosphere-duration, 1.6s) var(--l29-atmosphere-easing, ease);
}
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-tint {
  background-color: var(--l29-light-tint, transparent);
  transition: opacity 1.6s ease,
              background-color var(--l29-atmosphere-duration, 1.6s) var(--l29-atmosphere-easing, ease);
}
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-glow {
  background: radial-gradient(ellipse at 64% 8%, rgba(255,211,142,.55), rgba(255,189,123,.12) 42%, transparent 72%);
  mix-blend-mode: screen;
  transition: opacity var(--l29-atmosphere-duration, 1.6s) var(--l29-atmosphere-easing, ease);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .l29-atmosphere-image,
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .l29-atmosphere-tint { opacity: 1; }
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .l29-atmosphere-glow { opacity: var(--l29-light-glow, 0); }

/* Warm light is confined to the photographed streetlamps, behind the reading
   layer. The SVG uses the same centred cover crop as the responsive WebP. */
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-lamps {
  overflow: hidden;
  mix-blend-mode: screen;
  transition: opacity var(--l29-atmosphere-duration, 1.6s) var(--l29-atmosphere-easing, ease);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .l29-atmosphere-lamps[data-l29-lamps-aligned='true'] {
  opacity: var(--l29-lamp-intensity, 0);
}
html[data-l29-atmosphere-enabled] .l29-lamps-svg {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  overflow: hidden;
  pointer-events: none;
}
html[data-l29-atmosphere-enabled] .l29-light-lamps-status {
  margin: -10px 0 15px;
  color: #51565e;
  font-size: 12px;
}

/* A permanent, neutral reading layer sits above the photograph and streetlamps.
   Headline, location, navigation and booking button are never filtered. */
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .hero-overlay {
  pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(8,14,22,.67) 0%, rgba(8,14,22,.48) 22%, rgba(8,14,22,.37) 40%, rgba(8,14,22,.43) 65%, rgba(8,14,22,.73) 100%),
    radial-gradient(ellipse at 50% 46%, rgba(8,14,22,.29) 0%, rgba(8,14,22,.19) 32%, transparent 72%);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .hero-overlay::after {
  /* The previous one-shot light sweep must not compete with the new lighting. */
  display: none;
  animation: none;
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .hero-title,
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .tagline {
  text-shadow: 0 2px 22px rgba(5,10,18,.42), 0 1px 3px rgba(5,10,18,.3);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .hero-top p,
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .hero-address { opacity: 1; }
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .hero-book-cta {
  background: rgba(7,15,26,.4);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready .hero-book-cta:hover {
  background: #f5f1e8;
  color: #202832;
}

@media (prefers-reduced-motion: reduce) {
 html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-layer {transition:none!important;}
}
/* Moon: above the photograph shade, below foreground typography (z-index 3).
   Placement avoids the location label and stays in the known sky area. */
html[data-l29-atmosphere-enabled] .hero > .l29-atmosphere-moon {
  z-index: 2;
  overflow: hidden;
  transition: opacity var(--l29-atmosphere-duration, 1.6s) var(--l29-atmosphere-easing, ease);
}
html[data-l29-atmosphere-enabled] .hero.l29-atmosphere-ready > .l29-atmosphere-moon[data-l29-moon-aligned='true'] {
  opacity: calc(var(--l29-moon-visibility, 0) * .86);
}
html[data-l29-atmosphere-enabled] .l29-moon-body {
  position: absolute;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
html[data-l29-atmosphere-enabled] .l29-moon-body::before {
  content: '';
  position: absolute;
  inset: -85%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,247,215,.85), rgba(244,243,223,.12) 37%, transparent 67%);
  opacity: var(--l29-moon-glow, 0);
}
html[data-l29-atmosphere-enabled] .l29-moon-canvas {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
  max-width: none;
}
/* LE QUARTIER / The second scene shares Paris time, not the hero's moon or
   streetlamp overlays. The original responsive image/crop remains untouched. */
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere {
  position:relative;isolation:isolate;
  --l29-paris-duration:1.6s;--l29-paris-easing:ease;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-settled {
  --l29-paris-duration:30s;--l29-paris-easing:linear;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-adjusting {
  --l29-paris-duration:.45s;--l29-paris-easing:ease;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere > img {
  transition:transform 1.2s cubic-bezier(.2,.8,.2,1),filter var(--l29-paris-duration) var(--l29-paris-easing);
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > img {
  filter:brightness(var(--l29-paris-brightness,1)) saturate(var(--l29-paris-saturation,1))
         contrast(var(--l29-paris-contrast,1)) sepia(var(--l29-paris-sepia,0));
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-layer {
  position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;
  transition:opacity var(--l29-paris-duration) var(--l29-paris-easing),background-color var(--l29-paris-duration) var(--l29-paris-easing);
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-tint {background-color:var(--l29-paris-tint,transparent);}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > .l29-paris-tint {opacity:1;}
html[data-l29-atmosphere-enabled] #paris .l29-paris-glow {
  background:radial-gradient(ellipse at var(--l29-paris-glow-x,50%) 8%,rgba(255,203,147,.86),rgba(245,175,100,.25) 46%,transparent 77%);
  mix-blend-mode:screen;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > .l29-paris-glow {opacity:var(--l29-paris-glow,0);}
html[data-l29-atmosphere-enabled] #paris .l29-paris-shade {
  background:linear-gradient(180deg,rgba(9,23,49,.9),transparent 46%,rgba(4,12,29,.55));
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > .l29-paris-shade {opacity:var(--l29-paris-shade,0);}
html[data-l29-atmosphere-enabled] #paris .l29-paris-lamps {
  overflow:hidden; mix-blend-mode:screen;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > .l29-paris-lamps[data-l29-lamps-aligned="true"] {
  opacity:var(--l29-paris-lamp-intensity,0);
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-lamps-svg {
  position:absolute; inset:0; display:block; width:100%; height:100%; max-width:none;
  overflow:hidden; pointer-events:none;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-caption {
  position:absolute;z-index:2;bottom:27px;left:27px;max-width:calc(100% - 54px);
  display:grid;grid-template-columns:auto auto;column-gap:18px;row-gap:5px;
  padding:13px 17px;border:1px solid rgba(245,241,232,.28);background:rgba(12,23,39,.80);
  color:#fffaf1;pointer-events:none;opacity:0;transition:opacity 1.6s ease;
  font:400 12px/1.5 'Avenir Next','Helvetica Neue',Arial,sans-serif;
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere.l29-atmosphere-ready > .l29-paris-caption {opacity:1;}
html[data-l29-atmosphere-enabled] #paris .l29-paris-caption-label {grid-column:1/-1;font-size:8px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#e2d8c6;}
html[data-l29-atmosphere-enabled] #paris .l29-paris-caption-phase {font:400 19px/1.25 'Iowan Old Style','Baskerville',Georgia,serif;}
html[data-l29-atmosphere-enabled] #paris .l29-paris-caption-time {align-self:center;font-size:10px;letter-spacing:.06em;color:#e2d8c6;font-variant-numeric:tabular-nums;}
@media (max-width:600px) {
 html[data-l29-atmosphere-enabled] #paris .l29-paris-caption {left:20px;bottom:20px;max-width:calc(100% - 40px);padding:11px 14px;gap:5px 15px;}
 html[data-l29-atmosphere-enabled] #paris .l29-paris-caption-phase {font-size:17px;}
}
@media (prefers-reduced-motion:reduce) {
 html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere,
 html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere > * {transition:none!important;animation:none!important;}
 html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere:hover > img {transform:none!important;}
}
@media print {
 html[data-l29-atmosphere-enabled] #paris .l29-paris-layer,
 html[data-l29-atmosphere-enabled] #paris .l29-paris-caption {display:none!important;}
 html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere > img {filter:none!important;}
}

/* Keep the lamp overlay registered during the photo's existing hover zoom. */
html[data-l29-atmosphere-enabled] #paris .l29-paris-lamps-svg {
 transform-origin:50% 50%; transition:transform 1.2s cubic-bezier(.2,.8,.2,1);
}
html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere:hover .l29-paris-lamps-svg {transform:scale(1.025);}
@media(prefers-reduced-motion:reduce) {
 html[data-l29-atmosphere-enabled] #paris .l29-paris-atmosphere .l29-paris-lamps-svg {transition:none!important;transform:none!important;}
}
