/* TKT Theme · cầu nối Elementor TẠM (THEME-PLATFORM.md T2 → xoá dần ở T4, hết ở T5).
   Nội dung cũ vẫn là HTML trong Elementor + CSS Kit post-28192 (bật ss01/cv01, khung [class*="-card"], ép font cả icon).
   Hello trung hoà bằng overrides.css §0 §7 §8 §9: chép NGUYÊN các mục đó vào đây (nguồn: hello-elementor-child/tkt-overrides/
   overrides.css). Nạp SAU CSS Kit (inc/assets.php, ưu tiên 9999) để thắng khi bằng độ ưu tiên. */

/* ========================================================================
   0. TYPOGRAPHY · ss01/cv01 TẮT TOÀN CỤC (2026-06-12)
   Lý do: alternate glyph A/M của SVN-Avant Garde Gothic làm MẤT DẤU tiếng
   Việt trên H1 mọi trang (Ă→A, ẤẦ→A…). Accent tiếng Anh không đáng đổi.
   (Trước đây bật cho h1 + .t-display — gây bug dấu, feedback 2026-06-10.)
   ======================================================================== */
body, h1,
.t-display-1, .t-display-2, .t-title-1 {
  font-feature-settings: normal !important;
}

/* ========================================================================
   7. LOGO / BLOG / BENTO BOX STRIP — CSS layer
   Note: JS observer in overrides.js handles dynamic carousel insertions.
   Elementor Kit `[class*="-card"]:not(...):not(...)...` has specificity
   (0,9,0) which CSS chain rarely beats. JS inline-style is the reliable
   approach (see overrides.js). CSS here is best-effort baseline.
   ======================================================================== */

