.elementor-element.nsx-header-template,.elementor-element.nsx-footer-template{--padding-top:0;--padding-right:0;--padding-bottom:0;--padding-left:0;--gap:0;width:100%;max-width:none}.elementor-element.nsx-header-template>.e-con-inner,.elementor-element.nsx-footer-template>.e-con-inner{max-width:none;padding:0}.elementor-widget-nsx_site_header,.elementor-widget-nsx_site_footer,.elementor-widget-nsx_site_header>.elementor-widget-container,.elementor-widget-nsx_site_footer>.elementor-widget-container{width:100%}.elementor-widget-nsx_site_header .header .logo img{width:auto!important;height:52px!important;max-width:180px;object-fit:contain}.elementor-widget-nsx_site_header .header{width:100%;min-height:0}.elementor-widget-nsx_site_header .h-inner{min-height:80px}.elementor-widget-nsx_site_header .nav{min-width:0}.elementor-widget-nsx_site_header .nav-item{text-decoration:none}.elementor-element.nsx-exact-section,.elementor-element.nsx-exact-single{width:100%;max-width:none;--gap:0}.elementor-element.nsx-exact-section>.e-con-inner,.elementor-element.nsx-exact-single>.e-con-inner{display:block;width:100%;max-width:none;padding:0}.nsx-exact-section .elementor-widget-text-editor,.nsx-exact-section .elementor-widget-text-editor>.elementor-widget-container,.nsx-exact-single .elementor-widget-nsx_dynamic_field,.nsx-exact-single .elementor-widget-nsx_dynamic_field>.elementor-widget-container{display:contents}.nsx-exact-section p:last-child{margin-bottom:0}.nsx-widget-heading{margin-bottom:50px}.nsx-widget-heading h2{margin:8px 0 0;color:#fff;font-size:clamp(24px,3vw,34px);font-weight:800;line-height:1.1}.nsx-widget-heading h2 em{color:#f6c94c;font-weight:400}.nsx-widget-heading.nsx-align-center{text-align:center}.nsx-heading-description{max-width:920px;margin-top:18px;color:#fff;line-height:1.75}.nsx-content-widget{position:relative}.nsx-content-grid{--nsx-columns:3;display:grid;grid-template-columns:repeat(var(--nsx-columns),minmax(0,1fr));gap:20px}.nsx-content-widget.is-slider .nsx-content-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none}.nsx-content-widget.is-slider .nsx-content-grid::-webkit-scrollbar{display:none}.nsx-content-widget.is-slider .nsx-data-card,.nsx-content-widget.is-slider .phase-slide,.nsx-content-widget.is-slider .cs-slide{flex:0 0 calc((100% - (var(--nsx-columns) - 1)*20px)/var(--nsx-columns));scroll-snap-align:start}.nsx-slider-controls{display:flex;justify-content:flex-end;gap:10px;margin:-94px 0 50px}.nsx-slider-controls button{width:44px;height:44px;border:1px solid rgba(255,255,255,.2);background:transparent;color:#f6c94c;cursor:pointer}.nsx-data-card{display:flex;flex-direction:column;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#fff}.nsx-card-image{position:relative;display:block;aspect-ratio:16/10;overflow:hidden}.nsx-card-image img{width:100%;height:100%;object-fit:cover}.nsx-card-body{display:flex;flex:1;flex-direction:column;padding:22px 24px 26px}.nsx-card-body h3{margin:0 0 12px;font-size:20px}.nsx-card-body h3 a{color:#fff;text-decoration:none}.nsx-card-excerpt{color:#fff;line-height:1.65}.nsx-content-nsx_partner .sponsor-grid{grid-template-columns:repeat(var(--nsx-columns),minmax(0,1fr))}.nsx-banner,.nsx-banner picture,.nsx-banner img{display:block;width:100%}.nsx-dynamic-image{display:block;width:100%;height:auto}@media(max-width:900px){.elementor-widget-nsx_site_header .header .logo img{height:46px!important}.nsx-slider-controls{margin-top:-88px}}@media(max-width:720px){.nsx-widget-heading{margin-bottom:32px}.nsx-slider-controls{position:static;margin:0 0 24px}.elementor-widget-nsx_site_header .header .logo img{height:40px!important;max-width:130px}}
.nsx-exact-single .nsx-dynamic-field{display:contents}
.nsx-exact-section .elementor-widget-nsx_demo_section,.nsx-exact-section .elementor-widget-nsx_demo_section>.elementor-widget-container{display:contents}

/* ============================================================
   NSX WP BRIDGE — tự sinh từ site.css.
   Elementor bọc nội dung trang trong div.elementor nên mọi rule
   "main > section" của bản HTML không khớp DOM WordPress.
   Khối dưới đây là BẢN SAO các rule đó với selector
   "main .elementor section" (giá trị giữ nguyên từng dòng).
   Khi cập nhật site.css hãy chạy lại script sinh khối này.
   ============================================================ */
/* ============================================================
   NỀN VỆT XANH UỐN LƯỢN + VỆT SÁNG NGĂN CÁCH GIỮA CÁC SECTION
   (đang bật cho trang chủ qua body.bg-waves — footer giữ nguyên)
   ============================================================ */
body.bg-waves main .elementor section {
  position: relative;
  isolation: isolate;               /* stacking context riêng: lớp trang trí dùng
                                       z-index âm vẫn nổi trên nền section, và
                                       KHÔNG phải đụng vào position của nội dung */
  overflow: hidden;                 /* chặn slider tràn ngang. An toàn vì cả lớp
                                       nền lẫn 2 vệt sáng đều nằm gọn bên trong */
  background-image: none;           /* gỡ nền circuit cũ */
}
/* xen kẽ: section chẵn dùng nền 02 (mềm hơn), neo mép dưới + đảo nhịp */
body.bg-waves main .elementor section:nth-of-type(even) .sec-bg::before {
  background: var(--nsx-img-wave-02, none) center bottom / cover no-repeat;
  animation-name: wave-drift-b;
  animation-duration: 32s;
}
/* Section được highlight phải cho vệt sáng TRÀN ra ngoài khung trên/dưới,
   đè sang section kế bên. Hai điều kiện:
   1. overflow-x: clip vẫn chặn slider tràn ngang, còn overflow-y: visible
      cho vệt thò lên/xuống (cặp giá trị này hợp lệ, khác với hidden/visible).
   2. z-index: 1 để phần vệt tràn xuống không bị section phía dưới —
      vốn vẽ sau và có nền đục — phủ mất. */
body.bg-waves main .elementor section.is-highlight {
  overflow-x: clip;
  overflow-y: visible;
  z-index: 1;
  /* thoáng hơn section thường 16px mỗi đầu, để 2 vệt sáng không ép vào nội dung.
     Cộng trên biến --sec-pad nên vẫn tự co theo cấu hình mobile.
     Cần !important vì rule khoảng cách trung tâm cũng dùng !important. */
  padding-top: calc(var(--sec-pad) + 16px) !important;
  padding-bottom: calc(var(--sec-pad) + 16px) !important;
}
/* Section highlight: nền chỉ để MỘT màu xanh đậm phẳng, không dùng ảnh nền —
   để 2 vệt sáng là thứ duy nhất nổi lên, không bị vệt lụa làm nhiễu.
   Đây là chỗ DUY NHẤT còn khai màu nền; các section khác để ảnh phủ trọn. */
body.bg-waves main .elementor section.is-highlight { background-color: #050d28; }
body.bg-waves main .elementor section.is-highlight > .sec-bg { display: none; }
body.bg-waves main .elementor section.is-highlight > .sec-line {
  display: block;
  position: absolute;
  left: 0;
  width: 100%;                      /* đúng bề ngang section → không tràn ngang */
  height: clamp(84px, 11vw, 148px);
  z-index: -1;
  pointer-events: none;
  /* phóng riêng ẢNH lên 116% để cắt 2 đầu vệt bị nhạt, lõi sáng chạy
     hết bề ngang mà phần tử vẫn không thò ra khỏi khung */
  background-position: center;
  background-size: 116% 100%;
  background-repeat: no-repeat;
  opacity: .95;
}
body.bg-waves main .elementor section.is-highlight > .sec-line-top {
  top: 0;
  transform: translateY(-50%);      /* nửa trên tràn đè lên section phía trên */
  /* lõi sáng nằm ở ĐÁY dải, glow loang ngược LÊN qua khỏi mép trên */
  background-image: var(--nsx-img-line-bottom, none);
}
body.bg-waves main .elementor section.is-highlight > .sec-line-bot {
  bottom: 0;
  transform: translateY(50%);       /* nửa dưới tràn đè xuống section phía dưới */
  /* lõi sáng nằm ở ĐỈNH dải, glow loang ngược XUỐNG qua khỏi mép dưới */
  background-image: var(--nsx-img-line-top, none);
}
@media (prefers-reduced-motion: reduce) {
body.bg-waves .sec-bg::before,
  body.bg-waves main .elementor section:nth-of-type(even) .sec-bg::before { animation: none; }
}

/* ============================================================
   Container của Elementor mặc định là FLEX. Vì widget nội dung dùng
   display:contents nên .container của bản HTML trở thành flex item và
   CO LẠI vừa nội dung (lưới Vinh danh chỉ còn 457px thay vì 1224px).
   Ép các section import về block layout để dòng chảy giống hệt bản HTML.
   ============================================================ */
.elementor-element.nsx-exact-section,
.elementor-element.nsx-exact-page,
.elementor-element.nsx-exact-single { display: block !important; --gap: 0px; gap: 0; }
.elementor-element.nsx-exact-section > .e-con-inner,
.elementor-element.nsx-exact-page > .e-con-inner,
.elementor-element.nsx-exact-single > .e-con-inner { display: block; width: 100%; max-width: none; }

/* Khung .container khi được dựng bằng container của Elementor: Elementor ghi đè
   padding bằng biến --padding-*, làm mất đệm 28px hai bên của bản thiết kế.
   Trả lại đúng giá trị .container gốc và cho dòng chảy block như HTML. */
.elementor-element.nsx-exact-container {
  /* .container của bản HTML là khối thường. Để flex dọc như Elementor mặc định thì lưới có thẻ
     aspect-ratio bị tính cao 0 (thẻ Vinh danh chồng lên nhau trên điện thoại) và lưới trượt tự nở
     rộng. Không dùng !important: các bố cục riêng như .team .container (lưới 2 cột) vẫn thắng. */
  display: block;
  /* Elementor cong them gap 20px giua cac widget con -> cao hon ban HTML 20px */
  --gap: 0px; gap: 0;
  max-width: 1280px;
  margin: 0 auto;
  --padding-top: 0; --padding-bottom: 0;
  --padding-left: 28px; --padding-right: 28px;
  padding: 0 28px !important;
}
.elementor-element.nsx-exact-container > .e-con-inner { display: block; width: 100%; max-width: none; padding: 0; }
@media (max-width: 640px) {
  .elementor-element.nsx-exact-container { padding: 0 18px !important; }
}

/* ============================================================
   BỐ CỤC .container — tự sinh từ style.css.
   Elementor nạp sau theme và đặt .e-con{display:flex}, đè lên bố cục gốc
   (ví dụ .team .container vốn là lưới 2 cột bị ép thành 1 cột).
   Khối dưới đây phát lại đúng các khai báo bố cục của bản thiết kế
   với độ ưu tiên cao hơn. Chạy lại script sinh khi style.css đổi.
   ============================================================ */
.team .container.nsx-exact-container { display: grid; grid-template-columns: auto 1fr; gap: 80px; align-items: start; }
@media (max-width: 1100px) {
  .team .container.nsx-exact-container { grid-template-columns: 1fr; gap: 36px; }
}

/* Widget tiêu đề cũng phải "trong suốt" về mặt bố cục: nếu để lớp bọc của Elementor
   tồn tại, chính lớp bọc trở thành ô lưới (vd .team .container là lưới auto 1fr)
   và bề rộng cột đo sai so với bản HTML. */
.nsx-exact-section .elementor-widget-nsx_section_heading,
.nsx-exact-section .elementor-widget-nsx_section_heading > .elementor-widget-container,
.nsx-exact-container > .e-con-inner > .elementor-widget-nsx_section_heading,
.nsx-exact-container > .e-con-inner > .elementor-widget-nsx_section_heading > .elementor-widget-container,
.nsx-exact-container > .elementor-widget-nsx_section_heading,
.nsx-exact-container > .elementor-widget-nsx_section_heading > .elementor-widget-container { display: contents; }

/* Elementor reset ".elementor img { border:none; border-radius:0 }" nạp sau site.css
   nên đè mất viền + bo góc 22px của 2 banner (đã đo radius về 0). Trả lại tại đây
   vì widgets.css nạp sau cùng. Hiệu ứng hover vẫn do site.css lo (specificity cao hơn). */
.elementor .dau-an-banner img,
.elementor .gt-banner img {
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 22px;
  box-shadow: 0 0 0 rgba(245,184,39,0);
  transition: transform .35s ease, border-color .35s ease, box-shadow .35s ease;
}

/* ============================================================
   PADDING/MARGIN SECTION — tự sinh từ site.css cho MỌI class section
   của cả 21 trang (không chọn tay từng chỗ).
   Lý do: rule ".e-con { padding: var(--padding...) }" của Elementor nạp
   sau site.css nên thắng theo thứ tự nạp — .page-hero từng mất 90/60px.
   Bản sao dưới đây có bậc ưu tiên section.e-con.<class> (0,2,1) và nằm
   trong file nạp cuối cùng nên thắng lại. Chạy lại script sinh khi đổi CSS.
   ============================================================ */
section.e-con.hero { padding: 40px 0 50px; }
section.e-con.brands { padding: 28px 0; }
section.e-con.tech-stats { padding: 80px 0; }
section.e-con.process { padding: 100px 0; }
section.e-con.team { padding: 100px 0; }
section.e-con.news { padding: 100px 0; }
section.e-con.ad-section { padding: 30px 0; }
@media (max-width: 900px) {
  section.e-con.hero { padding: 40px 0 50px; }
  section.e-con.process, section.e-con.team, section.e-con.news, section.e-con.tech-stats { padding: 70px 0; }
}
section.e-con.cat-slider-sec { padding: 100px 0 90px; }
section.e-con.page-hero { padding: 90px 0 60px; }
@media (max-width: 900px) {
  section.e-con.page-hero { padding: 70px 0 44px; }
}
section.e-con.page-section { padding: 90px 0; }
section.e-con.page-section.tight { padding: 60px 0; }
section.e-con.phase-slider-sec { padding: 100px 0 90px; }
section.e-con.brands { padding: 60px 0 70px; }
section.e-con.page-section, section.e-con.tech-stats, section.e-con.cat-slider-sec, section.e-con.phase-slider-sec, section.e-con.team, section.e-con.news, section.e-con.process, section.e-con.brands { padding-top: var(--sec-pad) !important; padding-bottom: var(--sec-pad) !important; }
section.e-con.page-section.tight { padding-top: var(--sec-pad-tight) !important; padding-bottom: var(--sec-pad-tight) !important; }
@media (max-width: 640px) {
  section.e-con.hero { padding: 24px 0 40px; }
}

/* text-editor (bộ soạn long text chuẩn) dùng làm vỏ cho các khối biên tập:
   vỏ widget phải trong suốt về bố cục để markup bên trong y hệt bản thiết kế. */
.nsx-exact-container .elementor-widget-text-editor,
.nsx-exact-container .elementor-widget-text-editor > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_banner,
.nsx-exact-container .elementor-widget-nsx_banner > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_page_hero,
.nsx-exact-container .elementor-widget-nsx_page_hero > .elementor-widget-container,
.nsx-exact-section .elementor-widget-nsx_page_hero,
.nsx-exact-section .elementor-widget-nsx_page_hero > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_stat_cards,
.nsx-exact-container .elementor-widget-nsx_stat_cards > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_vote_steps,
.nsx-exact-container .elementor-widget-nsx_vote_steps > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_cta,
.nsx-exact-container .elementor-widget-nsx_cta > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_category_tabs,
.nsx-exact-container .elementor-widget-nsx_category_tabs > .elementor-widget-container,
.nsx-exact-container .elementor-widget-nsx_partner_marquee,
.nsx-exact-container .elementor-widget-nsx_partner_marquee > .elementor-widget-container { display: contents; }

/* Khối liên hệ 2 cột khi thành container Elementor: trả lại lưới của thiết kế
   (e-con flex đè mất). Media 1024px về 1 cột như site.css. */
.e-con.contact2-grid.nsx-exact-grid { display: grid !important; grid-template-columns: 1fr 1.15fr; gap: 56px; align-items: start; padding: 0; max-width: none; --gap: 0px; }
@media (max-width: 1024px) { .e-con.contact2-grid.nsx-exact-grid { grid-template-columns: 1fr; gap: 44px; } }
@media (max-width: 640px) { .e-con.contact2-grid.nsx-exact-grid { gap: 34px; } }
.contact2-grid .elementor-widget-text-editor,
.contact2-grid .elementor-widget-text-editor > .elementor-widget-container,
.contact2-grid .elementor-widget-nsx_demo_section,
.contact2-grid .elementor-widget-nsx_demo_section > .elementor-widget-container { display: block; }

/* Contact Form 7: vỏ CF7 phải trong suốt để CSS .c2-field áp thẳng vào input. */
.c2-form .wpcf7-form-control-wrap { display: contents; }
.wpcf7 form .wpcf7-response-output { margin: 18px 0 0; padding: 12px 16px; border: 1px solid rgba(245,184,39,.5); color: #fff; font-size: 14px; }
.wpcf7 form.sent .wpcf7-response-output { border-color: rgba(80,200,120,.6); }
.wpcf7-not-valid-tip { color: #f5b827; font-size: 12px; margin-top: 6px; display: block; }
/* honeypot: giấu hẳn khỏi người thật (bot vẫn thấy trong DOM) */
.nsx-hp-wrap { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Liên kết trong khối ghi chú: bản HTML tô vàng bằng style gắn thẳng vào thẻ,
   widget không cho nhập HTML nên màu đặt bằng CSS ở đây. */
.elementor .rule-note a { color: var(--gold-2); }

/* Nút "Sao chép liên kết": bấm xong hiện bong bóng báo đã chép, vì đổi nhãn trợ năng
   thôi thì người nhìn không biết có chuyện gì xảy ra. */
[data-nsx-copy] { position: relative; }
[data-nsx-copy].is-copied::after {
	content: attr(aria-label);
	position: absolute;
	bottom: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%);
	white-space: nowrap;
	padding: 6px 10px;
	border-radius: 6px;
	background: var(--gold-2, #e8b84a);
	color: #0b1530;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	pointer-events: none;
	z-index: 5;
}

/* Các widget chọn-bằng-ô-chọn thay cho ô "NSX — Nội dung section" (HTML + shortcode):
   lớp bọc Elementor phải trong suốt về bố cục y như ô cũ, để lưới thẻ, hoa văn nền
   và tiêu đề phụ nằm đúng vị trí của bản thiết kế. */
.nsx-exact-section .elementor-widget-nsx_list_picker,
.nsx-exact-section .elementor-widget-nsx_list_picker > .elementor-widget-container,
.nsx-exact-section .elementor-widget-nsx_award_cols,
.nsx-exact-section .elementor-widget-nsx_award_cols > .elementor-widget-container,
.nsx-exact-section .elementor-widget-nsx_section_deco,
.nsx-exact-section .elementor-widget-nsx_section_deco > .elementor-widget-container,
.nsx-exact-section .elementor-widget-nsx_minor_heading,
.nsx-exact-section .elementor-widget-nsx_minor_heading > .elementor-widget-container,
.nsx-exact-section .elementor-widget-nsx_contact_form,
.nsx-exact-section .elementor-widget-nsx_contact_form > .elementor-widget-container { display: contents; }
/* Form liên hệ là một ô của lưới 2 cột: phải là khối thật như ô cũ. */
.contact2-grid .elementor-widget-nsx_contact_form,
.contact2-grid .elementor-widget-nsx_contact_form > .elementor-widget-container { display: block; }

/* Lưới trượt "Mùa giải đang diễn ra": bản HTML đặt lưới trong khối thường, còn khung .container
   của Elementor là flex dọc nên lưới cuộn ngang tự nở theo nội dung — trên điện thoại 390px mỗi
   thẻ rộng 778px, bị cắt mất nửa. Giữ lưới đúng bằng bề ngang khung như bản thiết kế. */
.nsx-exact-container .phase-grid { max-width: 100%; }

/* ============================================================
   TEMPLATE CHI TIẾT (NSX Templates → Single, nhánh "bài soạn trong trình soạn thảo").
   Container Elementor mang đúng class của bản HTML (.article-wrap, .winner-detail, .gd-detail…),
   nhưng .e-con nạp sau site.css và đặt lại display/padding/margin/position/align-self bằng biến,
   đè mất bố cục gốc (lưới 2 cột về flex dọc, cột phải hết dính). Khối dưới phát lại ĐÚNG giá trị
   của site.css với độ ưu tiên .e-con.nsx-plain.<class> (0,3,0). Đổi site.css phần trang chi tiết
   thì sửa theo ở đây.
   ============================================================ */
/* Vỏ widget trong suốt: thẻ do widget in ra là con trực tiếp của khung, y như bản HTML. */
.e-con.nsx-plain > .elementor-widget,
.e-con.nsx-plain > .elementor-widget > .elementor-widget-container { display: contents; }
.e-con.nsx-plain { display: block; --gap: 0px; gap: 0; }

/* Hero trang chi tiết: bản HTML ghi padding thẳng trên thẻ (style="") nên áp ở mọi màn hình. */
section.e-con.page-hero.nsx-hero-article { padding: 60px 0 30px; }
section.e-con.page-hero.nsx-hero-honor { padding: 70px 0 40px; }

/* Tin tức (site.css: .article-wrap, .article-main, .article-sidebar, .article-header). */
.e-con.nsx-plain.article-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 60px; max-width: 1240px; margin: 0 auto; padding: 60px 28px 80px; color: #fff; }
.e-con.nsx-plain.article-main { min-width: 0; max-width: 820px; }
.e-con.nsx-plain.article-sidebar { position: sticky; top: 100px; align-self: start; display: flex; flex-direction: column; gap: 24px; }
.e-con.nsx-plain.article-header { margin: 0 0 40px; }
@media (max-width: 900px) {
  .e-con.nsx-plain.article-wrap { padding: 44px 22px 60px; grid-template-columns: 1fr; gap: 44px; }
  .e-con.nsx-plain.article-sidebar { position: static; }
  .e-con.nsx-plain.article-main { max-width: 100%; }
}

/* Vinh danh (site.css: .winner-detail). Dòng .role do widget in ra là thẻ con duy nhất trong vỏ widget,
   nên dính luật ".nsx-exact-section p:last-child{margin-bottom:0}" ở đầu file — trả lại 30px như site.css. */
.e-con.nsx-plain.winner-detail { display: grid; grid-template-columns: 420px 1fr; gap: 60px; align-items: start; padding: 40px 0 20px; }
.nsx-exact-section .e-con.nsx-plain.wd-info .role { margin-bottom: 30px; }
@media (max-width: 1100px) { .e-con.nsx-plain.winner-detail { grid-template-columns: 320px 1fr; gap: 44px; } }
@media (max-width: 900px) { .e-con.nsx-plain.winner-detail { grid-template-columns: 1fr; gap: 30px; } }

/* Giai đoạn (site.css: .gd-detail, .gd-body). Các đoạn nội dung phải là ô flex của .gd-body
   như bản HTML (cách nhau 14px), nên khung bọc nội dung cũng trong suốt. */
.e-con.nsx-plain.gd-detail { display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); gap: 34px; align-items: start; }
.e-con.nsx-plain.gd-body { display: flex; flex-direction: column; gap: 14px; }
.e-con.nsx-plain.gd-body .nsx-field-content { display: contents; }
@media (max-width: 900px) { .e-con.nsx-plain.gd-detail { grid-template-columns: 1fr; gap: 22px; } }

/* Video nhúng (YouTube…) trong thân bài: rộng hết cột, giữ tỉ lệ 16:9. */
.article-body iframe, .wd-info iframe, .gd-body iframe { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: 16 / 9; border: 0; margin: 28px 0; }
