/* lamp.css — FX « lampadaire » PARTAGÉ (accueil + sources). Trois faisceaux (central + deux latéraux à
   ±27deg) qui descendent du haut d'une scène et s'allument à l'approche du curseur (intensité --int, pilotée
   par lamp.js). Agnostique du conteneur : les faisceaux se stylent par classe (.hero-lamp__beam...), le
   conteneur (ex. .hero-lamp de l'accueil, .src-scene de Sources) fournit position:relative + isolation +
   overflow:hidden + --int:0. Sombre : ça s'illumine (néon teal). Clair : ça assombrit (multiply) pour le relief. */

.hero-lamp__fx { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.hero-lamp__fx > * { position: absolute; }

/* L'ancienne « diffusion large au milieu » (wash radial sombre) est SUPPRIMÉE (2026-07-10) : elle
   noyait les rideaux d'aurore dans un brouillard mur-à-mur — la maquette validée n'a que les trois
   rideaux, la lumière doit rester une couronne contenue. L'élément .hero-lamp__wash reste dans le
   HTML (accueil + sources) mais est inerte. */
.hero-lamp__wash { inset: 0; }

/* Faisceaux « aurore » (refonte 2026-07-10, maquette validée en 6 itérations) : trois RIDEAUX
   diffus issus du même point haut — dégradé teal vers cyan, très flouté, AUCUN cône découpé.
   Remplace l'ancienne géométrie (clip-path + latéraux ancrés aux bords). Même dégradé dans les
   deux thèmes : seule l'opacité change (voile discret en clair, lumière en sombre). */
.hero-lamp__beam {
  top: -14%;
  bottom: auto;
  left: 50%;
  width: min(620px, 44%);
  height: 125%;
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent-2) 42%, transparent 72%);
  filter: blur(38px);
  transform-origin: 50% 0;
  transform: translateX(-50%);
}
.hero-lamp__beam-l,
.hero-lamp__beam-r {
  top: -14%;
  bottom: auto;
  left: 50%;
  width: min(300px, 20%);
  height: 130%;
  margin-left: calc(min(300px, 20%) / -2);
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent-2) 42%, transparent 72%);
  filter: blur(38px);
  transform-origin: 50% 0;
}
.hero-lamp__beam-l { transform: rotate(-17deg); }
.hero-lamp__beam-r { transform: rotate(17deg); }

/* Sombre : la lumière (repos discret, montée contenue à l'approche — plafond adouci 2026-07-10,
   l'ancien pic à 0,27 éblouissait). */
:root[data-theme="dark"] .hero-lamp__beam { opacity: calc(0.12 + 0.08 * var(--int)); }
:root[data-theme="dark"] .hero-lamp__beam-l,
:root[data-theme="dark"] .hero-lamp__beam-r { opacity: calc(0.10 + 0.06 * var(--int)); }
/* Clair : des RAIS DE SOLEIL, pas de l'ombre (l'encre multiply faisait « tache noire », rejetée).
   Le haut du rideau éclaircit en blanc (lumière qui entre), le corps porte la teinte teal de la
   marque, puis extinction — mêmes rideaux, même danse, même montée à l'approche. lamp.js pose
   l'opacité EN INLINE en clair (mécanisme de repaint conservé) — mêmes formules qu'ici. */
:root:not([data-theme="dark"]) .hero-lamp__beam,
:root:not([data-theme="dark"]) .hero-lamp__beam-l,
:root:not([data-theme="dark"]) .hero-lamp__beam-r {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.95) 0%, rgba(13, 148, 136, 0.16) 40%, transparent 72%);
}
:root:not([data-theme="dark"]) .hero-lamp__beam { opacity: calc(0.5 + 0.25 * var(--int)); }
:root:not([data-theme="dark"]) .hero-lamp__beam-l,
:root:not([data-theme="dark"]) .hero-lamp__beam-r { opacity: calc(0.42 + 0.22 * var(--int)); }

/* ── Aurore boréale (refonte accueil 2026-07-10) : les trois rideaux ondulent lentement, durées
   désynchronisées pour ne jamais laisser percevoir un cycle. Les keyframes ne portent QUE le
   transform : l'INTENSITÉ reste pilotée par --int (CSS en sombre, opacité inline par lamp.js en
   clair — bug Chromium) — au repos la danse est à peine perceptible, elle devient visible quand
   la lumière monte à l'approche de la barre. Chaque keyframe embarque le transform de BASE du
   faisceau (translateX / rotate ±27deg) : ne pas les dissocier. */
@media (prefers-reduced-motion: no-preference) {
  .hero-lamp__beam   { animation: lamp-aurore-c 11s ease-in-out infinite alternate; }
  .hero-lamp__beam-l { animation: lamp-aurore-l 14s ease-in-out infinite alternate; }
  .hero-lamp__beam-r { animation: lamp-aurore-r 12s ease-in-out infinite alternate -6s; }
}
@keyframes lamp-aurore-c {
  0%   { transform: translateX(-50%) skewX(-1.6deg) scaleX(1); }
  50%  { transform: translateX(-50%) skewX(1.3deg)  scaleX(1.04); }
  100% { transform: translateX(-50%) skewX(-0.6deg) scaleX(0.98); }
}
@keyframes lamp-aurore-l {
  0%   { transform: rotate(-15.5deg) skewX(-2deg); }
  55%  { transform: rotate(-18.2deg) skewX(1.5deg); }
  100% { transform: rotate(-16.6deg) skewX(-0.5deg); }
}
@keyframes lamp-aurore-r {
  0%   { transform: rotate(15.5deg) skewX(2deg); }
  45%  { transform: rotate(18.2deg) skewX(-1.5deg); }
  100% { transform: rotate(16.6deg) skewX(0.5deg); }
}

@media (prefers-reduced-motion: reduce) { [data-lamp] { --int: 0.4; } }
