.splash-tv-overlay {
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: 999;
    transform: scale(1);
    pointer-events: none;
    background-size: 100%;
    background-image: url('../assets/interface/scene/overlay/static.gif');
    transition: opacity 0.2s;
}

.splash-tv-overlay--hidden {
    opacity: 0;
}

.splash-tv-overlay--visible {
    opacity: 0.1;
}


.typewriter-letter {
    opacity: 0;
}

.cutscene-text-box--hidden--new {
    transform: translateY(-100%);
    /* animation-delay: 100ms; */
    opacity: 0;
}

.cutscene-text-box--hidden--fade {
    opacity: 0;
    transition: opacity 0.3s;
}

.cutscene-text-box--hidden--bottom {
    transform: translateY(100%);
    /* animation-delay: 100ms; */
    opacity: 0;
}

.cutscene-next-button--hidden--out {
    opacity: 0;
    transform: translateY(0%);
    pointer-events: none;
}

.cutscene-text-box--visible--new {
    transform: translateY(0%);
    /*  animation: 0.05s 1 slideInBounceDown linear;
    animation-delay: 100ms; */
    opacity: 1;
}

.cutscene-character-sprite--bounce {
    /* animation: 0.2s 1 dialogueBounce linear; */
}

.icon-clickable--splash {
    color: rgba(var(--off-black), 1);
    background-color: rgba(var(--gold), 1);
    display: inline-block;
    padding: 0.5% 1%;
    border-radius: 100vmin;
    transform: scale(0.5) translate(-20%, -80%);
    opacity: 0.5;
}

.icon-clickable--splash:hover {
    opacity: 1;
}

.promo-container {
    transition: transform 0.1s;
}

.promo-container:hover {
    transform: scale(1.1);
}



@keyframes slideInBounceDown {
    0% {
        transform: translateY(0%);
    }
  
    50% {
        transform: translateY(10%);
    }
  
    100% {
        transform: translateY(0%);
    }
  }

  @keyframes dialogueBounce {
    0% {
        transform: translateY(0%);
    }
  
    50% {
        transform: translateY(-3%);
    }
  
    100% {
        transform: translateY(0%);
    }
  }
  
.bumper-container {
    width: 100vw;
    height: 100vh;
    background-color: rgba(var(--teal), 1);
    z-index: 999;
    transition: opacity 0.5s;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    position: fixed;
}

.bumper-container--visible {
    opacity: 1;
    pointer-events: auto;
}

.bumper-container--hidden {
    opacity: 0;
    pointer-events: none;
}

.theme-container {
    width: 100%;
    height: 100%;
    transition: all 0.2s;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    position: fixed;
    z-index: 998;
    overflow: hidden;
}

/* Same footprint and placement as .splash-container-wrapper (height set in JS via updateElementSize) */
@keyframes theme-container-wrapper-in {
    from {
        transform: translate(50%, -50%) scale(0.8);
    }
    to {
        transform: translate(50%, -50%) scale(1);
    }
}

.theme-container--visible {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
    pointer-events: auto;
}

.theme-container--hidden {
    opacity: 1;
    transform: translate(-20%, -15%) scale(0);
    pointer-events: none;
}

.theme-container-wrapper {
    width: 75%;
    position: absolute;
    top: 50%;
    right: 50%;
    border-radius: 2vmin;
    animation: theme-container-wrapper-in 0.2s ease-out 1s both;
    overflow: hidden;
    background-color: rgba(var(--salmon), 1);
}

/* Full-bleed art behind character / speech (was CSS background-image on wrapper) */
.theme-container-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    border-radius: inherit;
    z-index: 0;
    pointer-events: none;
    opacity: 0.3;
}

/* Character: two states only; transition uses overshoot bezier (no keyframes). Rest pose sits on the left. */
.theme-container-character {
    display: block;
    position: absolute;
    left: -2%;
    bottom: 0%;
    width: auto;
    height: 82%;
    max-width: 74%;
    object-fit: contain;
    pointer-events: none;
    transform-origin: 35% 100%;
    transition: transform 0.2s cubic-bezier(0.34, 1.2, 0.52, 1);
    z-index: 2;
}

