/* ==========================================================================
   21-footer.css — tách từ style.css ngày 17/08/2026 theo III.4.1.
   Nội dung bên dưới là NGUYÊN VĂN các mục §10 footer UX Block của bản gộp;
   không sửa một luật nào trong lần tách này.
   ========================================================================== */


/* ── §10 footer UX Block (dòng 1033–1458 của style.css cũ) ──────────────────── */

/* --------------------------------------------------------------------------
   10. FOOTER UX BLOCK "Footer 4T" — cấu trúc row/col Flatsome
   -------------------------------------------------------------------------- */
/* Figma 320:1858 KHÔNG dùng strokeWeight chung mà dùng
   individualStrokeWeights {top:0, right:0, bottom:20, left:0} — tức CHỈ có
   viền đáy 20px camel. Và strokeAlign=INSIDE nên 20px đó nằm TRONG chiều cao
   650, không cộng thêm. Với box-sizing:border-box của Flatsome thì
   padding-bottom + border-bottom phải bằng đúng khoảng trống Figma (44px). */
.t4fx-footer {
  background: linear-gradient(180deg, var(--t4-leaf) 0%, var(--t4-dark-moss) 100%);
  border-bottom: 20px solid var(--t4-camel);
  color: var(--t4-white);
  padding: 61px 0 24px;
}

/* Figma "Logo_Vertical" cao ĐÚNG 45px (rộng 189,15). Shortcode [ux_image]
   đặt bề rộng theo PHẦN TRĂM cột (57%) nên logo ra 205px ở desktop và 201px
   ở mobile — hai con số khác nhau, cả hai đều sai. Khoá theo CHIỀU CAO chứ
   không theo bề rộng: chiều cao là thứ Figma quy định và cũng là thứ đẩy
   lệch mọi khối bên dưới; bề rộng suy ra từ tỉ lệ tệp SVG (≈190,3px, lệch
   1,1px so với Figma — dưới ngưỡng 2px). */
.t4fx-footer .row:has(> .col .t4fx-dkkd) .img img {
  width: auto !important;
  height: 45px !important;
}
.t4fx-footer a { color: var(--t4-white); text-decoration: none; }
.t4fx-footer a:hover { text-decoration: underline; }
.t4fx-footer ul { list-style: none; margin: 0; padding: 0; }

/* ⛔ GỐC CỦA NHIỀU LỖI LỆCH VỊ TRÍ: [text_box] của Flatsome luôn kèm class
   "banner-layer x50 y50", vốn dành cho chữ đặt đè lên banner —
   left:50% + transform:translate(-50%,-50%). Dùng ngoài banner (như trong
   footer) thì khối bị kéo lệch sang trái/lên trên, đo được
   transform: matrix(1,0,0,1,-345,-18). Trả về dòng chảy bình thường cho
   MỌI text_box trong footer. */
.t4fx-footer .text-box.banner-layer {
  position: static !important;
  left: auto !important;
  top: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
}

/* Figma "Frame 155": khối chữ rộng ĐÚNG 432px, đặt sát mép PHẢI của khung
   1080, nhưng chữ BÊN TRONG căn TRÁI (textAlignHorizontal=LEFT) và giãn
   dòng 28px. Trước đây set text-align:right cho cả khối rộng 600px — sai
   cả 3 thông số. */
.t4fx-footer .row:has(> .col .t4fx-dkkd) > .col {
  padding: 0; /* Figma: logo x=410, khối ĐKKD x=1058 (sát mép phải 1490).
     Padding ngang 15px của Flatsome đẩy logo sang phải 15px và khối ĐKKD
     sang trái 15px; padding-bottom 30px làm hàng cao 86 thay vì 55, kéo
     đường kẻ xuống y=206 thay vì 175. */
}

/* [phục vụ] dòng đăng ký kinh doanh ở footer | [trang] toàn site
   [figma] "Công Ty TNHH DATAWA Đăng k…" '349:2744' 432×55, trong
   '4T Footer ▸ Frame 155'. Không cộng 30: đây là '.text-inner', không
   phải '.col' (xem GIA ĐÌNH SỐ KHUNG đầu '30-components.css').       */
.t4fx-dkkd { margin: 0; }
.t4fx-dkkd .text-inner {
  width: 432px;
  max-width: 100%;
  margin-left: auto;
  text-align: left !important;
}
/* Figma "Frame 155": logo + dòng ĐKKD canh GIỮA theo chiều dọc trong cùng
   hàng (counterAxisAlignItems=CENTER) — [row] mặc định của Flatsome không
   tự làm việc này khi text 2 dòng cao hơn logo. */
.row:has(> .col .t4fx-dkkd) { align-items: center; }

/* Figma: đường kẻ ngang 1px chạy hết khung nội dung, NGAY DƯỚI hàng
   logo + ĐKKD (node "Horizontal Divider" trong 4T Footer). Shortcode
   không có phần tử này — dựng bằng ::after trên chính hàng đó, không
   phải thêm khối mới vào UX Block. */
.t4fx-footer .row:has(> .col .t4fx-dkkd)::after {
  content: "";
  display: block;
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, .4); /* Figma: stroke trắng @40% */
  margin-top: 58px;                    /* hàng logo kết thúc y=117 → đường kẻ đúng y=175 */
}

/* Khoảng cách dọc giữa các khối — [gap] trong shortcode đang để 65/40/42px,
   đo lại theo Figma thì lệch tới +113px tổng chiều cao (763 so với 650).
   Chỉnh bằng CSS, KHÔNG sửa shortcode. Thứ tự con trong .section-content:
   1 hàng logo · 2 gap · 3 hàng 4 cột · 4 gap · 5 hàng icon MXH · 6 gap ·
   7 hàng liên hệ · 8 copyright. */
