/* PropTech Event – Animations */

/* Float animation for hero cards */
@keyframes float {
    0%, 100% { transform: translateY(0px); }
    50%       { transform: translateY(-12px); }
}
.pte-float { animation: float 6s ease-in-out infinite; }
.pte-float-2 { animation: float 8s ease-in-out infinite; animation-delay: -2s; }
.pte-float-3 { animation: float 7s ease-in-out infinite; animation-delay: -4s; }

/* Glow pulse */
@keyframes glowPulse {
    0%, 100% { box-shadow: 0 0 20px rgba(0,245,196,0.3); }
    50%       { box-shadow: 0 0 40px rgba(0,245,196,0.6); }
}
.pte-glow { animation: glowPulse 3s ease infinite; }

/* Text reveal */
@keyframes slideUp {
    from { opacity: 0; transform: translateY(40px); }
    to   { opacity: 1; transform: translateY(0); }
}
.pte-slide-up { animation: slideUp 0.8s cubic-bezier(0.16,1,0.3,1) both; }
.pte-slide-up-d1 { animation-delay: 0.1s; }
.pte-slide-up-d2 { animation-delay: 0.2s; }
.pte-slide-up-d3 { animation-delay: 0.3s; }
.pte-slide-up-d4 { animation-delay: 0.4s; }
.pte-slide-up-d5 { animation-delay: 0.5s; }
.pte-slide-up-d6 { animation-delay: 0.6s; }

/* Counter animation classes */
.pte-counter { display: inline-block; }

/* Gradient animated background */
@keyframes gradientShift {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}
.pte-gradient-animate {
    background-size: 200% 200%;
    animation: gradientShift 8s ease infinite;
}

/* Shimmer loading */
@keyframes shimmer {
    from { background-position: -200% 0; }
    to   { background-position: 200% 0; }
}
.pte-shimmer {
    background: linear-gradient(90deg, var(--border) 25%, rgba(255,255,255,0.05) 50%, var(--border) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}

/* Typewriter cursor */
.pte-cursor::after {
    content: '|';
    animation: blink-cursor 1s step-start infinite;
    color: var(--accent);
    margin-left: 2px;
}
@keyframes blink-cursor { 50% { opacity: 0; } }

/* Spinner */
@keyframes spin { to { transform: rotate(360deg); } }
.pte-spinner {
    width: 24px; height: 24px;
    border: 2px solid rgba(255,255,255,0.2);
    border-top-color: currentColor;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

/* Page transition */
@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.pte-page-fadein { animation: fadeIn 0.5s ease both; }

/* Ticket card shine */
.pte-ticket-card::after {
    content: '';
    position: absolute;
    top: 0; left: -100%;
    width: 60%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.04), transparent);
    transform: skewX(-15deg);
    transition: left 0.6s ease;
}
.pte-ticket-card:hover::after { left: 150%; }

/* Stagger grid animation */
.pte-stagger > * {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}
.pte-stagger.revealed > *:nth-child(1) { transition-delay: 0.05s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(2) { transition-delay: 0.10s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(3) { transition-delay: 0.15s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(4) { transition-delay: 0.20s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(5) { transition-delay: 0.25s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(6) { transition-delay: 0.30s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(7) { transition-delay: 0.35s; opacity: 1; transform: none; }
.pte-stagger.revealed > *:nth-child(8) { transition-delay: 0.40s; opacity: 1; transform: none; }
