/* Movimento de entrada de um site clonado — ver kb-motion.js.
 *
 * O estado escondido só existe quando o JS está vivo (`html[data-kb-motion]`).
 * Sem JS não há regra nenhuma a aplicar e o conteúdo aparece — que é como tem
 * de ser: 1211 elementos deste clone estiveram invisíveis por se ter feito o
 * contrário, com o estado inicial gravado no HTML.
 */
/* v1 = os kinds `fade*` (o estado inicial adivinhado); os da v2 têm regras próprias */
html[data-kb-motion] [data-kb-anim^="fade"]:not([data-kb-anim-on]) {
  opacity: 0;
}
html[data-kb-motion] [data-kb-anim="fade-up"]:not([data-kb-anim-on]) {
  transform: translateY(var(--kb-anim-y, 40px));
}
html[data-kb-motion] [data-kb-anim="fade-down"]:not([data-kb-anim-on]) {
  transform: translateY(calc(var(--kb-anim-y, 40px) * -1));
}
html[data-kb-motion] [data-kb-anim="fade-left"]:not([data-kb-anim-on]) {
  transform: translateX(var(--kb-anim-x, 40px));
}
html[data-kb-motion] [data-kb-anim="fade-right"]:not([data-kb-anim-on]) {
  transform: translateX(calc(var(--kb-anim-x, 40px) * -1));
}

/* A física: a curva e a duração do Framer, que é de onde vêm estes clones —
 * 0,6s com uma saída suave, sem o ressalto que dá ar de brinquedo. */
html[data-kb-motion] [data-kb-anim^="fade"] {
  transition:
    opacity 0.6s cubic-bezier(0.44, 0, 0.22, 1),
    transform 0.6s cubic-bezier(0.44, 0, 0.22, 1);
  will-change: opacity, transform;
}
html[data-kb-motion] [data-kb-anim^="fade"][data-kb-anim-on] {
  opacity: 1;
  transform: none;
}

/* ─── v2: FÍSICA EXACTA DA ORIGEM (raio-x REA, 2026-10-20) ─────────────────
   Cada elemento traz o seu estado de entrada e a sua física em variáveis
   (postas pelo kb-motion.js a partir de data-kb-anim-* e da tabela
   #kb-fisica). O estado escondido usa !important só ENQUANTO está escondido:
   assim ganha ao style inline que a captura deixou com o valor final, e ao
   entrar a transição vai até ao valor do PRÓPRIO desenho (inline ou folha),
   incluindo o transform de centragem, que se compõe em --kb-base. */
html[data-kb-motion] [data-kb-anim="fx"]:not([data-kb-anim-on]),
html[data-kb-motion] [data-kb-anim="texto"]:not([data-kb-anim-on]) .kb-tok {
  opacity: var(--kb-o, 0) !important;
  transform: var(--kb-base,) translate(var(--kb-x, 0px), var(--kb-y, 0px)) scale(var(--kb-s, 1)) rotate(var(--kb-r, 0deg)) !important;
  filter: blur(var(--kb-b, 0px)) !important;
}
html[data-kb-motion] [data-kb-anim="fx"][data-kb-anim-on]:not([data-kb-anim-done]),
html[data-kb-motion] [data-kb-anim="texto"][data-kb-anim-on]:not([data-kb-anim-done]) .kb-tok {
  transition:
    opacity var(--kb-dur, 0.6s) var(--kb-ease, cubic-bezier(0.44, 0, 0.56, 1)) var(--kb-delay, 0ms),
    transform var(--kb-dur, 0.6s) var(--kb-ease, cubic-bezier(0.44, 0, 0.56, 1)) var(--kb-delay, 0ms),
    filter var(--kb-dur, 0.6s) var(--kb-ease, cubic-bezier(0.44, 0, 0.56, 1)) var(--kb-delay, 0ms);
}
html[data-kb-motion] [data-kb-anim="texto"] .kb-tok {
  display: inline-block;
  white-space: pre;
}

/* sem movimento: o JS marca tudo como entrado logo à partida (nada fica no
   estado escondido) — aqui só se tira a transição. Não se força transform:none,
   que apagava o transform de CENTRAGEM do desenho. */
@media (prefers-reduced-motion: reduce) {
  html[data-kb-motion] [data-kb-anim],
  html[data-kb-motion] [data-kb-anim] .kb-tok {
    transition: none !important;
  }
}

/* ─── WIDGET DO VENDEDOR DO TEMPLATE (2026-09-03) ──────────────────────────
   Os templates Framer à venda trazem um cartão promocional fixo — «New
   Template!», «Buy Template» — que o próprio vendedor nomeia «… - DELETE ME».
   Num clone para um cliente é publicidade de terceiros no domínio dele; a casa
   já o excluía por regra nos temas clonados (o appear @1.8/@1.9 do vendedor),
   e aqui apanha-se pelo nome. Apanhado ao vivo no art-x. */
[data-framer-name$="DELETE ME"],
[name$="DELETE ME"],
[data-framer-name^="Buy Template"],
[data-framer-name^="Buy for $"] { display: none !important; }
