/* =====================================================================
   02 · assinatura — "Uma noite para correr. Um universo para explorar."
   A câmera atravessa o "O" de NOITE; a linha 2 se forma a partir das estrelas.
   ===================================================================== */

#assinatura .asg-stage { background: transparent; }

/* ---- Leito: f-universo varrido (só aparece quando há pôster ou filme) ---- */
#assinatura .asg-media {
  position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s var(--ease-out);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 15%, #000 85%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 15%, #000 85%, transparent 100%);
}
#assinatura.has-media .asg-media { opacity: 1; }
#assinatura .asg-film { transform-origin: 50% 50%; }
/* chão próprio do texto: escurece o miolo sem apagar a nebulosa */
#assinatura .asg-shade {
  position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(62% 48% at 50% 52%, rgba(5, 1, 15, .62), rgba(5, 1, 15, .28) 55%, transparent 80%);
}

/* ---- Linha 1 (SVG) ---- */
#assinatura .asg-l1wrap { position: absolute; inset: 0; pointer-events: none; }
#assinatura .asg-l1 {
  position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible;
  font-family: var(--f-display); font-style: italic; font-weight: 900;
}
#assinatura .asg-l1 text { letter-spacing: -.005em; }
#assinatura .asg-l1__halo text { fill: rgba(0, 0, 0, .72); stroke: rgba(0, 0, 0, .72); stroke-width: 10px; stroke-linejoin: round; }
#assinatura .asg-l1__c text { fill: var(--cyan); }
#assinatura .asg-l1__m text { fill: var(--magenta); }
#assinatura .asg-l1__c, #assinatura .asg-l1__m { opacity: .82; }
#assinatura .asg-l1__chrome text { fill: url(#asg-chrome); }
/* contorno de neon (espessura constante na tela, qualquer zoom) + halo largo e fraco */
#assinatura [class*="asg-l1__g"] text, #assinatura [class*="asg-l1__l"] text { fill: none; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
#assinatura .asg-l1__gc text { stroke: var(--cyan); stroke-width: 12px; stroke-opacity: .2; }
#assinatura .asg-l1__gm text { stroke: var(--magenta); stroke-width: 12px; stroke-opacity: .2; }
#assinatura .asg-l1__lc text { stroke: #7cf0ff; stroke-width: 2.4px; }
#assinatura .asg-l1__lm text { stroke: #ff6bff; stroke-width: 2.4px; }
#assinatura .asg-l1__gc, #assinatura .asg-l1__gm, #assinatura .asg-l1__lc, #assinatura .asg-l1__lm { opacity: 0; }

/* luz de dentro do "O" — vira o clarão da travessia */
#assinatura .asg-glowpos { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: none; }
#assinatura .asg-glow {
  position: absolute; left: 0; top: 0; width: 30vmin; height: 30vmin; margin: -15vmin 0 0 -15vmin;
  border-radius: 50%; pointer-events: none; opacity: 0; mix-blend-mode: screen;
  background: radial-gradient(circle, rgba(255, 255, 255, .95) 0 7%, rgba(160, 240, 255, .8) 14%, rgba(0, 216, 248, .55) 26%, rgba(120, 0, 240, .4) 46%, rgba(240, 0, 240, .16) 60%, transparent 71%);
}

#assinatura .asg-top { position: absolute; left: 0; right: 0; top: 0; display: flex; justify-content: center; pointer-events: none; }
#assinatura .asg-kicker { position: absolute; top: var(--asg-kick, 18vh); white-space: nowrap; }
#assinatura .asg-kicker::after { content: ''; width: 44px; height: 2px; background: currentColor; box-shadow: 0 0 10px currentColor; flex: none; }