.t4fx-footer .section-content > .gap-element:nth-child(2) { padding-top: 35px !important; } /* Figma: đường kẻ y=176 → hàng cột y=208 */
.t4fx-footer .section-content > .gap-element:nth-child(4) { padding-top: 18px !important; }
.t4fx-footer .section-content > .gap-element:nth-child(6) { padding-top: 10px !important; }
/* [text_box] của UX Builder tự đặt "font-size:100%" trên .text-box-content
   rồi chữ thật nằm trong .text-inner lồng bên trong — ép trực tiếp ở đây,
   đặt trên .t4fx-dkkd không đủ vì bị style scoped theo ID của chính khối đè. */
.t4fx-dkkd .text-inner {
  font-family: var(--t4-font-body) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  line-height: 28px !important; /* Figma lh=28, không phải 18 */
  color: #fcfbf6 !important;
}

.t4fx-col-title {
  margin: 0 0 24px;
}
/* [title tag_name="h4"] của Flatsome bọc chữ trong
   <h4 class="section-title"><span class="section-title-main"> — lớp
   .t4fx-col-title chỉ nằm trên <div> ngoài cùng, không chạm được chữ thật.
   Cùng loại lỗi với .t4fx-dkkd (mục 10), sửa bằng cách ép trực tiếp vào
   .section-title-main. */
.t4fx-col-title .section-title-main {
  font-family: var(--t4-font-body) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  line-height: 22px !important;
  color: #f8f5ee !important;
  text-transform: none !important;
  border-bottom: 0 !important; /* Flatsome vẽ gạch chân ở ĐÂY (2px rgba(0,0,0,.1)) */
  padding-bottom: 0 !important;
  white-space: nowrap; /* Figma: mọi tiêu đề cột nằm 1 dòng. Chữ render trên
     web rộng hơn số đo Figma vài px nên "Hệ sinh thái kiến thức" và "Hỗ trợ
     khách hàng" bị bẻ đôi, đẩy cả danh sách bên dưới xuống. */
  /* ⛔ Flatsome đặt sẵn margin "0 15px -2px 0" lên chính <span> này. Cái
     margin-bottom ÂM 2px là thủ phạm thật của 15 mốc lệch mobile: <h4> là
     flex container nên chiều cao nó = hộp margin của span = 19-2 = 17px,
     tức khoảng cách tiêu đề → mục đầu bị hụt đúng 2px ở MỌI cột. Nhìn số
     line-height thì vẫn thấy 19px và tưởng đã đúng. */
  margin: 0 !important;
}
/* Flatsome "section-title" vẽ gạch chân ở HAI nơi độc lập: border-bottom
   của chính <h4> và của <span class="section-title-main"> bên trong, cộng
   2 thẻ <b> rỗng hai bên làm đường kẻ kéo dài. Figma KHÔNG có gạch chân
   nào dưới tiêu đề cột — phải tắt cả ba. */
.t4fx-col-title .section-title {
  border-bottom: 0 !important;
  /* Figma: tiêu đề kết thúc y=233, mục đầu y=257 → cách 24px. Mục đầu có
     sẵn 3px đệm trong .ux-menu-link nên đặt 21 để chữ rơi đúng 257.
     ⚠ 22 → 20 khi gỡ margin-bottom âm 2px của .section-title-main ở trên:
     <h4> cao thêm đúng 2px nên phải trả lại 2px ở đây, tổng khối tiêu đề
     giữ nguyên 42px. Gỡ một mà quên cái kia là cả 4 cột desktop tụt 2px. */
  margin-bottom: 20px !important;
}
.t4fx-col-title .section-title b { display: none !important; }
.t4fx-col-title.section-title-container { margin-bottom: 0 !important; }
/* ⛔ [ux_menu] render <div class="ux-menu-link">, KHÔNG phải <li> — mọi quy
   tắc ".t4fx-col-list li" trước đây không hề có tác dụng. Mỗi mục cao sẵn
   40px; Figma là 39px (chữ 15 + khoảng cách 24). */
.t4fx-col-list .ux-menu-link { height: 39px; }
/* [ux_menu_link] render <a class="ux-menu-link__link"><span class="ux-menu-link__text">
   — chữ thật nằm trong span này, không phải trực tiếp trong <li>/<a>. */
.t4fx-col-list .ux-menu-link__text {
  font-family: var(--t4-font-body) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  line-height: 15px !important;
  color: rgba(255, 255, 255, .62) !important; /* Figma #ffffff @62% — KHÔNG phải trắng đặc */
  white-space: nowrap; /* Figma mọi mục nằm 1 dòng; cột hẹp làm "Tư vấn chiến lược…" bị bẻ 2 dòng */
}

/* Figma "Frame 180": 4 cột KHÔNG chia đều 25%, mà rộng theo nội dung rồi
   dàn SPACE_BETWEEN trong khung 1080 (x = 410 · 787 · 1059 · 1351).
   Flatsome chia đều 25% + padding 15px mỗi bên → vừa sai vị trí, vừa làm
   cột 1 hẹp hơn nội dung nên chữ bị bẻ dòng. Chỉ áp desktop; mobile giữ
   nguyên quy tắc xếp dọc ở media query cuối file. */
@media (min-width: 850px) {
  .t4fx-footer .row:has(> .col .t4fx-col-title) {
    display: flex;
    flex-wrap: nowrap;
    justify-content: space-between;
    padding-left: 0;
    padding-right: 0;
  }
  /* ⛔ .row của Flatsome có ::after clearfix (content:"" display:table).
     Trong flex-container nó thành PHẦN TỬ THỨ 5 và ăn mất một khoảng của
     space-between: khoảng cách ra 385/4=96px thay vì 385/3=128px, cột cuối
     hụt 97px so với Figma. Tắt clearfix cho đúng 4 phần tử.
     (Đã loại trừ giả thuyết "nút văn bản khoảng trắng" bằng thí nghiệm
     dựng flex thật trên trình duyệt — khoảng trắng KHÔNG gây lệch.) */
  .t4fx-footer .row:has(> .col .t4fx-col-title)::after,
  .t4fx-footer .row:has(> .col .t4fx-col-title)::before { content: none; }
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col {
    max-width: none;
    flex: 0 0 auto;
    padding-left: 0;
    padding-right: 0;
  }
  /* Bề rộng ĐÚNG từng cột theo Figma (Section w=249/143/164/139). Cộng lại
     695, khung 1080 → 3 khoảng cách 128,33px, cho ra x = 410 · 787 · 1059 ·
     1351 khớp tuyệt đối bản thiết kế. */
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col:nth-child(1) { width: 249px; }
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col:nth-child(2) { width: 143px; }
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col:nth-child(3) { width: 164px; }
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col:nth-child(4) { width: 139px; }
}

