/* Independent Jahan Shoofazh post card — 1.17.0 */

.jspanel-post-grid{
	display:grid;
	grid-template-columns:repeat(3,minmax(0,1fr));
	grid-auto-rows:auto;
	gap:22px;
	align-items:start;
}
.jspanel-post-card{
	display:flex!important;
	align-self:flex-start!important;
	min-width:0;
	height:auto!important;
	margin:0!important;
	padding:0!important;
	border:0!important;
	background:transparent!important;
	box-shadow:none!important;
}
.jspanel-post-card::before,
.jspanel-post-card::after{
	content:none!important;
	display:none!important;
}
.jspanel-post-card-inner{
	display:flex;
	flex-direction:column;
	width:100%;
	height:auto;
	overflow:hidden;
	border:1px solid var(--jspanel-post-card-border,var(--jspanel-line,#e7e9ec));
	border-radius:var(--jspanel-post-card-radius,var(--jspanel-radius-lg,18px));
	background:var(--jspanel-post-card-bg,var(--jspanel-surface,#fff));
	box-shadow:0 2px 12px rgba(17,24,39,.025);
	transition:border-color .25s ease,box-shadow .32s ease;
}
@media (hover:hover) and (pointer:fine){
	.jspanel-post-card-inner:hover{
		border-color:#dddfe3;
		box-shadow:0 10px 28px rgba(17,24,39,.055);
	}
}

.jspanel-post-card-media{
	position:relative;
	display:block;
	width:100%;
	overflow:hidden;
	aspect-ratio:var(--jspanel-post-card-ratio,3/2);
	background:var(--jspanel-soft,#f7f8fa);
}
.jspanel-post-card-image{
	display:block!important;
	width:100%!important;
	height:100%!important;
	margin:0!important;
	object-fit:var(--jspanel-post-card-fit,cover);
	transform:scale(1);
	transform-origin:center;
	transition:transform 1.8s cubic-bezier(.16,1,.3,1);
	will-change:transform;
}
@media (hover:hover) and (pointer:fine){
	.jspanel-post-card-media:hover .jspanel-post-card-image{
		transform:scale(var(--jspanel-post-card-zoom,1.075));
	}
}
.jspanel-post-card-placeholder{
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	height:100%;
	color:#c7c9cd;
	background:linear-gradient(145deg,#f8f9fa,#f2f3f5);
}
.jspanel-post-card-placeholder svg{
	width:46px;
	height:46px;
	fill:none;
	stroke:currentColor;
	stroke-width:1.4;
	stroke-linecap:round;
	stroke-linejoin:round;
}

.jspanel-post-card-body{
	display:flex;
	flex:0 0 auto;
	flex-direction:column;
	min-width:0;
	min-height:0;
	height:auto;
	padding:var(--jspanel-post-card-padding,15px);
}
.jspanel-post-card-meta{
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:10px;
	min-height:20px;
	margin:0 0 8px;
	color:#9a9da2;
	font-size:9.5px;
	line-height:1.5;
}
.jspanel-post-card-category{
	display:inline-flex;
	align-items:center;
	max-width:65%;
	overflow:hidden;
	color:var(--jspanel-primary,#e63946)!important;
	font-weight:750;
	text-decoration:none!important;
	text-overflow:ellipsis;
	white-space:nowrap;
}
.jspanel-post-card-meta time{
	flex:none;
	color:#9a9da2;
	white-space:nowrap;
}
.jspanel-post-card-title{
	display:-webkit-box;
	margin:0!important;
	padding:0!important;
	overflow:hidden;
	color:var(--jspanel-ink,#1d1f23)!important;
	font-size:var(--jspanel-post-card-title-size,14px)!important;
	font-weight:800!important;
	line-height:1.7!important;
	-webkit-box-orient:vertical;
	-webkit-line-clamp:var(--jspanel-post-card-title-lines,2);
}
.jspanel-post-card-title a{
	color:inherit!important;
	text-decoration:none!important;
}
.jspanel-post-card-excerpt{
	display:-webkit-box;
	min-height:0;
	margin:0!important;
	overflow:hidden;
	color:#777a80;
	font-size:var(--jspanel-post-card-excerpt-size,11px);
	font-weight:400;
	line-height:1.9;
	-webkit-box-orient:vertical;
	-webkit-line-clamp:var(--jspanel-post-card-excerpt-lines,3);
}
.jspanel-post-card-bottom{
	display:flex;
	flex-direction:column;
	width:100%;
	margin-top:var(--jspanel-post-card-content-gap,6px);
	padding-top:0;
}
.jspanel-post-card-footer{
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	margin-top:var(--jspanel-post-card-readmore-gap,8px);
	padding-top:0;
}
.jspanel-post-card-readmore{
	display:inline-flex!important;
	align-items:center!important;
	justify-content:center!important;
	gap:5px;
	width:auto!important;
	min-height:0!important;
	margin:0 auto!important;
	padding:2px 4px!important;
	border:0!important;
	border-radius:0!important;
	background:transparent!important;
	color:#4e5156!important;
	font-size:var(--jspanel-post-card-readmore-size,10.5px)!important;
	font-weight:750!important;
	line-height:1.5!important;
	text-align:center;
	text-decoration:none!important;
	box-shadow:none!important;
	transition:color .18s ease!important;
}
.jspanel-post-card-readmore svg{
	display:block;
	width:15px;
	height:15px;
	fill:none;
	stroke:currentColor;
	stroke-width:1.6;
	stroke-linecap:round;
	stroke-linejoin:round;
}
.jspanel-post-card-readmore:hover{
	background:transparent!important;
	color:var(--jspanel-primary,#e63946)!important;
}

/* Legacy WoodMart/Elementor wrapper becomes the card itself after AJAX replacement. */
.jspanel-post-card.jspanel-post-card--legacy{
	position:relative!important;
	float:none!important;
	width:auto!important;
	max-width:none!important;
}
.jspanel-post-card.jspanel-post-card--legacy > *{
	box-sizing:border-box;
}

/* Carousel compatibility while its motion engine is still supplied by the current page builder/theme. */
.jspanel-post-carousel--custom-card .swiper-wrapper,
.jspanel-post-carousel--custom-card .owl-stage{
	align-items:stretch!important;
}
.jspanel-post-carousel--custom-card .swiper-slide,
.jspanel-post-carousel--custom-card .owl-item{
	height:auto!important;
}
.jspanel-post-carousel--custom-card .jspanel-post-card--equal-height{
	height:auto!important;
}

/* Independent blog archive. */
.jspanel-blog-archive{
	width:100%;
	padding:42px 0 56px;
	background:#fff;
}
.jspanel-blog-archive-shell{
	width:min(1240px,calc(100% - 36px));
	margin:0 auto;
}
.jspanel-blog-archive-head{
	margin:0 0 26px;
}
.jspanel-blog-archive-head h1{
	margin:0!important;
	color:var(--jspanel-ink,#1d1f23);
	font-size:24px!important;
	font-weight:900!important;
	line-height:1.5!important;
}
.jspanel-blog-archive-description{
	max-width:760px;
	margin-top:9px;
	color:#777a80;
	font-size:11.5px;
	line-height:1.9;
}
.jspanel-blog-pagination{
	margin-top:30px;
}
.jspanel-blog-pagination .nav-links{
	display:flex;
	align-items:center;
	justify-content:center;
	flex-wrap:wrap;
	gap:6px;
}
.jspanel-blog-pagination .page-numbers{
	display:flex;
	align-items:center;
	justify-content:center;
	min-width:34px;
	height:34px;
	padding:0 10px;
	border:1px solid var(--jspanel-line,#e7e9ec);
	border-radius:9px;
	background:#fff;
	color:#5d6167;
	font-size:10px;
	font-weight:750;
	text-decoration:none;
}
.jspanel-blog-pagination .page-numbers.current,
.jspanel-blog-pagination a.page-numbers:hover{
	border-color:var(--jspanel-primary,#e63946);
	background:var(--jspanel-primary,#e63946);
	color:#fff;
}
.jspanel-blog-empty{
	padding:34px;
	border:1px solid var(--jspanel-line,#e7e9ec);
	border-radius:16px;
	background:var(--jspanel-soft,#f7f8fa);
	color:#777a80;
	font-size:12px;
	text-align:center;
}

@media (max-width:1024px){
	.jspanel-post-grid{
		grid-template-columns:repeat(2,minmax(0,1fr));
		gap:16px;
	}
}
@media (max-width:767px){
	.jspanel-blog-archive{
		padding:28px 0 40px;
	}
	.jspanel-blog-archive-shell{
		width:min(100% - 28px,620px);
	}
	.jspanel-post-grid{
		grid-template-columns:1fr;
		gap:13px;
	}
	.jspanel-post-card-inner{
		border-radius:var(--jspanel-post-card-radius,14px);
	}
	.jspanel-post-card-body{
		padding:var(--jspanel-post-card-padding,12px);
	}
	.jspanel-blog-archive-head h1{
		font-size:20px!important;
	}
}


/* Equal-height mode is opt-in from the card settings panel. */
.jspanel-post-card--equal-height{
	align-self:flex-start!important;
	height:auto!important;
}
.jspanel-post-card--equal-height .jspanel-post-card-inner{
	flex:0 0 auto;
	height:auto;
	min-height:0;
}
.jspanel-post-card--equal-height .jspanel-post-card-body{
	flex:0 0 auto;
	height:auto;
}
.jspanel-post-card--equal-height .jspanel-post-card-excerpt{
	min-height:calc(var(--jspanel-post-card-excerpt-size,11px) * 1.9 * var(--jspanel-post-card-excerpt-lines,3));
}
.jspanel-post-card--equal-height .jspanel-post-card-bottom{
	flex:none;
	margin-top:var(--jspanel-post-card-content-gap,8px)!important;
}

.jspanel-post-card-footer{
	flex:none;
}
@media (max-width:767px){
	.jspanel-post-card-excerpt{
		min-height:0;
	}
}


/* 1.24.1 - centered text link CTA, still pinned to card bottom. */
html.jspanel-theme-dark .jspanel-post-card-readmore,
body.jspanel-theme-dark .jspanel-post-card-readmore{
	color:#c8cdd2!important;
}
html.jspanel-theme-dark .jspanel-post-card-readmore:hover,
body.jspanel-theme-dark .jspanel-post-card-readmore:hover{
	color:var(--jspanel-primary,#e63946)!important;
}


/* 1.24.2 - compact summary/CTA rhythm while preserving equal outer card heights. */
.jspanel-post-card-inner{
	justify-content:flex-start;
}


/* 1.26.1 — CTA is a bottom anchor, independent of title/excerpt length. */
.jspanel-post-card-body>.jspanel-post-card-bottom{
	margin-top:auto!important;
}


/* 1.27.1 — natural-height cards by default.
   Title, excerpt and "مطالعه" remain contiguous with no artificial flex spacer. */
.jspanel-post-card--natural-height .jspanel-post-card-bottom{
	margin-top:var(--jspanel-post-card-content-gap,8px)!important;
}
.jspanel-post-card-excerpt + .jspanel-post-card-footer{
	margin-top:var(--jspanel-post-card-readmore-gap,8px)!important;
}
.jspanel-post-card-bottom .jspanel-post-card-footer:first-child{
	margin-top:0!important;
}
.jspanel-post-card--equal-height .jspanel-post-card-bottom{
	margin-top:var(--jspanel-post-card-content-gap,8px)!important;
}




/* 1.27.2 final — deterministic equal heights, no flex spacer. */
.jspanel-post-card--equal-height .jspanel-post-card-excerpt.is-empty{
	visibility:hidden;
}


/* 1.28.3 — short titles no longer reserve invisible extra lines.
   The excerpt starts immediately after the real rendered title. */
.jspanel-post-card--equal-height .jspanel-post-card-title{
	min-height:0!important;
}
.jspanel-post-card-title + .jspanel-post-card-bottom{
	margin-top:var(--jspanel-post-card-content-gap,6px)!important;
}


/* 1.35.30 — equal-height article cards: "مطالعه" is pinned to the card bottom.
   A shorter excerpt creates flexible space BETWEEN excerpt and footer. */
.jspanel-post-card.jspanel-post-card--equal-height{
	height:100%!important;
	align-self:stretch!important;
}

.jspanel-post-card.jspanel-post-card--equal-height > .jspanel-post-card-inner{
	height:100%!important;
	min-height:100%!important;
}

.jspanel-post-card.jspanel-post-card--equal-height .jspanel-post-card-body{
	flex:1 1 auto!important;
	height:auto!important;
	min-height:0!important;
}

.jspanel-post-card.jspanel-post-card--equal-height .jspanel-post-card-bottom{
	flex:1 1 auto!important;
	min-height:0!important;
}

.jspanel-post-card.jspanel-post-card--equal-height .jspanel-post-card-footer{
	margin-top:auto!important;
	padding-top:var(--jspanel-post-card-readmore-gap,8px)!important;
}

/* The excerpt stays directly below the title; no artificial fixed-height excerpt box. */
.jspanel-post-card.jspanel-post-card--equal-height .jspanel-post-card-excerpt{
	flex:0 0 auto!important;
	min-height:0!important;
}

/* Carousel/grid wrappers must allow the card itself to stretch. */
.jspanel-post-carousel--custom-card .swiper-slide > .jspanel-post-card--equal-height,
.jspanel-post-carousel--custom-card .owl-item .jspanel-post-card--equal-height,
.jspanel-blog-archive .jspanel-post-card--equal-height{
	height:100%!important;
}
