.sticky-cv-banner {
    position: fixed;
    right: clamp(16px, 2vw, 28px);
    bottom: clamp(16px, 2vw, 28px);
    z-index: 95;
    width: clamp(128px, 12vw, 190px);
    line-height: 0;
    isolation: isolate;
}

.sticky-cv-banner.is-hidden {
    display: none;
}

.sticky-cv-banner a {
    display: block;
    color: inherit;
    text-decoration: none;
}

.sticky-cv-banner img {
    display: block;
    width: 100%;
    height: auto;
    filter: drop-shadow(0 18px 28px rgba(28, 28, 28, 0.14));
    transform-origin: 50% 80%;
    animation: stickyBannerTilt 1.3s cubic-bezier(0.45, 0, 0.2, 1) infinite;
}

.sticky-cv-close {
    position: absolute;
    top: -18px;
    right: -18px;
    z-index: 1;
    border: none;
    background: transparent;
    color: #1c1c1c;
    font: inherit;
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1;
    cursor: pointer;
}

@media (max-width: 640px) {
    .sticky-cv-banner {
        display: none;
    }
}

@keyframes stickyBannerTilt {
    0% {
        transform: translateY(0) rotate(0deg) scale(1);
    }

    18% {
        transform: translateY(-7px) rotate(-5deg) scale(1.025);
    }

    34% {
        transform: translateY(1px) rotate(2deg) scale(0.995);
    }

    48% {
        transform: translateY(-3px) rotate(-3deg) scale(1.01);
    }

    64% {
        transform: translateY(0) rotate(1deg) scale(1);
    }

    82% {
        transform: translateY(-1px) rotate(-1deg) scale(1.004);
    }

    100% {
        transform: translateY(0) rotate(0deg) scale(1);
    }
}
