*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
	border: 0 solid;
}

/* Chi?u cao header l? m?t con s? 4 ch? kh?c ph? thu?c v?o (panel mega, backdrop,
   drawer, offset cu?n trong nav.js) ? gi? ? ??ng m?t bi?n. */
:root {
	--tri-header-h: var(--wp--custom--layout--header-h-sm);
	/* ?nh orbit k?o ?m ??ng b?ng padding ??y section ?? nh?n v?t ??ng s?t m?p band. */
	--tri-section-pb: 32px;
	--tri-section-px: 16px;
	/* Thanh c? ??nh ??y m?n; 0 t? 1024px v? l?c ?? thanh b? ?n. */
	--tri-bottombar-h: 62px;

	/* Chiều cao thanh quản trị của WordPress. 0 khi khách xem, chỉ khác 0
	   khi chính mình đang đăng nhập — xem khối .admin-bar ngay dưới. */
	--tri-adminbar: 0px;
}

/* Thanh quản trị WordPress đẩy cả trang xuống, mà header lại dính
   top: 0 — thành ra khi đăng nhập, header nằm ĐÈ lên thanh quản trị,
   che mất mấy nút vào wp-admin. Chỉ người đăng nhập mới thấy nên rất dễ
   bỏ sót lúc kiểm tra.
   WordPress gắn sẵn class .admin-bar vào <body>, cộng chiều cao vào là
   xong. Con số 32/46px là của chính WordPress, không phải tự chọn.

   Dưới 601px thanh đó chuyển sang position: absolute (cuộn đi mất), nên
   để nguyên 0 — cộng thêm là chừa một khoảng trống vô nghĩa. */
@media screen and (min-width: 601px) {
	body.admin-bar {
		--tri-adminbar: 46px;
	}
}

@media screen and (min-width: 783px) {
	body.admin-bar {
		--tri-adminbar: 32px;
	}
}

/* Ch?a ??ng chi?u cao thanh ?? n? kh?ng che ph?n cu?i footer. */
body {
	padding-bottom: var(--tri-bottombar-h);
}

@media (min-width: 768px) {
	:root {
		--tri-header-h: var(--wp--custom--layout--header-h);
		--tri-section-pb: 48px;
		--tri-section-px: 24px;
	}
}

/* D?i 1024-1439 tr??c ??y nh?n nguy?n h?ng s? suy t? 1440 ? th?m n?c 1280. */
@media (min-width: 1280px) {
	:root {
		--tri-section-pb: 64px;
		--tri-section-px: 32px;
	}
}

html,
body,
.tri-main {
	max-width: 100%;
}

/* Hi?u ?ng reveal tr??t ngang ?36px l?m section th? ra ngo?i m?p tr??c khi v?o
   viewport. C?t ? .tri-main ch? kh?ng ph?i body: `clip` kh?ng t?o scroll
   container n?n header sticky (n?m ngo?i .tri-main) v?n ho?t ??ng. */
.tri-main {
	overflow-x: clip;
}

body {
	margin: 0;
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	line-height: var(--wp--custom--line-height--body);
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
}

ul {
	margin: 0;
	padding-left: 1.1rem;
}

.tri-wrap {
	width: min(1100px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-header {
	position: sticky;
	top: var(--tri-adminbar);
	z-index: 50;
	isolation: isolate;
	height: var(--tri-header-h);
	overflow: visible;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-header__inner {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 100%;
	width: min(1440px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-logo,
.tri-header__actions {
	position: relative;
	z-index: 2;
}

.tri-logo {
	display: block;
	width: 128px;
	height: 60px;
	flex-shrink: 0;
}

.tri-logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: left;
}

.tri-nav {
	display: none;
	flex: 1;
	align-items: center;
	justify-content: center;
	gap: 28px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--medium);
	text-transform: uppercase;
}

.tri-nav > a,
.tri-mega__trigger {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: 40px;
	padding: 8px 16px;
	border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--white);
	transform: scale(1);
	transform-origin: center center;
	transition:
		transform var(--wp--custom--motion--duration-mid) ease,
		background-color var(--wp--custom--motion--duration-mid) ease,
		color var(--wp--custom--motion--duration-mid) ease;
}

.tri-nav > a.is-current,
.tri-mega.is-current .tri-mega__trigger {
	color: var(--wp--preset--color--cyan);
}

.tri-nav > a:hover,
.tri-mega__trigger:hover,
.tri-mega.is-open .tri-mega__trigger {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	transform: scale(1.2);
	z-index: 1;
}

.tri-mega {
	position: static;
	display: inline-flex;
	align-items: center;
}

.tri-mega__panel {
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	position: fixed;
	left: 0;
	right: 0;
	top: calc(var(--tri-adminbar) + var(--tri-header-h));
	z-index: 45;
	width: 100%;
	max-width: none;
	padding: 32px 16px 40px;
	transform: translateY(8px);
	background-image: linear-gradient(208.81deg, var(--wp--preset--color--white) 18.9%, var(--wp--preset--color--ice) 81%);
	border-radius: 0;
	box-shadow: 0 16px 40px color-mix(in srgb, var(--wp--preset--color--navy) 18%, transparent);
	backdrop-filter: blur(8px);
	transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.tri-mega__inner {
	display: grid;
	grid-template-columns: repeat(var(--tri-mega-cot, 1), minmax(0, 1fr));
	gap: 8px 32px;
	width: min(1100px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-mega__col {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

/* Tiêu đề cột trong mega menu: chữ hoa, đậm, không phải một mục bấm được
   trừ khi có đích (cột "Lịch khai giảng" trong thiết kế là link). */
.tri-mega__title {
	margin-bottom: 8px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
	font-size: var(--wp--preset--font-size--small);
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

/* ── Thả xuống GỌN: thẻ trắng bo góc, neo dưới đúng mục cha ─────────

   Bản trước mọi panel đều tràn ngang toàn màn. Thiết kế tháng 09/2026
   chỉ để "Khóa học" tràn ngang (4 cột); bốn mục còn lại là thẻ hẹp. */
.tri-mega--gon {
	position: relative;
}

.tri-mega--gon .tri-mega__panel {
	position: absolute;
	left: 50%;
	right: auto;
	top: calc(100% + 14px);
	width: max-content;
	min-width: 220px;
	max-width: min(420px, calc(100vw - 32px));
	padding: 16px 8px;
	transform: translate(-50%, 8px);
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--card);
	box-shadow: 0 18px 40px rgba(9, 31, 91, 0.16);
}

.tri-mega--gon .tri-mega__inner {
	width: auto;
	margin-inline: 0;
	gap: 2px;
	/* KHÔNG dùng minmax(0, 1fr) như mega tràn ngang: panel gọn rộng theo
	   nội dung (width: max-content), mà 1fr lại co được về 0 — hai thứ đó
	   quay vòng nhau và kết quả là cột co lại, chữ vỡ thành từng dòng một
	   hai từ. auto thì cột rộng đúng bằng mục dài nhất. */
	grid-template-columns: auto;
}

/* Menu ngang chỉ hiện từ 1024px nên không sợ thiếu chỗ. */
.tri-mega--gon .tri-mega__panel a {
	white-space: nowrap;
}

/* Khoảng hở giữa mục cha và thẻ, để rê chuột xuống không bị mất panel. */
.tri-mega--gon .tri-mega__panel::before {
	top: -14px;
	height: 14px;
}

.tri-mega__panel::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -28px;
	height: 28px;
}

.tri-mega.is-open .tri-mega__panel,
.tri-mega:focus-within .tri-mega__panel {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;
	transform: translateY(0);
}

/* Primary filled menu item (interaction pattern) */
.tri-mega__panel a {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	box-sizing: border-box;
	width: 100%;
	min-height: var(--wp--custom--control--height);
	margin: 0;
	padding: 0 20px;
	border-radius: var(--wp--custom--radius--control);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: var(--wp--custom--line-height--nav);
	text-transform: none;
	transition: background-color var(--wp--custom--motion--duration-mid) ease, color var(--wp--custom--motion--duration-mid) ease, box-shadow var(--wp--custom--motion--duration-mid) ease;
}

.tri-mega__panel a:hover,
.tri-mega__panel a:focus-visible {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	box-shadow: 0 2px 0 color-mix(in srgb, var(--wp--preset--color--navy) 4%, transparent);
	outline: none;
}

/* Phải nằm SAU .tri-mega.is-open ở trên: hai luật cùng độ ưu tiên, luật
   nào viết sau thì thắng. Đặt trước là panel gọn mất phần canh giữa
   (-50%) và lệch hẳn sang phải. */
.tri-mega--gon.is-open .tri-mega__panel,
.tri-mega--gon:focus-within .tri-mega__panel {
	transform: translate(-50%, 0);
}

/* Tiêu đề cột KHÔNG mang dáng của một mục bấm được: luật .tri-mega__panel a
   ở trên biến mọi thẻ a trong panel thành nút cao, nền đổi khi rê chuột.
   Tiêu đề cột chỉ là nhãn nhóm. */
.tri-mega__col > .tri-mega__title {
	display: block;
	width: auto;
	min-height: 0;
	padding: 0 20px;
	border-radius: 0;
	background: none;
}

a.tri-mega__title:hover,
a.tri-mega__title:focus-visible {
	background: none;
	color: var(--wp--preset--color--action);
	box-shadow: none;
	text-decoration: underline;
}

.tri-mega-backdrop {
	position: fixed;
	inset: calc(var(--tri-adminbar) + var(--tri-header-h)) 0 0;
	z-index: 40;
	background: color-mix(in srgb, var(--wp--preset--color--navy) 28%, transparent);
	backdrop-filter: blur(2px);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.2s ease;
}

.tri-mega-backdrop.is-on {
	opacity: 1;
	pointer-events: auto;
}

.tri-header__actions {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
}

.tri-header .tri-header__cta {
	display: none;
}

.tri-burger {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 6px;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
}

.tri-burger span {
	display: block;
	height: 2px;
	width: 24px;
	margin-inline: auto;
	background: var(--wp--preset--color--white);
}

/* Drawer tr??t t? tr?i, ph? to?n chi?u cao m?n (ki?u LangGo).
   Tr??c ??y d?ng thu?c t?nh `hidden` ? display:none n?n transition kh?ng ch?y;
   gi? tr?ng th?i n?m ? class `is-open`. */
.tri-drawer {
	position: fixed;
	inset: var(--tri-adminbar) auto 0 0;
	z-index: 56;
	display: flex;
	flex-direction: column;
	width: min(300px, 82vw);
	overflow-y: auto;
	padding: 0 0 24px;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	transform: translateX(-100%);
	visibility: hidden;
	transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.35s;
}

.tri-drawer.is-open {
	transform: translateX(0);
	visibility: visible;
}

.tri-drawer-backdrop {
	position: fixed;
	inset: var(--tri-adminbar) 0 0 0;
	z-index: 55;
	background: rgba(0, 0, 0, 0.5);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.35s ease;
}

.tri-drawer-backdrop.is-on {
	opacity: 1;
	pointer-events: auto;
}

.tri-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	height: var(--tri-header-h);
	padding: 0 16px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.tri-drawer__logo {
	width: 104px;
	height: auto;
}

.tri-drawer__close {
	width: 36px;
	height: 36px;
	flex-shrink: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.12);
	cursor: pointer;
}

/* D?u X gh?p t? hai g?ch, kh?i th?m asset m?i. */
.tri-drawer__close::before,
.tri-drawer__close::after {
	content: "";
	position: absolute;
	width: 16px;
	height: 2px;
	background: var(--wp--preset--color--white);
}

.tri-drawer__close {
	position: relative;
	display: grid;
	place-items: center;
}

.tri-drawer__close::before {
	transform: rotate(45deg);
}

.tri-drawer__close::after {
	transform: rotate(-45deg);
}

.tri-drawer__nav {
	flex: 1;
	padding: 12px;
}

.tri-drawer a {
	display: flex;
	align-items: center;
	min-height: 44px;
	margin: 2px 0;
	padding: 0 12px;
	border-radius: var(--wp--custom--radius--control);
	line-height: 1.3;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.tri-drawer a:hover,
.tri-drawer a:focus-visible {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	outline: none;
}

.tri-drawer__group summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 44px;
	padding: 0 12px;
	border-radius: var(--wp--custom--radius--control);
	color: var(--wp--preset--color--cyan);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-strong);
	text-transform: uppercase;
	cursor: pointer;
	list-style: none;
}

.tri-drawer__group summary::-webkit-details-marker {
	display: none;
}

.tri-drawer__group summary::after {
	content: "";
	width: 12px;
	height: 12px;
	background: currentColor;
	-webkit-mask: url(../images/icon-chevron.svg) center / contain no-repeat;
	mask: url(../images/icon-chevron.svg) center / contain no-repeat;
	transform: rotate(90deg);
	transition: transform var(--wp--custom--motion--duration-mid) ease;
}

.tri-drawer__group[open] summary::after {
	transform: rotate(-90deg);
}

.tri-drawer__group a {
	padding-left: 24px;
	font-size: var(--wp--preset--font-size--small);
}

.tri-drawer__foot {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	padding: 12px 24px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.tri-drawer a.tri-btn {
	display: inline-flex;
	justify-content: center;
	width: 100%;
	margin: 0;
	padding: 0 24px;
}

.tri-drawer a.tri-btn:hover,
.tri-drawer a.tri-btn:focus-visible {
	background: var(--wp--preset--color--orange-hover);
	color: var(--wp--preset--color--white);
}

.tri-drawer__phone {
	color: var(--wp--preset--color--cyan);
	font-weight: var(--wp--custom--font--weight-ui);
}

@media (min-width: 768px) {
	.tri-drawer {
		width: 340px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tri-drawer,
	.tri-drawer-backdrop {
		transition: none;
	}
}


.tri-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: var(--wp--custom--control--height);
	min-height: var(--wp--custom--control--height);
	margin: 0;
	padding: 0 24px;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-ui);
	text-align: center;
	text-transform: uppercase;
	vertical-align: middle;
	cursor: pointer;
	transition: background-color var(--wp--custom--motion--duration-mid) ease, color var(--wp--custom--motion--duration-mid) ease, box-shadow var(--wp--custom--motion--duration-mid) ease, opacity var(--wp--custom--motion--duration-mid) ease;
}

.tri-btn--orange {
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
}

.tri-btn--orange:hover,
.tri-btn--orange:focus-visible {
	background: var(--wp--preset--color--orange-hover);
	color: var(--wp--preset--color--white);
}

.tri-btn--navy {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-btn--navy:hover,
.tri-btn--navy:focus-visible {
	background: var(--wp--preset--color--navy-hover);
	color: var(--wp--preset--color--white);
}

.tri-btn--white {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	box-shadow: 0 4px 12px color-mix(in srgb, var(--wp--preset--color--navy) 8%, transparent);
}

.tri-btn--white:hover,
.tri-btn--white:focus-visible {
	background: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--navy);
}

/* Primary filled hover for CTA-style anchors (Ant Design primary pattern) */
a.tri-btn:hover,
a.tri-btn:focus-visible {
	outline: none;
}

.tri-section {
	padding: var(--tri-section-pb) var(--tri-section-px);
}

.tri-banner {
	position: relative;
	width: 100%;
	max-height: 600px;
	margin-inline: auto;
	overflow: hidden;
	background-image: linear-gradient(208.81deg, var(--wp--preset--color--white) 18.9%, var(--wp--preset--color--ice) 81%);
	aspect-ratio: 1440 / 600;
}

.tri-banner__frame {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
}

/* Các slide chồng khít lên nhau; chỉ slide is-active hiện. Dùng opacity chứ
   không display:none để chuyển được mượt, và giữ nguyên chiều cao khung. */
.tri-banner__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 0.45s ease;
	/* Slide khuất không được ăn cú bấm của slide đang hiện. */
	pointer-events: none;
}

.tri-banner__slide.is-active {
	opacity: 1;
	pointer-events: auto;
}

.tri-banner__slide a,
.tri-banner__frame img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (prefers-reduced-motion: reduce) {
	.tri-banner__slide {
		transition: none;
	}
}

.tri-banner__dots {
	position: absolute;
	left: 0;
	right: 0;
	/* Trên hàng nút CTA (bottom: 32px) một khoảng. */
	bottom: 88px;
	z-index: 2;
	display: flex;
	justify-content: center;
	gap: 8px;
}

.tri-banner__dot {
	width: 10px;
	height: 10px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.55);
	box-shadow: 0 1px 3px rgba(9, 31, 91, 0.35);
	cursor: pointer;
	transition: background 0.2s ease, width 0.2s ease;
}

.tri-banner__dot.is-active {
	width: 26px;
	border-radius: 5px;
	background: var(--wp--preset--color--white);
}

.tri-banner__dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--cyan);
	outline-offset: 2px;
}

/* Banner của 8 trang trong: giống hệt trang chủ, chỉ khác là KHÔNG có hàng
   nút CTA bên dưới — nên chấm tròn tụt xuống sát đáy thay vì treo ở 88px
   để chừa chỗ cho hàng nút đó. */
.tri-banner--trang .tri-banner__dots {
	bottom: 24px;
}

.tri-banner .tri-cta-row {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 32px;
	z-index: 1;
	padding: 0 16px;
}

.tri-band--ice {
	background-image: linear-gradient(208.81deg, var(--wp--preset--color--white) 18.9%, var(--wp--preset--color--ice) 81%);
}

.tri-band--surface {
	background: var(--wp--preset--color--surface);
}

.tri-cta-row {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	padding: 32px 0 8px;
}

.tri-cta-row--flush {
	padding-top: 0;
}

.tri-commit-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px 48px;
	max-width: 1100px;
	margin: 0 auto;
	padding: 8px 16px 24px;
}

.tri-commit {
	display: flex;
	align-items: center;
	gap: 20px;
}

.tri-commit__icon {
	display: grid;
	place-items: center;
	flex: 0 0 128px;
	width: 128px;
	height: 128px;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--field);
	box-shadow: 0 6px 4px rgba(0, 0, 0, 0.05);
}

.tri-commit__icon img {
	display: block;
	width: auto;
	max-width: 72px;
	max-height: 72px;
	height: auto;
}

.tri-commit p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	color: var(--wp--preset--color--navy);
}

.tri-commit p strong {
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-stats--cards {
	grid-template-columns: 1fr;
	align-items: stretch;
	gap: 24px;
	max-width: 1100px;
}

.tri-stats--cards .tri-stat-card {
	position: relative;
	z-index: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	/* ch?a ch? cho thanh navy l? xu?ng d??i ??y (nh? .tri-cred) */
	margin-bottom: 9px;
	padding: 20px 16px 16px;
	/* N?n/vi?n/shadow chuy?n sang ::before ?? ::after kh?ng ?? m?t th? */
	background: transparent;
	border: none;
	box-shadow: none;
	text-align: center;
	isolation: isolate;
}

/* M?t th? (n?n + vi?n + bo g?c) n?m tr?n thanh navy. */
.tri-stats--cards .tri-stat-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	border: 1px solid var(--wp--custom--color--ice-soft);
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
}

/* Thanh navy n?m sau m?t th?, ch? l? ph?n ??y ra ngo?i. */
.tri-stats--cards .tri-stat-card::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -9px;
	z-index: -1;
	width: 140px;
	height: 28px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-stats--cards .tri-stat-card > * {
	position: relative;
	z-index: 1;
}

.tri-stats--cards .tri-stat-card.is-featured::before {
	background: var(--wp--preset--color--navy);
	border-color: var(--wp--preset--color--navy);
}

.tri-stat-card__box {
	width: 100%;
	padding: 16px 14px;
	border: 1px solid var(--wp--preset--color--ice);
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--custom--color--ice-soft);
}

.tri-stats--cards .tri-stat-card__box strong {
	display: block;
	margin-bottom: 8px;
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.15;
}

.tri-stat-card__box p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	color: var(--wp--preset--color--navy);
}

.tri-stat-card__check {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
}

.tri-stat-card__check::before {
	content: "";
	width: 16px;
	height: 16px;
	background: var(--wp--preset--color--white);
	-webkit-mask: url(../images/icon-check.svg) center / contain no-repeat;
	mask: url(../images/icon-check.svg) center / contain no-repeat;
}

