.pd-dcb2919b-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
	gap: 20px;
    --rotation-speed: 5s; /* Default */
}

/* Equal Height Option */
.pd-dcb2919b-equal-height-yes .pd-dcb2919b-grid .pd-dcb2919b-item,
.pd-dcb2919b-equal-height-yes .pd-dcb2919b-carousel .swiper-slide {
    height: auto;
}
.pd-dcb2919b-equal-height-yes .swiper-wrapper {
    align-items: stretch;
}

.pd-dcb2919b-item {
	display: flex;
	flex-direction: column;
	border: 1px solid #eee;
	padding: 15px;
	border-radius: 5px;
	background: #fff;
	text-align: right; /* RTL alignment */
	direction: rtl; /* RTL direction */
    height: 100%; /* For equal heights */
    transition: all 0.3s ease;
}

/* Size Variants - Medium is default */
.pd-dcb2919b-size-small .pd-dcb2919b-item {
    padding: 10px;
}
.pd-dcb2919b-size-small .pd-dcb2919b-title {
    font-size: 1rem;
}
.pd-dcb2919b-size-small .pd-dcb2919b-desc {
    font-size: 0.85rem;
    margin-bottom: 10px;
}
.pd-dcb2919b-size-small .pd-dcb2919b-price {
    font-size: 0.95rem;
    margin-bottom: 10px;
}
.pd-dcb2919b-size-small .pd-dcb2919b-btn {
    padding: 6px 12px;
    font-size: 0.85rem;
}

.pd-dcb2919b-size-large .pd-dcb2919b-item {
    padding: 25px;
}
.pd-dcb2919b-size-large .pd-dcb2919b-title {
    font-size: 1.5rem;
}
.pd-dcb2919b-size-large .pd-dcb2919b-desc {
    font-size: 1.1rem;
    margin-bottom: 20px;
}
.pd-dcb2919b-size-large .pd-dcb2919b-price {
    font-size: 1.3rem;
    margin-bottom: 20px;
}
.pd-dcb2919b-size-large .pd-dcb2919b-btn {
    padding: 12px 25px;
    font-size: 1.1rem;
}


.pd-dcb2919b-img {
	margin-bottom: 15px;
}
.pd-dcb2919b-img img {
	max-width: 100%;
	height: auto;
	display: block;
	margin: 0 auto;
}
.pd-dcb2919b-title {
	font-size: 1.2rem;
	margin: 0 0 10px;
}
.pd-dcb2919b-title a {
	text-decoration: none;
	color: inherit;
}
.pd-dcb2919b-desc {
	margin-bottom: 15px;
	color: #666;
	flex-grow: 1; /* Pushes price and button to bottom */
}
.pd-dcb2919b-price {
	font-weight: bold;
	font-size: 1.1rem;
	margin-bottom: 15px;
	display: flex;
	justify-content: flex-start; /* Align left in RTL context, keeping items together */
	align-items: center;
	gap: 10px;
	flex-direction: row-reverse; /* Reverses the DOM order so Sale Price (<ins>) is to the left of Regular Price (<del>) in LTR view, and vice versa in RTL. We need sale left of regular. Default DOM: del then ins. row-reverse makes ins left of del. */
}
/* Ensure del and ins don't have default margins that break flexbox */
.pd-dcb2919b-price del,
.pd-dcb2919b-price ins {
	display: inline-block;
	text-decoration: none; /* override default if needed, wc usually adds line-through to del */
}
.pd-dcb2919b-price del {
	text-decoration: line-through;
	opacity: 0.7;
	font-size: 0.9em;
}

/* Button Wrap */
.pd-dcb2919b-btn-wrap {
    display: flex;
    /* Default alignment is flex-start (which is Right in RTL) */
    align-self: flex-start; 
    margin-top: auto; /* Pushes button to bottom if desc flex-grow doesn't take all space */
}

.pd-dcb2919b-btn {
	display: inline-block;
	background: #333;
	color: #fff;
	padding: 10px 20px;
	text-decoration: none;
	border-radius: 3px;
	transition: all 0.3s ease;
}

/* Optional Rotation Animation (Grid Only) */
.pd-dcb2919b-animate-yes .pd-dcb2919b-item {
    animation: pd-fade-rotate var(--rotation-speed) infinite linear;
}

@keyframes pd-fade-rotate {
    0%, 10% { opacity: 1; }
    20%, 90% { opacity: 0.2; }
    100% { opacity: 1; }
}

/* Swiper overrides if needed */
.pd-dcb2919b-carousel {
    overflow: hidden;
    position: relative;
    padding-bottom: 30px; /* Space for pagination if added later */
}