/* =========================================
   STYLE.CSS - TYPEMYWEB (NEO-MODERN SAAS)
   ========================================= */

/* --- 1. Base & Background Pattern --- */
.bg-pattern {
    /* Pola titik-titik (Dot Grid) ala ruang kerja digital */
    background-color: #F8FAFC;
    background-image: radial-gradient(#CBD5E1 1.5px, transparent 1.5px);
    background-size: 32px 32px;
}

/* --- 2. Glassmorphism (Efek Kaca Buram) --- */
.glass-panel {
    background: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.8);
    box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.05);
}

/* --- 3. Navbar Navigasi Hover --- */
.hover-purple:hover {
    color: #7C3AED;
}

.hover-pink:hover {
    color: #EC4899;
}

.hover-yellow:hover {
    color: #FBBF24;
}

.cta-nav {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.cta-nav:hover {
    transform: scale(1.05) translateY(-2px);
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.3);
    background-color: #000000;
}

/* --- 4. Animated Text Shimmer (Teks Nyala Mengalir) --- */
.text-shimmer {
    background: linear-gradient(to right,
            #7C3AED 20%,
            #EC4899 40%,
            #EC4899 60%,
            #7C3AED 80%);
    background-size: 200% auto;
    color: transparent;
    -webkit-background-clip: text;
    background-clip: text;
    animation: shine 3s linear infinite;
}

@keyframes shine {
    to {
        background-position: 200% center;
    }
}

/* --- 5. Main CTA Button (Tombol Bikin Web) --- */
.btn-primary {
    transition: all 0.3s ease;
}

.btn-primary:hover {
    transform: scale(1.05) translateY(-2px);
}

.btn-glow {
    background: inherit;
    filter: blur(15px);
    opacity: 0.6;
    transition: opacity 0.3s ease;
}

.btn-primary:hover .btn-glow {
    opacity: 1;
    filter: blur(20px);
}

/* --- 6. Animated Blobs (Bola Warna Warni di Background) --- */
.blob {
    position: absolute;
    filter: blur(90px);
    z-index: 0;
    opacity: 0.5;
    animation: blob-bounce 12s infinite alternate ease-in-out;
}

.blob-purple {
    background-color: #7C3AED;
    width: 400px;
    height: 400px;
    border-radius: 50%;
    top: 5%;
    left: 5%;
}

.blob-yellow {
    background-color: #FBBF24;
    width: 350px;
    height: 350px;
    border-radius: 50%;
    top: 30%;
    right: 10%;
    animation-delay: 2s;
}

.blob-pink {
    background-color: #EC4899;
    width: 300px;
    height: 300px;
    border-radius: 50%;
    bottom: -10%;
    left: 30%;
    animation-delay: 4s;
}

@keyframes blob-bounce {
    0% {
        transform: scale(1) translate(0, 0);
    }

    33% {
        transform: scale(1.1) translate(30px, -40px);
    }

    66% {
        transform: scale(0.9) translate(-20px, 20px);
    }

    100% {
        transform: scale(1.2) translate(40px, -20px);
    }
}

/* --- 7. Chat Mockup Container --- */
.glass-mockup {
    background: rgba(255, 255, 255, 0.4);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    box-shadow: 0 30px 60px rgba(124, 58, 237, 0.15);
    animation: float 6s ease-in-out infinite;
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0) rotate(0deg);
    }

    50% {
        transform: translateY(-20px) rotate(2deg);
    }
}

/* Efek Kilau Lewat (Shine) di Mockup */
.mockup-shine {
    background: linear-gradient(135deg,
            rgba(255, 255, 255, 0) 0%,
            rgba(255, 255, 255, 0.4) 50%,
            rgba(255, 255, 255, 0) 100%);
    transform: translateX(-150%);
    animation: slide-shine 4s ease-in-out infinite;
    z-index: 10;
    pointer-events: none;
}

@keyframes slide-shine {

    0%,
    20% {
        transform: translateX(-150%);
    }

    80%,
    100% {
        transform: translateX(150%);
    }
}

