/* Storylinn Animations (v1.2 - Calm Module Transitions) */

/* Legacy typewriter support (kept safe, now mostly unused) */
.cursor {
    display: inline-block;
    width: 3px;
    height: 1.1em;
    background-color: var(--text);
    margin-left: 2px;
    vertical-align: middle;
    animation: blink 0.8s step-end infinite;
}

@keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}

.char {
    display: inline-block;
    opacity: 0;
    filter: blur(8px);
    transition: opacity 0.2s ease-out, filter 0.2s ease-out;
}

.char.visible {
    opacity: 1;
    filter: blur(0px);
}

/* Whole module transition out
   Kept as a safe no-op because director.js now handles direct slide transitions. */
.blur-out {
    animation: none;
}

@keyframes blurOutEffect {
    0% {
        filter: blur(0px);
        opacity: 1;
        transform: translateY(0) scale(1);
    }
    100% {
        filter: blur(0px);
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* Daily counter tick */
.counter-tick {
    animation: counterTick 0.5s ease-out;
}

@keyframes counterTick {
    0% {
        opacity: 0;
        transform: translateX(-50%) translateY(10px);
        filter: blur(6px);
    }
    70% {
        opacity: 0.38;
        transform: translateX(-50%) translateY(0px);
        filter: blur(0px);
    }
    100% {
        opacity: 0.35;
        transform: translateX(-50%) translateY(-2px);
        filter: blur(0px);
    }
}

/* Lightbox Page Entry */
.slide-up {
    animation: slideUp 0.5s ease-out forwards;
}

@keyframes slideUp {
    from { transform: translateY(30px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}