.tri-stats--cards .tri-stat-card.is-featured .tri-stat-card__check {
	background: var(--wp--preset--color--white);
}

.tri-stats--cards .tri-stat-card.is-featured .tri-stat-card__check::before {
	background: var(--wp--preset--color--navy);
}

.tri-stat-card__title {
	margin: 0;
	padding: 0 4px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.35;
	color: var(--wp--preset--color--navy);
}

.tri-stats--cards .tri-stat-card.is-featured .tri-stat-card__title {
	color: var(--wp--preset--color--white);
}

.tri-stat-card__photo {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 286 / 188;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--field);
	margin-top: auto;
}

.tri-ph--stat {
	height: 80px;
	margin-top: 16px;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--placeholder);
}


/* ?? "V?n ?? h?c vi?n IELTS th??ng g?p ph?i" ??????????????????????????
   ?o 1? t? figma/pages/khoa-hoc.png. Kh?i 901?480, h?nh gi?a 452 ??t
   ch?nh gi?a s?t m?p tr?n. Th? 306?133 (x 267/863 h?ng tr?n, 340/795
   h?ng d??i; y 884 v? 1167). Huy hi?u ? ?? 37px, t?m n?m tr?n c?nh d?c
   ph?a ngo?i v? th?p h?n m?p tr?n th? 8px. ?u?i bong b?ng r?ng 35, cao
   25, m?p trong c?ch c?nh h??ng v?o t?m 72px, ??nh c?ch 78px. */

.tri-issues {
	--tri-issue-w: 306px;
	--tri-issue-h: 133px;
	--tri-issue-x: 37px;
	--tri-issue-tail-w: 35px;
	--tri-issue-tail-h: 25px;
	/* m?p trong c?a ?u?i, t?nh t? c?nh th? h??ng v?o v?ng tr?n */
	--tri-issue-tail-in: 72px;
	display: grid;
	gap: 28px;
	justify-items: center;
	width: min(901px, 100%);
	margin-inline: auto;
}

.tri-issues__hub {
	display: block;
	width: min(452px, 82vw);
	height: auto;
}

.tri-issue {
	position: relative;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: 100%;
	max-width: var(--tri-issue-w);
	min-height: var(--tri-issue-h);
	padding: 16px 25px;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--white);
	box-shadow: 0 4px 26px rgba(9, 31, 91, 0.1);
}

.tri-issue h3 {
	margin: 0 0 10px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 17px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.3;
}

.tri-issue p {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: 15px;
	line-height: 25px;
}

/* Huy hi?u d?u ? ? d?ng ?nh assets/images/icon-X-prolem.png (41?42, c? s?n
   b?ng ??). ? kh? h?p b?m g?c tr?n-tr?i c?a th?. */
.tri-issue__x {
	position: absolute;
	left: calc(var(--tri-issue-x) / -2 + 10px);
	top: calc(var(--tri-issue-x) / -2 + 8px);
	width: var(--tri-issue-x);
	height: calc(var(--tri-issue-x) * 42 / 41);
	background: url(../images/icon-X-prolem.png) center / contain no-repeat;
}

@media (min-width: 768px) and (max-width: 1023px) {
	.tri-issues {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 24px;
	}

	.tri-issues__hub {
		grid-column: 1 / -1;
	}
}

@media (min-width: 1024px) {
	.tri-issues {
		display: block;
		position: relative;
		height: 480px;
	}

	.tri-issues__hub {
		position: absolute;
		left: 50%;
		top: 0;
		width: 452px;
		margin-left: -226px;
	}

	.tri-issue {
		position: absolute;
		width: var(--tri-issue-w);
		height: var(--tri-issue-h);
		min-height: 0;
	}

	.tri-issue--tl,
	.tri-issue--tr {
		top: 64px;
	}

	.tri-issue--bl,
	.tri-issue--br {
		top: 347px;
	}

	.tri-issue--tl {
		left: 0;
	}

	.tri-issue--tr {
		right: 0;
	}

	.tri-issue--bl {
		left: 73px;
	}

	.tri-issue--br {
		right: 68px;
	}

	/* Huy hi?u v? ??ng g?c ngo?i: th? b?n tr?i th? t?m n?m tr?n c?nh tr?i,
	   th? b?n ph?i th? tr?n c?nh ph?i. */
	.tri-issue--tl .tri-issue__x,
	.tri-issue--bl .tri-issue__x {
		left: calc(var(--tri-issue-x) / -2);
	}

	.tri-issue--tr .tri-issue__x,
	.tri-issue--br .tri-issue__x {
		left: auto;
		right: calc(var(--tri-issue-x) / -2);
	}

	/* ?u?i bong b?ng ? ch? d?ng t? 1024px, kh? h?p th? kh?ng c?n qu?y
	   quanh v?ng tr?n n?n kh?ng c? ?u?i. */
	.tri-issue::before {
		content: "";
		position: absolute;
		width: var(--tri-issue-tail-w);
		height: var(--tri-issue-tail-h);
		background: var(--wp--preset--color--white);
	}

	.tri-issue--tl::before,
	.tri-issue--tr::before {
		top: 100%;
	}

	.tri-issue--bl::before,
	.tri-issue--br::before {
		bottom: 100%;
	}

	/* ??nh ?u?i l?ch v? ph?a v?ng tr?n: c?ch c?nh trong 78px, t?c
	   6/35 ? 17% t?nh t? m?p trong c?a ch?nh c?i ?u?i. */
	.tri-issue--tl::before {
		right: var(--tri-issue-tail-in);
		clip-path: polygon(0 0, 100% 0, 83% 100%);
	}

	.tri-issue--tr::before {
		left: var(--tri-issue-tail-in);
		clip-path: polygon(0 0, 100% 0, 17% 100%);
	}

	.tri-issue--bl::before {
		right: var(--tri-issue-tail-in);
		clip-path: polygon(0 100%, 100% 100%, 83% 0);
	}

	.tri-issue--br::before {
		left: var(--tri-issue-tail-in);
		clip-path: polygon(0 100%, 100% 100%, 17% 0);
	}
}

.tri-problem-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	max-width: 900px;
	margin: 24px auto 0;
}

.tri-problem {
	position: relative;
	padding: 20px 20px 20px 24px;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--field);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
}

.tri-problem__x {
	position: absolute;
	top: 12px;
	right: 12px;
	display: grid;
	place-items: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #e11;
	color: #fff;
	font-size: 16px;
	line-height: 1;
}

.tri-problem h3 {
	margin: 0 0 8px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-problem p {
	margin: 0;
	padding-right: 20px;
}

/* ?? "IELTS & 5 l?i ?ch" ??????????????????????????????????????????????
   ?o 1? t? figma/pages/khoa-hoc.png: c?t danh s?ch 357 (x 224..580),
   ?nh 617 (x 600..1216) ? t?ng ??ng khung 993. M?i d?ng cao 64, c?ch
   nhau 14, ch? 15/700 line-height 24, th?t tr?i 42 ?? n? huy hi?u.
   Huy hi?u s? 27?23 bo 6, n?n #0053D1, ??t c?ch m?p tr?i th? 9px v?
   nh? l?n kh?i m?p tr?n 8px. D?ng ??u ??o n?n navy, ch? tr?ng. */

.tri-benefits {
	display: grid;
	gap: 20px;
	align-items: center;
	width: min(993px, 100%);
	margin-inline: auto;
}

.tri-benefit-list {
	margin: 0;
	padding: 8px 0 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.tri-benefit-list li {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 64px;
	padding: 12px 20px 12px 42px;
	background: var(--wp--preset--color--white);
	color: var(--wp--custom--color--ink-strong);
	border-radius: var(--wp--custom--radius--field);
	box-shadow: 0 6px 18px rgba(15, 35, 78, 0.08);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 15px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 24px;
}

.tri-benefit-list li.is-active {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	box-shadow: none;
}

.tri-benefit-list__badge {
	position: absolute;
	top: -8px;
	left: 9px;
	display: inline-grid;
	place-items: center;
	width: 27px;
	height: 23px;
	border-radius: 6px;
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--white);
	font-size: 13px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1;
}

.tri-benefit-list__text {
	display: block;
}

.tri-benefits__media {
	position: relative;
	width: min(618px, 100%);
	margin-inline: auto;
	aspect-ratio: 618 / 375;
	border-radius: 16px;
	overflow: hidden;
	background: var(--wp--preset--color--muted);
}

.tri-benefits__photo {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tri-benefits__sticker {
	position: absolute;
	right: 10px;
	bottom: 10px;
	width: min(132px, 28%);
	height: auto;
	pointer-events: none;
}

@media (min-width: 768px) {
	.tri-benefits {
		grid-template-columns: minmax(0, 1fr) minmax(0, 618px);
		gap: 40px;
		align-items: stretch;
	}

	.tri-benefits__media {
		margin-inline: 0;
		justify-self: end;
	}
}

.tri-problem-banner-section {
	overflow: visible;
	padding-top: 56px;
}

.tri-problem-banner {
	position: relative;
	display: grid;
	gap: 24px;
	align-items: stretch;
	min-height: 280px;
	padding: 28px 24px;
	overflow: visible;
	background: var(--wp--preset--color--navy);
	border-radius: 28px;
	color: var(--wp--preset--color--white);
}

.tri-problem-banner__list {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 14px;
	align-self: center;
	min-width: 0;
	z-index: 1;
}

.tri-problem-banner__item {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	overflow: hidden;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	border-radius: 12px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.tri-problem-banner__accent {
	flex-shrink: 0;
	align-self: stretch;
	width: 7px;
	background: var(--wp--preset--color--royal);
	border-radius: 12px 0 0 12px;
}

.tri-problem-banner__q {
	flex-shrink: 0;
	display: inline-grid;
	place-items: center;
	width: 1.1em;
	margin: 0;
	padding: 12px 0;
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
	font-size: 1.35rem;
	line-height: 1;
	background: none;
}

.tri-problem-banner__text {
	flex: 1;
	min-width: 0;
	padding: 14px 16px 14px 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-problem-banner__text strong {
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-problem-banner__media {
	position: relative;
	display: block;
	align-self: stretch;
	min-height: 240px;
	overflow: visible;
	z-index: 2;
}

.tri-problem-banner__media img {
	position: absolute;
	right: 0;
	bottom: 0;
	display: block;
	width: auto;
	max-width: none;
	height: calc(100% + 64px);
	object-fit: contain;
	object-position: bottom right;
	pointer-events: none;
}

.tri-help-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px 20px;
	width: min(1100px, calc(100% - 32px));
	margin: 0 auto;
}

.tri-help-card {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	padding: 24px 20px 28px;
	text-align: center;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 18px rgba(16, 24, 40, 0.08);
}

.tri-help-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	border-radius: inherit;
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 16px rgba(16, 24, 40, 0.08);
}

.tri-help-card::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -8px;
	z-index: -1;
	width: 100px;
	height: 20px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-help-card > * {
	position: relative;
	z-index: 1;
}

.tri-help-card__media {
	width: 240px;
	max-width: 100%;
	height: 160px;
	border-radius: 12px;
	background: var(--wp--preset--color--muted);
}

.tri-help-card h3 {
	margin: 0;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.3;
}

.tri-help-card p {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-help-card__link {
	margin-top: auto;
	color: var(--wp--preset--color--royal);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	text-decoration: none;
}

.tri-help-card__link::after {
	content: " >";
}

.tri-help-card__link:hover,
.tri-help-card__link:focus-visible {
	text-decoration: underline;
	outline: none;
}

.tri-cards-2 {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	max-width: 1100px;
	margin: 0 auto;
}

.tri-faq {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	max-width: 1100px;
	margin: 0 auto;
}

.tri-faq__item {
	position: relative;
	overflow: hidden;
	border-radius: 20px;
	background: var(--wp--preset--color--white);
	box-shadow: 0 4px 18px rgba(9, 31, 91, 0.08);
}

.tri-faq__item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 14px;
	bottom: 14px;
	width: 6px;
	border-radius: 0 4px 4px 0;
	background: var(--wp--preset--color--navy);
	z-index: 1;
}

.tri-faq__item[open]::before {
	display: none;
}

.tri-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 18px 16px 22px;
	cursor: pointer;
	list-style: none;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.35;
}

.tri-faq__item summary::-webkit-details-marker {
	display: none;
}

.tri-faq__q {
	flex: 1;
	min-width: 0;
}

.tri-faq__chev {
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
}

.tri-faq__chev::before {
	content: "";
	width: 7px;
	height: 7px;
	border-right: 2px solid var(--wp--preset--color--white);
	border-bottom: 2px solid var(--wp--preset--color--white);
	transform: rotate(-45deg);
	margin-left: -2px;
}

.tri-faq__item[open] summary {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	border-radius: 20px 20px 0 0;
}

.tri-faq__item[open] .tri-faq__chev {
	background: var(--wp--preset--color--white);
}

.tri-faq__item[open] .tri-faq__chev::before {
	border-color: var(--wp--preset--color--navy);
	transform: rotate(45deg);
	margin-left: 0;
	margin-top: -2px;
}

.tri-faq__a {
	margin: 0;
	padding: 16px 22px 18px;
	background: var(--wp--preset--color--white);
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-faq__a a {
	color: var(--wp--preset--color--navy);
	text-decoration: underline;
}

@media (min-width: 768px) {
	.tri-commit-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: repeat(3, auto);
		grid-auto-flow: column;
		gap: 36px 64px;
		padding-left: 0;
		padding-right: 0;
	}

	.tri-stats--cards {
		grid-template-columns: repeat(3, 1fr);
	}

	.tri-problem-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.tri-problem-banner {
		grid-template-columns: minmax(0, 1.2fr) minmax(240px, 0.8fr);
		align-items: stretch;
		min-height: 320px;
		padding: 36px 12px 0 36px;
		gap: 12px;
	}

	.tri-problem-banner__list {
		padding-bottom: 0;
		align-self: center;
		padding-block: 8px;
	}

	.tri-problem-banner__media {
		min-height: 0;
	}

	.tri-problem-banner__media img {
		right: 0;
		height: calc(100% + 80px);
		max-width: 100%;
		width: auto;
	}

	.tri-help-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 36px 24px;
	}

	.tri-cards-2 {
		grid-template-columns: repeat(2, 1fr);
	}

	.tri-faq {
		grid-template-columns: repeat(2, 1fr);
		gap: 20px 24px;
		max-width: 1100px;
	}
}

.tri-h {
	margin: 0 0 16px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
	text-transform: uppercase;
}

.tri-h--center {
	text-align: center;
}

.tri-sub {
	margin: 0 auto 24px;
	max-width: 900px;
	text-align: center;
	white-space: pre-line;
}

.tri-lead {
	max-width: 280px;
	font-weight: 700;
}

.tri-accent {
	color: var(--wp--preset--color--orange);
}

.tri-grid-2,
.tri-about {
	display: grid;
	gap: 32px;
}

.tri-about__copy strong {
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-intro__grid {
	display: grid;
	/* Khi x?p d?c, ch?a ch? cho ph?n ??u nh?n v?t tr?i l?n kh?i panel */
	gap: 80px;
	align-items: center;
}

.tri-intro__copy {
	display: grid;
	gap: 16px;
}

.tri-intro__copy p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	text-align: justify;
}

.tri-intro__copy strong {
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-intro__media {
	position: relative;
	margin: 0;
	padding: 0;
	/* Figma: panel 366?364 */
	aspect-ratio: 366 / 364;
}

.tri-intro__panel {
	position: absolute;
	top: 60%;
	left: 50%;
	width: 80%;
	height: 80%;
	transform: translate(-50%, -50%);
	border-radius: var(--wp--custom--radius--field);
	/* ??m h?n n?n trang (surface) ?? kh?i n?n ??c ???c */
	background: var(--wp--preset--color--muted);
}

.tri-intro__media img {
	position: absolute;
	bottom: 0;
	left: 50%;
	/* Figma: ng??i cao 1.2? panel, ??y kh?t m?p d??i n?n ph?n ??u tr?i l?n tr?n */
	height: 100%;
	width: auto;
	max-width: none;
	/* V?ng trong su?t hai b?n c?a PNG l?ch nhau 4.4%, b? ?? nh?n v?t n?m gi?a panel */
	transform: translateX(-54.4%);
}

.tri-mosaic {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	min-height: 280px;
}

.tri-ph {
	background: var(--wp--preset--color--placeholder);
	border-radius: var(--wp--custom--radius--field);
	overflow: hidden;
}

/* Ô lơ lửng giờ có ảnh thật bên trong; ảnh phủ kín ô và bo theo ô. */
.tri-mosaic .tri-ph img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tri-ph--tall {
	height: 72%;
	align-self: start;
	animation: tri-bob 4s ease-in-out infinite;
}

.tri-ph--short {
	height: 58%;
	align-self: end;
	animation: tri-bob 4s ease-in-out infinite 1.2s;
}

@keyframes tri-bob {
	0%,
	100% {
		transform: translateY(0);
	}

	50% {
		transform: translateY(-8px);
	}
}

@media (prefers-reduced-motion: reduce) {
	.tri-ph--tall,
	.tri-ph--short {
		animation: none;
	}
}

.tri-ph--card {
	min-height: 180px;
}

.tri-ph--photo {
	min-height: 280px;
}

.tri-ph--teacher {
	height: 169px;
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 4px rgba(0, 0, 0, 0.05);
}

.tri-ph--press {
	display: none;
	width: 324px;
	height: 240px;
}

.tri-ph--press-lg {
	display: block;
	width: min(419px, 100%);
	height: 250px;
	margin-inline: auto;
}

.tri-ph--news {
	width: 200px;
	height: 220px;
	flex-shrink: 0;
	border-radius: 14px;
}

.tri-ph--cert {
	width: 40px;
	height: 40px;
	border-radius: 50%;
}

.tri-featured {
	display: flex;
	flex-direction: column;
	max-width: 993px;
	margin: 0 auto;
	overflow: visible;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--navy);
}

.tri-featured__list {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0;
	width: max-content;
	max-width: 100%;
	padding: 24px 24px 30px;
}

.tri-featured__item {
	/* Overlap ? radius: ?? v?a ??, kh?ng che ch? */
	--tri-featured-overlap: 15px;
	position: relative;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	z-index: 1;
	width: 305px;
	/* Track ? 375px ch? r?ng ~295px ? co l?i v? cho ch? xu?ng d?ng
	   (tr??c ??y white-space:nowrap l?m ch? tr?n ra ngo?i n?t). */
	max-width: 100%;
	min-height: 89px;
	margin-top: calc(-1 * var(--tri-featured-overlap));
	padding: 0 12px;
	border: 0;
	border-radius: 15px;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	/* Figma: box-shadow: 0px -6px 0px 0px #BAD6EB */
	box-shadow: 0 -6px 0 0 var(--wp--preset--color--ice);
	font-family: inherit;
	/* 16px: uppercase active (Kick-off) v?n 1 d?ng trong 305px */
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.2;
	text-align: center;
	text-transform: capitalize;
	cursor: pointer;
	transition:
		background-color var(--wp--custom--motion--duration-mid) ease,
		color var(--wp--custom--motion--duration-mid) ease,
		box-shadow var(--wp--custom--motion--duration-mid) ease,
		filter var(--wp--custom--motion--duration-mid) ease;
}

.tri-featured__item:first-child {
	margin-top: 0;
}

/* Cap tr?ng ~? cao button; ice; kh?ng t??ng t?c; b? active ?? */
.tri-featured__item--cap {
	height: 45px;
	min-height: 45px;
	pointer-events: none;
	cursor: default;
	color: transparent;
	user-select: none;
	white-space: normal;
}

/* Stack c? ??nh: th? d??i lu?n ?? th? tr?n ? kh?ng boost z khi hover/active */
.tri-featured__item:nth-child(1) { z-index: 1; }
.tri-featured__item:nth-child(2) { z-index: 2; }
.tri-featured__item:nth-child(3) { z-index: 3; }
.tri-featured__item:nth-child(4) { z-index: 4; }
.tri-featured__item:nth-child(5) { z-index: 5; }
.tri-featured__item:nth-child(6) { z-index: 6; }
.tri-featured__item:nth-child(7) { z-index: 7; }
.tri-featured__item:nth-child(8) { z-index: 8; }
.tri-featured__item:nth-child(9) { z-index: 9; }

/*
 * Hover (inactive): t? action, gi? ice + z-index stack.
 * Active: action, b? ice (seam do th? d??i); hover = s?ng nh?, kh?ng nh?y z.
 */
.tri-featured__item:hover:not(.tri-featured__item--cap):not(.is-active) {
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--white);
}