.t4fx-mxh {
  display: flex;
  align-items: center;
  gap: 24px;
}
.t4fx-mxh-ke { flex: 1 1 auto; height: 1px; background: rgba(255,255,255,.35); }

/* Dải icon mạng xã hội Footer — Figma node 320:1858 → Section: đường kẻ
   422px + dải icon (Frame 152, 4 icon 26×23 gap 16, KHÔNG khung/nền tròn) +
   đường kẻ 422px, cách nhau 32px, căn giữa cả hàng. [follow] chỉ render 4
   icon nên 2 đường kẻ dựng bằng ::before/::after ngay trên chính container
   — genGap 16px (khớp icon-icon), cộng thêm margin 16px ở cạnh trong của
   đường kẻ để đạt đúng 32px đường kẻ↔icon như Figma. */
.t4fx-mxh-list {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  /* Figma "Section" của dải MXH rộng 1060 đặt tại x=420 — HẸP HƠN khung
     1080 của các hàng khác đúng 10px mỗi bên, y hệt hàng liên hệ. Để
     width:100% thì nó ăn theo cột (1080 − padding 30 = 1050 tại x=425),
     sai cả vị trí lẫn bề rộng, kéo theo hai đường kẻ hai bên sai luôn.
     ⚠ Phải !important: shortcode [follow] gắn sẵn class "full-width" của
     Flatsome, vốn là 'width: 100% !important'. Đặt width thường thì im lặng
     không ăn — bảng đo báo 1080px tại x=410 thay vì 1060 tại x=420. */
  width: 1060px !important;
  max-width: 100%;
  margin: 0 auto !important;
}
.t4fx-footer .row:has(> .col .t4fx-mxh-list) > .col {
  padding-left: 0;
  padding-right: 0;
}
.t4fx-mxh-list::before,
.t4fx-mxh-list::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: rgba(255, 255, 255, .35);
  max-width: 422px;
}
.t4fx-mxh-list::before { margin-right: 16px; }
.t4fx-mxh-list::after { margin-left: 16px; }
/* ⛔ `.t4fx-mxh-nut` LÀ <span>, KHÔNG PHẢI <a> — CỐ Ý.
   Figma (`Frame 152`, 4 nút `cl-icon-facebook/youtube/linkedin/tiktok`) KHÔNG
   khai `interactions` cho nút nào, và trên toàn site không có URL mạng xã hội
   thật nào: `wp theme mod get follow_facebook|youtube|linkedin|tiktok` đều
   RỖNG, trang Liên hệ cũng không có. Vì vậy dựng nút không-liên-kết thay vì
   bịa URL hay để `href="#"` (luật đã chốt ở đợt RELEASE UNBLOCK).
   Khi 4T đưa 4 URL thật: đổi `<span class="t4fx-mxh-nut">` thành `<a href=…>`
   trong `docs/uxb/footer-4t.txt` — mọi luật dưới đây đã phủ sẵn cả hai thẻ,
   không phải sửa CSS. */
.t4fx-mxh-list a,
.t4fx-mxh-list .t4fx-mxh-nut {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px !important;
  height: 23px !important;
  margin: 0 !important; /* Flatsome ".icon" tự có margin 0 4px, cộng dồn vào gap:16px làm dư ~8px */
  flex: 0 0 auto;
  position: relative;
}
.t4fx-mxh-list a:hover { opacity: .75; }
.t4fx-mxh-list .t4fx-mxh-nut { cursor: default; }
.t4fx-mxh-list a i,
.t4fx-mxh-list .t4fx-mxh-nut i { font-size: 20px; line-height: 1; color: var(--t4-white); }
/* [phục vụ] phần tử: Follow (4 icon MXH 'a.icon plain … tooltip') | khối:
   dải MXH footer, TOÀN SITE | [figma] icon vẫn giữ 26×23 đúng thiết kế
   [lý do vượt panel] kích thước vùng chạm không tách khỏi kích thước icon
   trong panel Follow của Flatsome.
   ⛔ Kiểm tương tác báo 26,0×23,0 — thiếu 1px chiều cao so ngưỡng 24. Nới
   '::after' âm đều 3px mỗi cạnh (26→32 · 23→29); khe giữa hai icon liền kề
   là 16px nên còn dư 10px không chạm nhau (cùng cách đã dùng cho icon tìm
   kiếm mobile phía trên và breadcrumb ở 30-components.css). */
.t4fx-mxh-list a::after,
.t4fx-mxh-list .t4fx-mxh-nut::after {
  content: '';
  position: absolute;
  top: -3px; bottom: -3px;
  left: -3px; right: -3px;
}

/* Figma "Frame 153": khung 1060px (hẹp hơn 1080 của các hàng khác, thụt vào
   10px mỗi bên), 5 mục dàn SPACE_BETWEEN.
   [figma] Container 1060 '532:4139'; khung 1080 để so là '532:4123'.  */
.t4fx-lienhe {
  display: flex !important;
  flex-direction: row !important; /* [ux_menu] của Flatsome hardcode "stack-col" = column */
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 12px 0;
  list-style: none;
  margin: 0 auto !important; /* căn giữa khung 1060 trong cột 1080 → x=420 */
  padding: 0;
  width: 1060px;
  max-width: 100%;
}
/* Cột chứa hàng liên hệ có padding ngang 15px làm khung chỉ còn 1050 và
   lệch sang phải 8px — bỏ padding để khung đúng 1060 đặt giữa 1080. */
