@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes imageFadeIn {
    from {
        opacity: 0;
        transform: scale(.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.card-img-container img.loaded {
    animation: imageFadeIn .3s ease-out;
}

.image-loading-spinner {
    z-index: 5;
}

.card-img-top.loaded + .image-loading-spinner {
    display: none !important;
}

.loading-spinner {
    width: 50px;
    height: 50px;
    border: 4px solid #f3f3f3;
    border-top: 4px solid var(--primary-color);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@media (width <= 1200px) {
    .categories-grid {
        grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
        gap: 20px;
    }
}

@media (width <= 992px) {
    .nav-contact-info {
        flex-direction: column;
        gap: 8px;
        margin: 10px 0;
        align-items: flex-start;
        margin-left: 0;
    }
    
    .btn-callback {
        margin-top: 5px;
    }
    
    .navbar-brand {
        margin-right: auto;
        padding-left: 15px;
        left: 0;
    }
    
    .brand-subtitle {
        font-size: .55rem;
    }
    
    body {
        padding-top: 70px;
    }
}

@media (width <= 768px) {
    .navbar-brand {
        left: -20px !important;
    }
    
    .section-title {
        font-size: 1.5rem;
    }
    
    .card-body {
        padding: 1rem;
    }
    
    .action-buttons {
        display: flex;
        flex-direction: column;
        gap: 5px;
    }
    
    .action-buttons .btn {
        margin-bottom: 5px;
        font-size: .8rem;
        padding: .25rem .5rem;
    }
    
    .product-actions {
        flex-direction: column;
    }
    
    .btn-details,
    .btn-request {
        width: 100%;
        text-align: center;
    }
}

@media (width <= 576px) {
    .navbar-brand {
        left: -20px !important;
    }
    
    .btn {
        padding: 10px 20px;
        font-size: .9rem;
    }
    
    .category-meta {
        gap: 12px;
    }
    
    .btn-explore {
        width: 100%;
        justify-content: center;
    }
    
    .variation-actions {
        flex-direction: column;
        gap: 5px;
    }
    
    .action-buttons {
        flex-direction: column;
        gap: 3px;
    }
}

.product-card,
.category-card,
.service-card {
    transition: all .3s cubic-bezier(.25, .46, .45, .94);
}

@media (width <= 768px) {
    .modal-body {
        padding: 1rem !important;
    }
    
    .service-actions,
    .category-meta {
        flex-wrap: wrap;
    }
    
    .service-actions .btn,
    .category-meta .btn {
        flex: 1;
        min-width: 120px;
    }
    
    .category-title,
    .service-card .card-title {
        font-size: 1.1rem !important;
        line-height: 1.2;
    }
    
    .category-card:hover,
    .service-card:hover,
    .product-card:hover {
        box-shadow: 0 5px 15px rgb(122 92 52 / 10%);
    }
}

@supports (-webkit-touch-callout: none) {
    .category-card,
    .service-card,
    .product-card {
        transform: translateZ(0);
    }
}

.category-img-container img,
.service-card .card-img-container img,
.product-card .card-img-container img {
    backface-visibility: hidden;
}

.category-card,
.service-card,
.product-card {
    will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
    .category-card,
    .service-card,
    .product-card,
    .loading-spinner {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

.category-card,
.service-card,
.product-card {
    animation-fill-mode: both !important;
}

.image-preloaded {
    opacity: 1;
    transform: none;
    animation: none;
}

.category-card.loaded,
.service-card.loaded,
.product-card.loaded {
    animation-delay: 0s !important;
}