.tri-featured__item:focus-visible:not(.tri-featured__item--cap) {
	outline: 2px solid var(--wp--preset--color--cyan);
	outline-offset: 2px;
}

.tri-featured__item.is-active {
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--white);
	text-transform: uppercase;
	box-shadow: none;
}

.tri-featured__item.is-active:hover {
	filter: brightness(1.08);
}

.tri-featured__preview {
	--tri-featured-tip-y: 50%;
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-end;
	gap: 16px;
	min-height: 360px;
	margin: 16px 24px 24px;
	padding: 24px 24px 28px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--surface);
	overflow: visible;
}

/* M?i t? khung tr?ng b?n ph?i, h??ng tr?i ch?m v?o button active */
.tri-featured__preview::before {
	content: "";
	position: absolute;
	left: 0;
	top: var(--tri-featured-tip-y);
	z-index: 3;
	display: none;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 14px 18px 14px 0;
	border-color: transparent var(--wp--preset--color--surface) transparent transparent;
	transform: translate(-100%, -50%);
	pointer-events: none;
}

.tri-featured__media {
	display: flex;
	flex: 1;
	align-items: flex-end;
	justify-content: center;
	width: 100%;
	min-height: 220px;
	pointer-events: none;
}

/* Ba dòng Mục tiêu / Thời lượng / Sĩ số của khoá đang chọn. Lưới hai cột
   "nhãn : giá trị" để các giá trị thẳng hàng nhau khi đổi khoá. */
.tri-featured__facts {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 6px 14px;
	width: 100%;
	max-width: 320px;
	margin: 0;
	padding-top: 4px;
	border-top: 1px solid var(--wp--custom--color--rule);
	font-size: 14px;
	line-height: 1.45;
}

.tri-featured__fact {
	display: contents;
}

/* display:contents thắng [hidden]{display:none} của reset, nên khoá nào bỏ
   trống một dòng thì dòng đó vẫn hiện ra rỗng. Chặn lại tường minh. */
.tri-featured__fact[hidden] {
	display: none;
}

.tri-featured__facts dt {
	margin: 0;
	color: var(--wp--custom--color--ink-mid);
	white-space: nowrap;
}

.tri-featured__facts dd {
	margin: 0;
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.tri-featured__media picture,
.tri-featured__media img {
	display: block;
	width: auto;
	max-width: min(100%, 420px);
	max-height: 320px;
	height: auto;
	object-fit: contain;
	object-position: center bottom;
}

.tri-featured__preview .tri-btn {
	position: relative;
	z-index: 1;
	flex-shrink: 0;
}

.tri-gallery {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 12px;
	max-width: 1200px;
	margin: 0 auto;
}

.tri-gallery--4 {
	max-width: 1100px;
}

/* Home: infinite dual-row student marquee */
.tri-section--marquee {
	overflow-x: hidden;
}

.tri-marquee {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
	margin-top: 8px;
}

.tri-marquee__row {
	overflow: hidden;
	width: 100%;
	cursor: grab;
	touch-action: pan-y;
	user-select: none;
}

.tri-marquee__row.is-dragging {
	cursor: grabbing;
}

.tri-marquee__row--rtl {
	/* Stagger vs top row (?? card + gap) */
	padding-left: 120px;
}

/* ?? Ticker: d?i tr??t ngang v? t?n, d?ng l?i ? nhi?u ch? ??????????????
   ?i?u ki?n: nh?m con ph?i ???c nh?n ??i trong PHP (b?n th? hai aria-hidden)
   th? translateX(-50%) m?i n?i li?n m?ch. T?c ?? ??t qua --tri-ticker-duration. */

.tri-ticker {
	--tri-ticker-duration: 70s;
	overflow: hidden;
	width: 100%;
}

.tri-ticker__track {
	display: flex;
	width: max-content;
	will-change: transform;
	animation: tri-marquee-rtl var(--tri-ticker-duration) linear infinite;
}

.tri-ticker--ltr .tri-ticker__track {
	animation-name: tri-marquee-ltr;
}

.tri-ticker:hover .tri-ticker__track,
.tri-ticker:focus-within .tri-ticker__track {
	animation-play-state: paused;
}

.tri-ticker__group {
	display: flex;
	flex-shrink: 0;
}

.tri-marquee__track {
	display: flex;
	width: max-content;
	will-change: transform;
}

.tri-marquee__row--ltr .tri-marquee__track {
	animation: tri-marquee-ltr 70s linear infinite;
}

.tri-marquee__row--rtl .tri-marquee__track {
	animation: tri-marquee-rtl 70s linear infinite;
}

.tri-marquee__row:hover .tri-marquee__track {
	animation-play-state: paused;
}

.tri-marquee__group {
	display: flex;
	flex-shrink: 0;
	gap: 16px;
	padding-right: 16px;
}

/* D?i ch?y trang ch? d?ng l?i th? h?c vi?n nh?ng ? d?ng g?n: ?nh n?m g?n
   trong th? (kh?ng nh? l?n), kh?ng thanh navy, kh?ng n?t. */
.tri-marquee .tri-student-card {
	box-sizing: border-box;
	--tri-sc-avatar: 112px;
	--tri-sc-arc: 124px;
	--tri-sc-ring: 2px;
	--tri-sc-badge: 40px;
	--tri-sc-dot: 10px;
	flex: 0 0 223px;
	width: 223px;
	max-width: none;
	height: 237px;
	margin: 0;
	padding: 10px 10px 12px;
	display: flex;
	flex-direction: column;
	align-items: center;
	overflow: hidden;
	border-radius: 15px;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
}

.tri-marquee .tri-student-card::after {
	content: none;
}

.tri-marquee .tri-student-card__visual {
	position: relative;
	left: auto;
	top: auto;
	margin: 8px 0;
}

.tri-marquee .tri-student-card__dot {
	margin: calc(-44px - var(--tri-sc-dot) / 2) 0 0 calc(46px - var(--tri-sc-dot) / 2);
}

.tri-marquee .tri-student-card__badge {
	margin: calc(41px - var(--tri-sc-badge) / 2) 0 0 calc(43px - var(--tri-sc-badge) / 2);
}

.tri-marquee .tri-student-card__badge-score {
	font-size: 16px;
}

.tri-marquee .tri-student-card__badge-label {
	font-size: 9px;
}

.tri-marquee .tri-student-card__body {
	width: 100%;
	padding: 0 4px;
}

.tri-marquee .tri-student-card__name {
	margin: 0 0 4px;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.25;
}

.tri-marquee .tri-student-card__note {
	margin: 0;
	font-size: 12px;
	line-height: 1.3;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-marquee .tri-student-card__more {
	display: none;
}

@keyframes tri-marquee-ltr {
	from {
		transform: translateX(-50%);
	}
	to {
		transform: translateX(0);
	}
}

@keyframes tri-marquee-rtl {
	from {
		transform: translateX(0);
	}
	to {
		transform: translateX(-50%);
	}
}

@media (prefers-reduced-motion: reduce) {
	.tri-marquee__row--ltr .tri-marquee__track,
	.tri-marquee__row--rtl .tri-marquee__track,
	.tri-ticker__track {
		animation: none;
		transform: none;
	}

	/* D?ng r?i th? ph?i cu?n tay ???c, n?u kh?ng n?a sau d?i s? kh?ng t?i ???c. */
	.tri-ticker {
		overflow-x: auto;
	}
}

.tri-why {
	display: grid;
	gap: 16px;
	max-width: 1100px;
	margin: 40px auto 0;
}

.tri-why--orbit {
	/* Figma: th? r?ng 378, h?ng 1 & 3 th?t v?o 120 so v?i m?p container. */
	--tri-why-inset: clamp(0px, (100vw - 1060px) / 3, 120px);
	position: relative;
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	padding: 24px 0;
}

.tri-why__center {
	display: flex;
	justify-content: center;
	order: -1;
}

.tri-why__photo {
	display: block;
	flex: 0 0 auto;
	width: min(320px, 76vw);
	height: auto;
}

.tri-why__item {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 16px;
	background: var(--wp--preset--color--white);
	border-radius: 24px;
	box-shadow: 0 6px 16px rgba(16, 24, 40, 0.1);
}

.tri-why__item p {
	margin: 0;
	font-weight: var(--wp--custom--font--weight-ui);
	color: var(--wp--preset--color--navy);
}

.tri-why--orbit .tri-why__item p {
	line-height: var(--wp--custom--line-height--body);
	color: var(--wp--custom--color--ink);
}

.tri-why__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--action);
}

.tri-navy-strip--tips {
	background: var(--wp--preset--color--orange);
}

.tri-navy-strip--tips .tri-navy-strip__label h2,
.tri-navy-strip--tips .tri-navy-strip__label p {
	color: var(--wp--preset--color--white);
}

.tri-about__copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
}

.tri-about__copy .tri-h {
	margin-bottom: 0;
}

.tri-about__copy p {
	margin: 0;
}

.tri-pills {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	width: fit-content;
	max-width: 100%;
	margin: 0 auto 24px;
}

.tri-pills__item {
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* Thanh ti?n ?? ch? v? khi 5 pill n?m ???c tr?n m?t h?ng ? xem @media 1100. */
.tri-pills__dot {
	display: none;
}

.tri-pill {
	height: 35px;
	padding: 0 20px;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 16px;
	font-weight: 700;
	text-transform: uppercase;
	cursor: pointer;
}

.tri-pill.is-active {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-stage {
	display: none;
	max-width: 1100px;
	margin: 0 auto;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--card);
}

.tri-stage.is-active {
	display: grid;
}

.tri-stage__dark,
.tri-stage__ice {
	padding: 24px;
}

.tri-stage__dark {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--surface);
}

.tri-stage__ice {
	background: color-mix(in srgb, var(--wp--preset--color--ice) 50%, transparent);
}

.tri-stage__label {
	margin: 20px 0 8px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 20px;
	font-weight: 700;
	text-transform: uppercase;
}

.tri-stage__dark ul li::marker,
.tri-stage__ice ul li::marker {
	color: var(--wp--preset--color--orange);
}

.tri-lclt {
	display: grid;
	gap: 16px;
	align-content: start;
	height: 100%;
}

.tri-lclt .tri-card {
	display: flex;
	flex-direction: column;
}

.tri-lclt-block__intro {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

/* Figma: c?t tr?i ~352px, c?t ph?i ~610px, c?ch nhau 30px, t?ng ~992px. */
.tri-lclt-block {
	display: grid;
	gap: 24px;
	width: min(992px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-lclt-block__title {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	max-width: 22ch;
	line-height: 1.15;
}

/* Figma kh?ng g?ch ch?n t?ng d?ng ti?u ??. */
.tri-lclt-block__line {
	display: inline-block;
	text-transform: uppercase;
}

.tri-lclt-block__line--badge {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}

.tri-lclt-block__word {
	display: inline-block;
}

.tri-lclt-block__badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 2px 12px 3px;
	border-radius: 999px;
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
	/* Figma: LCLT c?ng c? ch? ?quy?n? tr?n c?ng d?ng heading. */
	font-size: 1em;
	font-weight: inherit;
	line-height: inherit;
	text-transform: uppercase;
	vertical-align: middle;
}

.tri-lclt-block .tri-lead {
	max-width: 36ch;
	margin: 0;
	font-weight: 400;
	color: var(--wp--preset--color--navy);
}

.tri-lclt-block__media {
	margin: 8px 0 0;
	width: 353px;
	max-width: 100%;
	height: 336px;
	overflow: hidden;
	border-radius: 30px;
	background: var(--wp--preset--color--placeholder);
}

.tri-lclt-block__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
}

.tri-card,
.tri-panel {
	padding: 16px 20px 20px;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--control);
	box-shadow: 0 4px 26px rgba(0, 0, 0, 0.08);
}

.tri-card__bar {
	height: 6px;
	margin-bottom: 12px;
	background: var(--wp--preset--color--navy);
}

.tri-card__row {
	display: flex;
	gap: 12px;
}

.tri-card h3,
.tri-panel h3,
.tri-teacher h3 {
	margin: 0 0 8px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 20px;
	text-transform: uppercase;
}

.tri-card--navy {
	/* Figma: l? trong 32px, ??y r?ng h?n ??nh. */
	padding: 0 24px 26px;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	/* border-radius: var(--wp--custom--radius--card); */
	box-shadow: none;
}

/* Figma ?o ???c: d?i ??nh 6px m?u #0053D1 (token `action`), kh?ng ph?i `sky`. */
.tri-card--navy .tri-card__bar {
	height: 6px;
	margin: 0 -24px 18px;
	border-radius: var(--wp--custom--radius--card) var(--wp--custom--radius--card) 0 0;
	background: var(--wp--preset--color--action);
}

.tri-card--navy .tri-card__row {
	align-items: flex-start;
	gap: 10px;
}

.tri-lclt__icon {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--wp--preset--color--action);
}

.tri-lclt__icon img {
	display: block;
	width: 24px;
	height: 24px;
	filter: brightness(0) invert(1);
}


.tri-card--navy h3 {
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.35;
}

.tri-card--navy h3::before {
	content: "--- ";
	letter-spacing: -0.08em;
	opacity: 0.9;
}

.tri-card--navy p {
	margin: 0;
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	opacity: 0.95;
}

.tri-panel--navy {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-vision-list {
	/* T?m c?a d?y ch?m, t?nh t? m?p tr?i <ul>. */
	--tri-rail-x: 7px;
	--tri-rail-dot: 13px;
	position: relative;
	margin: 16px 0 0;
	padding: 0 0 0 28px;
	list-style: none;
}

/* ???ng g?ch ??t ch?y d?c xuy?n qua c?c ch?m. */
.tri-vision-list::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: var(--tri-rail-x);
	border-left: 2px dashed rgba(255, 255, 255, 0.55);
}

.tri-vision-list li {
	position: relative;
	margin-bottom: 20px;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
}

.tri-vision-list li:last-child {
	margin-bottom: 0;
}

/* Figma: v?ng tr?n vi?n tr?ng m?nh, ru?t navy ?? che ???ng g?ch, gi?a l? ch?m tr?ng. */
.tri-vision-list li::before,
.tri-vision-list li::after {
	content: "";
	position: absolute;
	top: 4px;
	border-radius: 50%;
}

.tri-vision-list li::before {
	left: calc(var(--tri-rail-x) - 28px - var(--tri-rail-dot) / 2 + 1px);
	width: var(--tri-rail-dot);
	height: var(--tri-rail-dot);
	border: 1px solid rgba(255, 255, 255, 0.55);
	background: var(--wp--preset--color--navy);
	box-sizing: border-box;
}

.tri-vision-list li::after {
	left: calc(var(--tri-rail-x) - 28px - 3px + 1px);
	top: 8px;
	width: 6px;
	height: 6px;
	background: var(--wp--preset--color--white);
}

.tri-panel--quote {
	position: relative;
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--preset--color--navy);
}

/* Figma: hai gi?t navy 52?31, canh gi?a th? v? n?m ?? l?n m?p tr?n
   (n?a ? ngo?i, n?a ? trong). Kh?ng c? v?ng tr?n n?n. */
.tri-panel__quote-icon {
	position: absolute;
	left: 50%;
	top: 0;
	width: 52px;
	height: 31px;
	transform: translate(-50%, -50%);
	background: var(--wp--preset--color--navy);
	-webkit-mask: url(../images/icon-quote.svg) center / contain no-repeat;
	mask: url(../images/icon-quote.svg) center / contain no-repeat;
	/* D?u " trong markup ch? l? d? ph?ng khi mask kh?ng ch?y ? gi?u ?i. */
	font-size: 0;
}

.tri-panel--quote p {
	margin: 0;
	font-style: italic;
	line-height: var(--wp--custom--line-height--body, 1.6);
}

.tri-skills {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 16px;
	max-width: 1100px;
	margin: 40px auto 0;
}

.tri-skill {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 281px;
	max-width: 100%;
	aspect-ratio: 1;
	padding: 37px 16px 0;
	border-radius: 50%;
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--preset--color--navy);
	text-align: center;
}

