/* TBG animations. No base colors, fonts, dimensions or document layout are changed.
   All rules require the server-assigned page allowlist class. Load before JS. */
html.tbg-js body.tbg-anim-page .tbg-anim-pending {
  opacity: 0;
  translate: 0 var(--tbg-reveal-distance, 40px);
}
body.tbg-anim-page .tbg-anim-count { font-variant-numeric: tabular-nums; }
body.tbg-anim-page [data-tbg-progress-fill] { transform-origin: left center; }
body.tbg-anim-page .tbg-anim-media { overflow: hidden; }
body.tbg-anim-page .tbg-anim-image-hover { position: relative; overflow: hidden; }
body.tbg-anim-page .tbg-anim-image-hover::after {
  content: ""; position: absolute; inset: 0; background: #000;
  opacity: 0; pointer-events: none; transition: opacity .3s;
}
body.tbg-anim-page .tbg-anim-image-hover [data-tbg-image-label] { position: relative; z-index: 1; }
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  body.tbg-anim-page .tbg-anim-card { transition: translate .35s ease, box-shadow .35s ease; }
  body.tbg-anim-page .tbg-anim-card:hover {
    translate: 0 -8px; box-shadow: var(--tbg-card-hover-shadow, 0 16px 40px rgb(0 0 0 / .18));
  }
  body.tbg-anim-page .tbg-anim-card .tbg-anim-media > :is(img,svg),
  body.tbg-anim-page .tbg-anim-card .tbg-anim-icon { transition: scale .5s ease; }
  body.tbg-anim-page .tbg-anim-card:hover .tbg-anim-media > :is(img,svg),
  body.tbg-anim-page .tbg-anim-card:hover .tbg-anim-icon { scale: 1.06; }
  body.tbg-anim-page .tbg-anim-arrow { display: inline-block; transition: translate .35s ease; }
  body.tbg-anim-page .tbg-anim-card:hover .tbg-anim-arrow { translate: 6px 0; }
  body.tbg-anim-page .tbg-anim-image-hover > :is(img,picture),
  body.tbg-anim-page .tbg-anim-image-hover > a > img { transition: scale .6s ease; }
  body.tbg-anim-page .tbg-anim-image-hover:hover > :is(img,picture),
  body.tbg-anim-page .tbg-anim-image-hover:hover > a > img { scale: 1.08; }
  body.tbg-anim-page .tbg-anim-image-hover:hover::after { opacity: .24; }
  body.tbg-anim-page .tbg-anim-image-hover [data-tbg-image-label] {
    transition: translate .3s ease;
  }
  body.tbg-anim-page .tbg-anim-image-hover:hover [data-tbg-image-label] { animation:tbg-label .3s ease both; }
  body.tbg-anim-page .tbg-anim-button { transition: translate .3s ease, box-shadow .3s ease, scale .15s ease; }
  body.tbg-anim-page .tbg-anim-button:hover {
    translate: 0 -3px; box-shadow: var(--tbg-button-hover-shadow, 0 8px 20px rgb(0 0 0 / .18));
  }
  body.tbg-anim-page .tbg-anim-button:active { scale: .98; }
  /* Shine is opt-in on an existing primary button; it does not replace its background. */
  body.tbg-anim-page [data-tbg-primary] { position: relative; overflow: hidden; }
  body.tbg-anim-page [data-tbg-primary]::after {
    content:""; position:absolute; inset:-50%; pointer-events:none;
    background:linear-gradient(115deg,transparent 40%,rgb(255 255 255 / .28) 50%,transparent 60%);
    translate:-100% 0; opacity:0;
  }
  body.tbg-anim-page [data-tbg-primary]:hover::after { animation:tbg-shine .7s ease both; }
}
body.tbg-anim-page .tbg-anim-header { transition: box-shadow .3s ease; }
body.tbg-anim-page .tbg-anim-header.tbg-anim-scrolled {
  box-shadow: var(--tbg-header-scrolled-shadow, 0 6px 22px rgb(0 0 0 / .12));
}
body.tbg-anim-page .tbg-anim-faq-icon { transition: rotate .3s ease; }
body.tbg-anim-page details[open] > summary .tbg-anim-faq-icon { rotate:180deg; }
body.tbg-anim-page [data-tbg-marquee] { overflow:hidden; }
body.tbg-anim-page [data-tbg-marquee-track] { /* Existing flex/grid layout is preserved. */ }
body.tbg-anim-page [data-tbg-marquee-clone] { pointer-events:none; }
body.tbg-anim-page [data-tbg-slider] :is(.swiper-wrapper,[data-tbg-slider-track]) {
  transition-duration:.6s!important; transition-timing-function:ease!important;
}
body.tbg-anim-page [data-tbg-float] { animation:tbg-float 4s ease-in-out infinite; }
body.tbg-anim-page [data-tbg-chat] { isolation:isolate; }
body.tbg-anim-page [data-tbg-chat]::after {
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  border:2px solid currentColor;animation:tbg-pulse 2s ease-out infinite;
}
body.tbg-anim-page .tbg-anim-snapshot { pointer-events:none!important; }
@keyframes tbg-float { 0%,100%{translate:0 0} 50%{translate:0 -10px} }
@keyframes tbg-pulse { from{scale:1;opacity:.5} to{scale:1.5;opacity:0} }
@keyframes tbg-shine { 0%{translate:-100% 0;opacity:0} 15%{opacity:1} 100%{translate:100% 0;opacity:0} }
@media(max-width:767px) {
  html.tbg-js body.tbg-anim-page .tbg-anim-pending { --tbg-reveal-distance:24px; }
  body.tbg-anim-page [data-tbg-float] { animation:none; }
}
/* Emergency visibility, and no animation for reduced-motion users. */
@media(prefers-reduced-motion:reduce) {
  html.tbg-js body.tbg-anim-page .tbg-anim-pending { opacity:1!important;translate:none!important; }
  body.tbg-anim-page [data-tbg-float],
  body.tbg-anim-page [data-tbg-chat]::after,
  body.tbg-anim-page [data-tbg-primary]::after { animation:none!important; }
  body.tbg-anim-page :is(.tbg-anim-card,.tbg-anim-button,.tbg-anim-faq-icon,.tbg-anim-header,.tbg-anim-arrow,.tbg-anim-icon,.tbg-anim-image-hover img,.tbg-anim-image-hover picture,.tbg-anim-image-hover [data-tbg-image-label],.tbg-anim-media > img,.tbg-anim-media > svg) { transition:none!important; }
  body.tbg-anim-page [data-tbg-marquee-clone] { display:none!important; }
}

@keyframes tbg-label { from {translate:0 10px} to {translate:0 0} }