/* ---- Estrelas de onde nascem as letras ---- */
#assinatura .asg-dots { position: absolute; inset: 0; pointer-events: none; }
#assinatura .asg-dot {
  position: absolute; width: 5px; height: 5px; margin: -2.5px 0 0 -2.5px; border-radius: 50%; opacity: 0;
  background: #fff; box-shadow: 0 0 6px 2px rgba(0, 216, 248, .95), 0 0 18px 5px rgba(120, 0, 240, .55);
}
#assinatura .asg-dot:nth-child(3n) { box-shadow: 0 0 6px 2px rgba(240, 0, 240, .95), 0 0 18px 5px rgba(120, 0, 240, .55); }
#assinatura .asg-dot::before, #assinatura .asg-dot::after {
  content: ''; position: absolute; left: 50%; top: 50%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .9), transparent);
}
#assinatura .asg-dot::before { width: 26px; height: 1px; margin: -.5px 0 0 -13px; }
#assinatura .asg-dot::after { width: 1px; height: 26px; margin: -13px 0 0 -.5px; background: linear-gradient(180deg, transparent, rgba(255, 255, 255, .9), transparent); }

/* ---- Linha 2 + reprise ---- */
#assinatura .asg-final { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; }
#assinatura .asg-lock { position: relative; text-align: center; padding-inline: var(--gutter); }
#assinatura .asg-l2 { font-size: min(8.4vw, 14vh); line-height: 1.12; margin: 0; }
#assinatura .asg-l2 > span { display: block; white-space: nowrap; }
#assinatura .asg-l2 em { font-style: inherit; }
/* a palavra não pinta, só cada letra (o núcleo já garante: .title-chrome .sw:has(.sc)) */
/* camada própria por letra só enquanto a cena roda (fora dela, 23 camadas à toa) */
#assinatura.is-live .asg-l2 .sc { will-change: transform, opacity, filter; }
#assinatura .asg-uni .sc {
  background: linear-gradient(180deg, #d8fbff 0%, var(--cyan) 30%, var(--violet) 66%, var(--magenta) 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
#assinatura .asg-reprise {
  position: absolute; left: 0; right: 0; bottom: calc(100% + .1em);
  font-family: var(--f-display); font-style: italic; font-weight: 800; text-transform: uppercase;
  font-size: clamp(22px, 2.5vw, 44px); line-height: 1.15; letter-spacing: .06em; padding-top: .1em;
  background: var(--chrome); -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(-1px 0 0 rgba(0, 216, 248, .7)) drop-shadow(1px 0 0 rgba(240, 0, 240, .65)) drop-shadow(0 4px 12px rgba(0, 0, 0, .9));
}
#assinatura .asg-sign {
  position: absolute; left: 50%; top: calc(100% + 1.4em); transform: translateX(-50%);
  display: flex; align-items: center; gap: 14px; white-space: nowrap;
}
#assinatura .asg-sign .mono { font-size: 12px; letter-spacing: .24em; color: #cfe9f5; }
#assinatura .asg-rule { width: clamp(28px, 6vw, 90px); height: 1px; background: var(--neon); box-shadow: 0 0 8px rgba(240, 0, 240, .7); }
#assinatura .asg-rule:first-child { transform-origin: 100% 50%; }
#assinatura .asg-rule:last-child { transform-origin: 0 50%; }

/* marcadores do astronauta: 1 px no centro do palco */
#assinatura .asg-astro { position: absolute; left: 50%; top: 50%; width: 1px; height: 1px; pointer-events: none; }

@media (max-width: 820px) {
  #assinatura .asg-l2 { font-size: min(13.2vw, 9vh); }
  #assinatura .asg-reprise { font-size: clamp(18px, 5.6vw, 28px); letter-spacing: .04em; }
  #assinatura .asg-sign { gap: 10px; }
  #assinatura .asg-sign .mono { font-size: 10px; letter-spacing: .16em; }
  #assinatura .asg-final { padding-top: 8svh; }
  #assinatura .asg-kicker { font-size: 10px; letter-spacing: .14em; }
  #assinatura .asg-kicker::before, #assinatura .asg-kicker::after { width: 22px; }
}

/* movimento reduzido: sem linha 1 em SVG, sem estrelas, composição final */
.reduced #assinatura .asg-l1wrap, .reduced #assinatura .asg-glow, .reduced #assinatura .asg-dots { display: none; }