/* Reserved — JS handles strip. CSS here is light fallback only. */
.tkt-fs-card,
.tkt-fs-img,
.tk-logo-item,
.tk-client-logo,
.tk-logo-img,
.tkt-brand-logo,
.tkt-fs-img-brand,
.eco-logo-box,
.tktf-logo-row,
.tkt3-card,
.tkt3-card-thumb,
.tng-card,
.tng-card-cat,
.tng-card-body,
.tng-card-excerpt,
.tng-card-foot,
.tng-card-read,
.tng-card-time,
.tnt-card,
.tnt-rank,
.tnf-card,
.tnf-card-body,
.tnf-card-excerpt,
.tnf-card-foot,
.tnf-card-read,
.tnf-card-tag,
.tnf-card-meta-dot,
.tnfb-chip,
.tnfb-chip-label,
.tnfb-chip-count,
.bento-wrapper,
.bento-cell {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* ========================================================================
   8. FONT AWESOME 6 — protect from Kit universal font override
   Elementor Kit post-28192 sets `*, ::before, ::after { font-family:
   var(--font-display) !important }` which kills FA icon rendering.
   LiteSpeed localizes the FA CSS but font files don't resolve via
   relative paths, so we declare @font-face with absolute CDN URLs.
   ======================================================================== */

@font-face {
  font-family: 'Font Awesome 6 Free';
  font-style: normal;
  font-weight: 900;
  font-display: block;
  src: url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-solid-900.woff2') format('woff2'),
       url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-solid-900.ttf') format('truetype');
}
@font-face {
  font-family: 'Font Awesome 6 Free';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-regular-400.woff2') format('woff2'),
       url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-regular-400.ttf') format('truetype');
}
@font-face {
  font-family: 'Font Awesome 6 Brands';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-brands-400.woff2') format('woff2'),
       url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/webfonts/fa-brands-400.ttf') format('truetype');
}

.fa-solid, .fa-solid::before {
  font-family: 'Font Awesome 6 Free' !important;
  font-weight: 900 !important;
}
.fa-regular, .fa-regular::before {
  font-family: 'Font Awesome 6 Free' !important;
  font-weight: 400 !important;
}
.fa-brands, .fa-brands::before {
  font-family: 'Font Awesome 6 Brands' !important;
  font-weight: 400 !important;
}

/* ========================================================================
   9. GLOBAL — neutralize Elementor Kit [class*="-card"] border/shadow
   Elementor Kit post-28192 uses attribute selector [class*="-card"] with
   7 :not() pseudo-classes → specificity (0,9,0) + !important.
   This matches EVERY element whose class contains "-card" substring,
   across ALL pages — causing unwanted "framing" borders on containers
   AND children (vm-card, grid-card, nl5-card, tktnl4-card, etc.).

   Previous per-class fix was whack-a-mole. This GLOBAL counter-rule
   uses 8 :not() with fictional classes (never excluded) to reach
   specificity (0,9,0). Since overrides.css loads AFTER Kit CSS,
   cascade tie-break goes to us. JS inline-style backup in overrides.js.
   ======================================================================== */

html body [class*="-card"]:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8) { /* T2: thêm "html body" → (0,9,2) thắng Kit (0,9,0) kể cả khi Kit in ở cuối trang (QA-B2 NEW-C) */
  border: 0 !important;
  border-width: 0 !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Homepage image/icon box elements (no -card in class, separate) */
.tkt3-img-box,
.tkt4-icon-box {
  border: 0 !important;
  box-shadow: none !important;
}

/* ========================================================================
   T2. Cột trái trang chủ (container 469186a, template 28203) — trước đây dùng "Sticky" của Elementor Pro
   (sticky_on desktop, offset 70). Làm lại bằng CSS để gỡ Pro không mất. Header thu gọn khi cuộn còn ~82px.
   ======================================================================== */
@media (min-width: 1025px) {
  .elementor-element-469186a:not(.elementor-sticky) { /* Pro còn bật thì để sticky của Pro làm (QA-B2 NEW-B) */
    position: sticky;
    top: calc(var(--tkh3-h-compact, 82px) + 8px);
    align-self: flex-start;
  }
}

/* ========================================================================
   Gỡ Pro: cột dính /hang-kho-2026/ (container e1e2536, trang 29114) — "Sticky" của Elementor Pro (desktop, offset 80,
   dính trong cha). Làm lại bằng CSS như cột trái trang chủ. Pro còn bật thì để Pro làm.
   ======================================================================== */
@media (min-width: 1025px) {
  .elementor-element-e1e2536:not(.elementor-sticky) {
    position: sticky;
    top: calc(var(--tkh3-h-compact, 82px) + 8px);
    align-self: flex-start;
  }
}

/* ========================================================================
   T2. Trang không dựng bằng Elementor (bộ chọn bơm, trang thường): giữ khung nội dung như .site-main của Hello
   (500 / 600 / 800 / 1140 px theo mốc 576 / 768 / 992 / 1200).
   ======================================================================== */
.tkt-entry--plain { margin-inline: auto; padding-inline: 10px; }
@media (min-width: 576px) { .tkt-entry--plain { max-width: 500px; } }
@media (min-width: 768px) { .tkt-entry--plain { max-width: 600px; } }
@media (min-width: 992px) { .tkt-entry--plain { max-width: 800px; } }
@media (min-width: 1200px) { .tkt-entry--plain { max-width: 1140px; } }


/* ========================================================================
   T2. §7 ở độ ưu tiên cao: Hello gỡ khung các lớp này bằng JS (overrides-v4.js §6, inline-style); theme không nạp
   JS đó → dùng CSS (0,9,2)+ !important để thắng [class*="-card"] của Kit, gồm cả bo góc (QA-B2: tkt3-card trang chủ).
   ======================================================================== */
html body .tkt-fs-card:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tkt-fs-img:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tk-logo-item:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tk-client-logo:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tk-logo-img:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tkt-brand-logo:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tkt-fs-img-brand:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .eco-logo-box:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tktf-logo-row:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tkt3-card:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tkt3-card-thumb:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-cat:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-body:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-excerpt:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-foot:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-read:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tng-card-time:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnt-card:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnt-rank:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-body:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-excerpt:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-foot:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-read:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-tag:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnf-card-meta-dot:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnfb-chip:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnfb-chip-label:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .tnfb-chip-count:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .bento-wrapper:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8),
html body .bento-cell:not(.__z1):not(.__z2):not(.__z3):not(.__z4):not(.__z5):not(.__z6):not(.__z7):not(.__z8) {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* ========================================================================
   T2. Khung .site-main của template plugin (SP v6, danh mục, blog) như Hello: căn giữa + lề 10px trên mobile
   (QA-B2 NEW-A: trang SP lệch trái 45px ở 1440, chạm mép màn hình ở 390).
   ======================================================================== */
.site-main { margin-inline: auto; width: 100%; }
@media (max-width: 575px) { .site-main { padding-inline: 10px; } }

/* T2. Chép nguyên khối dưới từ template header cũ 31055 (widget tkh3) — theme không còn in template đó (QA-B2 NEW-D). */
/* ===== TKT-HOME-POLISH v1 (2026-07-18) — perf + rhythm + type unify =====
   Perf: giảm bán kính backdrop-filter (chi phí ~radius²×diện tích, Retina ×4)
   + tắt animation lặp vô hạn trên box-shadow/background-position/left (repaint mỗi frame).
   Rhythm: chuẩn nhịp dọc section 56-80px thay vì 96-160px.
   Type: kéo H2 56px→44px, 25.6px→32px (dải 32-44 thống nhất). */
body.home .bento-wrapper{backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important}
body.home .fs4-card{backdrop-filter:blur(10px) saturate(1.4)!important;-webkit-backdrop-filter:blur(10px) saturate(1.4)!important}
body.home .dashboard-glass{backdrop-filter:blur(12px) saturate(1.5)!important;-webkit-backdrop-filter:blur(12px) saturate(1.5)!important}
body.home .tkt-promo-glass-layer{backdrop-filter:blur(10px)!important;-webkit-backdrop-filter:blur(10px)!important}
body.home .tkt-promo-glare{display:none!important}
body.home .tkt-btn,body.home .tkt3-btn-primary,body.home .tkt-h1-accent,body.home .tkt3-title-main{animation:none!important}
.tkts-btn{animation:none!important}
.tktc-launcher-pulse{display:none!important}
body.home .tkt-container{padding-top:56px!important;padding-bottom:72px!important}
body.home .tkt7-section{padding-top:72px!important;padding-bottom:72px!important}
body.home section.hpx{padding-top:80px!important;padding-bottom:80px!important}
body.home .hpx-sol__title,body.home .hpx-phead__title{font-size:44px!important;letter-spacing:-0.02em!important}
body.home .tkt4-title-text .section-title{font-size:32px!important}

/* ========================================================================
   T2. Cỡ chữ + khoảng cách mặc định cho tiêu đề/đoạn văn trong nội dung Elementor cũ, đúng giá trị reset.css của
   Hello (theme không còn nạp). :where() → độ ưu tiên 0, mọi CSS của widget vẫn thắng (QA-B3 NEW-E: trang chủ dài
   thêm ~120px, H2 24px thay vì 32px).
   ======================================================================== */
:where(.elementor) :where(h1, h2, h3, h4, h5, h6) { margin-block: .5rem 1rem; font-weight: 500; line-height: 1.2; }
:where(.elementor) :where(h1) { font-size: 2.5rem; }
:where(.elementor) :where(h2) { font-size: 2rem; }
:where(.elementor) :where(h3) { font-size: 1.75rem; }
:where(.elementor) :where(h4) { font-size: 1.5rem; }
:where(.elementor) :where(h5) { font-size: 1.25rem; }
:where(.elementor) :where(h6) { font-size: 1rem; }
:where(.elementor) :where(p) { margin-block: 0 .9rem; }

/* /hang-kho-2026/ hero (widget c1d733a): ≤960px khối số liệu thôi absolute nhưng section vẫn flex hàng ngang
   → cột chữ còn 140px, H1 vỡ từng chữ, nút CTA 5 dòng (QA UX #2). Xếp 1 cột, số liệu xuống dưới. */
@media (max-width: 960px) {
  .tkt-hero-sec .hero-immersive { flex-direction: column; align-items: stretch; }
  .tkt-hero-sec .stats-wrap { margin-top: var(--s-6); }
}

/* Chữ trắng trên nền cam (2,0–2,8:1, dưới WCAG AA; DS 2.1 bắt buộc chữ ink trên cam) — QA UX #15. Dò 03/10/2026 bằng
   getComputedStyle trên 20 trang (nền cam + chữ trắng), đã loại selector có cả nút nền xanh (.loc-act.dir ở /lien-he/,
   .tkt-fc-ctab-count tab chưa chọn). Cầu nối tới khi từng trang chuyển sang DS 2.1. */
:is(.tkt-btn.tkt-btn-primary, .tkt3-btn-primary, .tkt7-submit, .tkt-v6-ctacard__btn-primary, .tkt-v6-cat-btn--primary, .tkt-dvlb-btn,
.submit-btn, .spx-btn-primary, .spx-submit, .spx-lh-btn, .spx-warranty-badge, .bh3-btn-pri, .btn.btn-primary, .ct-cta, .hero-cta,
.dvs-btn-p, .ftb-read, .gph-btn-primary, .gph-hotline, .grb-cta, .hi-btn, .hi-pill, .job-apply, .af-send, .nlh-btn-orange,
.pc-cta-pri, .pc-tag-deal, .pm-cta.pm-p, .s3bs-cta, .tkt-cta-btn-main, .tkt-partner-btn, .tktsp1-btn-primary, .tktth-fti-btn-primary,
.tkt-form-fti-submit, .tns-cat, .tns-form-btn, .tkt-post-cta a, .tptc-why-btn, .tptc-ccard-btn:not(.ghost), .tptc-ccard-tag, .tpt-badge.tb-disc,
.drawer-ft-btn, .xlnt-s1-cta-primary, .xlnt-s2-cta-strip-btn, .xlnt-s3m-expert-btn.primary, .xlnt-s6-cta-button, .bx-tag.chip,
.chip.solid, .hd-float, .kb-tag, .pt-toggle-badge):not(#tkt-ink) { /* :not(#id) = độ ưu tiên id: thắng luật nội tuyến kiểu .tkt-hero-sec .hi-btn{color:#fff!important} */

  color: var(--fg-1) !important;
}
:is(.tkt-btn.tkt-btn-primary, .tkt3-btn-primary, .tkt7-submit, .tkt-v6-ctacard__btn-primary, .tkt-v6-cat-btn--primary, .tkt-dvlb-btn,
  .submit-btn, .spx-btn-primary, .spx-submit, .spx-lh-btn, .bh3-btn-pri, .btn.btn-primary, .dvs-btn-p, .gph-btn-primary, .hi-btn,
  .nlh-btn-orange, .tktth-fti-btn-primary, .tkt-post-cta a, .xlnt-s3m-expert-btn.primary):is(:hover, :focus-visible):not(#tkt-ink) { color: var(--fg-1) !important; }