.tri-skill--navy {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

/* Icon d?ng mask n?n t? l?y m?u ch? c?a v?ng tr?n (navy ho?c tr?ng). */
.tri-skill__icon {
	width: 30px;
	height: 30px;
	background: currentColor;
	-webkit-mask: center / contain no-repeat;
	mask: center / contain no-repeat;
}

.tri-skill--listening .tri-skill__icon {
	-webkit-mask-image: url(../images/icon-listening.svg);
	mask-image: url(../images/icon-listening.svg);
}

.tri-skill--reading .tri-skill__icon {
	-webkit-mask-image: url(../images/icon-reading.svg);
	mask-image: url(../images/icon-reading.svg);
}

.tri-skill--writing .tri-skill__icon {
	-webkit-mask-image: url(../images/icon-writing.svg);
	mask-image: url(../images/icon-writing.svg);
}

.tri-skill--speaking .tri-skill__icon {
	-webkit-mask-image: url(../images/icon-speaking.svg);
	mask-image: url(../images/icon-speaking.svg);
}

.tri-skill p {
	margin: 14px 0 12px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 18px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
}

.tri-skill__band {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 110px;
	max-width: 100%;
	height: 30px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	font-size: 15px;
	font-weight: var(--wp--custom--font--weight-ui);
	transition: background-color var(--wp--custom--motion--duration-mid) ease, color var(--wp--custom--motion--duration-mid) ease;
}

.tri-skill__band + .tri-skill__band {
	margin-top: 11px;
}

.tri-skill__band.is-active,
.tri-skill__band:hover {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-skill--navy .tri-skill__band.is-active,
.tri-skill--navy .tri-skill__band:hover {
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--preset--color--navy);
}

.tri-teachers {
	display: grid;
	gap: 16px;
	/* Figma: ?nh 452 + kho?ng 54 + l??i 493 = 999. */
	max-width: 1000px;
	margin: 0 auto;
}

/* Figma: kh?ng c? th? n?n navy ? ch? ?nh navy r?i ch? n?m tr?n n?n trang. */
.tri-teacher {
	padding: 0;
	background: none;
	color: inherit;
}

.tri-teacher .tri-ph--photo {
	min-height: 0;
	aspect-ratio: 452 / 194;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

/* Ảnh giảng viên thật. Trước đây chỉ có luật cho ô xám .tri-ph--photo nên
   khi có bản ghi thật thì ảnh in ra ở kích thước gốc, phá vỡ bố cục.
   Tỉ lệ 4:5 khớp đúng ảnh thẻ trong assets/images/giang-vien/. */
/* Figma: 452x194, bo 15px — cùng khổ với ô xám .tri-ph--photo ngay trên,
   nên có ảnh thật hay chưa thì bố cục vẫn y nhau.

   Ảnh nguồn là thẻ DỌC 400x500, cắt về khổ ngang này chỉ còn một dải
   172px trong 500px gốc — chọn dải nào là chuyện sống còn. Dựng thử cả
   chín người ở 0% / 8% / 15% / 28%: từ 15% trở đi là cụt đỉnh đầu vài
   người, 0% thì thừa một mảng navy phía trên và mặt tụt xuống thấp. 8%
   vừa đủ trọn khuôn mặt vừa giữ được huy hiệu band ở góc phải. */
.tri-teacher__photo {
	display: block;
	width: 100%;
	aspect-ratio: 452 / 194;
	object-fit: cover;
	/* Trước là `center 8%`, chỉnh tay cho hợp với ảnh thẻ DỌC bị nhét vào
	   khung ngang. Giờ giảng viên có ô ảnh ngang riêng đúng 452x194 nên
	   không còn phần thừa nào để canh; để `center` cho đúng khi sếp tải lên
	   ảnh tỉ lệ khác. */
	object-position: center;
	border-radius: var(--wp--custom--radius--field);
}

.tri-teacher__link {
	display: block;
	border-radius: var(--wp--custom--radius--field);
	transition: transform var(--wp--custom--motion--duration-mid) ease;
}

.tri-teacher__link:hover {
	transform: translateY(-3px);
}

.tri-teacher__link:focus-visible {
	outline: 3px solid var(--wp--preset--color--action);
	outline-offset: 3px;
}

/* Mọi hồ sơ nằm CHUNG một ô lưới nên chiều cao khối bằng hồ sơ dài nhất —
   đổi người không làm trang nhảy. Rẻ hơn position:absolute nhiều: không
   phải đo chiều cao bằng JS, và tắt JS thì hồ sơ đầu vẫn chiếm chỗ đúng. */
.tri-teacher--stack {
	display: grid;
}

.tri-teacher__card {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--wp--custom--motion--duration-mid) ease;
}

.tri-teacher__card.is-active {
	opacity: 1;
	visibility: visible;
}

@media (prefers-reduced-motion: reduce) {
	.tri-teacher__card,
	.tri-teacher__link {
		transition: none;
	}
}

.tri-teacher-grid__item {
	display: block;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

/* Ô rỗng lấp chỗ ở trang cuối: giữ đủ số hàng cho lưới, để thanh phân
   trang bên dưới không nhảy lên khi trang đó ít thẻ hơn. */
.tri-teacher-grid__item--empty {
	cursor: default;
}

/* Figma: 153x169, bo 15px. */
.tri-teacher-grid__photo {
	display: block;
	width: 100%;
	height: 169px;
	object-fit: cover;
	/* Huy hiệu band nằm góc trên; neo lên trên để nó không bị cắt. */
	object-position: top center;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 4px rgba(0, 0, 0, 0.05);
	/* Viền vẽ bằng outline chứ không phải border: border chiếm chỗ thật,
	   thêm vào là lưới xô 3px mỗi lần đổi người. */
	outline: 3px solid transparent;
	outline-offset: 2px;
	transition: outline-color var(--wp--custom--motion--duration-mid) ease,
		transform var(--wp--custom--motion--duration-mid) ease;
}

/* Khung viền đánh dấu người đang hiện ở hồ sơ bên trái. */
.tri-teacher-grid__item.is-active .tri-teacher-grid__photo {
	outline-color: var(--wp--preset--color--action);
}

.tri-teacher-grid__item:hover .tri-teacher-grid__photo {
	transform: translateY(-3px);
}

.tri-teacher-grid__item:focus-visible {
	outline: none;
}

.tri-teacher-grid__item:focus-visible .tri-teacher-grid__photo {
	outline-color: var(--wp--preset--color--cyan);
}

@media (prefers-reduced-motion: reduce) {
	.tri-teacher-grid__photo {
		transition: none;
	}
}

/* Phân trang thật dùng <button>; luật sẵn có chỉ nhắm a và span. */
.tri-pager button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
	font-size: var(--wp--preset--font-size--small);
	cursor: pointer;
	transition: background-color var(--wp--custom--motion--duration-mid) ease, color var(--wp--custom--motion--duration-mid) ease;
}

.tri-pager button:hover:not(.is-disabled):not(.is-current) {
	background: var(--wp--custom--color--ice-soft);
}

.tri-pager button.is-current {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-pager button.is-disabled {
	color: var(--wp--custom--color--track-ring);
	cursor: default;
	pointer-events: none;
}

.tri-teacher h3 {
	margin: 22px 0 0;
	padding-bottom: 14px;
	border-bottom: 2px solid var(--wp--custom--color--rule);
	color: var(--wp--preset--color--navy);
	text-align: center;
}

.tri-teacher__facts {
	display: grid;
	gap: 12px;
	margin: 18px 0 0;
	padding: 0;
	list-style: none;
	color: var(--wp--custom--color--ink-strong);
}

.tri-teacher__facts li {
	display: grid;
	grid-template-columns: 20px 1fr;
	align-items: start;
	gap: 10px;
}

.tri-teacher__facts li::before {
	content: "";
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: url(../images/icon-badge.svg) center / contain no-repeat;
	mask: url(../images/icon-badge.svg) center / contain no-repeat;
}

.tri-teacher__facts-lead {
	color: var(--wp--preset--color--navy);
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
}

/* C?n ?? specificity ?? th?ng `.tri-teacher__facts li::before` ? tr?n. */
.tri-teacher__facts li.tri-teacher__facts-lead::before {
	-webkit-mask-image: url(../images/icon-badge-solid.svg);
	mask-image: url(../images/icon-badge-solid.svg);
}

.tri-teacher-col {
	display: grid;
	align-content: start;
	gap: 24px;
}

/* Lưới ảnh nhỏ trượt ngang theo trang, cùng kiểu với khối Khoá học bổ
   trợ: khung ngoài cắt, ray bên trong dịch đi đúng một khung mỗi trang.
   Mỗi trang rộng đúng bằng khung nên dịch bằng phần trăm là đủ, không
   phải đo pixel. */
/* Chừa 6px quanh khung cắt rồi kéo lại bằng margin âm đúng ngần ấy.
   Khung phải cắt (overflow:hidden) để trang bên cạnh không lòi ra, nhưng
   khung viền của ảnh đang chọn vẽ LỒI RA 5px (3px nét + 2px hở) — mà
   lưới 3x2 thì ô nào cũng nằm ở rìa, nên viền bị cắt cụt ở cả chín ô.
   Đệm vào thì viền có chỗ, margin âm bù lại nên lưới vẫn nằm đúng chỗ
   cũ: mép trên thẳng hàng với ảnh lớn, khoảng cách tới thanh phân trang
   không đổi. */
.tri-teacher-grid-viewport {
	overflow: hidden;
	--tri-vien-ho: 6px;
	padding: var(--tri-vien-ho);
	margin: calc(-1 * var(--tri-vien-ho));
}

.tri-teacher-grid-track {
	display: flex;
	/* Khe giữa hai trang phải RỘNG HƠN phần đệm chừa cho khung viền ở
	   trên, nếu không thì mép trái của trang sau thò vào đúng dải đệm đó
	   và dính vào trang trước. JS dịch ray có cộng khe này vào. */
	gap: var(--tri-teacher-page-gap, 24px);
	transition: transform var(--wp--custom--motion--duration-mid) ease;
}

@media (prefers-reduced-motion: reduce) {
	.tri-teacher-grid-track {
		transition: none;
	}
}

.tri-teacher-grid {
	flex: 0 0 100%;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	align-content: start;
}

/* Figma: 3 th? ch?ng nhau, th? gi?a n?i l?n tr?n v? to h?n hai th? r?a. */
.tri-press {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 24px;
}

/* Khung cắt: cả danh sách báo nằm trên một cái ray dài, khung này chỉ cho
   thấy phần giữa. Nhờ vậy đổi ảnh là ray TRƯỢT ngang chứ không phải các
   thẻ hoán đổi kích thước tại chỗ — mắt theo được hướng đi. */
.tri-press__viewport {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	/* Ô nổi bật có bóng 0 12px 28px, tức đổ xuống dưới 40px và hắt lên
	   trên 16px. Khung này cắt, nên không chừa chỗ là bóng dưới mất sạch.
	   Margin âm kéo lại đúng ngần ấy để bố cục không xê dịch.

	   CHỈ đệm theo chiều DỌC: place() canh giữa dựa vào viewport.clientWidth,
	   mà clientWidth có tính cả padding ngang — đệm ngang vào là lệch tâm. */
	padding-block: 16px 40px;
	margin-block: -16px -40px;
}

.tri-press__track {
	display: flex;
	align-items: center;
	gap: 16px;
	/* JS đặt translateX để ô nổi bật nằm đúng giữa khung. */
	transition: transform 0.5s cubic-bezier(0.33, 1, 0.68, 1);
	will-change: transform;
}

.tri-press__item {
	margin: 0;
	/* flex-basis cố định để JS tính được vị trí ray mà không phải đo lại
	   giữa lúc đang có hiệu ứng chạy. */
	flex: 0 0 210px;
	border-radius: var(--wp--custom--radius--field);
	overflow: hidden;
	line-height: 0;
	opacity: 0.5;
	transition: flex-basis 0.5s cubic-bezier(0.33, 1, 0.68, 1),
		opacity 0.5s ease, box-shadow 0.5s ease;
}

/* "Mở rộng một tý": ô giữa rộng hơn hai ô kề và nổi khối lên. */
.tri-press__item--lead {
	flex-basis: 270px;
	opacity: 1;
	box-shadow: 0 12px 28px rgba(9, 31, 91, 0.18);
}

@media (prefers-reduced-motion: reduce) {
	.tri-press__item,
	.tri-press__track {
		transition: none;
	}
}

.tri-press__item img {
	display: block;
	width: 100%;
	height: auto;
}

.tri-news-card {
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 0 0 200px;
	width: 200px;
	padding: 8px 8px 14px;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
}

.tri-news-card__media {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 232 / 148;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--control);
}

.tri-news-card__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 13px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.35;
	text-transform: uppercase;
	/* Figma c?t ti?u ?? ? d?ng th? 2 k?m d?u ba ch?m. */
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-news-card__body {
	margin: 0;
	color: var(--wp--custom--color--ink);
	font-size: 12px;
	line-height: 1.5;
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-navy-strip {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 100%;
	overflow-x: hidden;
	padding: 48px 16px;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--surface);
}

.tri-navy-strip__label h2,
.tri-navy-strip__label p {
	margin: 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: 700;
	text-transform: uppercase;
}

.tri-navy-strip__label h2 {
	font-size: var(--wp--preset--font-size--x-large);
}

.tri-navy-strip__label p {
	font-size: var(--wp--preset--font-size--x-large);
}

/* Ticker t? ch?y n?n kh?ng c?n cu?n tay n?a (tr? khi reduced-motion, xem kh?i ??). */
.tri-navy-strip__row {
	--tri-ticker-duration: 45s;
	max-width: 100%;
}

.tri-navy-strip__row .tri-ticker__group {
	gap: 12px;
	padding-right: 12px;
}

.tri-partners {
	--tri-ticker-duration: 40s;
	max-width: 1100px;
	margin: 0 auto;
	/* .tri-ticker cắt tràn để dải logo chạy vòng, nên bóng dưới mỗi thẻ
	   (0 6px 4px, đổ xuống 10px) bị xén mất. Chừa chỗ rồi kéo lại bằng
	   margin âm — margin-block ghi sau nên đè phần dọc của `margin: 0 auto`
	   ở trên mà vẫn giữ auto hai bên. */
	padding-block: 2px 12px;
	margin-block: -2px -12px;
}

.tri-partners .tri-ticker__group {
	gap: 16px;
	padding-right: 16px;
}

.tri-partner {
	display: grid;
	place-items: center;
	flex: 0 0 153px;
	width: 153px;
	height: 85px;
	padding: 10px;
	box-sizing: border-box;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--field);
	box-shadow: 0 6px 4px rgba(0, 0, 0, 0.05);
}

/* Logo có đủ tỉ lệ: vuông, ngang dài, chữ nhật đứng. Ép cứng 80x41 như
   thuộc tính width/height của thẻ img là kéo méo hết. Cho co trong khung
   và giữ tỉ lệ; chiều cao 65px vừa với ô 85px đã trừ 10px đệm mỗi bên. */
.tri-partner img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 65px;
	object-fit: contain;
}

.tri-consult {
	padding: 48px 16px 72px;
	background: var(--wp--preset--color--surface);
}

.tri-consult__card {
	display: flex;
	flex-direction: column;
	gap: 24px;
	width: min(993px, 100%);
	margin: 0 auto;
	padding: 32px 20px;
	overflow: hidden;
	background: var(--wp--preset--color--navy);
	border-radius: var(--wp--custom--radius--card);
	box-shadow: 0 12px 16px rgba(0, 0, 0, 0.2);
	color: var(--wp--preset--color--surface);
}

.tri-consult__aside h2 {
	margin: 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
	text-transform: capitalize;
}

.tri-consult__aside h2 span {
	display: block;
}

/* Figma ?o ???c 206?260 trong th? t? v?n ? tr??c ??y ?? 153px n?n nh? h?n ~35%. */
.tri-consult__mascot {
	display: none;
	width: 206px;
	max-width: 100%;
	height: auto;
	margin-top: 24px;
}

.tri-consult__form-wrap {
	flex: 1;
}

.tri-consult label,
.tri-consult legend {
	display: block;
	margin: 10px 0 6px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-strong);
	color: var(--wp--preset--color--surface);
}

.tri-consult input[type="text"],
.tri-consult input[type="tel"],
.tri-consult input[type="email"],
.tri-consult textarea {
	width: 100%;
	height: 41px;
	padding: 0 12px;
	border: 0;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--navy);
	font: inherit;
	font-size: 14px;
}

.tri-consult textarea {
	height: 71px;
	padding: 10px 12px;
	resize: vertical;
}

.tri-consult__row {
	display: grid;
	gap: 12px;
}

.tri-consult fieldset {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 16px;
	margin: 12px 0;
	padding: 0;
	border: 0;
}

.tri-consult fieldset label {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	font-weight: 400;
}

.tri-consult fieldset input {
	accent-color: var(--wp--preset--color--orange);
}

.tri-consult__actions {
	display: flex;
	justify-content: flex-end;
	margin-top: 16px;
}

.tri-consult__actions .tri-btn {
	width: auto;
	min-width: 199px;
}

.tri-consult__ok {
	color: var(--wp--preset--color--ice);
	font-weight: 700;
}

.tri-consult__err {
	color: var(--wp--preset--color--orange);
	font-weight: 700;
}

/* D??i 768px c? n?t CTA tr?n header l?n FAB ??u t?ng b? ?n ? kh?ng c?n l?i
   chuy?n ??i n?o. FAB gi? hi?n ? m?i kh? m?n. */
.tri-fab {
	display: inline-flex;
	position: fixed;
	right: 16px;
	bottom: calc(var(--tri-bottombar-h) + 16px);
	z-index: 55;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: var(--wp--custom--control--height-lg);
	min-height: var(--wp--custom--control--height-lg);
	padding: 0 18px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	text-align: center;
	text-transform: uppercase;
	box-shadow: 0 8px 24px color-mix(in srgb, var(--wp--preset--color--orange) 35%, transparent);
	transition: background var(--wp--custom--motion--duration-mid) ease, transform var(--wp--custom--motion--duration-mid) ease;
}

.tri-fab:hover {
	transform: translateY(-2px);
}

.tri-fab.is-top {
	background: var(--wp--preset--color--navy);
	box-shadow: 0 8px 24px color-mix(in srgb, var(--wp--preset--color--navy) 35%, transparent);
}

.tri-fab__icon {
	font-size: 16px;
}

.tri-reveal {
	opacity: 0;
	transform: translateX(-36px);
	transition: opacity 0.65s ease, transform 0.65s ease;
	will-change: opacity, transform;
}

.tri-reveal--left {
	transform: translateX(-36px);
}

.tri-reveal--right {
	transform: translateX(36px);
}

/* D??i 768px, tr??t ngang ?36px ??y section ra ngo?i m?p m?n h?nh (72px tr?n).
   ??i sang tr??t d?c ? ?? CSS qu?n breakpoint, kh?ng nh? JS g?n class. */
@media (max-width: 767px) {
	.tri-reveal,
	.tri-reveal--left,
	.tri-reveal--right {
		transform: translateY(24px);
	}
}

.tri-reveal.is-in {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.tri-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.tri-mega__panel {
		transition: none;
	}
}

/* ?? Banner ??u trang ?????????????????????????????????????????????????
   ?o 1? t? figma/pages/*.png (m?p tr?n banner = y100, h?t header):
   khung ch? canh tr?i m?p 224 (tr?ng khung 993 c?a c?c l??i kh?c),
   ti?u ?? 40/800 cao ch? hoa 31, d?ng ph? 35/400 cao ch? hoa 27,
   g?ch 104?4 #2F8EE0, m? t? 17/30, n?t cao 50. Banner cao 600
   (450 ? hai trang kho? h?c). Thi?t k? kh?ng c? ?nh n?n ? ch? gradient. */

/* Ch? d?nh cho tr?nh ??c m?n h?nh ? banner tr?ng v?n ph?i c? <h1>. */
.tri-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.tri-hero {
	--tri-hero-h: 320px;
	display: flex;
	align-items: flex-start;
	min-height: var(--tri-hero-h);
	padding: 56px 0 40px;
	background-image: linear-gradient(208.81deg, var(--wp--preset--color--white) 18.9%, var(--wp--preset--color--ice) 81%);
}

.tri-hero--short {
	--tri-hero-h: 260px;
}

/* Gi?i thi?u / Ph??ng ph?p / L? tr?nh: thi?t k? ?? banner tr?ng h?n. */
.tri-hero--blank {
	--tri-hero-h: 220px;
	padding: 0;
}

/* Trang có banner ảnh ở trên rồi thì khối chữ bên dưới chỉ còn là phần
   tiêu đề trang, không phải một banner đứng một mình nữa — nên bỏ chiều
   cao tối thiểu 460px và thu gọn đệm.

   Đo trước khi sửa: banner 594px + khối chữ 600px = 1.194px, khách phải
   cuộn qua hơn một màn hình rưỡi mới tới nội dung thật.

   Hai class nên luật này (0,2,0) thắng .tri-hero (0,1,0) kể cả khi luật
   kia nằm trong @media — media query KHÔNG cộng thêm độ ưu tiên. Dùng
   padding-block chứ không phải padding, để không chạm vào đệm hai bên. */
.tri-banner--trang + .tri-hero {
	--tri-hero-h: 0px;
	padding-block: 32px 28px;
}

@media (min-width: 768px) {
	.tri-banner--trang + .tri-hero {
		padding-block: 56px 44px;
	}
}

.tri-hero__inner {
	width: min(993px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-hero__eyebrow {
	margin: 0 0 4px;
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.2;
}

.tri-hero h1 {
	margin: 0;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
	text-transform: uppercase;
}

.tri-hero__sub {
	margin: 6px 0 0;
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.2;
}

.tri-hero__line {
	width: 104px;
	height: 4px;
	margin: 12px 0 0;
	background: var(--wp--custom--color--rule-strong);
}

.tri-hero__desc {
	margin: 20px 0 0;
	max-width: 560px;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.7;
	/* "\n" trong chu?i ng?t d?ng ??ng ch? nh? thi?t k?, kh? h?p v?n t? xu?ng d?ng. */
	white-space: pre-line;
}

.tri-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 24px;
}

@media (min-width: 768px) {
	.tri-hero {
		--tri-hero-h: 460px;
		padding: 104px 0 48px;
	}

	.tri-hero--short {
		--tri-hero-h: 380px;
	}

	.tri-hero--blank {
		--tri-hero-h: 380px;
	}

	.tri-hero h1 {
		font-size: var(--wp--preset--font-size--xx-large);
	}

	.tri-hero__eyebrow,
	.tri-hero__sub {
		font-size: 26px;
	}
}

@media (min-width: 1024px) {
	.tri-hero {
		--tri-hero-h: 600px;
		padding: 147px 0 48px;
	}

	.tri-hero--short {
		--tri-hero-h: 450px;
		padding-top: 55px;
	}

	.tri-hero--blank {
		--tri-hero-h: 600px;
	}

	.tri-hero__eyebrow {
		margin-bottom: 12px;
		font-size: 35px;
	}

	.tri-hero__sub {
		margin-top: 13px;
		font-size: 35px;
	}

	.tri-hero__line {
		margin-top: 13px;
	}

	/* Khi c? d?ng "Kh?a h?c" ph?a tr?n th? g?ch n?m ngay d??i ti?u ??,
	   thi?t k? ch?a r?ng h?n 6px so v?i khi g?ch n?i ti?p d?ng ph?. */
	.tri-hero--eyebrow .tri-hero__line {
		margin-top: 19px;
	}

	.tri-hero__desc {
		margin-top: 36px;
		max-width: 620px;
		font-size: 17px;
		line-height: 30px;
	}

	.tri-hero__actions {
		margin-top: 28px;
	}

	.tri-hero .tri-btn {
		height: 50px;
		min-height: 50px;
		padding-inline: 14px;
		font-size: var(--wp--preset--font-size--large);
	}
}

.tri-stats,
.tri-cards-3 {
	display: grid;
	gap: 16px;
	max-width: 1100px;
	margin: 0 auto;
}

.tri-stats {
	grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr));
	margin-bottom: 32px;
	text-align: center;
}

