/* Sequencia de scroll — uma camada visual de fundo por vez.
   Ordem de pintura (de tras para frente):
     html            -> cor solida #363e15 (nunca uma imagem)
     canvas / poster -> z-index -2; o poster so some depois do primeiro draw
     shade           -> z-index -1, degrade de contraste
     body::before    -> desativado nesta rota
   O fundo do <html> deixou de ser o frame-001.jpg: ele duplicava a primeira
   imagem da sequencia atras do canvas e aparecia junto com o frame atual
   sempre que o canvas nao cobria 100% da viewport. */
html.scrollSequenceActive {
  background: #153d27 !important;
  /* A sequencia acompanha o gesto nativo: animacao de scroll programatica
     adiciona atraso entre a posicao real e o frame mostrado. */
  scroll-behavior: auto !important;
}

html.scrollSequenceActive body {
  background: transparent !important;
}

html.scrollSequenceActive body::before {
  content: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* As paginas da sequencia ja tem uma imagem cinematografica ocupando toda a
   viewport. Camadas fixas com blur e backdrop-filter fariam o navegador
   recompor a tela inteira a cada tick do scroll. Mantemos o mesmo contraste
   pelos fundos semitransparentes, mas sem esse custo por quadro. */
html.scrollSequenceActive .auroraB,
html.scrollSequenceActive .auroraC,
html.scrollSequenceActive .lupaBg,
html.scrollSequenceActive .mpBg {
  display: none !important;
}

html.scrollSequenceActive .topbar,
html.scrollSequenceActive .panel,
html.scrollSequenceActive .statCard,
html.scrollSequenceActive .noteCard,
html.scrollSequenceActive .moduleTile,
html.scrollSequenceActive .rankPanel,
html.scrollSequenceActive .mcCard,
html.scrollSequenceActive .heroMeta span {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* A pagina cinematografica ja muda o fundo em cada gesto. Sem estas camadas
   permanentes o compositor tem menos trabalho e a rolagem fica estavel. */
html.scrollSequenceActive .moduleTile,
html.scrollSequenceActive .gCard,
html.scrollSequenceActive .noteCard,
html.scrollSequenceActive .statCard,
html.scrollSequenceActive .rankPanel,
html.scrollSequenceActive .mcCard,
html.scrollSequenceActive .heroText,
html.scrollSequenceActive .caseBoard,
html.scrollSequenceActive .orb {
  will-change: auto !important;
}

html.scrollSequenceActive .heroVisual .orb {
  animation: none !important;
}

html.scrollSequenceActive.headerLightOff .topbar::after {
  animation: none !important;
  background-position: 50% 0;
  opacity: .58;
}

html.scrollSequenceActive .modal{
  background:linear-gradient(118deg,rgba(245,255,240,.13),rgba(213,248,195,.09) 49%,rgba(244,255,238,.12));
  -webkit-backdrop-filter:blur(10px) saturate(115%) brightness(1.06);
  backdrop-filter:blur(10px) saturate(115%) brightness(1.06);
}

html.scrollSequenceActive .modalCard{
  background:linear-gradient(155deg,rgba(13,47,23,.92),rgba(5,22,11,.95));
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  box-shadow:0 34px 90px -26px rgba(0,0,0,.72),inset 0 1px 0 rgba(255,255,255,.15);
}

html.scrollSequenceActive .modalClose{
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  background:rgba(255,255,255,.10);
}

/* papel de parede enviado pelo painel nao entra nestas paginas */
html.scrollSequenceActive body > #_wpbg {
  display: none !important;
}

/* 100% em vez de 100vw/100dvh: 100vw inclui a barra de rolagem e fazia a
   camada vazar para fora da viewport. width/height explicitos sao
   obrigatorios aqui — canvas e img sao elementos substituidos e, com
   width:auto, adotariam o tamanho intrinseco (o buffer) em vez do inset. */
#scrollSequenceCanvas,
#scrollSequenceFallback,
#scrollSequenceShade {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

#scrollSequenceCanvas,
#scrollSequenceFallback {
  transform: scale(1.04);
  transform-origin: 50% 50%;
}

#scrollSequenceCanvas {
  z-index: -2;
  display: block;
  background: #153d27;
  contain: strict;
  opacity: 0;
  transition: opacity .16s ease-out;
}

#scrollSequenceFallback {
  z-index: -2;
  display: block;
  object-fit: cover;
  object-position: 50% 50%;
  max-width: none;
  border: 0;
  opacity: 1;
  visibility: visible;
  transition: opacity .12s linear, visibility 0s linear .12s;
}

html.scrollSequenceCanvasReady #scrollSequenceCanvas {
  opacity: 1;
}

html.scrollSequenceCanvasReady #scrollSequenceFallback {
  opacity: 0;
  visibility: hidden;
}

body.scrollSequenceFallbackActive #scrollSequenceCanvas {
  display: none !important;
}

body.scrollSequenceFallbackActive #scrollSequenceFallback {
  display: block;
  opacity: 1;
  visibility: visible;
  transition-delay: 0s;
}

html.scrollSequenceStaticMobile #scrollSequenceCanvas {
  display: none !important;
}

html.scrollSequenceStaticMobile #scrollSequenceFallback {
  opacity: 1;
  visibility: visible;
  transition: none;
  object-fit: cover;
  object-position: 50% 50%;
  background: none;
}

#scrollSequenceShade {
  z-index: -1;
  background:
    linear-gradient(118deg, rgba(242, 255, 239, .15) 0%, rgba(204, 241, 186, .10) 49%, rgba(239, 255, 233, .13) 100%),
    radial-gradient(ellipse 76% 68% at 52% 42%, rgba(246, 255, 238, .10) 0%, rgba(199, 237, 170, .045) 72%, rgba(244, 255, 239, .03) 100%);
}

/* Neblina fixa: suaviza o fundo sem aplicar filtro ao canvas que muda a cada
   frame. E uma camada de cor, nao um backdrop-filter da viewport. */
#scrollSequenceShade::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .09), transparent 36%),
    radial-gradient(ellipse 42% 34% at 76% 14%, rgba(236, 255, 222, .08), transparent 76%),
    radial-gradient(ellipse 54% 42% at 22% 84%, rgba(221, 250, 198, .065), transparent 78%);
}

#scrollSequenceShade::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: rgba(0, 0, 0, var(--background-darkness, 0));
  transition: background .18s ease;
}

@media (max-width: 700px) {
  html.scrollSequenceActive .orb,
  html.scrollSequenceActive .scanner {
    animation: none !important;
  }

  #scrollSequenceShade {
    background:
      linear-gradient(118deg, rgba(242, 255, 239, .16) 0%, rgba(204, 241, 186, .11) 49%, rgba(239, 255, 233, .14) 100%),
      radial-gradient(ellipse at center, rgba(246, 255, 238, .08) 0%, rgba(222, 250, 198, .035) 100%);
  }
}

@media (prefers-reduced-motion: reduce) {
  html.scrollSequenceActive #scrollSequenceCanvas {
    display: none !important;
  }

  html.scrollSequenceActive #scrollSequenceFallback {
    opacity: 1;
    visibility: visible;
  }

  html.scrollSequenceActive .podiumStage,
  html.scrollSequenceActive .podiumCrown,
  html.scrollSequenceActive .mcCard,
  html.scrollSequenceActive .msSpinner {
    animation: none !important;
  }
}
