/* Gradient Text Animator Block — bkbg-gta-* */ .bkbg-gta-app { display: block; } /* ── Text element typography ── */ .bkbg-gta-el { font-family: var(--bkbg-gta-tt-font-family, inherit); font-size: var(--bkbg-gta-tt-font-size-d, 56px); font-weight: var(--bkbg-gta-tt-font-weight, 800); font-style: var(--bkbg-gta-tt-font-style, normal); text-decoration: var(--bkbg-gta-tt-text-decoration, none); text-transform: var(--bkbg-gta-tt-text-transform, none); line-height: var(--bkbg-gta-tt-line-height-d, 1.15); letter-spacing: var(--bkbg-gta-tt-letter-spacing-d, -1px); word-spacing: var(--bkbg-gta-tt-word-spacing-d, normal); } /* Heading specificity (0,2,0) beats editor theme heading rules */ .bkbg-gta-app h1.bkbg-gta-el, .bkbg-gta-app h2.bkbg-gta-el, .bkbg-gta-app h3.bkbg-gta-el, .bkbg-gta-app h4.bkbg-gta-el, .bkbg-gta-app h5.bkbg-gta-el, .bkbg-gta-app h6.bkbg-gta-el { font-family: var(--bkbg-gta-tt-font-family, inherit); font-size: var(--bkbg-gta-tt-font-size-d, 56px); font-weight: var(--bkbg-gta-tt-font-weight, 800); font-style: var(--bkbg-gta-tt-font-style, normal); text-decoration: var(--bkbg-gta-tt-text-decoration, none); text-transform: var(--bkbg-gta-tt-text-transform, none); line-height: var(--bkbg-gta-tt-line-height-d, 1.15); letter-spacing: var(--bkbg-gta-tt-letter-spacing-d, -1px); word-spacing: var(--bkbg-gta-tt-word-spacing-d, normal); margin: 0; } .bkbg-gta-text { background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; color: transparent; background-size: 300% 300%; display: inline-block; width: 100%; } /* ── Shift — gradient slides across ── */ .bkbg-gta-anim-shift { animation: bkbg-gta-shift linear infinite; } @keyframes bkbg-gta-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* ── Pulse — gradient softly breathes ── */ .bkbg-gta-anim-pulse { animation: bkbg-gta-pulse ease-in-out infinite alternate; } @keyframes bkbg-gta-pulse { 0% { background-position: 0% 50%; filter: brightness(1); } 100% { background-position: 100% 50%; filter: brightness(1.3); } } /* ── Rainbow — full hue cycle ── */ .bkbg-gta-anim-rainbow { animation: bkbg-gta-rainbow linear infinite; } @keyframes bkbg-gta-rainbow { 0% { filter: hue-rotate(0deg); } 100% { filter: hue-rotate(360deg); } } /* ── Reveal — spotlight sweep ── */ .bkbg-gta-anim-reveal { animation: bkbg-gta-reveal linear infinite; background-size: 400% 100%; } @keyframes bkbg-gta-reveal { 0% { background-position: -100% 50%; } 100% { background-position: 200% 50%; } } /* ── Wave — best done in frontend.js with spans, fallback: gradient scroll ── */ .bkbg-gta-anim-wave { animation: bkbg-gta-wave ease-in-out infinite; background-size: 300% 300%; } @keyframes bkbg-gta-wave { 0%,100% { background-position: 0% 50%; } 25% { background-position: 50% 0%; } 50% { background-position: 100% 50%; } 75% { background-position: 50% 100%; } } /* ── Wave per-character spans (built by frontend.js) ── */ .bkbg-gta-char { display: inline; background: inherit; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: bkbg-gta-char-wave ease-in-out infinite; } @keyframes bkbg-gta-char-wave { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-0.25em); } } /* ── Glitch — RGB displacement ── */ .bkbg-gta-anim-glitch { position: relative; animation: bkbg-gta-glitch-base linear infinite; } @keyframes bkbg-gta-glitch-base { 0%,90%,100% { filter: none; } 91% { filter: blur(1px) drop-shadow(2px 0 #f00); } 93% { filter: blur(1px) drop-shadow(-2px 0 #0ff); } 95% { filter: none; } 96% { filter: drop-shadow(2px 0 #f0f); } 98% { filter: none; } } /* ── Pause/reverse on hover ── */ .bkbg-gta-pause-hover:hover .bkbg-gta-text, .bkbg-gta-pause-hover:hover .bkbg-gta-char { animation-play-state: paused; } .bkbg-gta-reverse-hover:hover .bkbg-gta-text, .bkbg-gta-reverse-hover:hover .bkbg-gta-char { animation-direction: reverse; } /* Typography responsive – tablet */ @media (max-width: 1024px) { .bkbg-gta-app .bkbg-gta-el { font-size: var(--bkbg-gta-tt-font-size-t, var(--bkbg-gta-tt-font-size-d, 56px)); line-height: var(--bkbg-gta-tt-line-height-t, var(--bkbg-gta-tt-line-height-d, 1.15)); letter-spacing: var(--bkbg-gta-tt-letter-spacing-t, var(--bkbg-gta-tt-letter-spacing-d, -1px)); word-spacing: var(--bkbg-gta-tt-word-spacing-t, var(--bkbg-gta-tt-word-spacing-d, normal)); } } /* Typography responsive – mobile */ @media (max-width: 767px) { .bkbg-gta-app .bkbg-gta-el { font-size: var(--bkbg-gta-tt-font-size-m, var(--bkbg-gta-tt-font-size-t, var(--bkbg-gta-tt-font-size-d, 56px))); line-height: var(--bkbg-gta-tt-line-height-m, var(--bkbg-gta-tt-line-height-t, var(--bkbg-gta-tt-line-height-d, 1.15))); letter-spacing: var(--bkbg-gta-tt-letter-spacing-m, var(--bkbg-gta-tt-letter-spacing-t, var(--bkbg-gta-tt-letter-spacing-d, -1px))); word-spacing: var(--bkbg-gta-tt-word-spacing-m, var(--bkbg-gta-tt-word-spacing-t, var(--bkbg-gta-tt-word-spacing-d, normal))); } }