.tri-stats strong {
	display: block;
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 32px;
}

/* ?? Th? h?c vi?n ti?u bi?u ???????????????????????????????????????????
   ?o t? figma/pages/hoc-vien-tieu-bieu.png (1?): l??i r?ng 993, 3 c?t,
   khe 16 ? th? 320?302. ?nh tr?n 131 nh? 68px l?n kh?i m?p tr?n th?,
   v?ng cung navy b?n k?nh ngo?i 80.5 n?t 4 qu?t t? 9h qua ??nh t?i ~2h,
   ch?m sky 18 ??u ? ??u cung, huy hi?u cam 54 l?ch (56, 53.5) so t?m ?nh,
   v? m?t thanh navy 142 l? 10px d??i ??y th?. */

.tri-student-card {
	--tri-sc-avatar: 131px;
	--tri-sc-arc: 161px;
	--tri-sc-ring: 4px;
	--tri-sc-badge: 54px;
	--tri-sc-dot: 18px;
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 320px;
	/* ch? cho ?nh + cung nh? l?n tr?n, v? thanh navy l? xu?ng d??i */
	margin-top: 83px;
	margin-bottom: 10px;
	padding: 93px 16px 25px;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--control);
	box-shadow: 0 4px 26px rgba(9, 31, 91, 0.08);
	text-align: center;
}

/* Thanh navy n?m sau th?, ch? l? ph?n ??y ra ngo?i. */
.tri-student-card::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -10px;
	z-index: -1;
	width: 142px;
	height: 28px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-student-card__visual {
	position: absolute;
	left: 50%;
	top: calc(var(--tri-sc-avatar) / -2 - 2px);
	width: var(--tri-sc-avatar);
	height: var(--tri-sc-avatar);
	margin-left: calc(var(--tri-sc-avatar) / -2);
}

/* Cung 135?: vi?n tr?n + tr?i c?a h?nh tr?n cho cung 45??225?, c?t n?a
   d??i ?i th? c?n ??ng 45??180? nh? thi?t k?. */
.tri-student-card__arc {
	position: absolute;
	left: 50%;
	top: 50%;
	width: var(--tri-sc-arc);
	height: var(--tri-sc-arc);
	margin: calc(var(--tri-sc-arc) / -2) 0 0 calc(var(--tri-sc-arc) / -2);
	border: var(--tri-sc-ring) solid var(--wp--preset--color--navy);
	border-right-color: transparent;
	border-bottom-color: transparent;
	border-radius: 50%;
	clip-path: inset(0 0 50% 0);
	pointer-events: none;
}

.tri-student-card__dot {
	position: absolute;
	left: 50%;
	top: 50%;
	z-index: 2;
	width: var(--tri-sc-dot);
	height: var(--tri-sc-dot);
	/* t?m ch?m l?ch (+60, ?57.5) so t?m ?nh, t?c ??u tr?n c?a cung */
	margin: calc(-57.5px - var(--tri-sc-dot) / 2) 0 0 calc(60px - var(--tri-sc-dot) / 2);
	border-radius: 50%;
	background: var(--wp--preset--color--sky);
}

.tri-student-card__avatar {
	width: 100%;
	height: 100%;
	overflow: hidden;
	border-radius: 50%;
	background: var(--wp--preset--color--placeholder);
}

.tri-student-card__avatar img,
.tri-ph--avatar {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	background: var(--wp--preset--color--placeholder);
}

.tri-student-card__badge {
	position: absolute;
	left: 50%;
	top: 50%;
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: var(--tri-sc-badge);
	height: var(--tri-sc-badge);
	margin: calc(53.5px - var(--tri-sc-badge) / 2) 0 0 calc(56px - var(--tri-sc-badge) / 2);
	border-radius: 50%;
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--beau-sans);
	line-height: var(--wp--custom--line-height--tight);
}