.t4fx-footer .row:has(> .col .t4fx-lienhe) > .col {
  padding-left: 0;
  padding-right: 0;
  padding-bottom: 42px; /* Figma: hàng liên hệ kết thúc y=544, copyright y=586 */
}

/* "Absolute Footer" của Flatsome đã dọn trắng chữ nhưng vẫn chiếm 25px ở
   đáy, đẩy tổng chiều cao footer từ 648 lên 673 (Figma 650). */
.footer-wrapper .absolute-footer { display: none; }
.t4fx-lienhe li {
  display: flex;
  align-items: center;
  gap: 15px; /* Figma Container pl=15 giữa icon và chữ */
  margin: 0 !important; /* Flatsome đặt sẵn margin 0 0 9.6px 20.8px cho <li>;
     20.8px này đẩy mục đầu lệch phải 21px và bóp méo space-between.
     Phải có !important vì quy tắc gốc của Flatsome đặc hiệu hơn. */
}
.t4fx-lienhe li a { color: var(--t4-white); text-decoration: none; }
/* [phục vụ] phần tử: 5 dòng liên hệ footer ('.t4fx-lienhe li a') | khối:
   Frame 153 footer, TOÀN SITE
   [lý do vượt panel] khối dựng bằng <ul>/<li> thuần, không có panel Flatsome.
   ⛔ Kiểm tương tác báo cả 5 mục cao 16px — dưới ngưỡng chạm 24px, vì line-
   height 16px !important ở dưới (đúng Figma, giữ nguyên). Đo bằng devtools:
   'li' bao ngoài đã cao ĐÚNG 24px (khớp icon 24px), 'a' chỉ 16px và nằm giữa
   'li' với đúng 4px thừa trên + 4px thừa dưới — nới '::after' âm 4px mỗi
   chiều dọc là khít đúng bằng khung 'li' đang có sẵn, KHÔNG lấn sang hàng kế
   (khoảng cách hàng ≥8px ở khổ 402, xem 'gap: 12px 0'). Bề rộng đã đạt ngưỡng
   ở mọi mục (74,5–173,2px) nên không cần nới ngang — khai 0 hai cạnh trái/
   phải để hàm đo (hopBam) nhận diện đủ 4 cạnh mà không đổi bề ngang. */
.t4fx-lienhe li a {
  position: relative;
}
.t4fx-lienhe li a::after {
  content: '';
  position: absolute;
  top: -4px; bottom: -4px;
  left: 0; right: 0;
}
/* Figma: icon liên hệ màu CAMEL (#CF9156), không phải trắng như chữ.
   Cỡ 24px, nét mảnh 300 — cùng bộ Material Symbols với bản gốc. */
.t4fx-lienhe .material-symbols-outlined {
  font-size: 24px;
  font-variation-settings: 'wght' 300;
  flex: 0 0 auto;
  color: var(--t4-camel);
}
/* Khối liên hệ dựng bằng <ul>/<li> thuần (icon Material Symbols không có
   trong bộ icon Flatsome) — Figma 12px/lh24, cả 5 mục nằm VỪA MỘT HÀNG
   trong khung 1060px. */
.t4fx-lienhe li a,
.t4fx-lienhe .ux-menu-link__text {
  font-family: var(--t4-font-body) !important;
  font-size: 12px !important;
  font-weight: 400 !important;
  line-height: 16px !important; /* Figma lh=16.39, không phải 24 */
  /* ⚠ Figma đặt độ mờ 62% trên CHÍNH NODE chữ (opacity), không nằm trong
     màu fill — fill vẫn là #ffffff đặc. Đọc mỗi fill sẽ ra trắng 100% và
     chữ hiện đậm hơn hẳn bản thiết kế. */
  color: rgba(255, 255, 255, .62) !important;
  white-space: nowrap; /* không cho tên miền/email tự bẻ dòng giữa chừng */
}

.t4fx-copyright { margin: 0; }
/* Chữ thật nằm trong .text-inner (giống .t4fx-dkkd); phần lệch vị trí do
   "banner-layer x50 y50" đã xử lý ở khối .t4fx-footer .text-box.banner-layer
   phía trên. */
.t4fx-copyright .text-inner {
  font-family: var(--t4-font-body) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  line-height: 15px !important; /* Figma lh=15.026, không phải 20 */
  min-height: 20px; /* Figma: khối chữ cao 20 dù dòng chỉ 15.026 */
  /* Figma CĂN GIỮA dòng 15px trong hộp 20px (tâm chữ ở +10); trình duyệt đặt
     dòng SÁT MÉP TRÊN (tâm chữ ở +7,5) → chữ cao hơn thiết kế 2,5px ở CẢ hai
     khổ. Đệm 2,5px thay vì đổi line-height: 15+2,5 = 17,5 < min-height 20 nên
     chiều cao hộp KHÔNG đổi, tổng chiều cao footer giữ nguyên. */
  padding-top: 2.5px;
  color: rgba(255, 255, 255, .25) !important; /* Figma #ffffff @25% — mờ hơn hẳn, không phải 62% */
  text-align: center !important;
}

