/* ── Animated Text Block ─────────────────────────────────────────────────── */
.bkbg-at-wrapper {
    padding-top: var(--bkbg-at-pad-top, 0);
    padding-bottom: var(--bkbg-at-pad-bottom, 0);
    text-align: var(--bkbg-at-text-align, left);
}

.bkbg-at-wrapper.bkbg-at-align-center { margin-left: auto; margin-right: auto; }

.bkbg-at-heading {
    margin: 0;
    font-family: var(--bkbg-at-heading-font-family, inherit);
    font-size: var(--bkbg-at-heading-font-size-d, var(--bkbg-at-heading-font-size, var(--bkbg-at-font-size, 48px)));
    font-weight: var(--bkbg-at-heading-font-weight, var(--bkbg-at-font-weight, 700));
    font-style: var(--bkbg-at-heading-font-style, normal);
    text-transform: var(--bkbg-at-heading-text-transform, none);
    text-decoration: var(--bkbg-at-heading-text-decoration, none);
    line-height: var(--bkbg-at-heading-line-height-d, var(--bkbg-at-heading-line-height, var(--bkbg-at-line-height, 1.2)));
    letter-spacing: var(--bkbg-at-heading-letter-spacing-d, var(--bkbg-at-heading-letter-spacing, var(--bkbg-at-letter-spacing, 0)));
    word-spacing: var(--bkbg-at-heading-word-spacing-d, var(--bkbg-at-heading-word-spacing, normal));
    color: var(--bkbg-at-static-color, #0f172a);
    max-width: var(--bkbg-at-max-width, none);
}

.bkbg-at-wrapper.bkbg-at-align-center .bkbg-at-heading { margin-left: auto; margin-right: auto; }

/* ── Static text ─────────────────────────────────────────────────────────── */
.bkbg-at-static { color: inherit; }

/* ── Animated word wrapper ───────────────────────────────────────────────── */
.bkbg-at-animated-word {
    display: inline-block;
    position: relative;
    color: var(--bkbg-at-animated-color, #2563eb);
    white-space: pre;
}

.bkbg-at-word-text {
    display: inline;
    background: var(--bkbg-at-highlight-bg, transparent);
    padding: 0 var(--bkbg-at-highlight-pad, 0);
    border-radius: var(--bkbg-at-highlight-radius, 0);
}

/* ── Cursor ──────────────────────────────────────────────────────────────── */
.bkbg-at-cursor {
    display: inline-block;
    color: var(--bkbg-at-cursor-color, #2563eb);
    font-weight: 100;
    animation: bkbg-at-blink var(--bkbg-at-cursor-blink, 530ms) step-end infinite;
    margin-left: 1px;
}

@keyframes bkbg-at-blink {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* ── Fade effect ─────────────────────────────────────────────────────────── */
@keyframes bkbg-at-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes bkbg-at-fade-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}

.bkbg-at-effect-fade.is-entering { animation: bkbg-at-fade-in 0.35s ease-out forwards; }
.bkbg-at-effect-fade.is-leaving  { animation: bkbg-at-fade-out 0.35s ease-in forwards; }

/* ── Slide Up effect ─────────────────────────────────────────────────────── */
@keyframes bkbg-at-slide-up-in {
    from { opacity: 0; transform: translateY(60%); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes bkbg-at-slide-up-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(-60%); }
}

.bkbg-at-effect-slide-up { overflow: hidden; vertical-align: bottom; }
.bkbg-at-effect-slide-up .bkbg-at-word-text { display: inline-block; }
.bkbg-at-effect-slide-up.is-entering .bkbg-at-word-text { animation: bkbg-at-slide-up-in 0.38s cubic-bezier(0.22,1,0.36,1) forwards; }
.bkbg-at-effect-slide-up.is-leaving  .bkbg-at-word-text { animation: bkbg-at-slide-up-out 0.28s ease-in forwards; }

/* ── Slide Down effect ───────────────────────────────────────────────────── */
@keyframes bkbg-at-slide-down-in {
    from { opacity: 0; transform: translateY(-60%); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes bkbg-at-slide-down-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(60%); }
}

.bkbg-at-effect-slide-down { overflow: hidden; vertical-align: bottom; }
.bkbg-at-effect-slide-down .bkbg-at-word-text { display: inline-block; }
.bkbg-at-effect-slide-down.is-entering .bkbg-at-word-text { animation: bkbg-at-slide-down-in 0.38s cubic-bezier(0.22,1,0.36,1) forwards; }
.bkbg-at-effect-slide-down.is-leaving  .bkbg-at-word-text { animation: bkbg-at-slide-down-out 0.28s ease-in forwards; }

/* ── Flip effect ─────────────────────────────────────────────────────────── */
@keyframes bkbg-at-flip-in {
    from { opacity: 0; transform: rotateX(-90deg); }
    to   { opacity: 1; transform: rotateX(0deg); }
}
@keyframes bkbg-at-flip-out {
    from { opacity: 1; transform: rotateX(0deg); }
    to   { opacity: 0; transform: rotateX(90deg); }
}

.bkbg-at-effect-flip { perspective: 400px; vertical-align: bottom; }
.bkbg-at-effect-flip .bkbg-at-word-text { display: inline-block; }
.bkbg-at-effect-flip.is-entering .bkbg-at-word-text { animation: bkbg-at-flip-in 0.4s cubic-bezier(0.22,1,0.36,1) forwards; }
.bkbg-at-effect-flip.is-leaving  .bkbg-at-word-text { animation: bkbg-at-flip-out 0.3s ease-in forwards; }

/* ── Zoom effect ─────────────────────────────────────────────────────────── */
@keyframes bkbg-at-zoom-in {
    from { opacity: 0; transform: scale(0.6); }
    to   { opacity: 1; transform: scale(1); }
}
@keyframes bkbg-at-zoom-out {
    from { opacity: 1; transform: scale(1); }
    to   { opacity: 0; transform: scale(1.4); }
}

.bkbg-at-effect-zoom .bkbg-at-word-text { display: inline-block; }
.bkbg-at-effect-zoom.is-entering .bkbg-at-word-text { animation: bkbg-at-zoom-in 0.38s cubic-bezier(0.34,1.56,0.64,1) forwards; }
.bkbg-at-effect-zoom.is-leaving  .bkbg-at-word-text { animation: bkbg-at-zoom-out 0.25s ease-in forwards; }

/* ── Blur effect ─────────────────────────────────────────────────────────── */
@keyframes bkbg-at-blur-in {
    from { opacity: 0; filter: blur(10px); }
    to   { opacity: 1; filter: blur(0); }
}
@keyframes bkbg-at-blur-out {
    from { opacity: 1; filter: blur(0); }
    to   { opacity: 0; filter: blur(10px); }
}

.bkbg-at-effect-blur .bkbg-at-word-text { display: inline-block; }
.bkbg-at-effect-blur.is-entering .bkbg-at-word-text { animation: bkbg-at-blur-in 0.4s ease-out forwards; }
.bkbg-at-effect-blur.is-leaving  .bkbg-at-word-text { animation: bkbg-at-blur-out 0.3s ease-in forwards; }

/* ── Responsive typography ────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .bkbg-at-heading {
        font-size: var(--bkbg-at-heading-font-size-t, var(--bkbg-at-heading-font-size-d, var(--bkbg-at-heading-font-size, var(--bkbg-at-font-size, 48px))));
        line-height: var(--bkbg-at-heading-line-height-t, var(--bkbg-at-heading-line-height-d, var(--bkbg-at-heading-line-height, var(--bkbg-at-line-height, 1.2))));
        letter-spacing: var(--bkbg-at-heading-letter-spacing-t, var(--bkbg-at-heading-letter-spacing-d, var(--bkbg-at-heading-letter-spacing, var(--bkbg-at-letter-spacing, 0))));
        word-spacing: var(--bkbg-at-heading-word-spacing-t, var(--bkbg-at-heading-word-spacing-d, var(--bkbg-at-heading-word-spacing, normal)));
    }
}
@media (max-width: 767px) {
    .bkbg-at-heading {
        font-size: var(--bkbg-at-heading-font-size-m, var(--bkbg-at-heading-font-size-t, var(--bkbg-at-heading-font-size-d, var(--bkbg-at-heading-font-size, var(--bkbg-at-font-size, 48px)))));
        line-height: var(--bkbg-at-heading-line-height-m, var(--bkbg-at-heading-line-height-t, var(--bkbg-at-heading-line-height-d, var(--bkbg-at-heading-line-height, var(--bkbg-at-line-height, 1.2)))));
        letter-spacing: var(--bkbg-at-heading-letter-spacing-m, var(--bkbg-at-heading-letter-spacing-t, var(--bkbg-at-heading-letter-spacing-d, var(--bkbg-at-heading-letter-spacing, var(--bkbg-at-letter-spacing, 0)))));
        word-spacing: var(--bkbg-at-heading-word-spacing-m, var(--bkbg-at-heading-word-spacing-t, var(--bkbg-at-heading-word-spacing-d, var(--bkbg-at-heading-word-spacing, normal))));
    }
}

/* ── Reduced Motion ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .bkbg-at-cursor   { animation: none !important; }
    .bkbg-at-word-text { animation: none !important; }
    .bkbg-at-effect-fade.is-leaving,
    .bkbg-at-effect-slide-up.is-leaving .bkbg-at-word-text,
    .bkbg-at-effect-slide-down.is-leaving .bkbg-at-word-text,
    .bkbg-at-effect-flip.is-leaving .bkbg-at-word-text,
    .bkbg-at-effect-zoom.is-leaving .bkbg-at-word-text,
    .bkbg-at-effect-blur.is-leaving .bkbg-at-word-text { opacity: 0 !important; }
}