.tri-student-card__badge-score {
	font-size: 22px;
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-student-card__badge-label {
	font-size: 11px;
	font-weight: 500;
}

.tri-student-card__body {
	width: 100%;
}

.tri-student-card__role {
	margin: 0;
	color: var(--wp--custom--color--ink-soft);
	font-size: 18px;
	line-height: 1.2;
}

.tri-student-card__name {
	margin: 2px 0 19px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 18px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.2;
	text-transform: uppercase;
}

.tri-student-card__note {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	color: color-mix(in srgb, var(--wp--preset--color--navy) 70%, white);
}

.tri-student-card__bands {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 7px;
	margin: 0 0 27px;
	padding: 0;
	list-style: none;
}

.tri-student-card__bands li {
	display: flex;
	flex-direction: column;
	gap: 5px;
	padding: 9px 2px;
	border-radius: 4px;
	background: var(--wp--custom--color--band);
}

.tri-student-card__bands span {
	color: var(--wp--custom--color--ink-mid);
	font-size: 13px;
	line-height: 1.2;
}

.tri-student-card__bands strong {
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 26px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.1;
}

.tri-student-card__more {
	height: 26px;
	min-height: 26px;
	padding-inline: 17px;
	border: 1px solid var(--wp--preset--color--navy);
	background: transparent;
	color: var(--wp--preset--color--navy);
	font-size: 13px;
	text-transform: none;
}

.tri-student-card__more:hover,
.tri-student-card__more:focus-visible {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

/* Figma t? ??c ??ng m?t th? trong l??i ?? ph? nh?p h?ng ba. */
.tri-student-card--feature .tri-student-card__more {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-student-card--feature .tri-student-card__more:hover,
.tri-student-card--feature .tri-student-card__more:focus-visible {
	background: var(--wp--preset--color--navy-hover);
}


/* Bi?n th? g?n cho "B?ng th?nh t?ch" (khoa-hoc.png): th? 238?157, 4 c?t,
   ch? t?n + d?ng ghi ch?, kh?ng ? ?i?m, kh?ng n?t, kh?ng thanh navy.
   ?nh/cung/ch?m/huy hi?u gi? nguy?n k?ch th??c nh? l??i l?n. */
.tri-student-card--compact {
	max-width: 238px;
	margin-bottom: 0;
	padding: 94px 12px 17px;
}

.tri-student-card--compact::after {
	content: none;
}

/* L??i l?n ??t t?m ?nh cao h?n m?p th? 2px, b?n g?n th? tr?ng m?p. */
.tri-student-card--compact .tri-student-card__visual {
	top: calc(var(--tri-sc-avatar) / -2);
}

.tri-student-card--compact .tri-student-card__name {
	margin: 0 0 4px;
}

.tri-student-card--compact .tri-student-card__note {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.4;
}

.tri-student-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 32px 16px;
	width: min(993px, calc(100% - 32px));
	margin-inline: auto;
	justify-items: center;
}

.tri-student-grid--compact {
	row-gap: 36px;
}

.tri-pager {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 5px;
	margin-top: 32px;
}

.tri-pager a,
.tri-pager span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
	font-size: var(--wp--preset--font-size--small);
	transition: background-color var(--wp--custom--motion--duration-mid) ease, color var(--wp--custom--motion--duration-mid) ease;
}

.tri-pager a:hover,
.tri-pager a:focus-visible {
	background: var(--wp--custom--color--ice-soft);
	outline: none;
}

.tri-pager .is-current {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

/* D?u ? kh?ng c? n?n tr?n. */
.tri-pager .tri-pager__gap {
	width: auto;
	background: none;
}

.tri-pager__nav::before {
	content: "";
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: url(../images/icon-chevron.svg) center / contain no-repeat;
	mask: url(../images/icon-chevron.svg) center / contain no-repeat;
}

.tri-pager__nav--prev::before {
	transform: rotate(180deg);
}

.tri-pager .is-disabled {
	color: var(--wp--custom--color--track-ring);
}

@media (min-width: 768px) {
	.tri-student-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.tri-student-grid--compact {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (min-width: 1024px) {
	.tri-student-grid {
		grid-template-columns: repeat(3, 1fr);
	}

	.tri-student-grid--compact {
		grid-template-columns: repeat(4, 1fr);
	}
}

.tri-footer {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-footer__grid {
	display: grid;
	gap: 40px;
	width: min(1200px, calc(100% - 32px));
	margin: 0 auto;
	padding: 48px 0;
}

.tri-footer__logo {
	display: block;
	width: 160px;
	height: 70px;
	margin-bottom: 16px;
	object-fit: contain;
	object-position: left;
}

.tri-footer__company {
	margin: 0 0 24px;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 16px;
	font-weight: 700;
	text-transform: uppercase;
}

.tri-footer__h {
	margin: 0 0 8px;
	color: var(--wp--preset--color--cyan);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 20px;
	font-weight: 700;
	text-transform: uppercase;
}

.tri-footer__h::after {
	content: "";
	display: block;
	width: 74px;
	height: 1px;
	margin-top: 12px;
	background: var(--wp--preset--color--cyan);
}

.tri-footer__row {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	margin-bottom: 8px;
}

.tri-footer__row img {
	width: 26px;
	height: 26px;
	flex-shrink: 0;
}

.tri-footer ul {
	padding: 0;
	list-style: none;
}

.tri-footer li {
	line-height: 38px;
}

.tri-footer a:hover {
	color: var(--wp--preset--color--cyan);
}

.tri-footer__certs {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 24px;
}

.tri-footer__bar {
	display: flex;
	align-items: center;
	gap: 8px;
	height: 38px;
	padding: 0 20px;
	background: var(--wp--preset--color--sky);
	font-size: var(--wp--preset--font-size--small);
}

.tri-404 {
	min-height: 40vh;
}

@media (min-width: 768px) {
	.tri-header .tri-header__cta {
		display: inline-flex;
	}

	.tri-grid-2,
	.tri-about,
	.tri-stage.is-active,
	.tri-teachers,
	.tri-navy-strip {
		grid-template-columns: 1fr 1fr;
		display: grid;
	}

	.tri-intro__grid {
		/* Figma: c?t ch? 580 / khe 48 / panel 366 trong container 993 */
		grid-template-columns: minmax(0, 580fr) minmax(0, 366fr);
		gap: 48px;
	}

	.tri-about {
		align-items: stretch;
	}

	.tri-mosaic {
		height: 100%;
	}

	.tri-featured {
		flex-direction: row;
		align-items: stretch;
		padding: 24px 20px 24px 16px;
		gap: 0;
	}

	.tri-featured__list {
		flex: 0 0 auto;
		width: max-content;
		max-width: none;
		padding: 8px 0 8px 8px;
		justify-content: center;
	}

	.tri-featured__preview {
		flex: 1;
		margin: 0 0 0 16px;
		min-height: 460px;
	}

	.tri-featured__preview::before {
		display: block;
		border-width: 14px 16px 14px 0;
	}

	.tri-featured__media {
		min-height: 300px;
	}

	.tri-featured__media img {
		max-height: 360px;
	}

	.tri-navy-strip {
		/* Figma: nh?n chi?m kho?ng 1/4, d?i th? chi?m ph?n c?n l?i. */
		grid-template-columns: minmax(180px, 1fr) 3fr;
		align-items: center;
		max-width: none;
		padding-inline: 32px;
	}

	/* D?i "Tin t?c" ??o th? t?: th? b?n tr?i, nh?n b?n ph?i. */
	.tri-navy-strip:has(.tri-navy-strip__label--right) {
		grid-template-columns: 3fr minmax(180px, 1fr);
	}

	.tri-navy-strip__label--right {
		text-align: right;
	}

	/* Figma: 352 : 610 ? kh?ng ph?i hai c?t b?ng nhau. */
	.tri-lclt-block {
		grid-template-columns: minmax(0, 352fr) minmax(0, 610fr);
		gap: 30px;
		align-items: stretch;
	}

@media (min-width: 768px) {
	.tri-lclt {
		grid-template-rows: repeat(3, minmax(0, 1fr));
		gap: 16px;
	}
}

	.tri-consult__row {
		grid-template-columns: 1fr 1fr;
	}

	.tri-consult__card {
		flex-direction: row;
		align-items: stretch;
		gap: 40px;
		padding: 40px 36px;
	}

	.tri-consult__aside {
		flex: 0 0 clamp(300px, 34%, 380px);
		display: flex;
		flex-direction: column;
		justify-content: space-between;
	}

	.tri-consult__aside h2 {
		font-size: var(--wp--preset--font-size--x-large);
	}

	.tri-consult__mascot {
		display: block;
	}

	.tri-fab {
		right: 24px;
		bottom: calc(var(--tri-bottombar-h) + 24px);
	}

	.tri-gallery {
		grid-template-columns: repeat(3, 1fr);
	}

	.tri-why:not(.tri-why--orbit) {
		grid-template-columns: 1fr 1fr;
	}

	.tri-cards-3 {
		grid-template-columns: repeat(2, 1fr);
	}

	.tri-footer__grid {
		grid-template-columns: repeat(3, 1fr);
	}

	.tri-ph--press {
		display: block;
	}

	.tri-ph--press-lg {
		height: 310px;
	}

	.tri-ph--news {
		width: 241px;
		height: 284px;
	}

	/* Lead 416�312: gi? min-height khi flex-basis transition (autoplay) ?? kh?i t?t height trang. */
	.tri-press {
		min-height: 312px;
	}

	/* Từ 768px trở lên mới đủ chỗ cho khổ theo Figma: ô kề 324, ô giữa 416. */
	.tri-press__item {
		flex-basis: 324px;
	}

	.tri-press__item--lead {
		flex-basis: 416px;
	}

	.tri-news-card {
		flex-basis: 241px;
		width: 241px;
	}

	.tri-teacher-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 17px;
	}
}

/* Thanh ti?n ?? l? tr?nh c?n ~982px, orbit c?n ~1056px, 4 v?ng tr?n k? n?ng c?n
   ??ng 992px ? c? ba b?t t? 1100px thay v? 768/1024px nh? tr??c, ?? c?n dung sai
   cho thanh cu?n v? m?c zoom. */
@media (min-width: 1100px) {
	/* Figma: 4 v?ng tr?n 281px, t?m c?ch nhau 237.5px ? ch?ng l?n nhau 44px.
	   V?ng sau ?? l?n v?ng tr??c theo ??ng th? t? DOM. */
	.tri-skills {
		flex-wrap: nowrap;
		gap: 0;
	}

	.tri-skill + .tri-skill {
		margin-left: -44px;
	}

	.tri-pills {
		/* Figma: c?c pill c?ch nhau ~66px n?n ch?m gi?n ??u tr?n ???ng k?. */
		gap: 0 66px;
		/* ph?i: ???ng ch?y cho m?i t?n ? d??i: ch?a m?i t?n cao 26px */
		padding: 0 68px 8px 0;
	}

	.tri-pills::before,
	.tri-pills::after {
		content: "";
		position: absolute;
		pointer-events: none;
	}

	.tri-pills::before {
		left: 0;
		right: 0;
		bottom: 13px;
		height: 2px;
		background: var(--wp--preset--color--navy);
	}

	.tri-pills::after {
		right: 0;
		bottom: 1px;
		width: 20px;
		height: 26px;
		background: var(--wp--preset--color--navy);
		clip-path: polygon(25% 0, 100% 50%, 25% 100%, 52% 50%);
	}

	.tri-pills__dot {
		display: block;
		position: relative;
		width: 12px;
		height: 12px;
		margin-top: 18px;
		border-radius: 50%;
		background: var(--wp--preset--color--navy);
	}

	/* Pill ?ang ch?n: ch?m to h?n, th?m v?ng tr?n ? kho?ng h? che ???ng k? ch?y ph?a sau. */
	.tri-pill.is-active + .tri-pills__dot {
		width: 14px;
		height: 14px;
		margin-top: 17px;
		box-shadow:
			0 0 0 1px var(--wp--preset--color--surface),
			0 0 0 3px var(--wp--custom--color--track-ring);
	}

	.tri-why--orbit {
		grid-template-columns: minmax(0, 378px) minmax(300px, 1fr) minmax(0, 378px);
		grid-template-rows: auto auto auto;
		align-items: center;
		gap: 44px 0;
		max-width: 1240px;
		padding: 0;
	}

	.tri-why__center {
		grid-column: 2;
		grid-row: 1 / span 3;
		order: 0;
		align-self: end;
	}

	.tri-why__photo {
		/* 570px ? 1440 (cao ~428px nh? Figma); co theo c?t gi?a ? m?n h?p h?n.
		   Ph?n tr?n hai b?n l? ch? ? ? tay v? laptop n?m d??i th? h?ng 2. */
		width: clamp(300px, calc(100% + 86px), 570px);
		max-width: none;
		/* tri?t ti?u padding ??y c?a .tri-section ?? nh?n v?t ??ng s?t m?p band */
		margin-bottom: calc(var(--tri-section-pb) * -1);
	}

	.tri-why__item--1 { grid-column: 1; grid-row: 1; }
	.tri-why__item--2 { grid-column: 1; grid-row: 2; }
	.tri-why__item--3 { grid-column: 1; grid-row: 3; }
	.tri-why__item--4 { grid-column: 3; grid-row: 1; }
	.tri-why__item--5 { grid-column: 3; grid-row: 2; }
	.tri-why__item--6 { grid-column: 3; grid-row: 3; }

	/* H?ng 1 & 3 th?t v?o, h?ng 2 s?t m?p container ? t?o v?ng cung quanh ?nh. */
	.tri-why__item--1,
	.tri-why__item--3 {
		margin-left: var(--tri-why-inset);
		margin-right: calc(var(--tri-why-inset) * -1);
	}

	.tri-why__item--4,
	.tri-why__item--6 {
		margin-left: calc(var(--tri-why-inset) * -1);
		margin-right: var(--tri-why-inset);
	}
}

/* Logo 128px + 5 m?c nav + n?t CTA kh?ng v?a 768px (?o ???c tr?n 32px) ?
   gi? burger + drawer t?i 1024px. */
@media (min-width: 1024px) {
	/* Thanh ??y b? ?n ? kh? n?y n?n tr? l?i ph?n padding ?? ch?a. */
	:root {
		--tri-bottombar-h: 0px;
	}

	.tri-burger {
		display: none;
	}

	.tri-nav {
		display: flex;
	}

	.tri-drawer {
		display: none !important;
	}
}

@media (min-width: 1024px) {
	.tri-nav {
		gap: 28px;
		font-size: var(--wp--preset--font-size--large);
	}

	.tri-mega__inner {
		/* Đọc biến số cột như luật gốc. Ghi cứng repeat(3) ở đây thì mega
		   4 cột của "Khóa học" rụng cột thứ tư xuống hàng dưới — đã dính. */
		grid-template-columns: repeat(var(--tri-mega-cot, 1), minmax(0, 1fr));
		width: min(1440px, calc(100% - 32px));
		gap: 12px 40px;
	}

	.tri-h {
		font-size: var(--wp--preset--font-size--xx-large);
	}

	.tri-gallery,
	.tri-gallery--4 {
		grid-template-columns: repeat(4, 1fr);
	}

	.tri-gallery:not(.tri-gallery--4) {
		grid-template-columns: repeat(5, 1fr);
	}

	.tri-teachers {
		grid-template-columns: minmax(0, 452fr) minmax(0, 493fr);
		gap: 54px;
	}

	.tri-cards-3 {
		grid-template-columns: repeat(3, 1fr);
	}

	.tri-footer__bar {
		padding-inline: 226px;
	}
}

@media (max-width: 767px) {
	.tri-banner {
		min-height: 220px;
	}

	.tri-banner .tri-cta-row {
		bottom: 16px;
		gap: 8px;
	}
}

@media (max-width: 374px) {
	.tri-h {
		font-size: var(--wp--preset--font-size--x-large);
	}

	.tri-btn {
		font-size: var(--wp--preset--font-size--small);
		padding-inline: 14px;
	}
}

/* ?? Ph??ng ph?p ??o t?o: 2 tr? ph??ng ph?p ?????????????????????????????
   Figma: badge navy tab gi?a m?p tr?n, thanh navy l? d??i ??y (nh? .tri-stat-card). */

.tri-pillars {
	display: grid;
	gap: 28px;
	align-items: stretch;
	max-width: 1100px;
	margin: 40px auto 0;
}

.tri-pillar {
	position: relative;
	z-index: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
	/* ch?a ch? badge nh? l?n + thanh navy l? xu?ng */
	margin-top: 16px;
	margin-bottom: 9px;
	padding: 36px 24px 24px;
	background: transparent;
	border: none;
	box-shadow: none;
	text-align: left;
	isolation: isolate;
}

/* M?t th? n?m tr?n thanh navy. */
.tri-pillar::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 16px rgba(16, 24, 40, 0.08);
}

/* Thanh navy n?m sau m?t th?, ch? l? ph?n ??y. */
.tri-pillar::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -9px;
	z-index: -1;
	width: 140px;
	height: 28px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-pillar > *:not(.tri-pillar__badge) {
	position: relative;
	z-index: 1;
}

.tri-pillar__badge {
	position: absolute;
	left: 50%;
	top: 0;
	z-index: 2;
	margin: 0;
	padding: 8px 20px;
	transform: translate(-50%, -50%);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.2;
	text-align: center;
	text-transform: uppercase;
	white-space: nowrap;
}

.tri-pillar__title {
	margin: 0;
	color: var(--wp--preset--color--action);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 20px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-align: center;
}

.tri-pillar__points {
	display: grid;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	flex: 1;
}

/* Figma: m?i ? c? d?u t?ch; ???ng ??t ch? gi?a c?c ?. */
.tri-pillar__points li {
	display: grid;
	grid-template-columns: 20px 1fr;
	gap: 12px;
	margin: 0;
	padding: 12px 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-pillar__points li + li {
	border-top: 1px dashed var(--wp--custom--color--rule);
}

.tri-pillar__points li::before {
	content: "";
	width: 20px;
	height: 20px;
	margin-top: 2px;
	border-radius: 50%;
	background: var(--wp--preset--color--action) url(../images/icon-check.svg) center / 13px no-repeat;
}

/* M?t ? grid duy nh?t cho body ? tr?nh text/<strong> t?ch c?t 20px. */
.tri-pillar__text {
	min-width: 0;
	text-align: justify;
}

.tri-pillar__text strong {
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-pillar__more {
	margin-top: auto;
	align-self: center;
	padding-top: 8px;
	color: var(--wp--preset--color--navy);
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--small);
}

/* ?? Ph??ng ph?p ??o t?o: c?c "K?nh" tr?i nghi?m ???????????????????????? */

.tri-channels {
	display: grid;
	gap: 28px;
	max-width: 1100px;
	margin-inline: auto;
	overflow: visible;
}

.tri-channels-section {
	overflow: visible;
}

.tri-channels__list {
	display: grid;
	gap: 16px;
}

.tri-channel {
	overflow: hidden;
	border-radius: 20px;
	background: var(--wp--custom--color--ice-soft);
	box-shadow: 0 4px 16px rgba(9, 31, 91, 0.06);
}

.tri-channel__bar {
	height: 8px;
	background: var(--wp--preset--color--navy);
}

.tri-channel__row {
	display: grid;
	grid-template-columns: 40px 1fr;
	gap: 12px 14px;
	padding: 16px 20px 20px;
	align-items: start;
}

.tri-channel__icon {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
}

.tri-channel__icon img {
	width: 20px;
	height: 20px;
	/* Icon tr?ng tr?n n?n navy. */
	filter: brightness(0) invert(1);
}

.tri-channel__body h3 {
	position: relative;
	display: inline-block;
	margin: 0 0 8px;
	padding-bottom: 4px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	text-transform: uppercase;
	border-bottom: 1px solid var(--wp--preset--color--navy);
}

/* Ba n?t ??t n?i icon ? title (Figma). */
.tri-channel__body h3::before {
	content: "";
	position: absolute;
	left: -52px;
	top: 50%;
	width: 36px;
	height: 0;
	border-top: 2px dashed var(--wp--preset--color--sky);
	transform: translateY(-50%);
	pointer-events: none;
}

.tri-channel__body p {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-channels__intro {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 12px;
	overflow: visible;
}

.tri-channels__lead {
	max-width: 36ch;
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

/* Figma: panel ice bo l?n; PNG ??y kh?t, ??u tr?i l?n tr?n figure. */
.tri-channels__media {
	position: relative;
	width: min(360px, 100%);
	margin: 28px 0 0;
	aspect-ratio: 360 / 340;
	overflow: visible;
}

.tri-channels__panel {
	position: absolute;
	left: 50%;
	bottom: 0;
	width: 88%;
	height: 78%;
	transform: translateX(-50%);
	border-radius: 48px;
	background: var(--wp--custom--color--ice-soft);
}

.tri-channels__media img {
	position: absolute;
	bottom: 0;
	left: 50%;
	z-index: 1;
	display: block;
	width: auto;
	max-width: none;
	height: 125%;
	transform: translateX(-50%);
	object-fit: contain;
	object-position: bottom center;
}

@media (min-width: 768px) {
	.tri-channels {
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.95fr);
		gap: 40px;
		align-items: stretch;
	}

	.tri-channels__list {
		align-content: stretch;
		height: 100%;
	}

	.tri-pillars {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ?? Carousel review h?c vi?n ??????????????????????????????????????????? */

.tri-reviews {
	position: relative;
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 1100px;
	margin: 24px auto 0;
}

.tri-reviews__stage {
	flex: 1;
	min-width: 0;
}

.tri-review {
	display: none;
	grid-template-columns: 1fr;
	gap: 24px;
	padding: 28px 24px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 20px rgba(9, 31, 91, 0.08);
}

.tri-review.is-active {
	display: grid;
}

.tri-review__name {
	margin: 0 0 12px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--large);
	text-transform: uppercase;
}

.tri-review__score {
	display: inline-flex;
	align-items: center;
	margin: 0 0 16px;
	padding: 0;
}

/* Figma: v?ng cam s? ch?ng m?p tr?i pill ice ?IELTS OVERALL?. */
.tri-review__band {
	position: relative;
	z-index: 1;
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1;
}

.tri-review__overall {
	display: inline-flex;
	align-items: center;
	margin-left: -12px;
	padding: 8px 18px 8px 22px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.tri-review__quote {
	margin: 0 0 16px;
	color: var(--wp--custom--color--ink-strong);
	line-height: var(--wp--custom--line-height--body);
	text-align: justify;
}

.tri-review__more {
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
}

.tri-review__media {
	position: relative;
	width: 100%;
	max-width: 589px;
	margin-inline: auto;
	aspect-ratio: 589 / 420;
	overflow: hidden;
	border-radius: 10px;
}

.tri-review__media > img:first-child {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 10px;
	object-fit: cover;
}

.tri-review__sticker {
	position: absolute;
	right: 8px;
	bottom: 8px;
	width: min(132px, 42%);
	height: auto;
	pointer-events: none;
}

.tri-reviews__nav,
/* Hai nút NỔI ĐÈ lên dải ảnh chứ không chiếm chỗ trong hàng. Nằm trong
   hàng thì chúng ăn mất 112px (2 nút + 2 khoảng hở); trên máy 375px khung
   cắt chỉ còn 231px, không đủ chỗ cho ô nổi bật 270px — ô bị xén cụt hai
   bên. Nổi đè thì khung cắt lấy trọn chiều ngang. */
.tri-press__nav {
	position: absolute;
	top: 50%;
	z-index: 2;
	transform: translateY(-50%);
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	cursor: pointer;
}

.tri-press__nav--prev {
	left: 0;
}

.tri-press__nav--next {
	right: 0;
}

.tri-reviews__thumbs {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	max-width: 980px;
	margin: 20px auto 0;
	padding-inline: 16px;
}

.tri-reviews__thumb {
	display: block;
	flex: 0 1 224px;
	width: 224px;
	max-width: calc(50% - 6px);
	height: 125px;
	padding: 0;
	border: 0;
	border-radius: 15px;
	background: var(--wp--preset--color--placeholder);
	cursor: pointer;
}

.tri-reviews__thumb.is-active {
	outline: 2px solid var(--wp--preset--color--navy);
	outline-offset: 2px;
}

.tri-reviews__thumb--empty {
	cursor: default;
	opacity: 0.55;
	pointer-events: none;
}

@media (min-width: 768px) {
	.tri-review.is-active {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 1.15fr);
		align-items: center;
		padding: 32px;
	}

	.tri-review__media {
		margin-inline: 0 0 0 auto;
	}

	.tri-reviews__thumb {
		max-width: 224px;
	}
}

.tri-reviews__nav::before,
.tri-press__nav::before {
	content: "";
	display: block;
	width: 14px;
	height: 14px;
	margin: 0 auto;
	background: currentColor;
	-webkit-mask: url(../images/icon-chevron.svg) center / contain no-repeat;
	mask: url(../images/icon-chevron.svg) center / contain no-repeat;
}

.tri-reviews__nav--prev::before,
.tri-press__nav--prev::before {
	transform: rotate(180deg);
}

@media (min-width: 768px) {
	.tri-review {
		grid-template-columns: 1fr 1fr;
		align-items: center;
		padding: 28px 32px;
	}
}

/* ?? T?m t?nh h?c vi?n (??i ng? gi?ng vi?n) ????????????????????????????? */

.tri-voices {
	display: grid;
	gap: 27px 12px;
	width: min(993px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-voice {
	position: relative;
	/* ch?a ch? cho thanh navy l? d??i ??y */
	margin-bottom: 9px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 22px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	color: var(--wp--custom--color--ink-strong);
	box-shadow: 0 4px 26px rgba(9, 31, 91, 0.08);
}

/* Thanh navy l? ra d??i ??y th? ? c?ng ki?u v?i .tri-cred. */
.tri-voice::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -9px;
	z-index: -1;
	width: 132px;
	height: 28px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

/* Figma: th? gi?a ??o n?n navy ?? ph? nh?p h?ng ba. */
.tri-voice--navy {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-voice__head {
	display: flex;
	align-items: center;
	gap: 12px;
}

.tri-voice__avatar {
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--action);
}

.tri-voice--navy .tri-voice__avatar {
	background: var(--wp--custom--color--ice-soft);
}

.tri-voice h3 {
	margin: 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	text-transform: uppercase;
}

.tri-voice p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	/* Figma c?n ??u hai bi?n nh? th? n?ng l?c. */
	text-align: justify;
}

/* ?? Timeline "L? tr?nh ??o t?o tinh g?n" ??????????????????????????????? */

.tri-timeline {
	display: grid;
	gap: 20px;
	max-width: 1100px;
	margin: 32px auto 0;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.tri-timeline__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
}

.tri-timeline__marker {
	display: flex;
	align-items: center;
	gap: 10px;
	text-align: center;
}

.tri-timeline__num {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	flex-shrink: 0;
	border: 2px solid var(--wp--preset--color--navy);
	border-radius: 50%;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--small);
}

.tri-timeline__row.is-active .tri-timeline__num {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-timeline__milestone {
	color: var(--wp--custom--color--ink);
	font-size: 12px;
}

.tri-timeline__card {
	overflow: hidden;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--custom--color--ink-strong);
}

.tri-timeline__row.is-active .tri-timeline__card {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-timeline__head {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 16px 20px 0;
}

.tri-timeline__thumb {
	width: 44px;
	height: 44px;
	flex-shrink: 0;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--white);
}

.tri-timeline__head h3 {
	margin: 0;
	color: inherit;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	text-transform: uppercase;
}

.tri-timeline__band {
	padding: 3px 12px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--white);
	font-size: 12px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
	white-space: nowrap;
}

.tri-timeline__facts {
	display: grid;
	gap: 14px;
	padding: 16px 20px;
}

.tri-timeline__label {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 4px;
	color: inherit;
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--small);
}

.tri-timeline__icon {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: currentColor;
	opacity: 0.75;
}

.tri-timeline__fact p:last-child {
	margin: 0;
	font-size: 12px;
	line-height: var(--wp--custom--line-height--body);
}

/* Figma: d?i tr?ng cu?i th?, link canh ph?i. */
.tri-timeline__foot {
	padding: 10px 20px;
	background: var(--wp--preset--color--white);
	text-align: right;
}

.tri-timeline__foot a {
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
}

.tri-timeline__foot a::after {
	content: " ?";
}

@media (min-width: 768px) {
	.tri-timeline__row {
		grid-template-columns: 120px minmax(0, 1fr);
		gap: 24px;
	}

	/* C?t m?c: s? ? tr?n, nh?n ? d??i, n?i nhau b?ng ???ng ??t n?t. */
	.tri-timeline__marker {
		position: relative;
		flex-direction: column;
		gap: 6px;
		padding-top: 20px;
	}

	.tri-timeline__row:not(:last-child) .tri-timeline__marker::after {
		content: "";
		position: absolute;
		top: 62px;
		bottom: -40px;
		left: 50%;
		border-left: 1px dashed var(--wp--preset--color--navy);
	}

	.tri-timeline__facts {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 20px;
	}

	/* V?ch ng?n ??t n?t gi?a 3 c?t th?ng tin. */
	.tri-timeline__fact + .tri-timeline__fact {
		padding-left: 20px;
		border-left: 1px dashed currentColor;
	}
}

/* ?? B? ch?n l? tr?nh c? nh?n h?a (Ph??ng ph?p ??o t?o) ?????????????????
   Figma: 3 c?t ? head navy d?nh panel ice; option + accordion trong panel. */

.tri-picker {
	display: grid;
	gap: 20px;
	max-width: 1200px;
	margin: 32px auto 0;
}

.tri-picker__col {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.tri-picker__head {
	margin: 0;
	padding: 12px 16px;
	border-radius: var(--wp--custom--radius--control) var(--wp--custom--radius--control) 0 0;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	text-align: center;
	line-height: 1.3;
}

.tri-picker__panel {
	flex: 1;
	padding: 12px;
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--custom--color--ice-soft);
}

.tri-picker__col--result .tri-picker__panel {
	padding: 22px;
}

.tri-picker__options {
	display: grid;
	gap: 10px;
}

.tri-picker__option {
	position: relative;
	display: grid;
	grid-template-columns: 18px 1fr;
	gap: 6px 10px;
	padding: 12px 14px;
	border: 1.5px solid transparent;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--white);
	cursor: pointer;
}

.tri-picker__option:has(input:checked) {
	border-color: var(--wp--preset--color--navy);
	background: var(--wp--custom--color--ice-soft);
}

/* ?n radio native; gi? focus-visible tr?n label qua :focus-within. */
.tri-picker__option input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	pointer-events: none;
}

.tri-picker__radio {
	grid-row: 1;
	grid-column: 1;
	box-sizing: border-box;
	width: 16px;
	height: 16px;
	margin-top: 2px;
	border: 1.5px solid var(--wp--preset--color--navy);
	border-radius: 50%;
	background: var(--wp--preset--color--white);
}

.tri-picker__option:has(input:checked) .tri-picker__radio {
	background: var(--wp--preset--color--navy);
	box-shadow: inset 0 0 0 3px var(--wp--preset--color--white);
}

.tri-picker__option:focus-within {
	outline: 2px solid var(--wp--preset--color--action);
	outline-offset: 2px;
}

.tri-picker__band {
	grid-row: 1;
	grid-column: 2;
	color: var(--wp--preset--color--navy);
	font-weight: var(--wp--custom--font--weight-ui);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.3;
}

.tri-picker__blurb {
	grid-column: 2;
	color: var(--wp--custom--color--ink);
	font-size: 11px;
	line-height: 1.45;
}

.tri-picker__result {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.tri-picker__meta {
	display: grid;
	gap: 6px;
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: 13px;
	line-height: 1.4;
}

.tri-picker__meta strong {
	color: var(--wp--preset--color--navy);
	font-weight: var(--wp--custom--font--weight-ui);
}

.tri-picker__courses {
	display: grid;
	gap: 8px;
}

.tri-picker__course {
	overflow: hidden;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--white);
	box-shadow: 0 1px 4px rgba(9, 31, 91, 0.06);
}

.tri-picker__course summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 12px 14px;
	color: var(--wp--preset--color--navy);
	font-size: 12px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.35;
	cursor: pointer;
	list-style: none;
}

.tri-picker__course summary::-webkit-details-marker {
	display: none;
}

.tri-picker__course summary::after {
	content: "";
	flex-shrink: 0;
	width: 8px;
	height: 8px;
	margin-top: -2px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
}

.tri-picker__course[open] summary::after {
	margin-top: 4px;
	transform: rotate(-135deg);
}

.tri-picker__course[open] {
	background: var(--wp--preset--color--navy);
}

.tri-picker__course[open] summary {
	color: var(--wp--preset--color--white);
}

.tri-picker__course p {
	margin: 0;
	padding: 0 14px 12px;
	color: var(--wp--custom--color--ink-strong);
	font-size: 11px;
	line-height: 1.5;
}

.tri-picker__course[open] p {
	color: var(--wp--preset--color--white);
}

.tri-picker__empty {
	margin: 0;
	color: var(--wp--preset--color--orange);
	font-size: 12px;
}

@media (min-width: 768px) {
	.tri-picker {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 28px;
		align-items: stretch;
	}

	.tri-picker__col--result {
		grid-column: span 2;
	}
}

@media (min-width: 1024px) {
	.tri-picker {
		gap: 32px;
	}
}

/* ?? Thanh c? ??nh ??y m?n (tablet/mobile) ?????????????????????????????? */

.tri-mobile-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 54;
	display: flex;
	height: var(--tri-bottombar-h);
	background: var(--wp--preset--color--white);
	border-top: 1px solid rgba(9, 31, 91, 0.08);
	box-shadow: 0 -4px 20px rgba(9, 31, 91, 0.1);
}

.tri-mobile-bar__item {
	display: flex;
	flex: 1 1 0;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	min-width: 0;
	padding: 6px 2px;
	border: 0;
	background: transparent;
	color: var(--wp--custom--color--ink);
	font-family: var(--wp--preset--font-family--beau-sans);
	cursor: pointer;
}

.tri-mobile-bar__item--call {
	color: var(--wp--preset--color--action);
}

.tri-mobile-bar__label {
	font-size: 11px;
	line-height: 1.2;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
}

.tri-mobile-bar__icon {
	width: 22px;
	height: 22px;
	background: currentColor;
	-webkit-mask: center / contain no-repeat;
	mask: center / contain no-repeat;
}

.tri-mobile-bar__item--call .tri-mobile-bar__icon {
	-webkit-mask-image: url(../images/icon-phone.svg);
	mask-image: url(../images/icon-phone.svg);
}

.tri-mobile-bar__item--tag .tri-mobile-bar__icon {
	-webkit-mask-image: url(../images/icon-tag.svg);
	mask-image: url(../images/icon-tag.svg);
}

.tri-mobile-bar__item--chat .tri-mobile-bar__icon {
	-webkit-mask-image: url(../images/icon-chat.svg);
	mask-image: url(../images/icon-chat.svg);
}

.tri-mobile-bar__item--badge .tri-mobile-bar__icon {
	-webkit-mask-image: url(../images/icon-badge.svg);
	mask-image: url(../images/icon-badge.svg);
}

/* Chevron xoay l?n ? t?i d?ng ??ng asset c?a pager v? carousel. */
.tri-mobile-bar__item--top .tri-mobile-bar__icon {
	-webkit-mask-image: url(../images/icon-chevron.svg);
	mask-image: url(../images/icon-chevron.svg);
	transform: rotate(-90deg);
}

/* T? 1024px tr? l?n ?? c? nav desktop + n?t CTA tr?n header n?n b? thanh. */
@media (min-width: 1024px) {
	.tri-mobile-bar {
		display: none;
	}
}

