.pc-7faaf427-wrapper {
    position: relative;
    --pc-gap: 20px;
    width: 100%;
}
.pc-7faaf427-carousel {
    overflow: hidden;
    width: 100%;
}
.pc-7faaf427-track {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: calc((100% - (var(--pc-gap) * 2)) / 3);
    gap: var(--pc-gap);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    transition: transform 0.4s ease;
}
.pc-7faaf427-track::-webkit-scrollbar {
    display: none;
}
.pc-7faaf427-item {
    position: relative;
    display: block;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    text-decoration: none;
    scroll-snap-align: start;
    transform: translateZ(0);
}
.pc-7faaf427-img-wrapper {
    position: relative;
    width: 100%;
    overflow: hidden;
}
.pc-7faaf427-img {
    width: 100%;
    height: 100%;
    transition: transform 0.5s ease;
}
.pc-7faaf427-overlay {
    position: absolute;
    inset: 0;
    background-color: rgba(0,0,0,0.6);
    opacity: 0;
    transition: opacity 0.4s ease;
}
.pc-7faaf427-content {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    padding: 24px;
    opacity: 0;
    transform: translateY(15px);
    transition: all 0.4s ease;
    z-index: 2;
}
.pc-7faaf427-hover-icon-wrapper {
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 3;
    opacity: 0;
    transform: scale(0.8) translateY(-10px);
    transition: all 0.4s ease;
}
.pc-7faaf427-hover-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #fff;
    color: #333;
    padding: 10px;
    border-radius: 50%;
    font-size: 16px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.pc-7faaf427-hover-icon svg {
    width: 1em;
    height: 1em;
    fill: currentColor;
}
.pc-7faaf427-item:hover .pc-7faaf427-img {
    transform: scale(1.05);
}
.pc-7faaf427-item:hover .pc-7faaf427-overlay,
.pc-7faaf427-item:hover .pc-7faaf427-content {
    opacity: 1;
    transform: translateY(0);
}
.pc-7faaf427-item:hover .pc-7faaf427-hover-icon-wrapper {
    opacity: 1;
    transform: scale(1) translateY(0);
}
.pc-7faaf427-title {
    color: #fff;
    margin: 0 0 8px 0;
    font-size: 1.25rem;
    font-weight: 600;
}
.pc-7faaf427-desc {
    color: rgba(255,255,255,0.8);
    margin: 0;
    font-size: 0.95rem;
}
.pc-7faaf427-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: #fff;
    border: none;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    cursor: pointer;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #333;
}
.pc-7faaf427-prev { left: -20px; }
.pc-7faaf427-next { right: -20px; }
.pc-7faaf427-dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 20px;
}
.pc-7faaf427-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ccc;
    cursor: pointer;
    transition: background 0.3s;
}
.pc-7faaf427-dot.active {
    background: #333;
}

@media (max-width: 767px) {
    .elementor-widget-portfolio_carousel_7faaf427 {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .elementor-widget-portfolio_carousel_7faaf427 .elementor-widget-container {
        margin: 0 -10px; /* Counteract default column padding if any, adjust based on theme */
        width: 100vw;
        position: relative;
        left: 50%;
        right: 50%;
        margin-left: -50vw;
        margin-right: -50vw;
    }
    .pc-7faaf427-wrapper {
        --pc-gap: 10px; /* Smaller gap on mobile */
    }
    .pc-7faaf427-track {
        grid-auto-columns: 85%; /* Slightly peek the next item */
        padding: 0;
    }
    .pc-7faaf427-item {
        border-radius: 0; /* Edge to edge, usually remove border radius */
    }
}