.theme-container-character--hidden {
    transform: translate(calc(-100vw - 100%), 0) rotate(14deg);
}

.theme-container-character--visible {
    transform: translate(0, 0) rotate(0deg);
}

.theme-speech-bubble {
    position: absolute;
    top: 30%;
    left: 30%;
    width: 100%;
    z-index: 1;
    pointer-events: none;
    transition:
        opacity 0.2s ease,
        transform 0.15s cubic-bezier(0.34, 1.2, 0.52, 1);
}

.theme-speech-bubble--hidden {
    transform: translateX(-100%) translateY(50%);
    transition-delay: 0s;
}

.theme-speech-bubble--visible {
    transform: translateX(0%) translateY(0%) rotate(5deg);
    transition-delay: 0.05s;
}

.theme-speech-bubble__text {
    margin: 0;
    padding: 3% 6% 4% 6%;
    font-family: 'Primer Print Bold', cursive;
    color: rgba(var(--off-black), 1);
    background-color: rgba(var(--off-white), 1);
    line-height: 100%;
    text-align: center;
    border-style: solid;
    border-color: rgba(var(--off-black), 1);
    width: 40%;
    border-radius: 3vmin;
}

.bumper-container--preview {
    width: 100vw;
    height: 100vh;
    background-color: rgba(var(--salmon), 1);
    z-index: 999;
    transition: opacity 0.25s;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    position: fixed;
}

.bumper-logo {
    position: absolute;
    top: 45%;
    left: 49%;
    transform: translate(-50%, -50%);
    background-image: url('../assets/branding/logo/logo-main.png');
    background-repeat: no-repeat;
    background-size: contain;
    background-position: 50% 45%;
    width: 35vmax;
    height: 35vmax;
    max-width: 40rem;
}

.bumper-logo--hidden {
    transform: translate(-50%, -60%) scale(1);
    opacity: 0;
}

.bumper-logo--visible {
    transform: translate(-50%, -50%) scale(1);
    /* animation: 0.7s 1 logoBounceWiggle ease-out;
    animation-delay: 100ms; */
    transition: transform 200ms, opacity 200ms;
    opacity: 1;
}

.bumper-logo--out {
    transform: translate(-50%, -50%) scale(2);
    opacity: 0;
    transition: transform 300ms, opacity 300ms;
}

@keyframes logoBounceWiggle {
    0% {
        transform: translate(-50%, -50%) scale(1);
    }

    15% {
        transform: translate(-50%, -50%) scale(1.3);
    }

    45% {
        transform: translate(-50%, -50%) scale(0.95);
    }

    75% {
        transform: translate(-50%, -50%) scale(1.02);
    }

    100% {
        transform: translate(-50%, -50%) scale(1);
    }
}

.splash--hidden--fade {
    opacity: 0;
    transition: opacity 500ms;
    pointer-events: none;
    user-select: none;
}

.free-container {
    width: 100%;
    height: 65%;
    position: absolute;
    top: 48%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0% 1.2%;
}

.free-resource {
    width: 21.5%;
    height: 49%;
    border-radius: 1.2rem;
    background-size: 100%;
    background-position: center center;
    background-repeat: no-repeat;
    transition: opacity 0.2s;     
}
.free-resource-hidden {
    opacity: 0.1;
    pointer-events: none;
}

.free-resource:hover {
    transform: scale(1.05);
}

.free-resource-selected {
    transform: scale(0.95) !important;  
    pointer-events: none;
}



.splash-text-link {
    color: rgba(var(--off-black), 1);
    background-color: rgba(var(--gold), 1);
    padding: 0.5% 1%;
    border-radius: 1vmin;
}

.splash-text-link:hover {
    background-color: rgba(var(--off-white), 1);
}