/* ?? LCLT ? kh? h?p ???????????????????????????????????????????????????
   ? 375px, icon 46 + g?ch 22 + kho?ng c?ch ch? c?n ~175px cho ti?u ?? n?n
   ch? v? d?ng. B? g?ch, thu icon, v? cho ti?u ?? nh? l?i. */
@media (max-width: 767px) {
	/* D?u g?ch "--- " n?m ? .tri-card--navy h3::before; b? ?i cho ti?u ??
	   ?? m?t ch? tr?n m?n h?p. */
	.tri-card--navy h3::before {
		content: none;
	}

	.tri-lclt__icon {
		width: 38px;
		height: 38px;
	}

	.tri-lclt__icon img {
		width: 20px;
		height: 20px;
	}

	.tri-card--navy {
		padding: 0 16px 20px;
	}

	.tri-card--navy .tri-card__bar {
		margin: 0 -16px 14px;
	}

	.tri-card--navy h3 {
		font-size: var(--wp--preset--font-size--small);
	}

	/* Ti?u ?? 3 d?ng ch? hoa ? c?t h?p ? h? c? cho v?a. */
	.tri-lclt-block__title {
		font-size: 26px;
	}

	.tri-lclt-block__badge {
		font-size: 1em;
	}

	.tri-lclt-block__media {
		width: 100%;
		height: auto;
		aspect-ratio: 353 / 336;
	}

	.tri-lclt-block__media img {
		aspect-ratio: auto;
	}
}

/* ?? T?m nh?n & S? m?nh (Gi?i thi?u) ??????????????????????????????????
   Figma: th? navy 582 v? th? ice 412 n?m s?t nhau kh?ng c? khe, th? ice
   th?t v?o theo chi?u d?c ?? l? th? navy cao h?n. */
.tri-vision {
	display: grid;
	gap: 24px;
	width: min(994px, calc(100% - 32px));
	margin-inline: auto;
}

@media (min-width: 768px) {
	.tri-vision {
		grid-template-columns: minmax(0, 582fr) minmax(0, 412fr);
		gap: 0;
		align-items: center;
	}
}

/* ?? Gi? tr? c?t l?i (Gi?i thi?u) ?????????????????????????????????????
   Figma: ??a navy 253px, cung tr?n b?n k?nh 170.5 n?t 12px tr?i n?a ph?i,
   4 badge 40px b?m tr?n cung, m?i badge k?o m?t ???ng ch?m sang ph?i k?t
   th?c b?ng m?i t?n, nh?n n?m ph?a tr?n ???ng. */

.tri-core {
	--tri-core-disc: 253px;
	--tri-core-r: 170.5px;
	--tri-core-badge: 40px;
	/* Figma: t?m v?ng tr?n c?ch m?p tr?i kh?i 62px, kh?ng s?t m?p. */
	--tri-core-inset: 62px;
	display: grid;
	gap: 16px;
	width: min(994px, calc(100% - 32px));
	margin: 32px auto 0;
}

.tri-core__disc,
.tri-core__arc {
	display: none;
}

.tri-core__list {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tri-core__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 16px;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--white);
}

.tri-core__badge {
	flex-shrink: 0;
	width: var(--tri-core-badge);
	height: var(--tri-core-badge);
	border: 3px solid var(--wp--preset--color--white);
	border-radius: 50%;
	background: var(--wp--preset--color--action) url(../images/icon-user.svg) center / 20px no-repeat;
	box-shadow: 0 2px 8px rgba(9, 31, 91, 0.2);
}

.tri-core__label {
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	color: var(--wp--preset--color--navy);
	text-transform: uppercase;
	line-height: 1.3;
}

/* B? c?c v?ng cung ch? b?t khi ?? ch?; d??i ?? l? danh s?ch x?p d?c. */
@media (min-width: 900px) {
	.tri-core {
		position: relative;
		display: block;
		/* cao = ???ng k?nh cung + badge nh? ra hai ??u */
		height: calc(var(--tri-core-r) * 2 + var(--tri-core-badge));
	}

	.tri-core__disc,
	.tri-core__arc {
		display: block;
		position: absolute;
		top: 50%;
		/* t?m n?m c?ch m?p tr?i ??ng b?ng b?n k?nh cung */
		left: calc(var(--tri-core-r) + var(--tri-core-inset));
		transform: translate(-50%, -50%);
		border-radius: 50%;
	}

	.tri-core__disc {
		width: var(--tri-core-disc);
		height: var(--tri-core-disc);
		background: var(--wp--preset--color--navy);
	}

	.tri-core__arc {
		width: calc(var(--tri-core-r) * 2);
		height: calc(var(--tri-core-r) * 2);
		border: 12px solid var(--wp--custom--color--ice-soft);
		/* Figma ch? v? n?a ph?i c?a v?ng. */
		clip-path: inset(0 0 0 50%);
	}

	.tri-core__list {
		display: block;
		height: 100%;
	}

	/* Item b?t ??u ??NG t?i badge ch? kh?ng ph?i m?p tr?i kh?i ? tr??c ??y d?ng
	   padding-left n?n vi?n d??i v?n k?o h?t chi?u ngang, c?t ngang ??a navy. */
	.tri-core__item {
		position: absolute;
		right: 0;
		/* B? flex c?a b?n mobile, n?u kh?ng nh?n co theo ch? v? text-align v? t?c d?ng. */
		display: block;
		padding: 0;
		border-radius: 0;
		background: none;
		/* `top` ??t ? v? tr? ???ng k?, k?o item l?n ?? ??y n? tr?ng ???ng ??. */
		transform: translateY(-100%);
		border-bottom: 2px dotted var(--wp--preset--color--navy);
	}

	/* M?i t?n ? cu?i ???ng ch?m. */
	.tri-core__item::after {
		content: "";
		position: absolute;
		right: -1px;
		bottom: -6px;
		width: 10px;
		height: 10px;
		background: var(--wp--preset--color--navy);
		clip-path: polygon(0 0, 100% 50%, 0 100%);
	}

	/* Badge c??i l?n ??u tr?i c?a ???ng k?. */
	.tri-core__badge {
		position: absolute;
		left: calc(var(--tri-core-badge) / -2);
		bottom: calc(var(--tri-core-badge) / -2);
	}

	.tri-core__label {
		display: block;
		padding: 0 0 12px calc(var(--tri-core-badge) / 2 + 12px);
		text-align: right;
		font-size: var(--wp--preset--font-size--medium);
	}

	/* To? ?? badge tr?n cung: x = inset + r?(1 + cos ?), y = 50% + r?sin ?. */
	.tri-core__item--1 {
		top: calc(50% - var(--tri-core-r) * 0.877);
		left: calc(var(--tri-core-r) * 1.481 + var(--tri-core-inset));
	}

	.tri-core__item--2 {
		top: calc(50% - var(--tri-core-r) * 0.326);
		left: calc(var(--tri-core-r) * 1.945 + var(--tri-core-inset));
	}

	.tri-core__item--3 {
		top: calc(50% + var(--tri-core-r) * 0.290);
		left: calc(var(--tri-core-r) * 1.957 + var(--tri-core-inset));
	}

	.tri-core__item--4 {
		top: calc(50% + var(--tri-core-r) * 0.900);
		left: calc(var(--tri-core-r) * 1.435 + var(--tri-core-inset));
	}
}

/* ?? 3 th? n?ng l?c gi?ng vi?n (??i ng? gi?ng vi?n) ???????????????????
   Figma: th? tr?ng 303?343, huy hi?u navy 44?40 nh? l?n 8px kh?i m?p tr?n,
   ch? c?n ??u hai bi?n, v? m?t thanh navy 140px l? ra 9px d??i ??y th?. */

.tri-creds {
	display: grid;
	gap: 40px;
	width: min(988px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-cred {
	position: relative;
	/* ch?a ch? cho huy hi?u nh? l?n v? thanh navy l? xu?ng */
	margin-top: 8px;
	margin-bottom: 9px;
	padding: 56px 24px 28px;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--white);
	box-shadow: 0 4px 26px rgba(9, 31, 91, 0.08);
}

.tri-cred__badge {
	position: absolute;
	left: 17px;
	top: -8px;
	width: 44px;
	height: 40px;
	border-radius: 12px;
	background: var(--wp--preset--color--navy) url(../images/icon-cenf.svg) center / 18px 25px no-repeat;
}

/* Thanh navy n?m sau th?, ch? l? ph?n ??y ra ngo?i. */
.tri-cred::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -9px;
	z-index: -1;
	width: 140px;
	height: 28px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-cred h3 {
	margin: 0 0 12px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: var(--wp--preset--font-size--medium);
	text-transform: uppercase;
}

.tri-cred p {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.7;
	/* Figma c?n ??u hai bi?n. */
	text-align: justify;
}

@media (min-width: 768px) {
	.tri-creds {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* ?? Kho?nh kh?c h?c t?p (??i ng? gi?ng vi?n) ?????????????????????????
   Figma: d?i tr?n h?t b? ngang m?n, 2 h?ng l?ch nhau n?a ?. */

.tri-moments {
	--tri-moment-w: 295px;
	--tri-moment-gap: 22px;
	display: grid;
	gap: var(--tri-moment-gap);
	/* k?o ra kh?i padding ngang c?a .tri-section ?? tr?n vi?n */
	margin-inline: calc(var(--tri-section-px) * -1);
	overflow: hidden;
}

.tri-moments__row {
	display: flex;
	gap: var(--tri-moment-gap);
}

/* H?ng d??i l?ch n?a ?, hai ??u c? ? b? c?t nh? trong thi?t k?. */
.tri-moments__row:last-child {
	margin-left: calc(var(--tri-moment-w) / -2);
}

.tri-moments__tile {
	flex: 0 0 var(--tri-moment-w);
	width: var(--tri-moment-w);
	aspect-ratio: 295 / 208;
}

/* ? ?nh v? ch? trong th? t?m t?nh ? Figma: ?nh 16:9, ch? c?n ??u hai bi?n. */
.tri-voice__media {
	aspect-ratio: 279 / 157;
	border-radius: var(--wp--custom--radius--control);
}

.tri-voice--navy .tri-voice__media {
	background: var(--wp--custom--color--ice-soft);
}

/* Tablet: chia hai c?t ? chia ba ? 768px b?p th? c?n ~216px, h?p h?n
   thi?t k? (324px) t?i m?t ph?n ba v? l?m ch? c?n ??u v? nh?p. */
@media (min-width: 768px) {
	.tri-voices {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tri-creds {
		gap: 24px;
	}

	.tri-cred {
		padding: 52px 18px 24px;
	}
}

@media (min-width: 1024px) {
	.tri-voices {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.tri-creds {
		gap: 40px;
	}

	.tri-cred {
		padding: 56px 24px 28px;
	}
}

/* ?? L? tr?nh: kh?a h?c b? tr? + shell c?ng ngh? ?? */

.tri-skill-courses {
	display: flex;
	align-items: center;
	gap: 12px;
	width: min(1100px, calc(100% - 32px));
	margin-inline: auto;
}

.tri-skill-courses__viewport {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	padding: 40px 8px 36px;
	cursor: grab;
	touch-action: pan-y;
	user-select: none;
}

.tri-skill-courses__viewport.is-dragging {
	cursor: grabbing;
}

.tri-skill-courses__track {
	display: flex;
	gap: 20px;
	transition: transform var(--wp--custom--motion--duration-mid) ease;
}

.tri-skill-courses__track.is-instant,
.tri-skill-courses__track.is-dragging {
	transition: none;
}

.tri-skill-card {
	position: relative;
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 36px 18px 22px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 18px rgba(16, 24, 40, 0.08);
}

.tri-skill-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	border-radius: inherit;
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 16px rgba(16, 24, 40, 0.08);
}

.tri-skill-card::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -9px;
	z-index: -1;
	width: 120px;
	height: 24px;
	transform: translateX(-50%);
	border-radius: 0 0 var(--wp--custom--radius--control) var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
}

.tri-skill-card > * {
	position: relative;
	z-index: 1;
}

.tri-skill-card__badge {
	position: absolute;
	left: 50%;
	top: 0;
	z-index: 2;
	margin: 0;
	padding: 8px 18px;
	transform: translate(-50%, -50%);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.2;
	text-align: center;
	text-transform: uppercase;
	white-space: nowrap;
}

.tri-skill-card__media {
	width: 100%;
	aspect-ratio: 4 / 3;
	min-height: 160px;
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--muted);
}

.tri-skill-card__desc {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	text-align: center;
}

.tri-skill-card__meta {
	display: flex;
	flex-wrap: nowrap;
	justify-content: center;
	gap: 8px;
	margin-top: auto;
}

.tri-skill-card__chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 10px;
	border: 1px solid currentColor;
	border-radius: 8px;
	font-size: 12px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.2;
	white-space: nowrap;
}

.tri-skill-card__chip::before {
	content: "";
	width: 12px;
	height: 12px;
	flex-shrink: 0;
	background: currentColor;
	-webkit-mask: url(../images/icon-check.svg) center / contain no-repeat;
	mask: url(../images/icon-check.svg) center / contain no-repeat;
}

.tri-skill-card__chip--orange {
	color: var(--wp--preset--color--orange);
}

.tri-skill-card__chip--blue {
	color: var(--wp--preset--color--royal);
}

.tri-tech-shell {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-height: 280px;
	padding: 40px 28px 56px;
	border: 1px solid var(--wp--preset--color--royal);
	border-radius: 28px;
	background: var(--wp--custom--color--ice-soft);
}

.tri-tech-shell .tri-h,
.tri-tech-shell .tri-sub {
	max-width: 720px;
}

@media (min-width: 768px) {
	.tri-skill-courses__viewport {
		padding-inline: 4px;
	}
}

/* ?? IELTS t? s? 0: layout + outcomes + curriculum ?? */

.tri-course-layout {
	display: grid;
	gap: 32px;
	align-items: start;
	padding-block: 24px 8px;
	overflow: visible;
}

.tri-course-layout__main {
	min-width: 0;
	overflow: visible;
}

.tri-problem-banner-section--nested {
	padding-top: 48px;
}

.tri-problem-banner-section--nested .tri-problem-banner {
	width: 100%;
}

.tri-course-aside {
	position: relative;
	margin-inline: auto;
	max-width: 244px;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
}

.tri-course-aside__link {
	display: block;
	line-height: 0;
}

.tri-course-aside__img {
	display: block;
	width: 100%;
	height: auto;
}

.tri-outcome-stack {
	display: grid;
	gap: 20px;
}

.tri-outcome-card {
	display: grid;
	gap: 20px;
	padding: 24px 20px;
	border-radius: 16px;
	background: var(--wp--custom--color--ice-soft);
}

.tri-outcome-card__label {
	display: grid;
	gap: 6px;
	justify-items: center;
	text-align: center;
	color: var(--wp--preset--color--navy);
}

.tri-outcome-card__num {
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: clamp(2.5rem, 6vw, 3.5rem);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1;
}

.tri-outcome-card__name {
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.tri-outcome-card__list {
	margin: 0;
	padding: 0 0 0 18px;
	list-style: none;
	border-left: 1px dashed var(--wp--preset--color--royal);
	display: grid;
	gap: 18px;
}

.tri-outcome-card__list li {
	position: relative;
	padding-left: 16px;
}

.tri-outcome-card__list li::before {
	content: "";
	position: absolute;
	left: -23px;
	top: 0.45em;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
	box-shadow: 0 0 0 3px var(--wp--custom--color--ice-soft);
}

.tri-outcome-card__list strong {
	display: block;
	margin-bottom: 4px;
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-strong);
	letter-spacing: 0.02em;
}

.tri-outcome-card__list p {
	margin: 0;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
}

.tri-curriculum-stats {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin: 0 0 20px;
}

.tri-curriculum-stats__item {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	border: 1px solid var(--wp--preset--color--ice);
	border-radius: 10px;
	background: var(--wp--custom--color--ice-soft);
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font--weight-ui);
}

.tri-curriculum-stats__item::before {
	content: "";
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: var(--wp--preset--color--navy);
	-webkit-mask: url(../images/icon-check.svg) center / contain no-repeat;
	mask: url(../images/icon-check.svg) center / contain no-repeat;
}

.tri-curriculum-stats__item--badge::before {
	-webkit-mask-image: url(../images/icon-badge.svg);
	mask-image: url(../images/icon-badge.svg);
}

.tri-curriculum-stats__item--monitor::before {
	-webkit-mask-image: url(../images/icon-monitor.svg);
	mask-image: url(../images/icon-monitor.svg);
}

.tri-curriculum {
	overflow: hidden;
	border-radius: 16px;
	border: 1px solid var(--wp--preset--color--ice);
	background: var(--wp--preset--color--white);
}

.tri-curriculum__row {
	border-bottom: 1px solid var(--wp--preset--color--ice);
	background: var(--wp--custom--color--ice-soft);
}

.tri-curriculum__row:nth-child(even) {
	background: var(--wp--preset--color--white);
}

.tri-curriculum__row:last-child {
	border-bottom: 0;
}

.tri-curriculum__row summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 16px;
	cursor: pointer;
	list-style: none;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-curriculum__row summary::-webkit-details-marker {
	display: none;
}

.tri-curriculum__chev {
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--wp--preset--color--navy);
}

.tri-curriculum__chev::before {
	content: "";
	width: 7px;
	height: 7px;
	border-right: 2px solid var(--wp--preset--color--white);
	border-bottom: 2px solid var(--wp--preset--color--white);
	transform: rotate(-45deg);
	margin-left: -2px;
}

.tri-curriculum__row[open] .tri-curriculum__chev::before {
	transform: rotate(45deg);
	margin-left: 0;
	margin-top: -2px;
}

.tri-curriculum__points {
	margin: 0;
	padding: 0 18px 16px 34px;
	color: var(--wp--custom--color--ink-strong);
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	background: var(--wp--preset--color--white);
}

.tri-curriculum__points li + li {
	margin-top: 6px;
}

@media (min-width: 960px) {
	.tri-course-layout {
		grid-template-columns: minmax(0, 1fr) 300px;
		gap: 28px;
		align-items: start;
	}

	.tri-course-aside {
		position: sticky;
		top: calc(var(--tri-adminbar) + var(--tri-header-h) + 16px);
	}

	.tri-outcome-card {
		grid-template-columns: minmax(140px, 0.32fr) minmax(0, 1fr);
		align-items: start;
		gap: 28px;
		padding: 28px 24px;
	}

	.tri-outcome-card__label {
		padding-top: 8px;
	}
}

/* ─── Blog: trang đọc bài, chuyên mục, tìm kiếm ──────────────────────
   Dùng lại token màu/phông/bo góc của 9 trang đã thiết kế, không đặt thêm
   màu mới, để trang bài nhìn liền mạch với phần còn lại. */

.tri-wrap--narrow {
	width: min(760px, calc(100% - 32px));
	margin-inline: auto;
}

/* ── Trang đọc bài ── */

.tri-article {
	padding-block: 40px 8px;
}

.tri-article__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0 0 12px;
	color: var(--wp--custom--color--ink);
	font-size: var(--wp--preset--font-size--small);
}

.tri-article__tag {
	padding: 4px 12px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--ice);
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 12px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
}

.tri-article__dot {
	opacity: 0.5;
}

.tri-article__title {
	margin: 0 0 20px;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: clamp(26px, 4vw, 38px);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
}

.tri-article__cover {
	margin: 0 0 28px;
}

.tri-article__cover img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--wp--custom--radius--card);
}

/* Nội dung bài là khối Gutenberg của 1.757 bài nhập từ site cũ — không
   kiểm soát được markup, nên chỉ đặt nhịp đọc rồi để nó tự chảy. */
.tri-article__body {
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.75;
}

.tri-article__body > * + * {
	margin-top: 1em;
}

.tri-article__body h2,
.tri-article__body h3,
.tri-article__body h4 {
	margin-top: 1.6em;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
}

.tri-article__body h2 { font-size: clamp(20px, 2.6vw, 26px); }
.tri-article__body h3 { font-size: clamp(18px, 2.2vw, 21px); }
.tri-article__body h4 { font-size: 17px; }

