/* ==========================================================================
   Thợ Máy Tính — Blog cards redesign (thomaytinh.com)
   Áp dụng cho: Porto "Posts Grid" + Type Builder card (.porto-tb-item.type-post)
   - Trang chủ: slider "Thông tin & Blog"
   - Trang /blog/ và mọi grid bài viết khác
   Không ảnh hưởng tới carousel sản phẩm (chỉ nhắm vào card có .type-post).
   ========================================================================== */

:root {
	--tmt-primary: #022335;
	--tmt-primary-2: #03344e;
	--tmt-accent: #fcb342;
	--tmt-accent-2: #f59e0b;
	--tmt-text: #1d2733;
	--tmt-muted: #5f6b7a;
	--tmt-line: #e8ecf1;
	--tmt-card-bg: #ffffff;
	--tmt-radius: 16px;
	--tmt-shadow: 0 1px 2px rgba(2, 35, 53, .05), 0 6px 18px rgba(2, 35, 53, .06);
	--tmt-shadow-hover: 0 4px 10px rgba(2, 35, 53, .08), 0 22px 44px rgba(2, 35, 53, .14);
	--tmt-ease: cubic-bezier(.22, .61, .36, 1);
	--tmt-gap: 24px;
}

/* ---------- 1. Lưới /blog/: chuyển sang CSS Grid để mọi card cao đều ---------- */
.porto-posts-grid .posts-container.has-ccols:not(.owl-carousel):has(> .porto-tb-item.type-post) {
	display: grid !important;
	grid-template-columns: repeat(var(--tmt-cols, 1), minmax(0, 1fr));
	gap: calc(var(--tmt-gap) + 8px) var(--tmt-gap);
	margin: 0 !important;
	align-items: stretch;
}
.porto-posts-grid .posts-container.has-ccols:not(.owl-carousel):has(> .porto-tb-item.type-post) > .porto-tb-item {
	width: auto !important;
	max-width: none !important;
	flex: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
@media (min-width: 576px)  { .porto-posts-grid .posts-container.ccols-sm-2  { --tmt-cols: 2; } .porto-posts-grid .posts-container.ccols-sm-3 { --tmt-cols: 3; } }
@media (min-width: 768px)  { .porto-posts-grid .posts-container.ccols-md-2  { --tmt-cols: 2; } .porto-posts-grid .posts-container.ccols-md-3 { --tmt-cols: 3; } .porto-posts-grid .posts-container.ccols-md-4 { --tmt-cols: 4; } }
@media (min-width: 992px)  { .porto-posts-grid .posts-container.ccols-lg-3  { --tmt-cols: 3; } .porto-posts-grid .posts-container.ccols-lg-4 { --tmt-cols: 4; } }
@media (min-width: 1200px) { .porto-posts-grid .posts-container.ccols-xl-3  { --tmt-cols: 3; } .porto-posts-grid .posts-container.ccols-xl-4 { --tmt-cols: 4; } }
@media (min-width: 992px) and (max-width: 1199px) {
	/* 4 cột ở 1024px quá chật -> 3 cột */
	.porto-posts-grid .posts-container.ccols-xl-4:not(.ccols-lg-4) { --tmt-cols: 3; }
}

/* ---------- 2. Slider trang chủ: các slide cao bằng nhau + chuyển động mượt ---------- */
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-stage-outer {
	padding: 6px 0 28px;          /* chừa chỗ cho bóng đổ khi hover */
	margin: -6px 0 -28px;
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-stage {
	display: flex;
	transition-timing-function: var(--tmt-ease) !important;
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-item {
	display: flex;
	float: none;
}
.porto-posts-grid .owl-carousel .owl-item > .porto-tb-item.type-post {
	width: 100%;
	padding: 0 !important;
	margin: 0 !important;
}

/* ---------- 3. Card ---------- */
.porto-posts-grid .porto-tb-item.type-post {
	position: relative;
	display: flex !important;
	flex-direction: column;
	height: 100%;
	background: var(--tmt-card-bg);
	border: 1px solid var(--tmt-line);
	border-radius: var(--tmt-radius);
	box-shadow: var(--tmt-shadow);
	overflow: hidden;
	isolation: isolate;
	transition: transform .45s var(--tmt-ease), box-shadow .45s var(--tmt-ease), border-color .45s var(--tmt-ease);
	will-change: transform;
}
.porto-posts-grid .porto-tb-item.type-post:hover {
	transform: translateY(-6px);
	box-shadow: var(--tmt-shadow-hover);
	border-color: transparent;
}
/* Dải màu nhấn chạy dưới đáy card khi hover */
.porto-posts-grid .porto-tb-item.type-post::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 3px;
	background: linear-gradient(90deg, var(--tmt-accent), var(--tmt-accent-2));
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .5s var(--tmt-ease);
	z-index: 3;
}
.porto-posts-grid .porto-tb-item.type-post:hover::after { transform: scaleX(1); }

/* Dọn các khối rỗng do Type Builder sinh ra */
.porto-posts-grid .porto-tb-item.type-post > p.wp-block-paragraph:empty,
.porto-posts-grid .porto-tb-item.type-post > .porto-section:empty,
.porto-posts-grid .porto-tb-item.type-post .porto-section > .porto-section:empty { display: none !important; }

/* ---------- 4. Ảnh: cùng tỉ lệ 16:10, zoom nhẹ khi hover ---------- */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > .porto-section:first-child {
	margin: 0 !important;
	padding: 0 !important;
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .porto-tb-featured-image {
	position: relative;
	margin: 0;
	border-radius: 0 !important;
	overflow: hidden;
	aspect-ratio: 16 / 10;
	background: #eef1f5;
}
.porto-posts-grid .porto-tb-item.type-post .porto-tb-featured-image > a,
.porto-posts-grid .porto-tb-item.type-post .porto-tb-featured-image .img-thumbnail {
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
}
.porto-posts-grid .porto-tb-item.type-post .porto-tb-featured-image img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	object-position: center;
	border-radius: 0 !important;
	transform: scale(1.001);
	transition: transform .8s var(--tmt-ease), filter .6s var(--tmt-ease);
}
.porto-posts-grid .porto-tb-item.type-post:hover .porto-tb-featured-image img {
	transform: scale(1.07);
	filter: saturate(1.08);
}
/* Lớp phủ gradient giúp badge dễ đọc */
.porto-posts-grid .porto-tb-item.type-post .porto-tb-featured-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(2, 35, 53, .28) 0%, rgba(2, 35, 53, 0) 38%);
	pointer-events: none;
	opacity: .9;
	transition: opacity .45s var(--tmt-ease);
}
.porto-posts-grid .porto-tb-item.type-post:hover .porto-tb-featured-image::after { opacity: 1; }
/* Tắt hiệu ứng zoom-icon cũ của Porto để không xung đột */
.porto-posts-grid .porto-tb-item.type-post .porto-img-zoom .zoom { display: none; }