@media (max-width: 849px) {
  /* Figma node 1093:9271 "4T Footer_Mobile" — khung 402×989:
     padding 25px hai bên · 40px trên/dưới. Trước đây dùng lề mặc định của
     Flatsome (15px) nên chữ sát mép hơn hẳn thiết kế. */
  /* Viền đáy mobile cũng là 20px camel như desktop (Figma 1093:9271 khai
     individualStrokeWeights.bottom = 20), KHÔNG phải 12px. Trước đây tưởng
     mobile mỏng hơn vì công cụ chỉ đọc strokeWeight chung (=1) rồi đoán.
     Đổi 12 → 20 thì phải hạ padding-bottom 28 → 20 để tổng khoảng trống đáy
     giữ nguyên 40px, nếu không footer cao thêm 8px. */
  .t4fx-footer { padding: 40px 25px 20px !important; border-bottom-width: 20px; }
  .t4fx-footer .row { padding-left: 0; padding-right: 0; }
  .t4fx-footer .row > .col { padding-left: 0 !important; padding-right: 0 !important; }

  /* [phục vụ] hàng logo + ĐKKD (Frame 155) | [khối] .t4fx-dkkd
     [figma] node 1093:9271 — Figma chỉ có 2 khổ (402 và 1900); "mobile áp
     qua mốc 849px" (III.4.3-3). Cột logo mang class Flatsome
     "medium-4 small-12 large-4", cột ĐKKD "medium-8 small-12 large-8" —
     "small-12" tự xếp dọc 100% ở ≤549px, nhưng Flatsome CHUYỂN sang
     medium-4/medium-8 (33%/67%, NẰM NGANG) ở mốc riêng của chính nó
     (550px) — khác mốc 849px của dự án. Dò được bằng đo thật: viewport
     430 → hai cột XẾP DỌC (cao 179px); viewport 550 → hai cột XẾP NGANG
     (cao 138px), dù cả hai đều ≤849 và đều phải là bản mobile theo luật.
     Không phải "vỡ" theo 4 dấu hiệu kiem-vo.js (không tràn, không đè),
     nhưng sai bố cục so với Figma (logo phải luôn Ở TRÊN ĐKKD, không bao
     giờ cạnh nhau, trong toàn dải ≤849px) — ép lại giống hệt cách đã làm
     cho '.col.small-6' bên dưới. [lý do vượt panel] không có panel nào
     buộc cột theo breakpoint tự đặt của dự án thay vì breakpoint gốc
     Flatsome. */
  .t4fx-footer .row:has(> .col .t4fx-dkkd) > .col {
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important;
  }

  .t4fx-dkkd { text-align: left; }
  .t4fx-dkkd .text-inner { width: 100%; margin-left: 0; }

  /* Figma mobile: tiêu đề cột 14px/lh19.12 (desktop 16/21.86);
     mục danh sách lh18 cách nhau 30px (desktop lh15 cách 39px). */
  .t4fx-col-title .section-title-main { font-size: 14px !important; line-height: 19px !important; }
  .t4fx-col-title .section-title { margin-bottom: 16px !important; }
  .t4fx-col-list .ux-menu-link { height: 30px; }
  .t4fx-col-list .ux-menu-link__text { line-height: 18px !important; }
  /* [phục vụ] phần tử: Menu (ux_menu_link → 'a.ux-menu-link__link') | khối:
     4 cột link footer '.t4fx-col-list' | [figma] mục cách nhau 30px (dòng
     comment trên: "mục danh sách lh18 cách nhau 30px")
     [lý do vượt panel] chiều cao/đệm của [ux_menu_link] không có tuỳ chọn
     panel, đây là mảnh CSS con của Flatsome ('.ux-menu-link__link') đè lên.
     ⛔ Kiểm tương tác báo 'hai vùng bấm chồng nhau' 7 cặp liên tiếp trong cột
     footer — dt=3520 (352px rộng × 10px chồng) ở MỌI cặp, tức lỗi HỆ THỐNG
     chứ không phải từng mục riêng lẻ. Đo bằng devtools: dòng trên đặt
     '.ux-menu-link' (khung ngoài) = 30px, nhưng '.ux-menu-link__link' (thẻ
     <a> bên trong) vẫn giữ 'min-height: 40px' + 'padding: 4,8px 0' mặc định
     của Flatsome — thẻ <a> TRÀN ra ngoài khung cha 5px trên + 5px dưới, đè
     lên mục liền kề đúng 10px. Ép thẻ <a> về cùng 30px với cha, canh giữa
     chữ bằng align-items thay vì padding. */
  .t4fx-col-list .ux-menu-link__link {
    height: 30px !important;
    min-height: 30px !important;
    padding: 0 !important;
    align-items: center;
  }
  /* Figma: mép trên mỗi "Section" cách hộp tiêu đề 3px (244 → 247). Dùng
     PADDING chứ không dùng margin — margin-top của con đầu tiên co lại
     (margin collapsing) qua .col-inner vì khối này không có viền/đệm, và
     khi đó 3px biến mất mà không có gì báo. */
  .t4fx-col-title.section-title-container { padding-top: 3px; }
  /* ⛔ Mục CUỐI mỗi danh sách vẫn chiếm đủ 30px, trong khi Figma chỉ chừa
     3px sau dòng chữ 18px. Dôi 9px mỗi cột, CỘNG DỒN qua 4 cột thành 27px —
     đó là lý do cột 1 cao hơn thiết kế còn cột 4 tụt tận 9px.
     ⚠ Cắt bằng 'height: 21px' là SAI dù số học đúng: chữ được CĂN GIỮA trong
     hộp .ux-menu-link, nên hộp thấp đi 9px thì chữ tự nhảy lên 4,5px. Bảng đo
     bắt được ngay — mục cuối của cả 4 cột lệch −3,2px trong khi các mục khác
     đạt. Dùng margin ÂM: chữ đứng yên, chỉ phần bên dưới bị kéo lên.
     ⛔ BẮT BUỘC !important: [ux_menu] gắn class "stack stack-col", mà
     Flatsome có '.stack-col > * { margin: 0 !important }'. Thiếu !important
     thì quy tắc im lặng không ăn — nằm đúng media query, selector vẫn khớp
     phần tử, chỉ riêng computed value ra 0. */
  .t4fx-col-list .ux-menu-link:last-child { margin-bottom: -9px !important; }

  /* Figma mobile "Frame 153": 5 mục liên hệ xếp 2 CỘT (địa chỉ chiếm
     nguyên hàng đầu), không phải dàn đều một hàng như desktop. */
  .t4fx-lienhe {
    width: 100% !important;
    justify-content: flex-start;
    gap: 8px 0;
  }
  /* Figma: hàng 2 và 3 dàn SPACE_BETWEEN trong 352px — mục trái ở x=25,
     mục phải căn sát mép phải (x=211), không phải chia đôi 50/50. */
  .t4fx-lienhe { justify-content: space-between; }
  .t4fx-lienhe li { width: auto; }
  .t4fx-lienhe li:first-child { width: 100%; }
  /* Figma: ô bên phải của hàng 2 và 3 đều rộng 166px nên icon của chúng
     cùng nằm ở x=211. Không ràng buộc thì mục cuối co lại còn 140 và icon
     trôi sang 237. */
  .t4fx-lienhe li:nth-child(3),
  .t4fx-lienhe li:nth-child(5) { min-width: 166px; }
  .t4fx-lienhe li a, .t4fx-lienhe .ux-menu-link__text { white-space: normal; }

  /* Figma mobile: hai đường kẻ hai bên dải icon chỉ 68px (desktop 422px). */
  .t4fx-mxh-list::before,
  .t4fx-mxh-list::after { max-width: 68px; }

  /* Khoảng cách dọc riêng cho mobile (Figma 1093:9271):
     ĐKKD hết y=193 → đường kẻ y=217 (24) → 4 cột y=244 (26) →
     cột hết y=738 → icon MXH y=762 (24) → liên hệ y=809 (24) →
     copyright y=929. Bốn cột xếp dọc cách nhau 8px, không phải 30px. */
  .t4fx-footer .row:has(> .col .t4fx-dkkd)::after { margin-top: 1px; }
  /* Hàng icon MXH cũng là .row nên dính padding-bottom 30px mặc định của
     Flatsome — đặt về 0 rồi mới khai riêng từng hàng bên dưới. */
  .t4fx-footer .row > .col { padding-bottom: 0 !important; }
  /* Mỗi hàng cần một khoảng khác nhau — đặt chung một giá trị là sai:
     hàng logo cách ĐKKD 24 · 4 cột xếp dọc cách nhau 8 · hàng liên hệ
     cách copyright 32. */
  /* 22 → 24 vì logo nay cao đúng 45px (trước là 47,44px do đặt theo %):
     Figma cho logo hết ở y=85 và ĐKKD bắt đầu y=109, đúng 24px. */
  .t4fx-footer .row:has(> .col .t4fx-dkkd) > .col     { padding-bottom: 24px !important; }
  .t4fx-footer .row:has(> .col .t4fx-col-title) > .col { padding-bottom: 8px !important; }
  .t4fx-footer .row:has(> .col .t4fx-lienhe) > .col   { padding-bottom: 32px !important; }
  /* 27 → 25: gỡ margin âm của .section-title-main làm <h4> cao thêm 2px, và
     2px đó nằm TRÊN chữ (h4 là flex align-items:center, trước đây span cao
     hơn hộp nên tràn lên 1px mỗi phía). Cả khối 4 cột — và mọi thứ bên dưới
     — vì thế tụt đúng 2px. Trả lại ở đây, một chỗ, thay vì chữa từng cột. */
  .t4fx-footer .section-content > .gap-element:nth-child(2) { padding-top: 25px !important; }
  /* 24 → 40: bốn cột nay thấp hơn 16px (mỗi cột bớt 9px ở mục cuối, thêm
     5px ở khối tiêu đề). Trả lại đúng 16px vào đây để dải icon MXH vẫn rơi
     đúng y=762 của Figma. */
  .t4fx-footer .section-content > .gap-element:nth-child(4) { padding-top: 40px !important; }
  .t4fx-footer .section-content > .gap-element:nth-child(6) { padding-top: 24px !important; }
  /* Figma mobile (1093:9271): 4 cột Footer xếp DỌC MỘT CỘT, không phải lưới
     2×2. Shortcode UX Builder giữ nguyên span__sm="6" (không sửa cấu trúc
     UX) — ép full-width bằng CSS trên đúng class Flatsome tự sinh
     ("small-6" = breakpoint mobile của Flatsome). */
  .t4fx-footer .row .col.small-6 {
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important; /* Flatsome dùng flexbox, riêng width không đủ */
  }
}


