/* ===========================================
   SLIDER TEXT ANIMATIONS
   =========================================== */

/* Base: tüm animasyonlu elementler başlangıçta gizli */
.slide-anim {
    opacity: 0;
    animation-fill-mode: forwards;
    animation-duration: 0.8s;
    animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Aktif slide'daki animasyonları tetikle */
.carousel-item.active .slide-anim {
    animation-play-state: running;
}

/* ---- fadeIn ---- */
.slide-anim.anim-fadeIn { animation-name: slFadeIn; }
@keyframes slFadeIn {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ---- fadeInUp ---- */
.slide-anim.anim-fadeInUp { animation-name: slFadeInUp; }
@keyframes slFadeInUp {
    from { opacity: 0; transform: translateY(40px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ---- slideInLeft ---- */
.slide-anim.anim-slideInLeft { animation-name: slSlideLeft; }
@keyframes slSlideLeft {
    from { opacity: 0; transform: translateX(-80px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* ---- slideInRight ---- */
.slide-anim.anim-slideInRight { animation-name: slSlideRight; }
@keyframes slSlideRight {
    from { opacity: 0; transform: translateX(80px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* ---- slideInUp ---- */
.slide-anim.anim-slideInUp { animation-name: slSlideUp; }
@keyframes slSlideUp {
    from { opacity: 0; transform: translateY(60px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ---- zoomIn ---- */
.slide-anim.anim-zoomIn { animation-name: slZoomIn; }
@keyframes slZoomIn {
    from { opacity: 0; transform: scale(0.6); }
    to   { opacity: 1; transform: scale(1); }
}

/* ---- bounceIn ---- */
.slide-anim.anim-bounceIn { animation-name: slBounceIn; animation-duration: 1s; }
@keyframes slBounceIn {
    0%   { opacity: 0; transform: scale(0.3); }
    50%  { opacity: 1; transform: scale(1.08); }
    70%  { transform: scale(0.95); }
    100% { opacity: 1; transform: scale(1); }
}

/* ---- typewriter ---- */
.slide-anim.anim-typewriter {
    overflow: hidden;
    white-space: nowrap;
    border-right: 3px solid rgba(255,255,255,0.75);
    animation: slTypewriter 2.5s steps(40, end) forwards, slBlinkCaret 0.75s step-end infinite;
    width: 0;
    opacity: 1;
}
@keyframes slTypewriter {
    from { width: 0; }
    to   { width: 100%; }
}
@keyframes slBlinkCaret {
    from, to { border-color: transparent; }
    50% { border-color: rgba(255,255,255,0.75); }
}

/* ---- flipIn ---- */
.slide-anim.anim-flipIn { animation-name: slFlipIn; perspective: 400px; }
@keyframes slFlipIn {
    from { opacity: 0; transform: perspective(400px) rotateX(-20deg); }
    to   { opacity: 1; transform: perspective(400px) rotateX(0); }
}

/* ---- none (animasyon yok) ---- */
.slide-anim.anim-none {
    opacity: 1;
    animation: none;
}

/* Subtitle delay */
.slide-anim-delay-1 { animation-delay: 0.3s; }
.slide-anim-delay-2 { animation-delay: 0.6s; }
.slide-anim-delay-3 { animation-delay: 0.9s; }

/* ===========================================
   SLIDER TEXT SIZING
   =========================================== */
.slide-text-small h1 { font-size: clamp(1.4rem, 3vw, 2rem) !important; }
.slide-text-small .lead { font-size: clamp(0.85rem, 1.5vw, 1rem) !important; }

.slide-text-normal h1 { font-size: clamp(2rem, 5vw, 3rem) !important; }
.slide-text-normal .lead { font-size: clamp(1rem, 2vw, 1.2rem) !important; }

.slide-text-large h1 { font-size: clamp(2.5rem, 6vw, 3.8rem) !important; }
.slide-text-large .lead { font-size: clamp(1.1rem, 2.5vw, 1.4rem) !important; }

.slide-text-xlarge h1 { font-size: clamp(3rem, 7vw, 4.5rem) !important; }
.slide-text-xlarge .lead { font-size: clamp(1.3rem, 3vw, 1.7rem) !important; }

/* ===========================================
   SLIDER TEXT BACKGROUND (glassmorphism tag)
   =========================================== */
.slide-text-bg {
    display: inline;
    padding: 4px 14px;
    border-radius: 8px;
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
}