/* ---------- 5. Badge danh mục: nổi trên ảnh ---------- */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-meta-category {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 !important;
	padding: 7px 12px 6px !important;
	border-radius: 999px !important;
	background: rgba(2, 35, 53, .78) !important;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	box-shadow: 0 4px 12px rgba(0, 0, 0, .18);
	font-size: 10.5px !important;
	font-weight: 700 !important;
	letter-spacing: .06em !important;
	line-height: 1 !important;
	text-transform: uppercase;
	color: #fff !important;
	transition: background-color .3s var(--tmt-ease), transform .3s var(--tmt-ease);
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-meta-category::before {
	content: "";
	width: 6px; height: 6px;
	border-radius: 50%;
	background: var(--tmt-accent);
	box-shadow: 0 0 0 3px rgba(252, 179, 66, .25);
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-meta-category a { color: inherit !important; }
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-meta-category:hover {
	background: var(--tmt-accent) !important;
	color: var(--tmt-primary) !important;
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-meta-category:hover::before { background: var(--tmt-primary); box-shadow: none; }

/* ---------- 6. Tiêu đề + mô tả: giới hạn dòng để card đồng đều ---------- */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-title {
	margin: 18px 20px 10px !important;
	font-size: 1.125rem !important;
	font-weight: 700 !important;
	line-height: 1.38 !important;
	letter-spacing: -0.01em !important;
	min-height: calc(1.125rem * 1.38 * 2);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-title a {
	color: var(--tmt-text);
	background-image: linear-gradient(var(--tmt-accent), var(--tmt-accent));
	background-repeat: no-repeat;
	background-size: 0% 2px;
	background-position: 0 100%;
	transition: color .3s var(--tmt-ease), background-size .45s var(--tmt-ease);
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post:hover .post-title a { color: var(--tmt-primary); background-size: 100% 2px; }
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-title a:hover { color: var(--tmt-primary-2) !important; }
/* Cả card bấm được (link phủ qua tiêu đề) */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-title a::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-content {
	margin: 0 20px 18px !important;
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-content p,
.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-excerpt {
	margin: 0;
	font-size: .9rem;
	line-height: 1.7 !important;
	color: var(--tmt-muted);
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* ---------- 7. Nút "Xem thêm": luôn nằm đáy card, dạng pill có mũi tên ---------- */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn {
	position: relative;
	z-index: 2;                    /* nằm trên link phủ của tiêu đề */
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: auto 20px 20px !important;
	padding: 10px 16px 10px 18px !important;
	border: 1.5px solid var(--tmt-primary) !important;
	border-radius: 999px !important;
	background: transparent !important;
	color: var(--tmt-primary) !important;
	font-size: .85rem !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	letter-spacing: .01em;
	text-transform: none;
	box-shadow: none;
	overflow: hidden;
	isolation: isolate;
	transition: color .35s var(--tmt-ease), border-color .35s var(--tmt-ease), box-shadow .35s var(--tmt-ease), transform .2s var(--tmt-ease);
}
/* Nền tràn từ trái sang khi hover */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--tmt-primary);
	border-radius: inherit;
	transform: translateX(-101%);
	transition: transform .45s var(--tmt-ease);
}
/* Mũi tên */
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn::after {
	content: "";
	width: 16px;
	height: 16px;
	flex: none;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .45s var(--tmt-ease);
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post:hover > a.btn,
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn:focus-visible {
	color: #fff !important;
	border-color: var(--tmt-primary) !important;
	box-shadow: 0 8px 18px rgba(2, 35, 53, .22);
}
.page-wrapper .porto-posts-grid .porto-tb-item.type-post:hover > a.btn::before,
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn:focus-visible::before { transform: translateX(0); }
.page-wrapper .porto-posts-grid .porto-tb-item.type-post:hover > a.btn::after { transform: translateX(4px); }
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn:active { transform: scale(.96); }
.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn span { position: relative; }

/* ---------- 8. Nút điều hướng slider: tròn, nổi, mượt ---------- */
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav {
	position: absolute;
	left: 0; right: 0;
	top: var(--tmt-nav-top, 30%) !important;
	height: 0;
	margin: 0 !important;
	pointer-events: none;
	z-index: 5;
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev,
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next {
	pointer-events: auto;
	position: absolute;
	top: 0 !important;
	width: 48px !important;
	height: 48px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid var(--tmt-line) !important;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, .96) !important;
	color: var(--tmt-primary) !important;
	font-size: 0 !important;
	line-height: 0 !important;
	box-shadow: 0 8px 24px rgba(2, 35, 53, .16);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	transform: translateY(-50%) !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color .3s var(--tmt-ease), color .3s var(--tmt-ease), box-shadow .3s var(--tmt-ease), transform .3s var(--tmt-ease), opacity .3s var(--tmt-ease);
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev { left: -24px !important; right: auto !important; }
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next { right: -24px !important; left: auto !important; }

.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button::before {
	content: "" !important;
	font-family: inherit !important;
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .3s var(--tmt-ease);
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev::before { transform: scaleX(-1); }

.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button:not(.disabled):hover,
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button:focus-visible {
	background: var(--tmt-primary) !important;
	border-color: var(--tmt-primary) !important;
	color: var(--tmt-accent) !important;
	box-shadow: 0 12px 28px rgba(2, 35, 53, .3);
	transform: translateY(-50%) scale(1.08) !important;
	outline: none;
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next:not(.disabled):hover::before { transform: translateX(2px); }
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev:not(.disabled):hover::before { transform: scaleX(-1) translateX(2px); }
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button:not(.disabled):active {
	transform: translateY(-50%) scale(.94) !important;
}
.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.disabled {
	opacity: 0 !important;
	pointer-events: none;
}

/* Thanh tiến trình (do tmt-blog-cards.js thêm vào) */
.porto-posts-grid .tmt-owl-progress {
	position: relative;
	height: 4px;
	max-width: 220px;
	margin: 26px auto 0;
	border-radius: 999px;
	background: var(--tmt-line);
	overflow: hidden;
}
.porto-posts-grid .tmt-owl-progress > span {
	position: absolute;
	top: 0; bottom: 0; left: 0;
	width: var(--tmt-progress-w, 25%);
	border-radius: inherit;
	background: linear-gradient(90deg, var(--tmt-primary), var(--tmt-primary-2));
	transform: translateX(var(--tmt-progress-x, 0%));
	transition: transform .5s var(--tmt-ease), width .5s var(--tmt-ease);
}

/* ---------- 9. Responsive ---------- */
@media (max-width: 1199px) {
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev { left: -14px !important; }
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next { right: -14px !important; }
}
@media (max-width: 767px) {
	:root { --tmt-gap: 16px; }
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev { left: 8px !important; }
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next { right: 8px !important; }
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-prev,
	.porto-posts-grid .owl-carousel:has(.porto-tb-item.type-post) .owl-nav button.owl-next { width: 40px !important; height: 40px !important; }
	.page-wrapper .porto-posts-grid .porto-tb-item.type-post .post-title { margin: 16px 16px 8px !important; font-size: 1.0625rem !important; }
	.page-wrapper .porto-posts-grid .porto-tb-item.type-post .tb-content { margin: 0 16px 16px !important; }
	.page-wrapper .porto-posts-grid .porto-tb-item.type-post > a.btn { margin: auto 16px 18px !important; }
}

/* Thiết bị cảm ứng: không nhấc card (tránh "dính" hover) */
@media (hover: none) {
	.porto-posts-grid .porto-tb-item.type-post:hover { transform: none; }
}
/* Tôn trọng người dùng tắt hiệu ứng chuyển động */
@media (prefers-reduced-motion: reduce) {
	.porto-posts-grid .porto-tb-item.type-post,
	.porto-posts-grid .porto-tb-item.type-post *,
	.porto-posts-grid .porto-tb-item.type-post *::before,
	.porto-posts-grid .porto-tb-item.type-post *::after { transition: none !important; }
	.porto-posts-grid .porto-tb-item.type-post:hover { transform: none; }
}