/* --- 8. Chat Bubbles Animation (Staggered Entrance) --- */
.chat-bubble {
    opacity: 0;
    animation: slideUpFade 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.bubble-1 {
    animation-delay: 0.5s;
}

.bubble-2 {
    animation-delay: 2.0s;
}

.bubble-3 {
    animation-delay: 4.0s;
}

.bubble-4 {
    animation-delay: 5.5s;
}

@keyframes slideUpFade {
    from {
        opacity: 0;
        transform: translateY(20px) scale(0.95);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* --- 9. Fake Typing Indicator --- */
.typing-indicator-container {
    animation: slideUpFade 0.5s ease forwards 7s;
    /* Muncul paling akhir */
}

.typing-dot {
    animation: typing 1.4s infinite ease-in-out both;
}

.dot-1 {
    animation-delay: -0.32s;
}

.dot-2 {
    animation-delay: -0.16s;
}

@keyframes typing {

    0%,
    80%,
    100% {
        transform: scale(0);
        opacity: 0.3;
    }

    40% {
        transform: scale(1);
        opacity: 1;
    }
}

/* --- 10. Floating Decor Icons --- */
.decor-icon {
    animation: float 5s ease-in-out infinite;
}

.icon-top-right {
    top: -30px;
    right: -30px;
    animation-delay: 1s;
}

.icon-bottom-left {
    bottom: -20px;
    left: -20px;
    animation-delay: 2s;
}

/* --- 11. Feature Cards 3D Interactive Hover --- */
.feature-card {
    transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.feature-card:hover {
    background: rgba(255, 255, 255, 0.95);
    transform: translateY(-15px) scale(1.02);
}

/* Shadow dinamis berdasarkan card yang di-hover */
.feature-card:nth-child(1):hover {
    box-shadow: 0 25px 50px rgba(124, 58, 237, 0.15);
}

.feature-card:nth-child(2):hover {
    box-shadow: 0 25px 50px rgba(236, 72, 153, 0.15);
}

.feature-card:nth-child(3):hover {
    box-shadow: 0 25px 50px rgba(251, 191, 36, 0.15);
}

.feature-icon-wrapper {
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.feature-card:hover .feature-icon-wrapper {
    transform: scale(1.15) rotate(8deg);
}

.feature-card:nth-child(2):hover .feature-icon-wrapper {
    transform: scale(1.15) rotate(-8deg);
    /* Putaran beda arah biar dinamis */
}

/* --- 12. Bottom CTA Section --- */
.cta-bg-pattern {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMiIgY3k9IjIiIHI9IjEiIGZpbGw9IiNmZmYiIGZpbGwtb3BhY2l0eT0iMC4wNyIvPjwvc3ZnPg==");
    background-size: 20px 20px;
}

.cta-glow {
    width: 400px;
    height: 400px;
    border-radius: 50%;
    filter: blur(100px);
    opacity: 0.4;
    animation: pulse-glow 6s infinite alternate;
}

.glow-pink {
    background: #EC4899;
    top: -150px;
    right: -150px;
}

.glow-purple {
    background: #7C3AED;
    bottom: -150px;
    left: -150px;
    animation-delay: 3s;
}

@keyframes pulse-glow {
    0% {
        opacity: 0.3;
        transform: scale(1);
    }

    100% {
        opacity: 0.6;
        transform: scale(1.2);
    }
}

.cta-button {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 0 30px rgba(255, 255, 255, 0.2);
}

.cta-button:hover {
    background-color: #FBBF24;
    color: #0F172A;
    transform: scale(1.05) translateY(-3px);
    box-shadow: 0 15px 40px rgba(251, 191, 36, 0.4);
}

.icon-arrow {
    transition: transform 0.3s ease;
}

.cta-button:hover .icon-arrow {
    transform: translateX(8px);
}

/* --- 13. Marquee Tape Transition --- */
.animate-marquee {
    animation: marquee 30s linear infinite;
    min-width: 200%;
}

@keyframes marquee {
    0% {
        transform: translateX(0);
    }

    100% {
        transform: translateX(-50%);
    }
}