/* Atlas Connect · SOCLE HÉRO 2026 — partagé par les héros de pages (à propos, services, …).
   Source unique des calques décoratifs et du type cinétique ; chaque page n'écrit que son PLACEMENT.
   Règle projet : aucun élément décoratif ne TOURNE (une boîte englobante tournée rallonge le
   document — incident du 15/09) ; c'est l'ANGLE du dégradé qui s'anime, via @property. */
@property --ah26-a{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes ah26Spin{to{--ah26-a:360deg}}
@keyframes ah26Grain{0%{background-position:0 0}33%{background-position:-28px 16px}66%{background-position:18px -22px}100%{background-position:0 0}}
@keyframes ah26Word{60%{filter:blur(0)}to{opacity:1;transform:none;filter:blur(0)}}

/* variables publiées par le JS sur le héro (pointeur) */
.ah26-hero{--ah26-px:0;--ah26-py:0;--ah26-sx:50%;--ah26-sy:38%;--ah26-spot:0}

/* Aurore : conic flouté et masqué. inset borné, aucune rotation d'élément. Placement par page. */
.ah26-aurora{position:absolute;inset:-6% -3%;z-index:0;pointer-events:none;opacity:.42;mix-blend-mode:screen;filter:blur(64px) saturate(125%);background:conic-gradient(from var(--ah26-a) at 50% 46%,rgba(37,99,235,.55),rgba(56,189,248,.26),rgba(249,115,22,.20),rgba(59,130,246,.46),rgba(37,99,235,.55));-webkit-mask-image:radial-gradient(ellipse 62% 58% at 50% 44%,#000 25%,transparent 78%);mask-image:radial-gradient(ellipse 62% 58% at 50% 44%,#000 25%,transparent 78%);animation:ah26Spin 26s linear infinite;translate:calc(var(--ah26-px)*-14px) calc(var(--ah26-py)*-10px);transition:translate .9s cubic-bezier(.2,.7,0,1)}

/* Projecteur qui suit le curseur */
.ah26-spot{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--ah26-spot);background:radial-gradient(520px circle at var(--ah26-sx) var(--ah26-sy),rgba(96,165,250,.16),rgba(96,165,250,.06) 42%,transparent 68%);mix-blend-mode:screen;transition:opacity .5s ease}

/* Grain film · texture, pas de bruit visible */
.ah26-grain{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:.05;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");background-size:160px 160px;animation:ah26Grain 1.1s steps(3) infinite}

/* Type cinétique · le mot est ENVELOPPÉ (.ah26-w > .ah26-wi), jamais réécrit : les graphies
   d'origine (dégradé animé, couleurs .hb/.ho) restent intactes. */
body.ah26 .ah26-w{display:inline-block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em;padding-top:.12em;margin-top:-.12em;vertical-align:top}
body.ah26 .ah26-wi{display:inline-block;opacity:0;transform:translateY(112%) rotate(3deg);filter:blur(12px);animation:ah26Word .95s cubic-bezier(.16,.9,.12,1) forwards;animation-delay:calc(.1s + var(--i,0)*.085s)}

@media (max-width:900px){
  .ah26-aurora{opacity:.3;filter:blur(46px) saturate(120%)}
  .ah26-grain{opacity:.04}
}
@media (prefers-reduced-motion:reduce){
  .ah26-aurora,.ah26-grain{animation:none!important}
  .ah26-grain{display:none}
  body.ah26 .ah26-wi{animation:none!important;opacity:1;transform:none;filter:none}
  body.ah26 .ah26-hero *{transition:none!important}
}
