/* ============================================================
   Brasoft Confort — HORIZONTE
   O fundo das seções claras deixa de ser chapado: a página passa a ter uma
   linha de luz nascendo abaixo do conteúdo, e ela se desloca com o ponteiro.

   ORIGEM: composição do "Horizon Glow gradient" (21st.dev Gradient Builder).
   O que foi aproveitado dele:
   - A ANCORAGEM. Todos os campos de luz partem do MESMO ponto, abaixo do
     centro. É isso que transforma manchas soltas em horizonte: luz com
     origem e direção. A versão anterior daqui tinha luz sem lugar, e por isso
     parecia adesivo.
   - As camadas concêntricas de raios diferentes sobre a mesma âncora, que é
     o que dá profundidade em vez de um borrão só.
   - O grão em mix-blend-mode: overlay, que tem muito mais matéria que ruído
     em opacidade chapada.

   O que foi DELIBERADAMENTE deixado de fora:
   - A paleta inteira. #6950fa, #4D2FF9, #5667FF e #78B8F9 são roxo e índigo,
     proibidos no projeto. Aqui é o azul e o creme da marca, com um veio de
     dourado.
   - A parada em #FFFFFF puro seguida de transparente: sobre o off-white ela
     desenha um anel visível, que é exatamente a borda que denuncia efeito.

   POR QUE PODE TER COR (as tentativas de fundo tingido não podiam):
   contraste depende SÓ de luminância relativa. Os tons abaixo foram
   resolvidos numericamente para NÃO baixarem a luminância do #FCF8F5:
     quente #FFF8D2 · frio #DDEFFF · base #FCF8F5
   O rótulo dourado #8A6510 marca 5,03:1 sobre a base e 5,03:1 sob a luz.
   REGRA: nenhuma parada pode ser mais escura que a base. Refaça a conta
   antes de mexer.
   ============================================================ */

.aura {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
  background: var(--surface, #FCF8F5);
  contain: layout paint style;
}

/* O horizonte. Campo largo e baixo, ancorado ABAIXO da janela: o que se vê é
   a subida da luz, nunca o centro dela — e assim não há borda em cena.
   Só o eixo X acompanha o ponteiro; o horizonte continua horizonte. */
.aura-horizonte {
  position: absolute;
  left: 50%; bottom: 0;
  width: 260vmax; height: 150vmax;
  margin-left: -130vmax;
  background:
    radial-gradient(50% 42% at 50% 100%, rgba(255,248,210,.62) 0%, rgba(255,250,232,.24) 34%, rgba(252,248,245,0) 62%),
    radial-gradient(34% 26% at 50% 100%, rgba(255,244,196,.34) 0%, rgba(255,248,230,0) 70%),
    radial-gradient(72% 58% at 50% 100%, rgba(221,239,255,.30) 0%, rgba(238,246,255,0) 66%);
  transform: translate3d(var(--hx, 0px), var(--hy, 0px), 0);
  will-change: transform;
}

/* A contraluz alta e fria: dá teto ao ambiente. Sem ela o topo da tela fica
   morto e a luz de baixo parece um facho, não uma sala. */
.aura-teto {
  position: absolute;
  left: 50%; top: 0;
  width: 220vmax; height: 90vmax;
  margin-left: -110vmax;
  background:
    radial-gradient(60% 50% at 50% 0%, rgba(221,239,255,.34) 0%, rgba(238,246,255,.12) 40%, rgba(252,248,245,0) 70%);
  transform: translate3d(var(--tx, 0px), 0, 0);
  will-change: transform;
}

/* Respiração lenta: a luz não morre com o ponteiro parado. Só escala —
   nada de opacity pulsando, que repinta a tela inteira. */
@keyframes aura-respira { from { scale: 1; } to { scale: 1.05; } }
.aura-horizonte { animation: aura-respira 16s ease-in-out infinite alternate; }
.aura-teto      { animation: aura-respira 22s ease-in-out infinite alternate reverse; }

/* Grão — receita do componente de origem: turbulência em overlay, que tem
   matéria de verdade, em vez de ruído com opacidade chapada. A frequência
   sobe para .9 porque o grão fino é o que mata banding sem virar textura. */
.aura-grao {
  position: absolute; inset: 0;
  opacity: .19;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
  background-size: 120px 120px;
}

/* Para o horizonte aparecer, as seções que só repetiam o off-white do corpo
   deixam de pintar. As que têm foto de cena continuam — é o contraponto:
   uma seção respira, a seguinte tem matéria. */
.aurora { background: transparent; }

@media (prefers-reduced-motion: reduce) {
  .aura-horizonte, .aura-teto { animation: none; }
}

/* ---- Celular: a camada sai inteira ----
   Decisão do usuário (11/08/2026). Sem cursor não há paralaxe, e o que
   sobraria era uma superfície composta a mais por quadro, competindo com o
   desfoque do vidro que o aparelho já refaz. Some a camada, fica a cor. */
@media (max-width: 767px) {
  .aura { display: none; }
  .aurora { background: var(--surface); }
}
