/* Base Container Styles */
.tg-sh-wrap .tg-sh-stage {
    min-height: 180px; 
    display: flex; 
}

/* Base Text Hooks */
.tg-sh-wrap .tg-sh-before-text,
.tg-sh-wrap .tg-sh-after-text {
    /* Fonts/Spacing handled exclusively by Elementor UI */
    color: var(--tg-sh-accent, #00f2ff);
}

.tg-sh-wrap .tg-sh-main-text {
    margin: 0;
    min-height: 1.2em;
    color: var(--tg-sh-text, #ffffff);
}

/* ========================================= */
/* ANIMATION CLASSES & KEYFRAMES             */
/* ========================================= */

.tg-sh-wrap .typing::after { 
    content: '|'; 
    animation: tigerBlink 0.7s infinite; 
    color: var(--tg-sh-cursor, #00f2ff); 
}
@keyframes tigerBlink { 50% { opacity: 0; } }

.tg-sh-wrap .waterfall span { display: inline-block; opacity: 0; transform: translateY(-30px); animation: tigerDrop 0.5s ease forwards; }
@keyframes tigerDrop { to { opacity: 1; transform: translateY(0); } }

.tg-sh-wrap .slide-up { overflow: hidden; }
.tg-sh-wrap .slide-up span { display: block; transform: translateY(100%); animation: tigerSUp 0.7s cubic-bezier(0.23, 1, 0.32, 1) forwards; }
@keyframes tigerSUp { to { transform: translateY(0); } }

.tg-sh-wrap .glitch { 
    animation: tigerGAnim 0.2s infinite; 
    text-shadow: 2px 0 var(--tg-sh-glitch-1, #ff00ff), -2px 0 var(--tg-sh-glitch-2, #00ffff); 
}
@keyframes tigerGAnim { 0%, 100% { transform: translate(0); } 33% { transform: translate(-3px, 2px); } 66% { transform: translate(3px, -2px); } }

.tg-sh-wrap .blur-in { animation: tigerBIn 1.2s ease forwards; }
@keyframes tigerBIn { from { filter: blur(30px); opacity: 0; transform: scale(1.5); } to { filter: blur(0); opacity: 1; transform: scale(1); } }

.tg-sh-wrap .flare { animation: tigerFIn 1.5s ease-out forwards; }
@keyframes tigerFIn { from { letter-spacing: 60px; opacity: 0; } to { letter-spacing: 4px; opacity: 1; } }

.tg-sh-wrap .flip {
    transform-origin: 50% 0;
    backface-visibility: hidden;
    animation: tigerF3d 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
@keyframes tigerF3d {
    from { transform: perspective(600px) rotateX(-90deg); opacity: 0; }
    to   { transform: perspective(600px) rotateX(0);      opacity: 1; }
}

.tg-sh-wrap .neon { 
    animation: tigerFlicker 2s infinite alternate; 
    text-shadow: 0 0 10px var(--tg-sh-neon, #00f2ff), 0 0 30px var(--tg-sh-neon, #00f2ff); 
}
@keyframes tigerFlicker { 0%, 18%, 22%, 25%, 53%, 57%, 100% { opacity: 1; } 20%, 24%, 55% { opacity: 0.3; } }

.tg-sh-wrap .rotate-in span { display: inline-block; opacity: 0; animation: tigerRIn 0.6s ease forwards; }
@keyframes tigerRIn { from { transform: rotate(-45deg) scale(0); opacity: 0; } to { transform: rotate(0) scale(1); opacity: 1; } }

.tg-sh-wrap .reveal { position: relative; color: transparent; animation: tigerColorShow 0.1s 0.4s forwards; }
.tg-sh-wrap .reveal::after { 
    content: ''; position: absolute; top: 0; left: 0; width: 0; height: 100%; 
    background: var(--tg-sh-reveal, #00f2ff); 
    animation: tigerRevBlock 0.8s ease-in-out forwards; 
}
@keyframes tigerRevBlock { 0% { width: 0; left: 0; } 50% { width: 100%; left: 0; } 100% { width: 0; left: 100%; } }
@keyframes tigerColorShow { to { color: inherit; } }

.tg-sh-wrap .letter-drop { display: inline-block; white-space: nowrap; }
.tg-sh-wrap .letter-drop span { display: inline-block; opacity: 0; transform: translateY(-80px); animation: tigerLetterDrop 0.6s cubic-bezier(.62,-0.09,.32,1.2) forwards; background: none; color: inherit; filter: blur(2px);}
.tg-sh-wrap .letter-drop span.space { background: none !important; color: transparent !important; padding: 0 0.32em; filter: none !important;}
@keyframes tigerLetterDrop { 
    0% { opacity: 0; transform: translateY(-80px); filter: blur(8px);} 
    45% { opacity: 1; filter: blur(0.5px); transform: translateY(5px) scale(1.07) rotate(-1.2deg);} 
    62% { transform: translateY(-10px) scale(0.98) rotate(1.1deg); filter: blur(0.8px);} 
    75% { filter: blur(0); transform: translateY(2px) scale(1.02) rotate(-0.3deg);} 
    90% { filter: blur(0.1px); transform: translateY(-2px) scale(1.01) rotate(0.3deg);} 
    100% { opacity: 1; filter: blur(0); transform: translateY(0) scale(1) rotate(0);} 
}