/* ─── Biểu tượng mạng xã hội: ĐỘ MỜ 62 % và LinkedIn nét rỗng (19/08/2026) ──
   Figma 'footer.json' khai rõ cả bốn 'Vector' của dải MXH là
   '#ffffff' **alpha 0,62**, và LinkedIn là chữ "in" NÉT RỖNG. Bản dựng dùng
   phông 'fl-icons' của Flatsome: trắng đặc, và glyph 'icon-linkedin' là ô
   vuông TRẮNG ĐẶC khoét chữ — khác hẳn hình.

   ⛔ Vì sao bảng dày báo 0 ❌ suốt: 'scripts/map-footer.json' chỉ khai
   'x · y · w · h' cho bốn icon, KHÔNG có 'mau', KHÔNG có 'mo'. Đây là điểm mù
   lớp phi-chữ (đã trả giá ở trang #9) — chỉ SO ẢNH mới bắt được. Đã bổ sung
   'mau' + 'mo' vào bản đồ cùng lúc với bản vá này. */
.t4fx-mxh-list a { color: rgba(255, 255, 255, .62); }

/* LinkedIn: thay glyph phông bằng chính vector Figma (node
   'I320:1858;192:2155') qua 'mask', nhờ vậy màu vẫn do CSS quyết định nên
   giữ đúng alpha 0,62 như ba icon kia.

   ⛔ HAI thứ phải xử lý trong data URI, thiếu MỘT là mask không tải được và
   'background-color' tô KÍN cả ô — ra một hình chữ nhật đặc, trông y như
   "chưa sửa gì" chứ không hề báo lỗi. Đã dính cả hai trong ngày 19/08:
     1. dấu '#' (ở 'clip-path="url(#clip0_0_59)"') phải thành '%23', nếu
        không URI bị cắt ngay tại đó;
     2. dấu nháy kép trong SVG ('xmlns="…"') phải đổi sang nháy đơn, nếu
        không nó ĐÓNG SỚM chuỗi CSS 'url("…")'. */
