/**
 * DS Elements — Thẻ lọc nhanh (ảnh phủ chữ)
 */

.elementor-widget-ds-filter-cards {
	width: 100%;
	min-width: 0;
}

.ds-fc {
	--ds-fc-cols: 4;
	--ds-fc-gap: var(--ds-space-3);

	/* Thẻ đứng, không nằm: bốn thẻ trong nửa cột chỉ rộng hơn 120px một chút,
	   để tỉ lệ gần vuông thì thẻ lùn tịt và ảnh người không thấy được gì. */
	--ds-fc-ratio: .72;
	--ds-fc-arrow-size: 26px;

	width: 100%;
	min-width: 0;
}

.ds-fc *,
.ds-fc *::before,
.ds-fc *::after {
	box-sizing: border-box;
}

.ds-fc__heading {
	margin: 0 0 var(--ds-fc-head-gap, var(--ds-space-4));
	color: var(--ds-fc-heading-color, var(--ds-color-brand));
	font-size: var(--ds-fc-heading-fs, var(--ds-fs-h3));
	font-weight: var(--ds-fw-bold);
	line-height: var(--ds-lh-h3);
	text-transform: uppercase;
}

.ds-fc__grid {
	display: grid;
	grid-template-columns: repeat(var(--ds-fc-cols), minmax(0, 1fr));
	gap: var(--ds-fc-gap);
}

/* --- Thẻ ---------------------------------------------------------------- */

/* Cả thẻ là một thẻ <a>: vùng bấm bằng đúng cái người ta nhìn thấy, không phải
   dò tìm chữ hay nút mũi tên. */
.ds-fc__card {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--ds-fc-radius, var(--ds-radius-md));
	text-decoration: none;
	background: var(--ds-color-surface);
}

.ds-fc__media {
	display: block;
}

/* Tỉ lệ đặt thẳng lên <img> kèm height:auto, KHÔNG đặt trên khung bọc.
   Khung bọc là con của thẻ flex-column: min-height:auto của flex item lấy
   chiều cao tự nhiên của ảnh, nên ảnh dọc hơn tỉ lệ đẩy khung cao theo (đo:
   ảnh 1:4 trong khung 1:1 ra 200×800). height:auto phải tự khai — <img> của
   WordPress mang thuộc tính height, không có dòng này thì thuộc tính thắng
   aspect-ratio (ra 200×400); site thật chỉ thoát nhờ reset của theme. */
.ds-fc__media img {
	width: 100%;
	height: auto;
	display: block;
	aspect-ratio: var(--ds-fc-ratio);
	object-fit: cover;
	transition: transform var(--ds-transition);
}

.ds-fc__card:hover .ds-fc__media img {
	transform: scale(1.04);
}

/* Lớp phủ chuyển dần từ đáy lên: chữ trắng nằm đè trên ảnh, ảnh sáng màu mà
   không có lớp này thì chữ mất hút. */
.ds-fc__body {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;

	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--ds-space-2);
	padding: var(--ds-space-3);

	background: linear-gradient(
		to top,
		var(--ds-fc-overlay, rgba(0, 29, 73, .85)) 0,
		transparent 100%
	);
}

/* Tên co được và xuống dòng được; mũi tên thì không co.
   Thiếu min-width: 0 và overflow-wrap thì chữ tràn ra đè lên nút mũi tên —
   đã thấy "Barista" bị nút cắt ngang mất hai chữ cuối. */
.ds-fc__name {
	flex: 1 1 auto;
	min-width: 0;
	overflow-wrap: anywhere;

	color: var(--ds-fc-name-color, var(--ds-color-white));
	font-size: var(--ds-fc-name-fs, var(--ds-fs-small));
	font-weight: var(--ds-fw-semibold);
	line-height: var(--ds-lh-tight);
}

/* --- Nút mũi tên -------------------------------------------------------- */

.ds-fc__arrow {
	flex: 0 0 auto;
	position: relative;
	display: inline-block;
	width: var(--ds-fc-arrow-size, 26px);
	height: var(--ds-fc-arrow-size, 26px);
	background: var(--ds-fc-arrow-bg, var(--ds-color-white));
	border-radius: var(--ds-radius-pill);
}

/*
 * Mũi tên vẽ bằng một gạch ngang + một góc vuông xoay 45°, đặt theo toạ độ tính
 * ra chứ không ước lượng bằng phần trăm.
 *
 * Thân dài 9px nên nửa thân là 4.5px tính từ tâm. Đầu mũi là hộp 5px xoay 45°,
 * tâm hộp phải nằm ở 4.5 − 5/2 ≈ 2px bên phải tâm nút thì hai phần mới liền
 * nhau. Bản cũ dùng translate(-80%, …) nên đầu mũi lệch hẳn xuống dưới thân,
 * nhìn ra hình cái máy bay giấy.
 */
.ds-fc__arrow::before,
.ds-fc__arrow::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
}

.ds-fc__arrow::before {
	width: 9px;
	height: 2px;
	background: var(--ds-fc-arrow-color, var(--ds-color-brand));
	transform: translate(-50%, -50%);
}

.ds-fc__arrow::after {
	width: 5px;
	height: 5px;
	border-top: 2px solid var(--ds-fc-arrow-color, var(--ds-color-brand));
	border-right: 2px solid var(--ds-fc-arrow-color, var(--ds-color-brand));
	transform: translate(calc(-50% + 2px), -50%) rotate(45deg);
}

/* --- Màn nhỏ ------------------------------------------------------------ */

@media (max-width: 767px) {
	.ds-fc__body {
		padding: var(--ds-space-3);
	}

	.ds-fc__arrow {
		width: 28px;
		height: 28px;
	}
}