.tri-article__body a {
	color: var(--wp--preset--color--royal);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.tri-article__body img,
.tri-article__body iframe,
.tri-article__body video {
	max-width: 100%;
	height: auto;
	border-radius: var(--wp--custom--radius--control);
}

.tri-article__body ul,
.tri-article__body ol {
	padding-left: 22px;
}

.tri-article__body li + li {
	margin-top: 6px;
}

.tri-article__body blockquote {
	margin-inline: 0;
	padding: 4px 0 4px 18px;
	border-left: 4px solid var(--wp--preset--color--sky);
	color: var(--wp--custom--color--ink);
}

/* Bảng so sánh xuất hiện nhiều trong bài cũ và thường rộng hơn khung đọc,
   nên cho nó tự cuộn ngang thay vì đẩy vỡ cả trang. */
.tri-article__body table {
	display: block;
	width: 100%;
	overflow-x: auto;
	border-collapse: collapse;
}

.tri-article__body th,
.tri-article__body td {
	padding: 10px 12px;
	border: 1px solid var(--wp--preset--color--sky);
	text-align: left;
	vertical-align: top;
}

.tri-article__body th {
	background: var(--wp--preset--color--ice);
	font-weight: var(--wp--custom--font--weight-strong);
}

.tri-article__body figure {
	margin-inline: 0;
}

/* Bài cũ nhúng JSON-LD trong thẻ script; trình duyệt không vẽ, nhưng chặn
   sẵn phòng trường hợp reset nào đó làm nó hiện thành chữ. */
.tri-article__body script,
.tri-article__body style {
	display: none;
}

.tri-article__pages {
	display: flex;
	gap: 8px;
	margin-top: 24px;
}

/* ── Khối mời tư vấn cuối bài ── */

.tri-post-cta {
	padding-block: 8px 40px;
}

.tri-post-cta__box {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	max-width: 760px;
	margin-inline: auto;
	padding: 28px 24px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	text-align: center;
}

.tri-post-cta__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: clamp(19px, 2.6vw, 24px);
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
	text-transform: uppercase;
}

.tri-post-cta__text {
	margin: 0;
	max-width: 56ch;
	font-size: var(--wp--preset--font-size--small);
	line-height: var(--wp--custom--line-height--body);
	opacity: 0.9;
}

.tri-post-cta__box .tri-btn {
	margin-top: 4px;
}

/* ── Lưới bài viết ── */

.tri-post-list {
	padding-block: 36px;
}

.tri-post-list__more {
	margin: 24px 0 0;
	text-align: center;
}

.tri-post-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 20px;
	margin-top: 8px;
}

.tri-post-card {
	border-radius: var(--wp--custom--radius--field);
	background: var(--wp--preset--color--white);
	box-shadow: 0 6px 4px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}

.tri-post-card__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	color: inherit;
	text-decoration: none;
}

.tri-post-card__media {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 232 / 148;
	object-fit: cover;
	background: var(--wp--preset--color--placeholder);
}

.tri-post-card__media--empty {
	display: block;
	width: 100%;
	aspect-ratio: 232 / 148;
	background: var(--wp--preset--color--placeholder);
}

.tri-post-card__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 8px;
	padding: 14px 16px 16px;
}

.tri-post-card__tag {
	align-self: flex-start;
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 11px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.tri-post-card__title {
	margin: 0;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 15px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.35;
	/* Tiêu đề bài cũ rất dài, cắt 3 dòng để các thẻ trong lưới bằng nhau. */
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-post-card__desc {
	margin: 0;
	color: var(--wp--custom--color--ink);
	font-size: 13px;
	line-height: 1.5;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-post-card__date {
	margin-top: auto;
	padding-top: 6px;
	color: var(--wp--custom--color--ink);
	font-size: 12px;
}

.tri-post-card__link:hover .tri-post-card__title,
.tri-post-card__link:focus-visible .tri-post-card__title {
	color: var(--wp--preset--color--royal);
}

/* ── Đầu trang chuyên mục / tìm kiếm ── */

.tri-archive__head {
	margin-bottom: 24px;
	text-align: center;
}

.tri-archive__search {
	max-width: 420px;
	margin: 20px auto 0;
}

/* ── Phân trang ── */

.tri-pagination {
	margin-top: 32px;
}

.tri-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
}

.tri-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 14px;
	text-decoration: none;
}

.tri-pagination .page-numbers:hover,
.tri-pagination .page-numbers:focus-visible {
	background: var(--wp--preset--color--ice);
}

.tri-pagination .page-numbers.current {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.tri-pagination .page-numbers.dots {
	background: transparent;
}

@media (min-width: 640px) {
	.tri-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.tri-post-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 24px;
	}

	.tri-article {
		padding-block: 56px 8px;
	}

	.tri-post-cta__box {
		padding: 36px 40px;
	}
}

/* ── Mục lục bài viết ── */

.tri-toc {
	margin: 0 0 28px;
	padding: 16px 18px;
	border: 1px solid var(--wp--preset--color--sky);
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--ice);
}

.tri-toc__head {
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 14px;
	font-weight: var(--wp--custom--font--weight-strong);
	text-transform: uppercase;
	cursor: pointer;
	list-style: none;
}

/* Bỏ mũi tên mặc định của <details> rồi tự vẽ, để nó xoay theo trạng thái
   gập/mở giống các khối gập khác trong theme. */
.tri-toc__head::-webkit-details-marker {
	display: none;
}

.tri-toc__head::after {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	margin-left: 8px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
	transition: transform var(--wp--custom--motion--duration-mid) ease;
}

.tri-toc[open] .tri-toc__head::after {
	transform: translateY(2px) rotate(-135deg);
}

.tri-toc__nav {
	margin-top: 12px;
}

.tri-toc__list {
	margin: 0;
	padding-left: 20px;
	counter-reset: tri-toc;
	list-style: none;
}

.tri-toc__item {
	position: relative;
	margin-top: 8px;
	line-height: 1.45;
}

.tri-toc__item--h2 {
	counter-increment: tri-toc;
	font-size: 14px;
}

.tri-toc__item--h2::before {
	content: counter(tri-toc) ".";
	position: absolute;
	left: -20px;
	color: var(--wp--preset--color--royal);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-weight: var(--wp--custom--font--weight-ui);
}

.tri-toc__item--h3 {
	margin-left: 14px;
	font-size: 13px;
}

.tri-toc__item--h3::before {
	content: "–";
	position: absolute;
	left: -14px;
	opacity: 0.5;
}

.tri-toc__item a {
	color: var(--wp--preset--color--navy);
	text-decoration: none;
}

.tri-toc__item a:hover,
.tri-toc__item a:focus-visible {
	color: var(--wp--preset--color--royal);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* Nhảy tới neo mà không bị header dính che mất tiêu đề. */
.tri-article__body :is(h2, h3)[id] {
	scroll-margin-top: calc(var(--tri-adminbar) + var(--tri-header-h) + 16px);
}

/* Trên điện thoại, bài 22 mục thì mục lục đẩy nội dung xuống rất sâu.
   Giới hạn chiều cao rồi cho cuộn trong khung, thay vì gập sẵn: gập sẵn
   bằng CSS phải đảo ngược trạng thái [open], làm nút bấm hành xử ngược
   với cái nó hiển thị. */
@media (max-width: 767px) {
	.tri-toc__nav {
		max-height: 260px;
		overflow-y: auto;
		overscroll-behavior: contain;
	}
}

/* ─── Trang bài viết: lưới ba cột, mục lục và khối giới thiệu dính ───── */

/* Cuộn êm khi bấm vào mục lục, thay vì nhảy phắt một cái.
   Bọc trong prefers-reduced-motion vì với người bị say chuyển động thì
   trang tự trôi là khó chịu thật, không phải chuyện lịch sự suông. */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

.tri-article__wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	row-gap: 0;
}

/* Dưới 1200px vẫn là một cột, nên giữ bề ngang dễ đọc như cũ. */
@media (max-width: 1199px) {
	.tri-article__wrap {
		width: min(760px, calc(100% - 32px));
	}
}

@media (min-width: 1200px) {
	.tri-article__wrap {
		width: min(1320px, calc(100% - 48px));
		/* Cột mục lục co giãn theo màn: 1200px thì 240px, màn rộng thì nới
		   dần tới 300px. Cố định 240px thì trên màn 1600px chữ vẫn bị cắt
		   sớm trong khi hai bên thừa chỗ trống. */
		grid-template-columns: clamp(240px, 19vw, 300px) minmax(0, 1fr) 260px;
		column-gap: 36px;
		align-items: start;
	}

	.tri-article__head {
		grid-column: 2;
		grid-row: 1;
	}

	.tri-article__body {
		grid-column: 2;
		grid-row: 2;
	}

	/* Hai cột bên trải suốt hai hàng, nhờ vậy vùng chứa cao hơn hộp bên
	   trong — điều kiện để position: sticky có chỗ mà dính. Vùng chứa cao
	   đúng bằng hộp thì sticky im lìm không làm gì cả. */
	.tri-article__toc {
		grid-column: 1;
		grid-row: 1 / span 2;
		align-self: stretch;
	}

	.tri-article__aside {
		grid-column: 3;
		grid-row: 1 / span 2;
		align-self: stretch;
	}

	.tri-article__toc > .tri-toc,
	.tri-article__aside-inner {
		position: sticky;
		top: calc(var(--tri-adminbar) + var(--tri-header-h) + 16px);
	}

	.tri-article__aside-inner {
		max-height: calc(100vh - var(--tri-adminbar) - var(--tri-header-h) - 32px);
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	/* Chỉ DANH SÁCH cuộn, không cuộn cả khối: dòng "Nội dung bài viết" và
	   nút gập luôn nhìn thấy, biết ngay mình đang ở đâu. */
	.tri-article__toc .tri-toc__nav {
		max-height: calc(100vh - var(--tri-adminbar) - var(--tri-header-h) - 84px);
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	/* Trong cột hẹp thì bỏ nền và viền của mục lục cho nhẹ mắt, giữ lại
	   một vạch dọc làm ranh giới. */
	.tri-article__toc > .tri-toc {
		padding: 0 0 0 14px;
		border: 0;
		border-left: 2px solid var(--wp--preset--color--sky);
		border-radius: 0;
		background: transparent;
	}

	.tri-article__toc .tri-toc__head {
		font-size: 12px;
		letter-spacing: 0.02em;
	}
}

/* Mục đang đọc — do assets/js/toc.js gắn vào.
   Chỉ đổi MÀU, không đổi độ đậm. Chữ đậm rộng hơn chữ thường nên chỗ cắt
   hai dòng nhảy sang vị trí khác mỗi lần mục được chọn, nhìn giật giật.
   (Chiều cao thì không đổi vì line-clamp đã chặn, nhưng chỗ cắt thì có.) */
.tri-toc__item--dang-doc > a {
	color: var(--wp--preset--color--orange);
}

/* Số thứ tự và gạch đầu dòng cũng đổi màu theo cho cùng một khối. */
.tri-toc__item--dang-doc.tri-toc__item--h2::before,
.tri-toc__item--dang-doc.tri-toc__item--h3::before {
	color: var(--wp--preset--color--orange);
	opacity: 1;
}

/* ─── Bài liên quan ở cột phải ───────────────────────────────────────── */

.tri-side-posts {
	margin-top: 32px;
}

@media (min-width: 1200px) {
	.tri-side-posts {
		margin-top: 0;
	}
}

.tri-side-posts__head {
	margin: 0 0 12px;
	padding-bottom: 10px;
	border-bottom: 2px solid var(--wp--preset--color--sky);
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 13px;
	font-weight: var(--wp--custom--font--weight-strong);
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.tri-side-posts__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tri-side-posts__item + .tri-side-posts__item {
	margin-top: 12px;
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--sky);
}

.tri-side-posts__item a {
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr);
	gap: 10px;
	align-items: start;
	color: inherit;
	text-decoration: none;
}

.tri-side-posts__item img,
.tri-side-posts__ph {
	display: block;
	width: 72px;
	height: 54px;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--placeholder);
}

.tri-side-posts__title {
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 13px;
	font-weight: var(--wp--custom--font--weight-ui);
	line-height: 1.35;
	/* Cột chỉ rộng 260px, cắt 3 dòng để các mục không so le nhau. */
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tri-side-posts__item a:hover .tri-side-posts__title,
.tri-side-posts__item a:focus-visible .tri-side-posts__title {
	color: var(--wp--preset--color--royal);
}

/* Màn vừa: cột phải nằm ngang dưới bài, xếp bài liên quan thành lưới cho
   đỡ thành một cột dài ngoẵng. */
@media (min-width: 640px) and (max-width: 1199px) {
	.tri-side-posts__list {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 14px 24px;
	}

	.tri-side-posts__item + .tri-side-posts__item {
		margin-top: 0;
		padding-top: 0;
		border-top: 0;
	}
}

/* ─── Khối giới thiệu The Real IELTS ─────────────────────────────────── */

.tri-promo {
	margin: 32px 0 0;
	padding: 20px 18px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

/* Trong cột phải nó đứng ngay dưới danh sách bài liên quan. */
@media (min-width: 1200px) {
	.tri-promo {
		margin-top: 20px;
	}
}

.tri-promo__eyebrow {
	margin: 0;
	color: var(--wp--preset--color--cyan);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 11px;
	font-weight: var(--wp--custom--font--weight-ui);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.tri-promo__title {
	margin: 4px 0 0;
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 20px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: var(--wp--custom--line-height--display);
	text-transform: uppercase;
}

.tri-promo__sub {
	margin: 8px 0 0;
	font-size: 13px;
	line-height: 1.55;
	opacity: 0.85;
}

.tri-promo__stats {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
	margin: 16px 0 0;
	padding: 14px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
	border-bottom: 1px solid rgba(255, 255, 255, 0.18);
	list-style: none;
	text-align: center;
}

.tri-promo__stats li {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.tri-promo__stats strong {
	color: var(--wp--preset--color--cyan);
	font-family: var(--wp--preset--font-family--beau-sans);
	font-size: 17px;
	font-weight: var(--wp--custom--font--weight-strong);
	line-height: 1.1;
}

.tri-promo__stats span {
	font-size: 11px;
	line-height: 1.3;
	opacity: 0.8;
}

.tri-promo__points {
	margin: 14px 0 0;
	padding: 0;
	list-style: none;
}

.tri-promo__points li {
	position: relative;
	padding-left: 22px;
	font-size: 13px;
	line-height: 1.5;
}

.tri-promo__points li + li {
	margin-top: 8px;
}

/* Dấu tích vẽ bằng hai đường viền, khỏi tải thêm một file ảnh nữa. */
.tri-promo__points li::before {
	content: "";
	position: absolute;
	left: 2px;
	top: 5px;
	width: 5px;
	height: 9px;
	border-right: 2px solid var(--wp--preset--color--cyan);
	border-bottom: 2px solid var(--wp--preset--color--cyan);
	transform: rotate(45deg);
}

/* Nút trong cột phải.
   Đo được: chữ "NHẬN TƯ VẤN MIỄN PHÍ" viết hoa cần 191px, cộng đệm 24px
   mỗi bên là 239px, trong khi nút chỉ rộng 214px — thiếu 25px nên chữ bị
   xuống dòng. Hạ cỡ chữ và đệm cho vừa đúng một dòng, rồi khoá nowrap để
   sau này sếp sửa chữ dài hơn thì nó tràn ra chứ không âm thầm xuống dòng. */
.tri-promo__cta {
	width: 100%;
	margin-top: 18px;
	padding-inline: 12px;
	font-size: 14px;
	white-space: nowrap;
	animation: tri-nut-tho 2.4s ease-in-out infinite;
}

/* Phóng to nhất 1,03 lần: nút rộng 214px thành 220px, vẫn nằm gọn trong
   khung 224px của khối nên không sinh thanh cuộn ngang cho cột phải —
   cột đó có overflow-y:auto, mà chỉ cần một chiều khác visible là chiều
   kia cũng thành auto. */
@keyframes tri-nut-tho {
	0%, 100% {
		transform: scale(1);
	}
	50% {
		transform: scale(1.03);
	}
}

/* Hiệu ứng nhấp nháy liên tục là thứ gây khó chịu thật với người nhạy
   cảm chuyển động, không phải chuyện lịch sự suông. */
@media (prefers-reduced-motion: reduce) {
	.tri-promo__cta {
		animation: none;
	}
}

.tri-promo__phone {
	margin: 12px 0 0;
	font-size: 12px;
	text-align: center;
	opacity: 0.85;
}

.tri-promo__phone a {
	color: var(--wp--preset--color--cyan);
	font-weight: var(--wp--custom--font--weight-ui);
	text-decoration: none;
	white-space: nowrap;
}

.tri-promo__phone a:hover,
.tri-promo__phone a:focus-visible {
	text-decoration: underline;
}

/* Dưới 1200px khối này nằm ngang dưới bài, trải rộng ra cho đỡ thừa chỗ. */
@media (min-width: 640px) and (max-width: 1199px) {
	.tri-promo__stats {
		gap: 16px;
	}

	.tri-promo__points {
		columns: 2;
		column-gap: 24px;
	}

	/* Ở khổ tablet khối này nằm ngang nên nút trải hết chiều ngang trông
	   thừa. Kẹp lại và căn giữa. Bản trước ghi width:auto + min-width,
	   nhưng thẻ block với width:auto vẫn chiếm hết chỗ — phải dùng
	   max-width mới thực sự hẹp lại. */
	.tri-promo__cta {
		display: block;
		max-width: 320px;
		margin-inline: auto;
	}
}

/* ── Mục lục: cắt chữ dài và làm gọn thanh cuộn ─────────────────────── */

/* Tiêu đề bài cũ có cái dài tới 60–70 ký tự, để tự xuống dòng thì mỗi mục
   chiếm 3 dòng và 22 mục thành một cột dài lê thê. Cắt còn 2 dòng kèm dấu
   ba chấm; chữ đầy đủ vẫn xem được qua title= khi rê chuột. */
/* Cắt gọn một dòng, không xuống dòng.
   22 mục mà mỗi mục 2 dòng thì danh sách vẫn dài gấp đôi cần thiết. Một
   dòng cho mọi mục cao bằng nhau, nhìn thành một cột đều đặn.
   Chữ đầy đủ vẫn đọc được: rê chuột lên là hiện title. */
.tri-toc__item > a {
	display: block;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Thanh cuộn mảnh và nhạt, thay cho thanh mặc định của hệ điều hành.
   scrollbar-width dùng cho Firefox và Chrome mới; khối ::-webkit-* bên
   dưới lo cho Safari và Chrome cũ. Trình duyệt nào không hiểu thì vẫn có
   thanh cuộn bình thường, chỉ là không gọn bằng. */
.tri-article__toc .tri-toc__nav,
.tri-article__aside-inner {
	scrollbar-width: thin;
	scrollbar-color: var(--wp--preset--color--sky) transparent;
}

.tri-article__toc .tri-toc__nav::-webkit-scrollbar,
.tri-article__aside-inner::-webkit-scrollbar {
	width: 6px;
}

.tri-article__toc .tri-toc__nav::-webkit-scrollbar-track,
.tri-article__aside-inner::-webkit-scrollbar-track {
	background: transparent;
}

.tri-article__toc .tri-toc__nav::-webkit-scrollbar-thumb,
.tri-article__aside-inner::-webkit-scrollbar-thumb {
	border-radius: 3px;
	background: var(--wp--preset--color--sky);
}

.tri-article__toc .tri-toc__nav:hover::-webkit-scrollbar-thumb,
.tri-article__aside-inner:hover::-webkit-scrollbar-thumb {
	background: var(--wp--preset--color--royal);
}

/* Mờ dần ở mép dưới để thấy ngay là còn nội dung phía dưới. toc.js gỡ lớp
   mờ này khi đã cuộn tới đáy, nếu không thì mục cuối cùng lúc nào cũng bị
   mờ một nửa dù không còn gì để cuộn nữa. */
@media (min-width: 1200px) {
	.tri-article__toc .tri-toc__nav {
		-webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
		mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
	}

	.tri-article__toc .tri-toc__nav.tri-toc__nav--het-cuon {
		-webkit-mask-image: none;
		mask-image: none;
	}
}