.t4fx-mxh-list a.linkedin i::before { content: none; }
.t4fx-mxh-list a.linkedin i {
  display: block;
  width: 26px;
  height: 23px;
  background-color: rgba(255, 255, 255, .62);
  -webkit-mask: url("data:image/svg+xml,<svg width='26' height='23' viewBox='0 0 26 23' fill='black' xmlns='http://www.w3.org/2000/svg'> <g clip-path='url(%23clip0_0_59)'> <path fill-rule='evenodd' clip-rule='evenodd' d='M6.72005 23.7226H1.99244V8.38667H6.73543V23.761L6.72005 23.7226ZM4.32166 6.38032C3.76153 6.38488 3.21265 6.22305 2.74459 5.91534C2.27653 5.60763 1.91036 5.16788 1.69248 4.65184C1.47461 4.1358 1.41484 3.5667 1.52076 3.01665C1.62667 2.4666 1.89349 1.96038 2.28742 1.56215C2.68134 1.16391 3.18462 0.891582 3.73348 0.77968C4.28234 0.667779 4.85206 0.72134 5.37044 0.933576C5.88883 1.14581 6.33254 1.50717 6.64533 1.97185C6.95813 2.43653 7.12593 2.98361 7.12747 3.54375C7.12953 4.29137 6.83555 5.0094 6.30979 5.54092C5.78404 6.07244 5.06925 6.37423 4.32166 6.38032ZM24.5312 23.7226H19.7882V15.6664C19.7882 13.4602 18.9503 12.2226 17.2053 12.2226C15.2989 12.2226 14.315 13.5063 14.315 15.6664V23.7226H9.75648V8.38667H14.3073V10.4468C14.7972 9.66865 15.4784 9.02901 16.2859 8.58895C17.0933 8.14889 18.0001 7.9231 18.9196 7.93312C22.1636 7.93312 24.4928 9.91641 24.4928 14.029L24.5312 23.7226Z' fill='white' fill-opacity='0.62'/> </g> <defs> <clipPath id='clip0_0_59'> <rect width='26' height='23' fill='white'/> </clipPath> </defs> </svg>") no-repeat center / 26px 23px;
  mask: url("data:image/svg+xml,<svg width='26' height='23' viewBox='0 0 26 23' fill='black' xmlns='http://www.w3.org/2000/svg'> <g clip-path='url(%23clip0_0_59)'> <path fill-rule='evenodd' clip-rule='evenodd' d='M6.72005 23.7226H1.99244V8.38667H6.73543V23.761L6.72005 23.7226ZM4.32166 6.38032C3.76153 6.38488 3.21265 6.22305 2.74459 5.91534C2.27653 5.60763 1.91036 5.16788 1.69248 4.65184C1.47461 4.1358 1.41484 3.5667 1.52076 3.01665C1.62667 2.4666 1.89349 1.96038 2.28742 1.56215C2.68134 1.16391 3.18462 0.891582 3.73348 0.77968C4.28234 0.667779 4.85206 0.72134 5.37044 0.933576C5.88883 1.14581 6.33254 1.50717 6.64533 1.97185C6.95813 2.43653 7.12593 2.98361 7.12747 3.54375C7.12953 4.29137 6.83555 5.0094 6.30979 5.54092C5.78404 6.07244 5.06925 6.37423 4.32166 6.38032ZM24.5312 23.7226H19.7882V15.6664C19.7882 13.4602 18.9503 12.2226 17.2053 12.2226C15.2989 12.2226 14.315 13.5063 14.315 15.6664V23.7226H9.75648V8.38667H14.3073V10.4468C14.7972 9.66865 15.4784 9.02901 16.2859 8.58895C17.0933 8.14889 18.0001 7.9231 18.9196 7.93312C22.1636 7.93312 24.4928 9.91641 24.4928 14.029L24.5312 23.7226Z' fill='white' fill-opacity='0.62'/> </g> <defs> <clipPath id='clip0_0_59'> <rect width='26' height='23' fill='white'/> </clipPath> </defs> </svg>") no-repeat center / 26px 23px;
}

/* ── Badge «Google Partner» ở footer (lô MOBILE-P3-FIX, 23/08/2026) ────────
   [figma] I607:10565;349:2735 'Frame 154' 163×40 — icon Google 40×40 + chữ
   'Google Partner', nằm trong hàng badge ngay sau đoạn đăng ký kinh doanh.
   Dựng bằng '[ux_image]' (media 3209, ảnh xuất 1× nên 163×40 đúng tự nhiên).

   ⚠ Flatsome cho '.img img { width: 100% }' nên badge bị GIÃN theo bề rộng
   cột — đo được 183×45 thay vì 163×40. Chốt cỡ thật ở đây. Class này chỉ
   badge đó dùng, không phần tử nào khác, nên luật không đụng gì sẵn có. */
/* ⛔ Badge nằm CÙNG HÀNG với '.t4fx-dkkd', nên luật khoá chiều cao LOGO ở
   trên ('.img img { height: 45px !important }') bắt luôn nó — đo được 183×45
   rồi 163×45. Phải thêm đúng một lớp để thắng, và giữ '!important' vì bên kia
   có. Đây là lý do luật badge KHÔNG thể viết ngắn hơn. */
.t4fx-footer .row:has(> .col .t4fx-dkkd) .img.t4fx-partner-badge img {
  width: 163px !important; height: 40px !important; max-width: 163px;
}

/* ⛔ ẨN HUY HIỆU GOOGLE PARTNER — CHỈ DESKTOP, và chỉ ở FOOTER.
   Figma `547:4448` CÓ khối đó (`Frame 156` = tiêu đề «Chứng nhận» + `Frame
   181`) nhưng đặt `visible: false` — tức thiết kế đã bỏ nó khỏi footer
   desktop. Đọc JSON mà quên xét cờ `visible` là dựng thừa nguyên một khối
   (cùng cái bẫy đã ghi ở `mobile-panel-tuychonkhac.php`).
   ⚠ `display: none` chứ KHÔNG xoá khỏi UX Block: footer MOBILE đã nghiệm thu
   và vẫn hiện huy hiệu này. Xoá trong shortcode là mất cả hai. */
