        @keyframes shimmer {
            0% { left: -100%; }
            100% { left: 100%; }
        }
        
        .btn-shimmer {
            position: relative;
            overflow: hidden;
        }
        
        .btn-shimmer::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
            transition: left 0.5s;
        }
        
        .btn-shimmer:hover::before {
            left: 100%;
        }
        
        .text-gradient {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }
        
        .text-gradient-gold {
            background: linear-gradient(90deg, #ffd700, #ffed4e);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }
        
        .bg-gradient-hero {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        }
        
        .bg-gradient-card {
            background: linear-gradient(135deg, #f8f9ff 0%, #e8ecff 100%);
        }
        
        .perspective-1000 {
            perspective: 1000px;
        }
        
        .rotate-3d {
            transform: perspective(1000px) rotateY(-15deg) rotateX(5deg);
        }
        
        .rotate-3d-hover:hover {
            transform: perspective(1000px) rotateY(-10deg) rotateX(2deg);
        }
        
        .hero-pattern::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><polygon fill="%23ffffff08" points="0,0 1000,300 1000,1000 0,700"/><polygon fill="%23ffffff05" points="0,200 1000,0 1000,800 0,1000"/></svg>');
            background-size: cover;
        }
