/* VX Product Cards */
.vxpc-wrap { position: relative; }

.vxpc-grid {
    display: grid;
    gap: 24px;
}

.vxpc-equal .vxpc-card { display: flex; flex-direction: column; }
.vxpc-equal .vxpc-body { flex: 1; display: flex; flex-direction: column; }
.vxpc-equal .vxpc-btn { margin-top: auto; }

.vxpc-card {
    background: #fff;
    overflow: hidden;
    position: relative;
    transition: transform .3s ease, box-shadow .3s ease;
}

.vxpc-layout-minimal { background: transparent !important; border: none !important; box-shadow: none !important; }
.vxpc-layout-overlay .vxpc-body { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(transparent, rgba(0,0,0,.75)); color: #fff; }
.vxpc-layout-overlay .vxpc-title a,
.vxpc-layout-overlay .vxpc-price,
.vxpc-layout-overlay .vxpc-excerpt,
.vxpc-layout-overlay .vxpc-category,
.vxpc-layout-overlay .vxpc-review-count { color: #fff !important; }
.vxpc-layout-centered .vxpc-body { text-align: center; }
.vxpc-layout-side .vxpc-card { display: flex; }
.vxpc-layout-side .vxpc-media { flex: 0 0 40%; }
.vxpc-layout-side .vxpc-body { flex: 1; }
.vxpc-layout-compact .vxpc-media .vxpc-img { aspect-ratio: 4/3; }

.vxpc-media { position: relative; overflow: hidden; }
.vxpc-media-link { display: block; position: relative; }
.vxpc-img { width: 100%; display: block; transition: transform .4s ease, filter .4s ease, opacity .3s ease; }
.vxpc-zoom:hover .vxpc-img { transform: scale(1.08); }
.vxpc-gray:hover .vxpc-img { filter: grayscale(100%); }
.vxpc-img-swap { position: absolute; inset: 0; opacity: 0; }
.vxpc-media:hover .vxpc-img-swap { opacity: 1; }
.vxpc-img-overlay { position: absolute; inset: 0; opacity: 0; transition: opacity .3s ease; pointer-events: none; }

.vxpc-badge {
    position: absolute;
    background: #d32f2f;
    color: #fff;
    font-size: 12px;
    padding: 4px 10px;
    z-index: 2;
}
.vxpc-badge-top-left { top: 10px; left: 10px; }
.vxpc-badge-top-right { top: 10px; right: 10px; }
.vxpc-badge-bottom-left { bottom: 10px; left: 10px; }
.vxpc-badge-bottom-right { bottom: 10px; right: 10px; }

.vxpc-oos {
    position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
    background: rgba(0,0,0,.6); color: #fff; padding: 6px 14px; font-size: 13px; border-radius: 4px; z-index: 2;
}

.vxpc-body { padding: 16px; }
.vxpc-category { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 6px; }
.vxpc-category a { color: inherit; }
.vxpc-title { margin: 0 0 8px; font-size: 16px; line-height: 1.3; }
.vxpc-title a { text-decoration: none; transition: color .2s ease; }
.vxpc-rating { margin-bottom: 8px; line-height: 1; }
.vxpc-rating .star-rating { display: inline-block; vertical-align: middle; }
.vxpc-review-count { font-size: 13px; margin-left: 4px; }
.vxpc-price { font-weight: 600; margin-bottom: 8px; }
.vxpc-excerpt { font-size: 14px; margin-bottom: 10px; }
.vxpc-btn {
    display: inline-block;
    background: #1e2430;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
    transition: background .2s ease, color .2s ease, transform .2s ease;
}
.vxpc-btn:hover { transform: translateY(-2px); }
.vxpc-btn-disabled { opacity: .6; cursor: not-allowed; background: #999; }

/* Carousel */
.vxpc-viewport { overflow: hidden; }
.vxpc-track { display: flex; transition: transform .4s ease; }
.vxpc-slide { flex: 0 0 auto; }
.vxpc-arrow {
    position: absolute; top: 40%; transform: translateY(-50%);
    background: #fff; border: 1px solid #eee; width: 36px; height: 36px; border-radius: 50%;
    font-size: 20px; cursor: pointer; z-index: 3; box-shadow: 0 2px 8px rgba(0,0,0,.1);
}
.vxpc-prev { left: 8px; }
.vxpc-next { right: 8px; }
.vxpc-dots { text-align: center; margin-top: 14px; }
.vxpc-dots button {
    width: 8px; height: 8px; border-radius: 50%; border: none; background: #ccc; margin: 0 4px; cursor: pointer; padding: 0;
}
.vxpc-dots button.vxpc-active { background: #1e2430; }

/* Entrance animations */
@keyframes vxpc-fade-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes vxpc-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes vxpc-zoom-in { from { opacity: 0; transform: scale(.9); } to { opacity: 1; transform: scale(1); } }
@keyframes vxpc-slide-up { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } }
.vxpc-anim-fade-up { animation: vxpc-fade-up .5s ease both; }
.vxpc-anim-fade-in { animation: vxpc-fade-in .5s ease both; }
.vxpc-anim-zoom-in { animation: vxpc-zoom-in .5s ease both; }
.vxpc-anim-slide-up { animation: vxpc-slide-up .5s ease both; }

.vxpc-empty { padding: 20px; text-align: center; color: #777; }