/* ⛔ NGOẠI LỆ CÓ CHỦ ĐÍCH SO VỚI FIGMA — 4T chốt 25/08/2026.
   Figma `547:4448` đặt khối chứng nhận `visible: false`, và bản nghiệm thu
   trước đó đã ẩn huy hiệu Google Partner ở desktop theo đúng thiết kế. Nay
   4T yêu cầu ĐƯA LẠI cả ba chứng nhận. Vì vậy luật `display: none` cũ đã bỏ.
   → ĐỪNG "sửa lại cho khớp Figma": lệch chỗ này là do người quyết, không
     phải do đo sai. Ba chứng nhận và đường dẫn lấy nguyên từ tiepthitute.com,
     đã kiểm 25/08 cả ảnh lẫn trang đích đều HTTP 200. */

/* Huy hiệu Google Partner nằm CÙNG DÒNG với khối đăng ký kinh doanh, không
   xuống dòng riêng. [ux_image] là khối `display:block` rộng hết cột nên mặc
   định nó tự rơi xuống dưới và tự căn giữa — đo được badge ở x=770 w=720,
   tức lơ lửng giữa hàng, và hàng nhận diện phình 55 → 155px.
   Xếp cột phải thành một hàng ngang [badge 163] [khối ĐKKD 432] căn phải thì
   chiều cao hàng trở lại bằng khối cao nhất (56px). */
@media (min-width: 850px) {
  .t4fx-footer .row:has(> .col .t4fx-dkkd) > .col:nth-child(2) > .col-inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 32px;
  }
  .t4fx-footer .row:has(> .col .t4fx-dkkd) .t4fx-dkkd { flex: 0 0 432px; }
  .t4fx-footer .img.t4fx-partner-badge { flex: 0 0 163px; margin: 0; }
}

/* Cụm chứng nhận dưới — Bộ Công Thương (117×44) + DMCA (120×35), ảnh đã
   mirror về media demo1 (id 3216 · 3217) nên không phụ thuộc host ngoài. */
.t4fx-chungnhan {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
  margin: 0 auto;
}
.t4fx-chungnhan .t4fx-cn-o { display: inline-flex; align-items: center; }
.t4fx-chungnhan .t4fx-cn-o:hover { opacity: .8; text-decoration: none; }
/* ⚠ Flatsome đặt `.img img { width: 100% }` và footer còn luật khoá chiều cao
   45px cho hàng logo — chốt cỡ thật ở đây kẻo ảnh bị giãn (cùng cái bẫy đã
   ghi cho `.t4fx-partner-badge`). `width: auto` để tỉ lệ theo chiều cao. */
.t4fx-chungnhan img { width: auto !important; max-width: 100%; display: block; }
.t4fx-chungnhan .t4fx-cn-o:nth-child(1) img { height: 44px !important; }
.t4fx-chungnhan .t4fx-cn-o:nth-child(2) img { height: 35px !important; }

/* ⛔ HAI THỨ MỚI CỦA FOOTER DESKTOP PHẢI TẮT Ở MOBILE.
   Chúng nằm trong UX Block dùng CHUNG hai khổ, nên vừa thêm cho desktop là
   chúng hiện luôn ở 402 — hồi quy ngoài phạm vi, khác bản mobile 4T đã
   nghiệm thu (4T phát hiện 25/08 bằng ảnh chụp live).
   ⚠ Ngược chiều với huy hiệu Google Partner ngay trên: cái đó ẩn ở DESKTOP,
   hai cái này ẩn ở MOBILE. Cùng một UX Block, ba lớp phủ hai chiều — đổi
   mốc breakpoint của một luật mà quên luật kia là lộ ngay ở khổ 850. */
@media (max-width: 849px) {
  .t4fx-footer .t4fx-col-list-them { display: none; }
  /* ⛔ ẨN 4 NÚT, KHÔNG ẨN CẢ HÀNG. Bản mobile đã nghiệm thu VẪN CÓ hai dải kẻ
     ngắn: `[follow]` khi đó render RỖNG (theme_mod trống) nhưng container vẫn
     tồn tại, và `.t4fx-mxh-list::before/::after { max-width: 68px }` ở ngay
     trên vẫn vẽ. Ẩn cả hàng thì mất luôn hai dải kẻ đó và footer mobile hụt
     thêm — vẫn là hồi quy, chỉ theo chiều ngược lại. */
  .t4fx-footer .t4fx-mxh-list .t4fx-mxh-nut { display: none; }
}

/* Mục danh sách KHÔNG có liên kết — dùng cho «Chính sách thanh toán» khi
   `/chinh-sach-thanh-toan/` chưa tồn tại (kiểm 25/08: HTTP 404, không có
   trang nào ở `wp post list`). Không bịa URL, không `href="#"`, không dựng
   trang rỗng. Hình thức khớp `.ux-menu-link` để hàng không nhảy.
   → Có URL thật thì đổi `<span class="t4fx-muc-tat">` thành `<a href=…>`
   trong `docs/uxb/footer-4t.txt`. */
/* ⚠ Phải gỡ đệm ở CẢ <ul> LẪN <li>, VÀ phải đủ ưu tiên. Gỡ mỗi <ul> thì chữ
   vẫn thụt 21px (đo 1372 vs 1351 của «Chính sách bảo mật»): phần thụt nằm ở
   `margin-left: 20.8px` trên chính <li>. Viết `.t4fx-col-list-them li` (0,2,0)
   vẫn THUA luật sẵn có `.t4fx-footer ul li` (0,2,1) — im lặng không ăn. Phải
   kèm `.t4fx-footer` để lên (0,3,0). */
.t4fx-footer .t4fx-col-list-them,
.t4fx-footer .t4fx-col-list-them li {
  margin: 0; padding: 0; list-style: none; text-indent: 0;
}
.t4fx-muc-tat {
  display: block;
  font-family: var(--t4-font-body);
  font-size: 11px;
  font-weight: 500;
  line-height: 15px;
  color: rgba(255, 255, 255, .55);
  cursor: default;
}
