@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');

body {
    font-family: 'Inter', sans-serif;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
.gradient-bg { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
.card-hover { transition: transform 0.3s ease, box-shadow 0.3s ease; }
.card-hover:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0,0,0,0.1); }
.pulse-animation { animation: pulse 2s infinite; }
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.7; }
}
.blinking-cursor {
    animation: blink 1s infinite;
    color: #10b981;
}
@keyframes blink {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}
/* Compat: some animations referenced blink-caret; provide alias */
@keyframes blink-caret {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}
.typing-animation {
    overflow: hidden;
    white-space: nowrap;
    animation: typing 3s steps(40, end), blink-caret 0.75s step-end infinite;
}
@keyframes typing {
    from { width: 0; }
    to { width: 100%; }
}

/* Small helpers that were inline in HTML */
.min-h-\[300px\] { min-height: 300px; }

/* End of styles.css */

/* Interactive button styles */
.btn-interactive {
    position: relative;
    overflow: hidden;
    transition: transform 160ms ease, box-shadow 160ms ease;
    will-change: transform;
}
.btn-interactive:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 20px rgba(2,6,23,0.08);
}
.btn-interactive:active {
    transform: translateY(-1px) scale(0.995);
}
.btn-interactive:focus {
    outline: none;
}
.btn-interactive:focus-visible {
    box-shadow: 0 0 0 4px rgba(99,102,241,0.16);
}

/* Ripple element */
.btn-interactive .ripple {
    position: absolute;
    border-radius: 50%;
    transform: scale(0);
    animation: ripple 600ms linear;
    background: rgba(255,255,255,0.45);
    pointer-events: none;
}
@keyframes ripple {
    to { transform: scale(4); opacity: 0; }
}

/* WhatsApp floating button */
.whatsapp-float {
    --wh-size: 64px;
    position: fixed;
    right: 20px;
    bottom: 20px;
    background: #25D366;
    color: #fff;
    width: var(--wh-size);
    height: var(--wh-size);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 10px 30px rgba(37,211,102,0.22);
    z-index: 1000;
    text-decoration: none;
    transform: translateY(0) scale(1);
    transition: transform .18s ease, box-shadow .18s ease;
    animation: wh-pulse 2.8s infinite;
}
.whatsapp-float.large { --wh-size: 80px; }
.whatsapp-float .wh-icon { width: 58%; height: 58%; display: block; }
.whatsapp-float:hover { transform: translateY(-6px) scale(1.06); box-shadow: 0 16px 36px rgba(37,211,102,0.28); }
.whatsapp-float:active { transform: translateY(-3px) scale(.99); }

@keyframes wh-pulse {
    0% { box-shadow: 0 0 0 0 rgba(37,211,102,0.22); transform: scale(1); }
    60% { box-shadow: 0 0 0 18px rgba(37,211,102,0); transform: scale(1.03); }
    100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); transform: scale(1); }
}

/* subtle icon wobble for life */
.whatsapp-float:hover .wh-icon { transform: rotate(-6deg); transition: transform .2s ease; }
.whatsapp-float .wh-icon { transition: transform .28s cubic-bezier(.2,.9,.3,1); }

/* Ensure footer stays at the bottom when page content is short */
footer { margin-top: auto; }

/* Responsive adjustments for WhatsApp floating button and mobile spacing */
@media (max-width: 640px) {
    .whatsapp-float {
        --wh-size: 52px;
        right: 14px;
        bottom: 14px;
        animation-duration: 3.2s;
    }
    .whatsapp-float.large { --wh-size: 64px; }
}

@media (min-width: 1024px) {
    .whatsapp-float { --wh-size: 72px; right: 28px; bottom: 28px; }
    .whatsapp-float.large { --wh-size: 92px; }
}

/* Make sure mobile nav links show as a stacked menu when opened */
@media (max-width: 767px) {
    /* mobile menu: use max-height + opacity for smooth transitions
       We toggle the class `open` in JS to animate the menu. */
    #nav-links {
        position: absolute;
        left: 0;
        right: 0;
        top: 64px; /* below header */
        background: linear-gradient(180deg, rgba(118,75,162,0.98), rgba(102,126,234,0.98));
        padding: 0 20px;
        overflow: hidden;
        max-height: 0;
        opacity: 0;
        transform: translateY(-8px);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 50;
        transition: max-height 360ms cubic-bezier(.2,.8,.2,1), opacity 240ms ease, transform 240ms ease, padding 360ms cubic-bezier(.2,.8,.2,1);
    }
    #nav-links a { display: block; padding: 8px 12px; border-radius: 8px; }
    #nav-links.open {
        max-height: 420px; /* tall enough for menu items */
        opacity: 1;
        transform: translateY(0);
        padding: 12px 20px;
    }
}