
/* /App_Themes/all/allcss/qi-menu-mb-nn.css */
/* =============================================================================
   NÚT ☰ + TÌM KIẾM CỦA THANH CÔNG CỤ MOBILE — dựng theo mẫu gdnn1 (2026-08-11).
   Cặp với: Pages/Shared/Partials/_ThanhCongCuMbNn.cshtml + wwwroot/js/qi-menu-mb-nn.js

   Nguyên tắc bám theo gdnn1:
     · panel buông xuống ngay dưới thanh công cụ, KHÔNG chuyển trang;
     · nền mờ phía sau, chạm vào là đóng;
     · ba gạch chuyển thành dấu ✕ khi mở (dùng [aria-expanded="true"] như gdnn1);
     · hai panel không mở cùng lúc (JS lo).
   ========================================================================== */

/* ---- CHIỀU CAO VÙNG NHÌN THẤY (dùng cho khay menu buông xuống) ----------------
   🔴 User báo 2026-08-12: "menu điện thoại không kéo hết được đến cuối".
   Gốc rễ: khay giới hạn bằng `100vh`, mà trên điện thoại `100vh` là chiều cao khi trình duyệt ĐÃ
   ẨN thanh địa chỉ. Lúc thanh địa chỉ + thanh điều hướng đang hiện, vùng nhìn thấy thấp hơn
   chừng 90–150px ⇒ đáy khay rơi ra ngoài màn hình: cuộn hết cỡ vẫn không thấy mấy mục cuối.

   Ba lớp, lớp sau đè lớp trước, lớp nào cũng HỢP LỆ ĐỘC LẬP (không dùng var() có fallback là
   đơn vị mới — kiểu đó mà trình duyệt cũ gặp thì hỏng cả khai báo, mất luôn giới hạn chiều cao):
     ① 100vh            — trình duyệt cũ;
     ② 100dvh           — bám vùng nhìn thấy, tự co giãn khi thanh địa chỉ ẩn/hiện;
     ③ JS ghi đè bằng số px đo từ `visualViewport` (qi-menu-mb-nn.js) — đúng cho cả nhóm ①. */
:root { --qimb-vung: 100vh; }
@supports (height: 100dvh) {
    :root { --qimb-vung: 100dvh; }
}

/* ---- Hai nút trên thanh công cụ ---- */
.qimb-nut {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    /*  🔴 VÙNG CHẠM (sửa 2026-08-13, rà site thật khối trường Hải Phòng): trước là 38px, đo trên
        trang thật ra hộp **40×38** — dưới chuẩn 44px, và chính dải hụt đó là nguyên nhân lỗi
        "chạm vào mà khay không mở" từng gặp ở vỏ homemb2.
        Rà 99 mẫu × 3 vỏ: nút này dưới 44px ở **76 lượt điện thoại + 58 lượt máy tính bảng**.
        🔑 CHỈ NỚI CHIỀU DỌC, KHÔNG nới ngang. Đo `thtrangcat` ở khổ 390px: thanh công cụ cao
        **48px** (đủ chỗ cho 44px), nhưng hai nút NẰM DÍNH NHAU — khe đúng **0px** (tìm kiếm
        x=307→345, menu x=345→385). Nới ngang thì vùng chạm hai nút chồng nhau 3px mỗi bên và nút
        đứng sau trong DOM sẽ CHE nút kia — đúng loại lỗi "vật chắn" mà trước đây phải dùng
        `document.elementFromPoint` mới tìm ra. Giữ `width:38px` ⇒ hình thức và vị trí ngang KHÔNG đổi. */
    height: 44px;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
    flex: 0 0 auto;
    -webkit-tap-highlight-color: transparent;
    /* 🔴 TUYỆT ĐỐI KHÔNG đặt `color` ở đây. Màu trắng của hai nút trên nền xanh do bộ CSS màu của
       đơn vị (`qicolordefaultmobile.css` / `qiColorSiteMobile.css`) đặt qua `#open-left` và
       `.qimbsearch`. Tệp này nạp SAU nên chỉ cần một dòng `color: inherit` là đè mất màu ấy, nút
       tìm kiếm rơi về #333 và chìm vào nền xanh — đã đo đúng hiện tượng user báo 2026-08-11. */
}

.qimb-nut:hover, .qimb-nut:focus, .qimb-nut:active { text-decoration: none; outline: none; }
.qimb-nut-tim i { font-size: 18px; line-height: 1; }

/* Ba gạch vẽ bằng 3 span để chuyển thành dấu ✕ — y như .qinn-burger của gdnn1. */
.qimb-gach { display: flex; flex-direction: column; justify-content: center; gap: 4px; width: 20px; }
.qimb-gach > span {
    display: block;
    width: 20px;
    height: 2px;
    background: currentColor;
    border-radius: 2px;
    transition: transform .2s ease, opacity .2s ease;
}
.qimb-nut-menu[aria-expanded="true"] .qimb-gach > span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.qimb-nut-menu[aria-expanded="true"] .qimb-gach > span:nth-child(2) { opacity: 0; }
.qimb-nut-menu[aria-expanded="true"] .qimb-gach > span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ---- Nền mờ phía sau khi có panel mở ---- */
.qimb-nen {
    position: fixed;
    inset: 0;
    background: rgba(17, 24, 39, .45);
    opacity: 0;
    transition: opacity .25s ease;
    z-index: 1040;
}
.qimb-nen.dang-mo { opacity: 1; }

/* ---- Khung chung của hai panel: buông xuống ngay dưới thanh công cụ ---- */
.qimb-tim, .qimb-menu {
    display: none;
    position: fixed;
    left: 0;
    right: 0;
    top: var(--qimb-dinh, 46px);   /* JS đo chiều cao thật của #toolbar rồi đặt lại */
    z-index: 1050;
    background: #fff;
    box-shadow: 0 12px 28px rgba(0, 0, 0, .18);
    /* 🔴 Hai panel nằm TRONG ô chứa nút vốn có `text-align:right` của thanh công cụ. Tuy chúng
       position:fixed nhưng canh chữ VẪN thừa kế ⇒ cả danh mục bị đẩy sang phải (đo được trên ảnh
       chụp lần đầu). Trả về canh trái cho đúng một trang danh mục. */
    text-align: left;
}
.qimb-tim.dang-mo, .qimb-menu.dang-mo { display: block; animation: qimb-buong .22s ease; }

@keyframes qimb-buong {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ---- Panel tìm kiếm ---- */
.qimb-tim-in { display: flex; align-items: center; gap: 8px; padding: 10px 12px; }
.qimb-tim-in > i { flex: 0 0 auto; font-size: 15px; color: #6b7280; }
.qimb-tim-in input {
    flex: 1 1 auto;
    min-width: 0;
    height: 40px;
    padding: 0 12px;
    font-size: 15px;
    border: 1px solid #d7dbe0;
    border-radius: 10px;
    background: #fff;
    color: #1d2733;
}
.qimb-tim-in input:focus { outline: none; border-color: var(--mau-md, #0071a6); }
.qimb-tim-gui {
    flex: 0 0 auto;
    height: 40px;
    padding: 0 16px;
    border: 0;
    border-radius: 10px;
    background: var(--mau-md, #0071a6);
    color: #fff;
    font-size: 15px;
    cursor: pointer;
}
.qimb-tim-dong {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #6b7280;
    font-size: 16px;
    cursor: pointer;
}

/* ---- Panel menu ---- */
.qimb-menu-in {
    /* 🔴 KHÔNG dùng riêng 100vh (user báo 2026-08-12: "menu điện thoại không kéo hết được đến cuối").
       Trên điện thoại `100vh` là chiều cao khi trình duyệt ĐÃ ẨN thanh địa chỉ. Lúc thanh địa chỉ và
       thanh điều hướng đang hiện, vùng nhìn thấy THẤP HƠN 100vh chừng 90–150px ⇒ đáy khay rơi ra
       ngoài màn hình và không tài nào cuộn tới được (khay đã cuộn hết cỡ).
       `100dvh` bám theo vùng nhìn thấy THẬT và tự co giãn khi thanh địa chỉ ẩn/hiện.
       Giữ dòng 100vh phía trên làm dự phòng cho trình duyệt cũ chưa biết dvh. */
    max-height: calc(var(--qimb-vung) - var(--qimb-dinh, 46px));
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    /* chừa chỗ cho vạch Home của iPhone + để mục cuối không dính sát mép */
    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
}
.qimb-dangtai { padding: 20px 16px; color: #6b7280; font-size: 14px; text-align: center; }

/* =============================================================================
   NỘI DUNG TRONG PANEL ☰
   Giữ NGUYÊN VẸN các mục của /mobilemenupage (user chốt), chỉ chỉnh lại cách trình bày cho hợp
   với một khay trượt: bỏ lề rộng của trang riêng, gom các mục thành danh sách đều nhau, tiêu đề
   nhóm rõ ràng, và đường kẻ mảnh thay cho viền dày.
   ========================================================================== */
.qimb-menu-in .container { max-width: none; padding: 0; }
.qimb-menu-in .row { margin-left: 0 !important; margin-right: 0 !important; }
.qimb-menu-in [class*="col"] { padding-left: 0 !important; padding-right: 0 !important; }
.qimb-menu-in .mx-4 { margin-left: 0 !important; margin-right: 0 !important; }
.qimb-menu-in .row.my-4 { margin-top: 0 !important; margin-bottom: 0 !important; }

/* ---- Tiêu đề nhóm: Danh mục · Khối chức năng · Liên kết · Phần mềm tác nghiệp ---- */
.qimb-menu-in h5.qitieudemenumobile {
    margin: 0;
    padding: 12px 16px 8px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--mau-md, #0071a6) !important;
    background: #f5f7fa;
    border-bottom: 1px solid #e6e9ee;
}
.qimb-menu-in .border-bottom { border-bottom: 0 !important; }

/* ---- Mỗi mục là một dòng bấm được, cao đủ ngón tay ---- */
.qimb-menu-in p {
    margin: 0;
    padding: 0;
    border-bottom: 1px solid #eef0f3 !important;
}
.qimb-menu-in p > a,
.qimb-menu-in .qimenudoc a,
.qimb-menu-in ul li > a {
    display: block;
    padding: 12px 16px;
    font-size: 14.5px;
    line-height: 1.35;
    color: #1d2733 !important;
    text-decoration: none;
}
.qimb-menu-in p > a:active,
.qimb-menu-in ul li > a:active { background: #f1f5f9; }

/* Mục con thụt vào cho thấy thứ bậc. */
.qimb-menu-in p.pl-3 > a { padding-left: 30px; color: #45505f !important; font-size: 13.5px; }

/* ---- "Khối chức năng" vốn xếp 2 cột: trong khay hẹp thì cho về 1 cột cho dễ bấm ---- */
.qimb-menu-in .row > .col + .col { border-top: 1px solid #eef0f3; }

/* ---- Ô tìm kiếm sẵn có trong nội dung menu: bo góc lại cho đồng bộ ---- */
.qimb-menu-in .row:has(.input-group) { padding: 12px 16px; }

/* 🔴 Ô nhập và nút phải LUÔN cùng một dòng (user báo 2026-08-11: nút rớt xuống dòng dưới).
   Nguyên nhân: `.input-group` của Bootstrap 4 mặc định `flex-wrap: wrap`, mà bộ CSS mobile của hệ
   thống lại đặt ô nhập `width: 100%` ⇒ ô chiếm trọn dòng, đẩy nút xuống. Ghim cứng ba điều:
   không cho xuống dòng, ô nhập co giãn theo chỗ trống, và bỏ chặn co tối thiểu. */
.qimb-menu-in .input-group { flex-wrap: nowrap !important; width: 100% !important; }
.qimb-menu-in .input-group .qitextbox {
    height: 40px;
    border: 1px solid #d7dbe0;
    border-radius: 10px 0 0 10px;
    font-size: 14.5px;
    width: auto !important;      /* bỏ width:100% của bộ CSS mobile */
    flex: 1 1 auto !important;
    min-width: 0 !important;     /* cho phép co lại, không thì vẫn tràn */
}
.qimb-menu-in .input-group-append { flex: 0 0 auto; }
.qimb-menu-in .input-group .input-group-text {
    height: 40px;
    border: 0;
    border-radius: 0 10px 10px 0;
    background: var(--mau-md, #0071a6);
    color: #fff;
    cursor: pointer;
}

/* ---- Khay đổi ngôn ngữ + "xem giao diện máy tính": tách thành một dải nhẹ trên cùng ---- */
.qimb-menu-in > .container > .row:first-child { padding: 8px 16px 0; }
.qimb-menu-in .doigiaodien {
    display: block;
    padding: 10px 16px;
    font-size: 13.5px;
    color: var(--mau-md, #0071a6) !important;
}
.qimb-menu-in h5.qitieudemenumobile:has(.doigiaodien) {
    background: transparent;
    border-bottom: 1px solid #eef0f3;
    padding: 0;
    text-transform: none;
    letter-spacing: 0;
    font-size: 13.5px;
    font-weight: 500;
}

/* ---- Ảnh phần mềm tác nghiệp: LUÔN co theo bề ngang khay ----
   🔴 user báo 2026-08-11 "ảnh bị tràn không co theo khổ". Ảnh mang lớp `w-100` của Bootstrap
   (`width:100% !important`) nên chỉ đặt `max-width` là chưa chắc thắng khi thẻ cha rộng hơn khay.
   Ghim `max-width` bằng !important, và chặn cứng mọi thứ vượt khổ ở tầng khay. */
.qimb-menu-in img {
    max-width: 100% !important;
    height: auto !important;
    display: block;
}
/*  KHOẢNG CÁCH GIỮA CÁC MỤC TRONG KHAY ☰ — CHUẨN 10px (user báo 2026-08-13: “khoảng cách giữa các
    item trên menu khá lớn, chưa đúng chuẩn 10px”).

    Đo trên hanoi.edu.vn (khối “Liên kết”): mỗi mục là `<p>` bọc `<a>` và ĐỆM BỊ CỘNG HAI TẦNG —
    `<p>` 8px trên + 10px dưới, `<a>` 12px trên + 12px dưới ⇒ mục cao **62px** cho một dòng chữ 20px,
    khe giữa hai mục **18px**. Nhìn rất rỗng, đúng như user chỉ.

    Nay chỉ MỘT tầng chịu trách nhiệm đệm dọc: `<a>` đúng 10px trên/dưới (mục cao ~40px, chạm vẫn
    thoải mái theo chuẩn 40px của điện thoại), còn `<p>` về 0. `.pb-3` của Bootstrap
    (`padding-bottom:1rem !important`) nên phải !important mới thắng. Đệm NGANG giữ 16px như cũ. */
.qimb-menu-in .row.my-4 > .col > p {
    padding: 0 !important;
    border-bottom: 0 !important;
}

.qimb-menu-in .row.my-4 > .col > p > a { padding-top: 10px !important; padding-bottom: 10px !important; }

/*  Khối ẢNH (Phần mềm tác nghiệp / quảng cáo): mỗi banner cũng là `<p><a><img></a></p>` nên đệm cũng
    cộng hai tầng — đo được khe giữa hai banner **40px** (8+12 dưới + 12+8 trên). Với chữ thì 10px
    trên/dưới là chuẩn (khe giữa hai mục = 0 vì có vạch phân cách), nhưng với ẢNH thì hai đệm 10px nằm
    cạnh nhau thành khe 20px ⇒ vẫn rộng. Cho ảnh 5px mỗi bên để khe giữa hai banner đúng **10px**. */
.qimb-menu-in .row.my-4 > .col > p > a:has(> img) {
    padding-top: 5px !important;
    padding-bottom: 5px !important;
}

/* Chốt chặn cuối: không thứ gì trong khay được rộng hơn khay. */
.qimb-menu-in { overflow-x: hidden; }
.qimb-menu-in .container,
.qimb-menu-in .row,
.qimb-menu-in [class*="col"],
.qimb-menu-in p,
.qimb-menu-in table { max-width: 100% !important; }

/* 🔴 KHÔNG cắt bớt gì trong panel (user chốt 2026-08-11: "nội dung trong dấu 3 gạch là nội dung
   trước đây"). Có lúc đã thử ẩn ô tìm kiếm trong panel cho khỏi trùng nút kính lúp — ĐÃ BỎ.
   Panel hiển thị NGUYÊN VẸN nội dung của /mobilemenupage: đổi ngôn ngữ, "xem giao diện máy tính",
   ô tìm kiếm, Danh mục, Khối chức năng, Liên kết, Phần mềm tác nghiệp.
   Thay đổi duy nhất so với trước là CÁCH MỞ: buông ra tại chỗ thay vì chuyển sang trang khác. */

/* =============================================================================
   CHỐNG "RÒ" CSS CỦA TRANG VÀO KHAY ☰   (user báo 2026-08-11: "màu nền và chữ bị ảnh hưởng")

   Ảnh chụp trên hcm.edu.vn: danh mục trong khay nằm trên MỘT KHỐI ĐỎ CHÓI, chữ tối đọc không ra.
   Đo lại trên tenant hcmedu (khổ 375px) thấy `ul.qimenudoc` có `background-color: red`.

   🔑 Nguồn KHÔNG phải tệp CSS nào của hệ thống, mà là một thẻ `style` NẰM TRONG NỘI DUNG CHÂN TRANG
   LƯU Ở CSDL của đơn vị (`div.infoFooter`). Đơn vị tự viết CSS cho thanh menu dọc bản MÁY TÍNH bằng
   bộ chọn TOÀN CỤC. Trước đây vô hại vì bản mobile là một TRANG RIÊNG (/mobilemenupage) không có chân
   trang; nay khay ☰ mở ngay trên trang chủ nên nội dung menu và CSS của đơn vị dùng chung một tài
   liệu ⇒ ba quy tắc dội vào khay:
     · `ul.qimenudoc { background-color: red; box-shadow: 0 0 2px }`        → khối đỏ
     · `ul.qimenudoc .qilist .qiitems a.parentNote { color:#004480!important; border-left:4px … }`
                                                                            → chữ đổi màu + vạch xám
     · `#sidebar { width:100%; margin-bottom:42px }`                        → thừa khoảng trống dưới

   Không sửa được ở nguồn (là dữ liệu của đơn vị, mỗi đơn vị một kiểu, sửa CSDL là đụng nội dung
   khách hàng). Vì vậy chặn ở phía khay, neo bằng **id** `#qimbMenuIn` — id thắng mọi bộ chọn theo
   lớp mà đơn vị viết, kể cả khi họ dùng !important. Khay trở lại đúng diện mạo của /mobilemenupage.

   ⚠️ Đây là một LOẠI lỗi, không phải một lỗi lẻ: đơn vị nào nhét CSS toàn cục vào nội dung CSDL đều
   có thể dội vào khay theo cách tương tự. Gặp báo lỗi "khay xấu/khác thường" ở đơn vị mới thì việc
   đầu tiên là liệt kê quy tắc rơi vào `#qimbMenuIn` rồi bổ sung vào khối này.
   ========================================================================== */
#qimbMenuIn ul.qimenudoc,
#qimbMenuIn ul.qimenudoc > li,
#qimbMenuIn ul.qimenudoc ul {
    background: transparent !important;
    box-shadow: none !important;
}

#qimbMenuIn #sidebar {
    width: auto !important;
    margin-bottom: 0 !important;
}

/* Mọi liên kết trong danh mục dùng CHUNG một kiểu chữ như phần còn lại của khay — kể cả mục cha mà
   đơn vị đã tô màu riêng. Bộ chọn dài đúng bằng bộ chọn của đơn vị + thêm id nên chắc chắn thắng.

   `text-transform` thì lại là chuyện của HỆ THỐNG chứ không phải của đơn vị: `cssmenudoc.css` dòng 1
   khai `ul.qimenudoc li a { color:#004580!important; text-transform: uppercase!important }` cho thanh
   menu dọc bản MÁY TÍNH. Trang /mobilemenupage không nạp tệp đó nên danh mục ở đấy vẫn viết thường —
   khay ☰ nằm trên trang chủ thì nạp, thành ra VIẾT HOA TOÀN BỘ, khác hẳn "nội dung như trước đây". */
#qimbMenuIn ul.qimenudoc a,
#qimbMenuIn ul.qimenudoc li a,
#qimbMenuIn ul.qimenudoc .qilist .qiitems a.parentNote {
    color: #1d2733 !important;
    text-transform: none !important;
    border-left: 0 !important;
    margin-left: 0 !important;
}

/* Khoá cuộn trang nền khi panel đang mở (JS gắn lớp này vào <body>). */
body.qimb-khoa-cuon { overflow: hidden; }

/* =============================================================================
   TÊN ĐƠN VỊ TRÊN THANH CÔNG CỤ — giữ ĐẦY ĐỦ, tối đa 2 dòng (user chốt 2026-08-11)

   Trước đây: một dòng, cỡ chữ theo clamp() của bề rộng màn hình, và tên >= 47 ký tự thì bị ép
   cứng 12px — tên dài vẫn tràn hoặc bị cắt cụt.
   Nay: cho xuống dòng thoải mái, JS hạ dần cỡ chữ tới khi bó gọn trong 2 dòng, KHÔNG cắt chữ.
   ========================================================================== */
#toolbar { align-items: center; }

#toolbar h1#siteTitle {
    margin: 2px auto;
    font-weight: 500;
    text-transform: uppercase;
    /* Bỏ cỡ chữ theo bề rộng màn hình: cỡ chữ nay do JS quyết theo ĐỘ DÀI TÊN. */
    font-size: inherit;
    line-height: 1.25;
}

#toolbar h1#siteTitle > a {
    display: block;
    font-size: 16px;                 /* JS hạ dần nếu quá 2 dòng (sàn 9px) */
    line-height: 1.25;
    white-space: normal;             /* CHO PHÉP xuống dòng — trước đây bị ép một dòng */
    overflow-wrap: anywhere;         /* tên có từ dài/không dấu cách vẫn ngắt được */
    text-align: center;
}

/* Thanh công cụ cao bao nhiêu là do tên dài mấy dòng ⇒ JS đo rồi đặt biến; nội dung trang
   đẩy xuống đúng bằng đó. Đặt !important để thắng quy tắc `.snap-content{top:46px!important}`
   khai sẵn trong các layout mobile (tệp này nạp SAU). */
.snap-content { top: var(--qimb-dinh, 46px) !important; }

/* /App_Themes/all/allcss/qi-noidung-mb2.css */
/* =============================================================================
   BÙ KIỂU CHO TRANG TRONG CỦA VỎ homemb2                      2026-08-13
   Nạp ở: Pages/Shared/_MasterMobile2.cshtml

   🔴 VÌ SAO CÓ TỆP NÀY — HỒI QUY DO CHÍNH ĐỢT SỬA 2026-08-13:
   Trước đây 42 trang `Pages/Mobile/*.cshtml` chạy vỏ chung `_MasterAllMobile`, vỏ đó nạp bộ
   `qiStyleAllMobile.css` + `qifontdefaultmobile.css` + `qicolordefaultmobile.css` — nơi định nghĩa
   các thành phần DÙNG CHUNG của trang trong: tiêu đề khối `.qihome_tieude/.qihome_tieudebg`, dải
   chuyên mục `.CatParent a`, nút `.btnqi`, bảng `GridViewStyle2`…
   Khi user yêu cầu "trang trong khớp vỏ homemb2", các trang đó chuyển sang `_MasterMobile2` — vỏ này
   dùng bộ giao diện tpthuduc và KHÔNG nạp ba tệp trên ⇒ mọi tiêu đề khối rơi về **màu link mặc định
   của Bootstrap 5 `rgb(13,110,253)` kèm GẠCH CHÂN, cỡ 16px**, nút `.btnqi` thì nền trong suốt trông
   như một dòng chữ đen. Đo được ở /Hoidapmb.aspx: 5 liên kết gạch chân xanh trong 340px đầu trang.

   ✅ Không nạp lại ba tệp kia (chúng là cả một bộ giao diện, sẽ đè hỏng vỏ tpthuduc) mà chép ĐÚNG
   những quy tắc của các thành phần dùng chung, lấy màu theo biến `--mau-md` của đơn vị.
   ✅ AN TOÀN VỚI TRANG CHỦ: đã đếm trên HTML thật của `/homemb2` — trang chủ dùng **0 lần** tất cả các
   lớp trong tệp này (`qihome_tieude`, `qihome_tieudebg`, `CatParent`, `btnqi`, `qiborderbottom-2`,
   `GridViewStyle2`), nên không có cách nào đụng vào giao diện trang chủ.
   ========================================================================== */

/* ---------- 1. Tiêu đề khối (mọi trang trong đều dùng) ----------
   Gốc: qiStyleAllMobile.css (`padding:5px; width:100%`) + qicolordefaultmobile.css (`color:#1565c0`)
   + qifontdefaultmobile.css. Nay lấy màu theo đơn vị thay cho màu xanh cứng. */
.qihome_tieudebg {
    width: 100%;
    padding: 5px 0;
    background-image: none;
}

.qiborderbottom-2 { border-bottom: 2px solid var(--mau-md, #1565c0); }

/*  🔑 `!important` cho MÀU (user chốt 2026-08-13: *"màu chữ chuyên mục hoặc tiêu đề form của tất cả
    các trang theo trang này"* — lấy trang Văn bản làm chuẩn, tức màu đơn vị `--mau-md`).
    Không có `!important` thì vài trang tự khai màu riêng ở CSS của trang (đo được "Chọn phòng ban" ở
    trang Cơ cấu tổ chức ra màu ĐỎ) ⇒ mỗi trang một màu, không đồng nhất. */
.qihome_tieude {
    display: inline-block;
    margin-bottom: 0;
    color: var(--mau-md, #1565c0) !important;
    font-size: 18px;
    font-weight: 600;
    text-decoration: none !important;   /* thẻ `a` nên Bootstrap gạch chân */
}

/* ---------- 2. Dải chuyên mục / đường dẫn (`.scrollmenu`) ---------- */
.CatParent a,
.CatChirent a {
    color: var(--mau-md, #1565c0);
    font-weight: 600;
    text-decoration: none !important;
}

.scrollmenu { align-items: center; }

/*  ═══════════════════════════════════════════════════════════════════════════════════════════════
    KHUNG TIÊU CHUẨN CHO DẢI TIÊU ĐỀ CHUYÊN MỤC / TÊN FORM  (user chốt 2026-08-13:
    *"nên tạo 1 khung tiêu chuẩn cho việc hiển thị chuyên mục hoặc tiêu đề form để các trang được đồng
    nhất giống nhau"*, *"tên chuyên mục thì luôn luôn căn thẳng mép trái, ô chọn ngôn ngữ thì luôn luôn
    căn thẳng với nội dung mép phải, chuẩn cách lề 10px"*).

    ⚠️ HAI CẤU TRÚC KHÁC NHAU cùng tồn tại — đây là lý do các trang trước đây lệch nhau:
      · trang CHI TIẾT:   `.qimb2-vo > div.d-flex > .scrollmenu` (+ khay ngôn ngữ cùng hàng)
      · trang CHUYÊN MỤC: `.qimb2-vo > .scrollmenu`  (dải là con trực tiếp)
    Khai cho CẢ HAI dạng, và khi dải nằm trong hàng `d-flex` thì chính nó KHÔNG thêm lề nữa để không
    thành 20px.
    ═══════════════════════════════════════════════════════════════════════════════════════════════ */
.qimb2-vo > .scrollmenu,
.qimb2-vo > .d-flex {
    padding-left: 10px !important;
    padding-right: 10px !important;
    align-items: center;
}

.qimb2-vo > .d-flex > .scrollmenu {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/*  Tên chuyên mục: LUÔN sát mép trái của vùng nội dung, in đậm theo màu đơn vị, không gạch chân.
    🔑 Nhắm cả thẻ `a` LẪN thẻ bao (`.CatParent`/`.CatChirent`) vì có trang in tên bằng liên kết, có
    trang in bằng chữ thường — trước đây chỉ khai cho `a` nên trang nào in chữ thường thì mất kiểu. */
.scrollmenu,
.scrollmenu > ul,
.scrollmenu li {
    list-style: none !important;   /* có trang bọc trong <ul>/<li> ⇒ hiện dấu chấm đầu dòng (user báo) */
    margin-bottom: 0;
    padding-left: 0;
}

/*  🔑 NHẮM MỌI DẠNG MARKUP CỦA TÊN CHUYÊN MỤC — ba trang ba kiểu khác nhau (đây là lý do trước đó
    trang chi tiết vẫn ra chữ đen, không đậm):
      · trang chuyên mục : `.scrollmenu > span.CatParent > a`
      · trang chi tiết   : `.scrollmenu > li > a.a-simple.fs-15`   ← KHÔNG có `.CatParent`, `a` KHÔNG
        phải con trực tiếp nên bộ chọn `.scrollmenu > a` trượt
      · vài trang khác   : chữ thường trong `span`
    Nhắm thẳng `.scrollmenu a` (hậu duệ) + các thẻ bao để phủ hết. */
.scrollmenu a,
.scrollmenu > li,
.scrollmenu > span,
.scrollmenu .CatParent,
.scrollmenu .CatParent a {
    color: var(--mau-md, #1565c0) !important;
    font-weight: 700;
    font-size: 16px !important;
    text-decoration: none !important;
}

/*  Ô CHỌN NGÔN NGỮ (user chốt 2026-08-13: *"luôn luôn thẳng hàng với mép phải và thẳng hàng với nội
    dung, cách lề trên dưới 5px"*).
    🔑 `margin-left: auto` đẩy khay về CUỐI hàng — đúng cả khi hàng CÓ tên chuyên mục (trang trong) lẫn
    khi hàng CHỈ có mỗi khay (trang chủ: đo được khay đang nằm bên trái vì không có gì đẩy nó sang).
    Mép phải của khay khi đó trùng mép phải vùng nội dung (10px), thẳng hàng với thân trang. */
.qimb2-vo > .d-flex > .scrollmenu { margin-right: auto; }

.qimb2-vo .qi-ngonngu,
.qimb2-vo .qi-ngonngu--mb {
    margin-left: auto;
    margin-top: 5px;
    margin-bottom: 5px;
}

/*  🔑 THẺ BỌC KHAY CÒN `px-2` (8px) NÊN VIÊN CHỌN NGÔN NGỮ NẰM Ở 18px, KHÔNG PHẢI 10px
    (user báo: *"khoảng cách ô chọn ngôn ngữ đến mép phải > 10px"*). Đo được: thẻ bọc
    `div.px-2.my-auto` có mép phải đúng 10px, nhưng đệm phải 8px của nó đẩy viên pill vào thêm.
    Bỏ đệm PHẢI của thẻ bọc cuối hàng để viên chọn thẳng đúng mép nội dung. */
.qimb2-vo > .d-flex > *:last-child {
    padding-right: 0 !important;
}

/*  ---------- 2a-bis. KHAY NGÔN NGỮ CỦA VỎ (TRANG CHỦ homemb2) ----------
    🔴 Trang chủ KHÔNG khai `TopMobile` nên khay do chính vỏ dựng, và hàng đó có cấu trúc khác trang
    trong: `div.row.mx-0 > div.col.mx-4.px-2 > div.qi-ngonngu--mb`. Hai lý do làm luật ở mục 2a không
    ăn (đo ở khổ 440px, `/homemb2`):
      · thẻ bọc là `col` **block** chứ không phải flex, mà khay lại `display:inline-block`
        ⇒ `margin-left:auto` KHÔNG đẩy được: khay đứng ở x=42, cách mép phải tới **281px**;
      · `mx-4` (24px) + `px-2` (8px) của thẻ bọc còn đẩy thêm 32px vào trong.
    Vỏ nay dùng lớp riêng `qimb2-khaynn` (xem `_MasterMobile2.cshtml`) — flex căn CUỐI hàng để khay
    thẳng mép phải, đối xứng với tên chuyên mục thẳng mép trái 10px, và có khe tách khay khỏi ảnh tin
    bài đầu tiên (user báo *"bị dính vào ảnh tin bài đầu tiên"*).
    ⚠️ ĐỆM VÀ LỀ ĐỀU BẰNG 0, KHÔNG tự đặt 10px: hàng cha `div.row.mx-0` là con trực tiếp của vỏ nên ĐÃ
    được luật chung ở mục 4 cho đệm 10px hai bên — thêm 10px nữa là cộng dồn thành **20px** (đã đo).
    Khoảng trên/dưới 5px cũng để chính khay lo bằng `margin` của nó (mục 2a), khỏi cộng hai lần. */
.qimb2-vo .qimb2-khaynn {
    display: flex;
    justify-content: flex-end;
    margin: 0 !important;
    padding: 0 !important;
}

/*  ---------- 2a-quater. VỎ BÀI VIẾT Ở TRANG CHI TIẾT TIN ----------
    🔴 CỘNG DỒN 10 + 10 = 20px. Đo trên `/…/ctmb/15111/552582` khổ 402px: `div.chititiettin
    .ArticleDetailControl` có `margin-left:10px` của riêng nó, LẠI ĐƯỢC luật chung ở mục 4 cho thêm
    `padding-left:10px` (vì nó là con trực tiếp của vỏ) ⇒ toàn bộ nội dung bài — ngày đăng, tiêu đề,
    thân bài, tin cùng chuyên mục — đều nằm ở **x = 20**, lệch chuẩn 10px của mọi trang khác.
    Khử lề riêng, để đệm 10px của luật chung làm việc một mình. */
.qimb2-vo > .chititiettin {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/*  ---------- 2a-ter. THẺ NHÂN SỰ Ở TRANG CƠ CẤU TỔ CHỨC ----------
    Tên người dán SÁT đáy ảnh chân dung (user báo 2026-08-14: *"chữ và ảnh bị dính vào nhau"*) — đo
    trên `/co-cau-to-chuc/cctcmb/0`: khe giữa `img.img-thumbnail` và `h5.font-weight-bold` = **0px**.
    🔑 KHÔNG đặt `margin-bottom` cho ảnh: ảnh đang `display:inline`, mà lề dưới của phần tử inline
    KHÔNG ảnh hưởng bố cục — phải đặt lề TRÊN cho chính dòng tên. */
.qimb2-vo .border.w-100.row h5 {
    margin-top: 10px;
}

/*  ---------- 2b. DANH SÁCH BÀI Ở TRANG CHUYÊN MỤC (`/cmb/`) ----------
    🔴 Cùng ổ lỗi với các thành phần dùng chung khác: vỏ homemb2 dùng bộ tpthuduc nên KHÔNG nạp
    `qiStyleAllMobile.css` — nơi định kiểu cho danh sách này. Đo trên trang thật: **11 liên kết** trong
    danh sách đều `color: rgb(13,110,253)` (xanh mặc định Bootstrap 5) và **gạch chân**, nhìn như chữ
    thô chưa có kiểu.
    🔑 Markup gói CẢ mục trong MỘT thẻ `<a>`:
        `div.qimobileitemcat > a > div.media-body > (h5.qititle + p.time)`
    nên gạch chân và màu của thẻ `a` truyền xuống CẢ tiêu đề LẪN dòng ngày ⇒ phải khử ngay ở thẻ `a`
    rồi tô lại từng phần; sửa riêng `h5` là không đủ. */
.qimobileitemcat > a {
    text-decoration: none !important;
    color: inherit;
    display: block;
}

.qimobileitemcat .qititle {
    color: #1a1a1a;
    font-size: 17px;
    line-height: 24px;
    font-weight: 600;
    margin-bottom: 4px;
}

.qimobileitemcat > a:hover .qititle,
.qimobileitemcat > a:focus .qititle { color: var(--mau-md, #1565c0); }

/*  Dòng ngày là phần tử CUỐI của mục. Thẻ mang sẵn lớp `my-2` của Bootstrap
    (`margin-top/bottom: .5rem !important`) nên dưới nó cộng thêm 8px vào đệm 12px của hàng ⇒ khoảng
    trống DƯỚI bài là 20px trong khi TRÊN bài kế tiếp chỉ 12px, nhìn lệch hẳn (user báo 2026-08-13:
    *"khoảng cách từ border ngăn cách đến 2 tin chưa bằng nhau"*).
    🔑 Phải `!important` mới thắng được lớp tiện ích của Bootstrap (nó cũng `!important`, cùng độ đặc
    hiệu thì bên nào có `!important` và nạp SAU mới thắng — `qi-noidung-mb2.css` nạp sau nên đủ). */
.qimobileitemcat .time {
    color: #6b7280;
    font-size: 13px;
    line-height: 18px;
    margin-top: 2px !important;
    margin-bottom: 0 !important;
}

/*  Vạch ngăn giữa các bài — trước đó các mục dính nhau thành một khối chữ liền.
    🔑 ĐẶT TRÊN CẢ HÀNG, KHÔNG đặt trên `.qimobileitemcat` (user báo 2026-08-13: *"ảnh còn sát với
    border lề trên"*). Mỗi bài là một `div.row.qibootomSpace` gồm HAI cột: cột ẢNH (`.col-sm-5.px-0`)
    và cột CHỮ (`.qimobileitemcat`). Đặt `border-bottom` lên cột CHỮ thì vạch được vẽ ở đáy cột chữ —
    mà cột ảnh cao hơn nên vạch cắt ngang NGAY TRÊN ảnh, ảnh dính sát vào vạch. Đặt lên hàng thì vạch
    nằm dưới TOÀN BỘ bài (cả ảnh lẫn chữ), và đệm dọc áp cho cả hai cột nên ảnh có khoảng thở.
    🔑 Cần `!important` cho đệm: hàng mang sẵn lớp tiện ích `.pt-2` của Bootstrap (`!important`). */
/*  🔑 DÙNG BỘ CHỌN HẬU DUỆ (khoảng trắng), KHÔNG dùng con trực tiếp `>`: các hàng tin nằm ở hai vị trí
    khác nhau tuỳ trang — trang CHUYÊN MỤC để chúng làm con trực tiếp của vỏ, còn trang CHI TIẾT lồng
    trong `div.chititiettin`. Dùng `>` thì trang chi tiết KHÔNG khớp và mất sạch vạch ngăn giữa các tin
    (user báo 2026-08-13: *"khối tin đầu tiên và tin sau đang không có vạch ngăn ở giữa"*). */
.qimb2-vo .row.qibootomSpace {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
}

/*  🔑 KẺ VẠCH PHÍA TRÊN, TỪ TIN THỨ HAI TRỞ ĐI — KHÔNG dùng `border-bottom` (user báo 2026-08-13:
    *"tin cuối cùng thì không cần border"*).
    Vì sao không dùng `:last-child`/`:last-of-type` để chừa tin cuối: các hàng tin là anh em với những
    hàng KHÁC ở cuối trang (phân trang, chân trang) nên tin cuối KHÔNG phải `:last-child`; còn
    `:last-of-type` xét theo TÊN THẺ (đều là `div`) nên cũng không trúng.
    Đặt vạch ở cạnh TRÊN của hàng đứng sau một hàng tin khác thì tự nhiên: không có vạch trước tin đầu,
    không có vạch sau tin cuối, và khoảng cách hai bên vạch cân nhau (12px dưới của tin trên + 12px
    trên của tin dưới). */
.qimb2-vo .row.qibootomSpace + .row.qibootomSpace {
    border-top: 1px solid #e3e7ee;
}

/*  🔑 KHỐI "TIN CÙNG CHUYÊN MỤC" Ở TRANG CHI TIẾT CÓ CẤU TRÚC RIÊNG — tin ĐẦU và các tin SAU nằm ở
    hai nhánh DOM khác nhau nên không phải anh em, luật `+ .row` ở trên không với tới ranh giới giữa
    chúng (user báo: *"tin cùng chuyên mục thứ nhất và thứ 2 không có ngăn cách giữa"*):
        div.row.qiboxtincungchuyenmuc > div.col.qiContainer.qimobile
            ├─ div.line-5.big_item_news          ← tin thứ NHẤT (ảnh lớn + tiêu đề + ngày)
            └─ ul.item_hint > li                 ← các tin TIẾP THEO (li đã có vạch riêng)
    Kẻ vạch ở ĐÁY tin đầu là đúng ranh giới cần có. */
.qimb2-vo .qiboxtincungchuyenmuc .big_item_news {
    padding-bottom: 12px;
    border-bottom: 1px solid #e3e7ee;
}

/*  🔴 TIÊU ĐỀ TIN ĐẦU BỊ XÉN NGANG THÂN CHỮ (user báo 2026-08-14, kèm ảnh).
    Đo trên `/ke-hoach/…/ctmb/15111/552582` ở khổ 440px: khối cao 410px trong khi nội dung cần 475px.

    🔑 THỦ PHẠM KHÔNG PHẢI CHIỀU CAO CỨNG (tôi đoán nhầm lần đầu), mà là lớp `line-5` của mẫu tpthuduc:
        .line-5 { display:-webkit-box; -webkit-line-clamp:5; overflow:hidden; }
    Đây là lớp "cắt gọn N dòng", vốn để đắp cho MỘT đoạn văn — nhưng markup lại đặt nó lên CẢ THẺ TIN
    `div.line-5.big_item_news` (ảnh + tiêu đề + nhãn ngày/chuyên mục + tóm tắt). Cả thẻ trở thành một
    `-webkit-box` và bị cắt ở dòng thứ 5 tính chung, nên:
      · khổ máy tính: tiêu đề ngắn, vừa trong 5 dòng ⇒ không ai thấy lỗi;
      · khổ điện thoại: cùng tiêu đề ấy chiếm 7 dòng ⇒ dao cắt rơi vào GIỮA tiêu đề, xén ngang thân chữ
        và nuốt luôn nhãn ngày tháng.
    Bỏ chế độ `-webkit-box` cho thẻ tin ở vỏ điện thoại (chỉ trong khối "Tin cùng chuyên mục") — phần
    tóm tắt vẫn có clamp riêng của nó nên không sợ bung dài. */
.qimb2-vo .qiboxtincungchuyenmuc .big_item_news {
    display: block !important;
    -webkit-line-clamp: none !important;
    line-clamp: none !important;
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
}

/*  Bỏ vạch/đệm cũ trên cột chữ để không cộng hai lần.
    📌 KHÔNG dùng `:last-child` để chừa bài cuối: đã thử và phải bỏ — mỗi cột chữ là con DUY NHẤT trong
    thẻ bọc của nó nên `:last-child` đúng với MỌI mục, làm mất sạch vạch ngăn (đo được `0px none`). */
.qimobileitemcat {
    padding: 0;
    border-bottom: 0;
}

/*  Bài CÓ ẢNH: trên điện thoại hai cột xếp chồng nên ảnh nằm NGAY TRÊN tiêu đề ⇒ chữ dính sát đáy ảnh
    (user báo 2026-08-13: *"tiêu đề lại dính sát vào ảnh chưa cách 10px"*). Chỉ chừa 10px cho ĐÚNG
    trường hợp cột chữ đứng ngay sau cột ảnh — bài KHÔNG có ảnh giữ nguyên đệm 12px của hàng, không bị
    cộng dồn thành 22px. */
.qimb2-vo > .row.qibootomSpace > .col-sm-5 + .qimobileitemcat {
    padding-top: 10px;
}

/*  ---------- 2c. LUẬT CHUNG: NỘI DUNG LUÔN CÁCH HAI MÉP 10px (user chốt 2026-08-13) ----------
    Trước đây mỗi trang tự lo lề nên KHÔNG đồng nhất — đo trên bản dựng ở khổ 440px:
      · trang CHI TIẾT: nội dung ở **x = 10** nhờ thẻ bọc riêng `div.chititiettin` (`margin: 0 10px`);
      · trang CHUYÊN MỤC: **KHÔNG có thẻ bọc đó** ⇒ cả chuỗi `.row.qibootomSpace.mx-0` →
        `.col-sm-12.qimobileitemcat` đều rộng đúng 440px ở **x = 0**, chữ và ảnh dính sát hai mép.
    Đặt lề ở HÀNG là con trực tiếp của vỏ:
      · trang chuyên mục: `.row.qibootomSpace` chính là con trực tiếp ⇒ được 10px;
      · trang chi tiết: các hàng nằm TRONG `div.chititiettin` (không phải con trực tiếp) ⇒ KHÔNG cộng
        thêm, giữ đúng 10px cũ, không thành 20px.
    🔑 CỐ Ý chỉ nhắm `> .row`, KHÔNG đặt lề lên chính `.qimb2-vo`: vỏ đó bọc cả thanh công cụ và chân
    trang — hai dải màu chạy KÍN bề ngang, thụt vào 10px là lộ hai vệt trắng ở mép. */
/*  🔑 ÁP CHO MỌI KHỐI NỘI DUNG, KHÔNG CHỈ `.row` (user báo lại 2026-08-13: *"nội dung vẫn chưa cách 2
    mép 10px"* — kèm ảnh trang Cơ cấu tổ chức và trang Hỏi đáp).
    Lần đầu tôi chỉ nhắm `.qimb2-vo > .row` nên các trang mà khối nội dung KHÔNG phải `.row` vẫn dính
    mép. Đo trên `/co-cau-to-chuc/cctcmb/0`: `div.qihome_tieudebg` · `div.dropdown.w-100` ·
    `h4.font-weight-bold` · `div.border.w-100.row` — **tất cả đều x = 0, rộng 440px**.
    Nay áp cho MỌI con trực tiếp của vỏ, trừ những dải CỐ Ý chạy kín bề ngang (băng chữ chạy, thanh
    công cụ, chân trang, dải "Sơ đồ website") — thụt các dải màu đó vào 10px sẽ lộ hai vệt trắng ở mép.
    ⚠️ PHẢI `!important`: nhiều khối mang lớp tiện ích `.px-0` / `.p-0` của Bootstrap (bản thân chúng
    đã `!important`), ví dụ thẻ người trong Cơ cấu tổ chức là `div.border.w-100.row.px-0.mx-0` —
    không có `!important` thì luật này thua và khối vẫn dính mép. */
/*  🔑 PHẢI LOẠI TRỪ `.chuyenmucmobile` NGAY TRONG SELECTOR, không thể ghi đè ở luật sau:
    chuỗi `:not()` dài làm ĐỘ ĐẶC HIỆU của luật này lên tới **(0,7,0)** (mỗi `:not(.lop)` cộng một lớp),
    cao hơn cả `.qimb2-vo > .row.chuyenmucmobile` (0,3,0) — nên luật riêng của bảng chuyên mục con
    (đã khai `padding: 0` để dùng `margin: 10px`) bị thua và ô bị đẩy vào 20px (đo được). */
.qimb2-vo > *:not(.header_text_banner):not(.head_mobile_hover):not(.head_mobile):not(.footer_mobile):not(.qi-dai-sodo):not(.chuyenmucmobile):not(style):not(script):not(link) {
    padding-left: 10px !important;
    padding-right: 10px !important;
}

/*  🔑 PHẢI KHỬ LỀ ÂM CỦA `.row` thì đệm 10px ở trên mới ra đúng 10px.
    Bootstrap cho `.row` lề âm −12px để bù đệm của `.col`. Khối nào giữ lề âm đó thì dù đã có đệm 10px,
    nội dung vẫn nằm ở **x = −2** — tức THÒ RA NGOÀI mép trái (đo trên trang chi tiết văn bản
    `/vbctmb/…`: `div.row.qiboxtincungchuyenmuc` lề −12px ⇒ tiêu đề "Tin cùng chuyên mục" và danh sách
    tin đều ở x = −2; user báo *"chữ đang sát mép chưa đúng chuẩn 10px"*).
    Trừ `.chuyenmucmobile` vì bảng chuyên mục con cố ý dùng `margin: 10px` làm khung. */
.qimb2-vo > .row:not(.chuyenmucmobile) {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/*  Ảnh đại diện của bài: bo góc nhẹ cho gọn (lề đã do luật 10px ở trên lo). */
.qimobileitemcat img,
.col-sm-5.px-0 > a > img { border-radius: 6px; }

/*  ---------- 2d. DANH SÁCH CHUYÊN MỤC CON: XẾP 2 CỘT (user chốt 2026-08-13) ----------
    Markup `div.row.chuyenmucmobile > div.col-sm.qitopsubmenu` — lớp `col-sm` chỉ chia cột từ 576px trở
    lên, nên trên điện thoại mỗi mục chiếm trọn một hàng: 7 chuyên mục con là 7 hàng, phải cuộn dài mới
    hết. Cho mỗi mục nửa bề ngang ⇒ còn 4 hàng, nhìn gọn và bấm vẫn thoải mái. */
/*  User chốt tiếp 2026-08-13: *"danh sách chuyên mục dạng bảng có border riêng"* ⇒ dựng thành BẢNG có
    khung bao và đường kẻ giữa các ô.
    🔑 PHẢI ĐẶT LẠI NỀN CHO MỌI Ô: bộ CSS cũ tô sọc xen kẽ theo `nth-child` cho danh sách MỘT cột; khi
    xếp hai cột thì các ô lẻ (1,3,5,7) đều rơi vào CỘT TRÁI ⇒ sọc biến thành **một vệt xám phủ nửa
    bảng bên trái** (thấy rõ trong ảnh user gửi). Tô trắng đồng loạt rồi kẻ ô là hết. */
/*  🔑 KHUNG PHẢI CÁCH ĐỀU 10px BỐN PHÍA (user báo 2026-08-13: *"border chưa cách mép trái phải trên
    dưới 10px"*). Lần đầu tôi đặt `border` lên chính hàng này — mà hàng đã có `padding: 0 10px` của luật
    chung, và **viền được vẽ NGOÀI phần đệm** nên nó vẫn chạm mép. Phải đổi sang dùng `margin` cho
    chính khung: bỏ đệm ngang của luật chung rồi cho lề 10px đủ bốn phía.
    🔑 BỎ HẲN NỀN XÁM (user chốt: *"hoặc bỏ background đi"*). Bộ CSS cũ tô sọc xen kẽ theo `nth-child`
    cho danh sách MỘT cột; khi xếp hai cột thì các ô lẻ (1,3,5,7) rơi hết vào CỘT TRÁI ⇒ xám chỉ phủ
    nửa bảng bên trái, nhìn lệch hẳn. Nay để nền trắng đều, chỉ còn khung + đường kẻ ô phân định. */
.qimb2-vo > .row.chuyenmucmobile {
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin: 10px !important;
    border: 1px solid #dfe3ea;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

.chuyenmucmobile > .qitopsubmenu {
    flex: 0 0 50%;
    max-width: 50%;
    background: transparent !important;
}

/*  Vạch ngang KẺ PHÍA TRÊN, từ hàng thứ hai trở đi (ô thứ 3 trở đi trong lưới 2 cột)
    — user báo 2026-08-13: *"bỏ border ở cuối"*.
    🔑 Trước đó tôi kẻ `border-bottom` cho MỌI ô rồi định kéo `margin-bottom:-1px` cho vạch hàng cuối
    trùng lên khung bao; thực tế vẫn lộ một vạch thừa dưới đáy bảng. Kẻ cạnh TRÊN thì hàng cuối không
    còn vạch nào, và giữa các hàng vẫn đủ đường phân định. */
.chuyenmucmobile > .qitopsubmenu:nth-child(n+3) {
    border-top: 1px solid #dfe3ea;
}

/*  Ô cột TRÁI có thêm vạch dọc ngăn với ô cột phải. */
.chuyenmucmobile > .qitopsubmenu:nth-child(odd) {
    border-right: 1px solid #dfe3ea;
}

/*  SỐ CHUYÊN MỤC LẺ ⇒ ô cuối đứng một mình, nửa phải bỏ trống (user chốt 2026-08-13:
    *"nếu chỉ có 1 cột thì colspan=2 luôn"*). Cho ô đó chiếm TRỌN hàng — đúng nghĩa `colspan=2`.
    🔑 Điều kiện `:last-child:nth-child(odd)`: vừa là ô CUỐI, vừa ở vị trí LẺ (tức đang nằm ở cột
    trái) ⇒ chắc chắn không có ô nào bên phải nó. Số chuyên mục CHẴN thì luật không khớp, bảng giữ
    nguyên hai cột. Bỏ luôn vạch dọc vì không còn ô bên cạnh để ngăn. */
.chuyenmucmobile > .qitopsubmenu:last-child:nth-child(odd) {
    flex: 0 0 100%;
    max-width: 100%;
    border-right: 0;
}

.chuyenmucmobile > .qitopsubmenu > .dropdown-item {
    white-space: normal;      /* tên chuyên mục dài thì xuống dòng, không bị cắt cụt */
    padding: 10px 8px;
    line-height: 20px;
    color: #1a1a1a;
}

.chuyenmucmobile > .qitopsubmenu > .dropdown-item:hover,
.chuyenmucmobile > .qitopsubmenu > .dropdown-item:focus {
    background: #f5f7fa;
    color: var(--mau-md, #1565c0);
}

/*  Liên kết "Tải file đính kèm": theo màu đơn vị, bỏ gạch chân xanh mặc định. */
.qimobileitemcat a.Filedinhkem {
    color: var(--mau-md, #1565c0);
    text-decoration: none !important;
    font-size: 14px;
}

/*  ---------- 2e. KHỐI "TIN CÙNG CHUYÊN MỤC" Ở TRANG CHI TIẾT (tin VÀ văn bản) ----------
    User báo 2026-08-13 (*"chỉnh lại tin cùng chuyên mục của Văn bản"*): danh sách hiện chữ xanh
    `rgb(13,110,253)` + gạch chân, và **ngày đăng dính liền tiêu đề** ("…giáo dục và đào tạo 25/8/2021
    20:18") — cùng ổ lỗi thiếu `qiStyleAllMobile.css` của vỏ homemb2.
    🔑 Ngày nằm NGAY TRONG thẻ `h5`:
        `a > div.media-body > h5.qititle > span.time`
    nên không thể tách bằng lề — phải cho `span.time` thành khối (`display:block`) mới xuống dòng riêng. */
.qimb2-vo .row.qibootomSpace > [class*="col-"] > a {
    text-decoration: none !important;
    color: inherit;
    display: block;
}

.qimb2-vo .row.qibootomSpace .qititle {
    color: #1a1a1a;
    font-size: 16px;
    line-height: 23px;
    font-weight: 600;
    margin: 0;
}

.qimb2-vo .row.qibootomSpace .qititle .time,
.qimb2-vo .row.qibootomSpace .time {
    display: block;
    color: #6b7280;
    font-size: 13px;
    line-height: 18px;
    font-weight: 400;
    margin: 4px 0 0 !important;
}

/*  ---------- 4d. BẢNG THUỘC TÍNH VĂN BẢN: KẺ Ô CHO RÕ ----------
    User báo 2026-08-13 (*"phần ngày ban hành… kẻ bảng cho đẹp hơn"*). Thẻ đã mang sẵn lớp
    `table-bordered qitable qi-bang-thuoctinh` nhưng đo trên vỏ homemb2 ra `border: 0px none` — vỏ này
    không nạp bộ CSS định kiểu cho chúng, còn `qi-tokens.css` lại cố ý khai `border: 0 !important` cho
    mẫu bảng của vỏ kia.
    🔑 Thêm tiền tố `.qimb2-vo` để độ đặc hiệu (0,2,1) thắng luật (0,1,1) bên `qi-tokens.css`, và CHỈ
    ăn trong vỏ homemb2 — vỏ khác giữ nguyên kiểu cũ. */
.qimb2-vo table.qi-bang-thuoctinh {
    border: 1px solid #dfe3ea !important;
    border-radius: 6px;
    overflow: hidden;
    margin-bottom: 12px;
}

.qimb2-vo table.qi-bang-thuoctinh td {
    border: 1px solid #dfe3ea !important;
    padding: 10px 12px !important;
    vertical-align: top;
}

/* ---------- 3. Nút chung `.btnqi` ----------
   Lớp này được dùng ở rất nhiều trang trong (tìm kiếm, gửi câu hỏi, gửi kiến nghị, tra cứu…) nhưng
   màu của nó khai trong `qicolordefault*.css` — tệp mà vỏ này không nạp ⇒ nút thành chữ trơn.
   Viết 2 cấp `.btn.btnqi` (0,2,0) để thắng `.btn` của Bootstrap vốn nạp SAU (do trang tự nạp). */
.btn.btnqi {
    background: var(--mau-md, #0071a6);
    border-color: var(--mau-md, #0071a6);
    color: #fff;
    font-weight: 600;
}

.btn.btnqi:hover,
.btn.btnqi:focus { color: #fff; filter: brightness(.95); }

.btn.btnqi:active { filter: brightness(.9); }

/* ---------- 4. Bảng dữ liệu ----------
   Giữ NGUYÊN dạng bảng (các trang này là danh sách CHỮ, không có ảnh — bảng gọn và đọc tốt trên điện
   thoại; khác với danh sách tin có ảnh đã chuyển sang thẻ ở `qi-danhsach-mb.css`).
   Chỉ làm cho dễ đọc và cuộn ngang được khi nhiều cột. */
.table-responsive {
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;     /* cuộn hết bảng thì dừng, không kéo lây cả trang */
}

table.GridViewStyle2 {
    margin-bottom: 0;
    font-size: 14px;
}

table.GridViewStyle2 > thead > tr > th {
    padding: 10px 8px;
    background: #f3f4f6;
    border-bottom: 2px solid #e5e7eb;
    color: #111827;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;                /* tiêu đề cột không vỡ chữ khi bảng hẹp */
}

table.GridViewStyle2 > tbody > tr > td {
    padding: 10px 8px;
    border-color: #eef0f3;
    vertical-align: middle;
}

/*  Cột số thứ tự: đủ chỗ cho 3 chữ số, căn giữa (user đã chốt kiểu này ở trang Văn bản 2026-08-12). */
table.GridViewStyle2 > tbody > tr > td:first-child,
table.GridViewStyle2 > thead > tr > th:first-child {
    min-width: 3.2em;
    text-align: center;
    white-space: nowrap;
}

/*  BẢNG NHIỀU CỘT (từ 4 cột trở lên) — ví dụ /C3conglapmb.aspx: STT · Khu vực · Tên trường · Số tin bài.
    `.table` của Bootstrap là `width:100%` nên bảng TỰ BÓP vừa 375px thay vì tràn ra; hệ quả đo được:
    tiêu đề "Số tin bài" vỡ dọc thành từng chữ cái ("S ố t i n b à i") vì trang còn khai
    `.GridViewStyle2 * { white-space: normal !important }`.
    Cho bảng một bề rộng tối thiểu để nó TRÀN và cuộn ngang trong `.table-responsive` — đọc dễ hơn hẳn
    so với bốn cột chen nhau. Chỉ áp cho trang nào bọc lớp này, không đụng bảng 2 cột. */
.qi-bang-rong-mb2 .table-responsive > table { min-width: 540px; }

/*  Ô tiêu đề vẫn phải một dòng. Cần `!important` VÀ nhiều cấp chọn vì trang tự khai
    `.GridViewStyle2 * { white-space: normal !important }` — cùng có `!important` thì bên nào đặc hiệu
    hơn mới thắng. Không ép thì các cột khai `width:1%` (STT, Số tin bài) bóp lại và chữ vỡ dọc từng
    ký tự, kéo hàng tiêu đề cao ~150px. */
.qi-bang-rong-mb2 .table-responsive > table > thead > tr > th {
    min-width: 4.5em;
    white-space: nowrap !important;
}

/*  Liên kết trong bảng: bỏ gạch chân, chữ đậm vừa cho dễ bấm. */
table.GridViewStyle2 a {
    color: #191919;
    font-weight: 600;
    text-decoration: none !important;
}

table.GridViewStyle2 a:hover { color: var(--mau-md, #0071a6); }

/* ---------- 4b. CHÂN TRANG: chữ trắng trên nền màu đơn vị ----------
   User yêu cầu 2026-08-13: "chân trang nên để màu chữ trắng tương phản với màu xanh để khỏi bị chìm".

   🔑 Vì sao phải `!important`: nội dung chân trang là `FooterInfo` — HTML do chính đơn vị soạn bằng
   trình soạn thảo, màu ghim THẲNG vào thuộc tính `style` của từng thẻ
   (`style="color:#c00000"`, `#002060`). Chỉ `!important` mới thắng được kiểu nội tuyến.

   🔑 Vì sao ĐỒNG THỜI làm nền đậm hơn: đo tỉ lệ tương phản trên nền thật `rgb(56,176,0)` —
   tên trường (đỏ #c00000) **2,28**; địa chỉ/email (navy #002060) 5,36; dòng Copyright vốn ĐÃ trắng
   nhưng chỉ **2,85**. Tức là nền xanh này quá sáng, chữ trắng để nguyên còn khó đọc hơn màu navy cũ.
   Phủ thêm một lớp đen 28% (dùng `background-image` nên chồng lên MÀU NỀN sẵn có, không cần biết đơn
   vị đang đặt màu gì và không phụ thuộc `color-mix` của trình duyệt mới) ⇒ nền thành ~rgb(40,127,0),
   chữ trắng đạt **5,09** — vượt ngưỡng AA 4,5. Muốn giữ đúng sắc nền cũ thì bỏ khối `background-image`. */
.footer_mobile {
    background-image: linear-gradient(rgba(0, 0, 0, .28), rgba(0, 0, 0, .28));
}

.footer_mobile,
.footer_mobile * {
    color: #fff !important;
}

/*  Liên kết trong chân trang: giữ gạch chân để còn phân biệt được là bấm được, vì nay cùng màu chữ. */
.footer_mobile a { text-decoration: underline; }

/*  🔴 NỀN TRẮNG DÁN TỪ WORD (phát hiện 2026-08-14 ở `thptnamsaigon`): chân trang hiện ra HAI THANH
    TRẮNG rỗng. Đo `elementFromPoint`: đó là `<span style="…background-color: rgb(255,255,255)">` —
    nội dung `FooterInfo` biên tập viên dán từ Word nên mang theo nền trắng; luật 4b ở trên đã ép chữ
    thành TRẮNG ⇒ chữ trắng trên nền trắng = mất hẳn dòng thông tin (số điện thoại văn phòng).
    Khử nền nội tuyến trong phạm vi chân trang (kiểu nội tuyến không có `!important` nên luật này
    thắng), giữ nguyên nền màu của chính chân trang. */
.footer_mobile [style*="background"] {
    background-color: transparent !important;
    background-image: none !important;
}

/* ---------- 4c. KHỐI VIDEO LỚN: Ô TRẮNG RỖNG PHÍA TRÊN (user báo 2026-08-13) ----------
   `styles.css` khai `.big_item_video_mobile { width:100%; padding-top:57.14%; position:relative }` —
   đây là mẹo GIỮ KHUNG TỈ LỆ 16:9, và mẹo đó bắt buộc phần tử bên trong phải ĐỊNH VỊ TUYỆT ĐỐI để lấp
   đầy khung. Thẻ `video` in ra lại `position:static` nên nó nằm NGAY DƯỚI phần đệm: đo tại khổ 375px
   được ô trắng cao **199px** rồi mới tới video cao 196px (tổng 396px cho một video 1280x720).
   Cho video/iframe/ảnh lấp đúng khung tỉ lệ. `object-fit:contain` để không cắt mất mép khung hình.
   ⚠️ Cùng lớp này có ở `_MasterResponsive` (cũng nạp styles.css của tpthuduc) — nếu bản rp cũng dựng
   khối video lớn thì nên kiểm tương tự. */
.big_item_video_mobile > video,
.big_item_video_mobile > iframe,
.big_item_video_mobile > img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #000;                   /* viền đen quanh khung hình lệch tỉ lệ, gọn hơn nền trắng */
}

/* ---------- 4d. NÚT "ĐĂNG NHẬP" NỔI: HẠ XUỐNG GÓC DƯỚI (user chốt 2026-08-13) ----------
   `qiUserLogin.css` khai `.login-web { position:fixed; bottom:150px; right:20px; z-index:9000 }`.
   Ở khổ điện thoại, 150px tính từ đáy rơi đúng vào GIỮA vùng nội dung nên nút (90×34) đè lên bài viết
   và cả nút "Xem thêm" của các khối — đo được nó che `ARTICLE.item_inside_video`.

   ⚠️ Tệp `qiUserLogin.css` do `_MasterAll` nạp cho MỌI trang, MỌI đơn vị, cả bản máy tính (bản cũ
   `MasterAll.Master` cũng vậy) ⇒ TUYỆT ĐỐI KHÔNG sửa thẳng vào đó. Ghi đè ở đây, tệp chỉ được
   `_MasterMobile2` nạp, nên chỉ vỏ homemb2 đổi.

   🔑 PHẢI VIẾT `div.login-web` (0,1,1) chứ không phải `.login-web` (0,1,0): tệp này bị **gộp** vào một
   gói `/qi-css/<hash>.css` nằm TRƯỚC `qiUserLogin.css` trong `head`, mà cùng độ đặc hiệu thì tệp nạp
   SAU thắng ⇒ viết một cấp là không ăn (đã đo: `bottom` vẫn ra 150px). Thêm tên thẻ là đủ thắng mà
   không cần `!important`.

   `env(safe-area-inset-bottom)` để trên iPhone có thanh gạt dưới màn hình thì nút không bị khuất;
   trình duyệt không hiểu `env()` sẽ dùng dòng `bottom: 16px` ngay trên. */
div.login-web {
    bottom: 16px;
}

@supports (bottom: env(safe-area-inset-bottom)) {
    div.login-web {
        bottom: calc(16px + env(safe-area-inset-bottom));
    }
}

/* ---------- 5. Ô nhập trong các form tra cứu ---------- */
.qiContainer_border .form-control,
form .form-control {
    height: 42px;
    border-radius: 8px;
    font-size: 15px;
}

/*  Bộ lọc nhiều ô (Thủ tục hành chính có 5 ô): ở khổ điện thoại KHÔNG nhồi 3 ô một hàng — đo tại
    375px thì mỗi ô chỉ còn ~110px, nhãn "Thẩm quyền giải quyết" vỡ chữ và ô chọn bấm rất khó.
    Cho mỗi ô một hàng riêng; từ 576px trở lên (điện thoại nằm ngang, máy tính bảng) giữ như cũ.

    🔑 Hàng lọc dựng bằng `.d-flex` + tiện ích bề rộng `.w-25`/`.w-50` (KHÔNG phải lưới `.row/.col`),
    mà các tiện ích đó của Bootstrap đều mang `!important` ⇒ ở đây cũng phải `!important` mới thắng. */
@media (max-width: 575.98px) {
    .qi-loc-mb2 form > .d-flex { flex-wrap: wrap; }

    .qi-loc-mb2 form > .d-flex > .form-group {
        width: 100% !important;
        padding-right: 0 !important;
    }

    /*  Nút "Tìm kiếm" của bộ lọc: trải hết bề ngang cho dễ bấm, giống nút ở trang Tìm kiếm. */
    .qi-loc-mb2 form > div > .btn.btnqi {
        display: block;
        width: 100%;
        min-height: 46px;
        border-radius: 8px;
    }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   MỤC 9. BỘ CHUẨN CHO **VỎ MOBILE CHUNG** (`_MasterAllMobile`, khoá phạm vi `.snap-content`)
   ══════════════════════════════════════════════════════════════════════════════════════════════
   User chốt 2026-08-14: *"áp dụng các tiêu chuẩn tôi vừa chỉnh sửa ở trên với các trang
   hanoi.edu.vn, hcm.edu.vn, haiphong.edu.vn"*.

   🔴 HP và HCM khối trường chạy vỏ homemb2 nên đã ăn bộ chuẩn ở các mục trên, còn **Sở Hà Nội chạy
   vỏ chung** — đo ở khổ 440px (`/lienhemb.aspx`, `/co-cau-to-chuc/cctcmb/0` tenant hanoi):
     · tên chuyên mục ở **x = 0** (dính mép) thay vì 10px;
     · khay ngôn ngữ cách mép phải **5px** thay vì 10px;
     · nội dung ở **x = 15** — do chuỗi đệm `.container.px-4` (16px) → `.row.px-2` (8px, kèm lề âm
       −15px của Bootstrap 3) → `.col-sm-12.p-3` (16px) cộng dồn ra số lẻ.
   Ba mục dưới đây đưa vỏ chung về đúng cùng một bộ số với homemb2. CHỈ đụng chiều NGANG — giữ
   nguyên đệm trên/dưới để không xê dịch bố cục dọc của các trang đang chạy. */

/*  9a. LỀ NỘI DUNG ĐÚNG 10px — gỡ đệm ngang của hai lớp bọc ngoài, dồn hết vào lớp trong cùng. */
.snap-content > .container {
    padding-left: 0 !important;
    padding-right: 0 !important;
    max-width: 100% !important;
}

.snap-content > .container > .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.snap-content > .container > .row > [class*="col-"] {
    padding-left: 10px !important;
    padding-right: 10px !important;
}

/*  9b. DẢI TIÊU ĐỀ CHUẨN — dải này nằm NGOÀI `.container` (chèn qua `@section TopMobile`) nên không
    ăn đệm ở 9a, phải cho lề riêng. Tên chuyên mục thẳng mép TRÁI 10px, khay ngôn ngữ đẩy về CUỐI
    hàng và thẳng mép PHẢI 10px — đúng bộ số của homemb2. */
.snap-content > .d-flex {
    padding-left: 10px !important;
    padding-right: 10px !important;
    align-items: center;
}

.snap-content > .d-flex > .scrollmenu {
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-right: auto;
}

/*  Thẻ bọc khay ngôn ngữ thường mang `px-2` (8px) — đệm đó đẩy viên chọn vào 18px. Bỏ đệm PHẢI của
    phần tử cuối hàng để viên chọn thẳng đúng mép nội dung. */
.snap-content > .d-flex > *:last-child {
    padding-right: 0 !important;
}

.snap-content .qi-ngonngu,
.snap-content .qi-ngonngu--mb {
    margin-top: 5px;
    margin-bottom: 5px;
}

/*  9c. KIỂU CHỮ CỦA TÊN CHUYÊN MỤC — cùng luật với homemb2: đậm 700, màu đơn vị, không gạch chân,
    không dấu chấm đầu dòng (bộ CSS mobile chung vẽ nó như một liên kết xanh gạch chân). */
.snap-content .scrollmenu a,
.snap-content .scrollmenu > li,
.snap-content .scrollmenu > span,
.snap-content .scrollmenu .CatParent,
.snap-content .scrollmenu .CatParent a {
    color: var(--mau-md, #1565c0) !important;
    font-weight: 700;
    font-size: 16px !important;
    text-decoration: none !important;
}

.snap-content .scrollmenu,
.snap-content .scrollmenu > ul,
.snap-content .scrollmenu li {
    list-style: none !important;
    margin-bottom: 0;
    padding-left: 0;
}

/*  9d. BẢNG DANH SÁCH KHÔNG XUỐNG DÒNG ⇒ TRÀN NGANG (user báo 2026-08-14, ảnh hanoi.edu.vn:
    *"trang thông báo mb quá xấu đang bị vỡ giao diện"*, *"tương tự trang thư mời"*,
    *"trang hỏi đáp mb, nội dung hiển thị trên khổ màn hình, không scroll ngang"*).

    Đo trên `/Thongbaomb.aspx` khổ 440px: ô nội dung của bảng có `white-space: nowrap` (thẻ `tr` vẫn
    `normal`, tức luật rơi đúng vào ô) ⇒ tiêu đề "LỊCH CÔNG TÁC CỦA BAN GIÁM ĐỐC SỞ…" nằm trên MỘT
    dòng dài **975px** trong cột rộng 396px. Thêm `div.media-body` là `display:table-cell` của
    Bootstrap 3 — ô bảng không co lại theo khung cha, nên chữ chạy thẳng ra ngoài màn hình.
    Ép mọi ô trong bảng xuống dòng bình thường và cho khung nội dung co đúng bề ngang màn hình. */
.snap-content .table-responsive table {
    width: 100% !important;
    max-width: 100% !important;
}

.snap-content .table-responsive td,
.snap-content .table-responsive th,
.snap-content table.GridViewStyle2 td,
.snap-content table.GridViewStyle2 th {
    white-space: normal !important;
    word-break: break-word;
}

/*  `.media-body` của Bootstrap 3 là `display:table-cell` — ô bảng KHÔNG nhận `max-width`, nên dù đã
    cho ô cha xuống dòng thì nó vẫn tự nong ra bằng nội dung. Đổi sang khối thường. */
.snap-content .media-body {
    display: block !important;
    width: auto !important;
    min-width: 0;
    white-space: normal !important;
}

/*  9e. KHUNG BAO CỦA BẢNG CHUYÊN MỤC CON (user báo 2026-08-14: *"chuyên mục chưa có border bao
    ngoài"*, ảnh `/phong-ban-so/cmb/534`).
    Các luật vẽ Ô của bảng này (chia hai cột, vạch ngang/dọc, ô lẻ cuối chiếm trọn hàng) vốn đã khai
    TOÀN CỤC nên vỏ Hà Nội có sẵn; riêng KHUNG BAO NGOÀI lại khoá trong `.qimb2-vo` ⇒ bảng hiện ra
    trơ trọi, có kẻ ô mà không có viền quanh. Chép đúng bộ số của homemb2 sang vỏ chung. */
.snap-content .row.chuyenmucmobile {
    padding-left: 0 !important;
    padding-right: 0 !important;
    /*  ⚠️ LỀ NGANG = 0, KHÁC homemb2 (bên đó dùng `margin: 10px` đủ bốn phía). Ở vỏ chung, khung bảng
        nằm TRONG cột nội dung đã có đệm 10px của mục 9a ⇒ thêm lề 10px nữa là bảng lùi vào 20px
        (đã đo). Chỉ giữ 10px trên/dưới để tách bảng khỏi khối trước và sau. */
    margin: 10px 0 !important;
    border: 1px solid #dfe3ea;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

/*  9f. KHOẢNG CÁCH GIỮA HAI TIN (user báo 2026-08-14: *"khoảng cách tin chưa đúng 10px"*, ảnh cùng
    trang — dòng ngày tháng của tin trên dính sát vạch ngăn, hàng "Tải File đính kèm" chen chúc).
    Cùng ổ lỗi mục 9e: luật đệm 12px + vạch ngăn kẻ-cạnh-trên khoá trong `.qimb2-vo`.
    Kẻ vạch ở cạnh TRÊN của hàng đứng sau một hàng tin khác ⇒ không có vạch trước tin đầu, không có
    vạch sau tin cuối, và hai bên vạch cân nhau (12px dưới của tin trên + 12px trên của tin dưới). */
.snap-content .row.qibootomSpace {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
    /*  Khử lề dọc sẵn có của hàng tin: đo được hai hàng còn cách nhau THÊM 15px ngoài phần đệm, nên
        tổng khe lên tới 39px và vạch ngăn không nằm giữa hai tin. */
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.snap-content .row.qibootomSpace + .row.qibootomSpace {
    border-top: 1px solid #e3e7ee;
}

/*  9g. TÊN CHUYÊN MỤC PHẢI THẲNG HÀNG VỚI NỘI DUNG (user báo 2026-08-14, ảnh trang chuyên mục
    hanoi.edu.vn: *"tiêu đề chuyên mục chưa thẳng hàng với nội dung và tuân thủ cách mép 10px"*).

    Mục 9b đã kéo THẺ BỌC `.scrollmenu` về x = 10, nhưng CHỮ vẫn ra x = 21: bộ CSS mobile đời cũ khai
    `div.scrollmenu a { padding: 11px }` (và `.CatParent a { padding: 10px }`) — hồi đó dải này là một
    băng chuyên mục cuộn ngang, đệm để tách các mục và tạo vùng chạm. Nay dải chỉ còn MỘT tên (chốt
    2026-08-14) nên đệm trái chỉ còn tác dụng đẩy chữ lệch khỏi nội dung bên dưới.
    🔑🔑 **KHÔNG khử đệm của MỌI thẻ `a` trong `.scrollmenu`** — đã suýt mắc: TRANG CHỦ mobile cũng
    dùng đúng lớp `.scrollmenu` cho **băng chuyên mục cuộn ngang 17 mục**, mỗi mục dựa vào chính đệm
    11px đó để tách nhau; khử sạch là 17 mục dính liền thành một khối chữ.
    Chỉ nhắm hai dạng của DẢI TIÊU ĐỀ:
      · tên chuyên mục chuẩn `span.CatParent` (một mục duy nhất) ⇒ bỏ đệm hai bên;
      · đường dẫn nhiều mục ⇒ chỉ bỏ đệm TRÁI của mục ĐẦU, các mục sau giữ nguyên khoảng cách.
    Đệm dọc chuyển lên thẻ bao để dải cao y như cũ (vùng chạm) dù trang in tên bằng `span` hay `a`.
    📌 CHỈ khoá trong `.snap-content` (vỏ mobile chung). Vỏ homemb2 không dính lỗi này — đã đo tên
    chuyên mục ở đúng x=10 từ đợt 13/08 — nên không đụng vào để khỏi xê dịch 3 tenant đang chạy. */
.snap-content .scrollmenu .CatParent {
    display: inline-block;
    padding: 11px 0 !important;
}

.snap-content .scrollmenu .CatParent > a { padding: 0 !important; }

.snap-content .scrollmenu > li:first-child > a,
.snap-content .scrollmenu > a:first-child { padding-left: 0 !important; }

/*  9h. CHÂN TRANG NEO ĐÁY MÀN HÌNH KHI NỘI DUNG NGẮN (user báo 2026-08-14 trên `/thumoimb` —
    danh sách chỉ có 1 tin: chân trang kết thúc ở giữa màn hình, dưới nó là **215px trắng**).

    Vỏ mobile chung dựng khung cuộn `.snap-content` (Snap.js: `position:fixed; top:54px; bottom:0;
    overflow:auto`) — khung LUÔN cao bằng màn hình, còn nội dung thì xếp từ trên xuống nên trang ngắn
    để lộ khoảng trắng ở đáy. Cho khung xếp theo CỘT rồi để chân trang ăn hết phần dôi.
    🔑 `flex: 0 0 auto` cho các con là BẮT BUỘC: khung có chiều cao CỐ ĐỊNH, mà mặc định flex item được
    phép co (`flex-shrink: 1`) ⇒ trang dài sẽ bị NÉN nội dung thay vì cuộn. Đã đo trang dài
    (`/Thongbaomb`, 15 tin): chiều cao cuộn 3.698 → 3.708px, không mất dòng nào.
    🔑 `margin-top` phải kèm `!important`: `.qifootermobile` đang có `margin-top:-10px !important`. */
.snap-content {
    display: flex;
    flex-direction: column;
}

.snap-content > * { flex: 0 0 auto; }

.snap-content > .qifootermobile { margin-top: auto !important; }

/*  9i. TRANG CHI TIẾT TIN CỦA VỎ CHUNG — nội dung đang ở 20px thay vì 10px (user báo 2026-08-14 trên
    hanoi.edu.vn). ĐÚNG CÙNG LỖI đã chữa cho vỏ homemb2 ở "Bổ sung lần 4" mà chưa áp cho vỏ chung:
    `.col-sm-12.p-3` đã được mục 9a cho 10px, `.chititiettin` lại có `margin: 0 10px` của riêng nó ⇒
    cộng dồn. Khử lề riêng đó.
    🔑 Phải xử LUÔN `.row.qiboxtincungchuyenmuc` (lề âm −15px + đệm 15px): bỏ lề của `.chititiettin` mà
    quên hàng này thì nó thò ra x = −5 ⇒ tràn ngang. Khử cả lề âm LẪN đệm để khối tin liên quan thẳng
    đúng 10px với nội dung bài. */
.snap-content .chititiettin {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/*  🔑 Khử lề âm của MỌI `.row` trong bài: trước đây `.chititiettin` lùi vào 10px nên phần lề âm −15px
    của Bootstrap còn nằm trong màn hình; kéo bài về 10px mà quên bước này là các hàng ra x = −5 ⇒
    **tràn ngang 5px** (đã đo đúng 5px trước khi thêm). Bỏ lề âm thì phải bỏ luôn đệm 15px của cột,
    nếu không nội dung thụt vào 25px — đúng bài học "bù trừ" của vỏ homemb2. */
.snap-content .chititiettin .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.snap-content .chititiettin .row > [class*="col"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/*  HAI KHỐI CÓ NỀN MÀU — xử theo kiểu "dải tràn hai mép" (user báo 2026-08-14: *"background tin cùng
    chuyên mục làm cho chữ lại sát mép quá"*).
    `.qiboxtincungchuyenmuc` có nền xanh nhạt `#e9f3ff`, `.qi-nhom-ngaydoc` (ngày · lượt đọc · chia sẻ)
    có nền xám `#f3f3f4`. Nếu chỉ khử đệm thì CHỮ dán vào mép nền; nếu để nguyên đệm 15/20px thì chữ
    thụt vào 25–30px, lệch hẳn so với thân bài ở 10px.
    Cách dùng (user chốt 2026-08-14: *"cho cùng chiều rộng với thanh công cụ"*): hai khối nền thành
    THẺ rộng ĐÚNG bằng cột nội dung — mép 10px hai bên, y như thanh công cụ ngay dưới (x=10, w=382) —
    rồi cho đệm 10px BÊN TRONG để chữ không dán vào mép nền. Bo góc 6px cho ra dáng thẻ.
    (Đã thử phương án nền TRÀN hai mép: chữ thẳng 10px nhưng dải rộng hơn thanh công cụ ⇒ user loại.) */
.snap-content .row.qiboxtincungchuyenmuc,
.snap-content .chititiettin .qi-nhom-ngaydoc {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
    border-radius: 6px;
}

/*  9j. TIÊU ĐỀ "TIN CÙNG CHUYÊN MỤC" (user báo 2026-08-14: *"chữ tin cùng chuyên mục nhìn hơi xấu"*).
    Đo trên trang thật: **25px**, màu **#004580 cứng** (không theo màu đơn vị), chữ ở x=20 — trong khi
    tiêu đề khối chuẩn của bản điện thoại là 18px/600 màu `--mau-md` kèm vạch 2px (mục 1).
    Đưa về đúng bộ số đó, giữ nguyên vị trí và vạch dưới nên bố cục không xê dịch. */
.snap-content .qitieudetincungchuyenmuc,
.qimb2-vo .qitieudetincungchuyenmuc {
    margin: 15px 0 10px;
    padding: 0 0 8px;
    color: var(--mau-md, #1565c0) !important;
    font-size: 18px;
    font-weight: 600;
    line-height: 26px;
    border-bottom: 2px solid var(--mau-md, #1565c0);
}

/*  9k. VẠCH NGĂN GIỮA CÁC TIN TRONG KHỐI "TIN CÙNG CHUYÊN MỤC" (user báo 2026-08-14: *"chưa có phần
    phân tách giữa 2 tin"*). Đo trước: các mục cách nhau 30px (gap 10 + đệm 10+10) mà KHÔNG có vạch nào
    ⇒ nhìn như một khối chữ liền.
    Dùng đúng bộ số của danh sách tin chuẩn (mục 9f): đệm 12px hai bên một vạch 1px `#e3e7ee`, kẻ ở
    cạnh TRÊN nên không có vạch thừa trước tin đầu và sau tin cuối. Bỏ `gap` để hai bên vạch cân nhau. */
.snap-content .qiboxtincungchuyenmuc .item_hint {
    gap: 0 !important;
    border-top: 1px solid #e3e7ee;   /* tách tin ẢNH LỚN đứng đầu khỏi danh sách bên dưới */
}

.snap-content .qiboxtincungchuyenmuc .item_hint > li { padding: 12px 0 !important; }

.snap-content .qiboxtincungchuyenmuc .item_hint > li + li { border-top: 1px solid #e3e7ee; }

.snap-content .qiboxtincungchuyenmuc .big_item_news { padding-bottom: 12px; }

/*  9n. ĐỊA CHỈ DÀI TRONG BÀI LÀM TRANG KÉO NGANG (user báo 2026-08-14, ảnh trang chi tiết
    `/ctmb/54283/559636`: cả trang trượt sang phải, chữ bị cắt mất mép trái).
    Biên tập viên dán nguyên một liên kết Google Drive dài ~90 ký tự KHÔNG có dấu cách; trình duyệt
    không có chỗ ngắt nên kéo dài khung nội dung ra ngoài màn hình.
    Cho phép bẻ dòng GIỮA từ khi từ đó dài quá khổ — chỉ áp trong vùng nội dung bài, không đụng tiêu
    đề/menu. `overflow-wrap: anywhere` là chuẩn mới, `word-break: break-word` là đường lùi cho máy cũ. */
.qimb2-vo .content_page,
.qimb2-vo .qicontentdetail,
.qimb2-vo .chititiettin,
.snap-content .content_page,
.snap-content .qicontentdetail,
.snap-content .chititiettin {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/*  9l. THANH CÔNG CỤ ĐỌC BÀI — DỒN VỀ MỘT DÒNG (user chốt 2026-08-14: *"thanh công cụ sắp xếp các item
    trên cùng 1 dòng"*). Đo trước: thanh cao 77px vì hai nút TƯƠNG PHẢN (`#tuongphan`) xếp CHỒNG nhau —
    thẻ `span` bọc chúng là `inline` nên hai ảnh 31px xuống dòng trong bề rộng 70px.
    Cho `#tuongphan` thành hàng flex và cấm cả thanh xuống dòng; tổng bề rộng các nút ~231px, thừa chỗ
    trong 382px nên một dòng là đủ. */
.snap-content .action_bar_news .font-change,
.qimb2-vo .action_bar_news .font-change {
    flex-wrap: nowrap !important;
    align-items: center;
}

.snap-content .action_bar_news #tuongphan,
.qimb2-vo .action_bar_news #tuongphan {
    display: inline-flex;
    flex-wrap: nowrap;
    align-items: center;
}

/*  9m. TÁC GIẢ / NGUỒN TIN — cho nổi bật hơn trên điện thoại (user chốt 2026-08-14: *"tác giả, nguồn
    tin cho chữ nổi bật hơn, font lớn hơn trên mobile"*). Đo trước: 13px, 400, xám #333 — nhỏ hơn cả
    dòng ngày tháng, nằm lọt thỏm dưới bài. Nâng lên 15px, chữ đậm vừa, màu đậm hơn.
    📌 Nguồn tin thường là một địa chỉ dài ⇒ để 500 (không 600) và cho phép bẻ dòng. */
/*  🔑 Phải nhắm kèm `.p-2` (thẻ nào cũng mang lớp này): `qiStyleDetail(mobile).css` có luật
    `.p-2.qiauthor{font-size:13px}` — CÙNG độ đặc hiệu (0,2,0) với `.snap-content .qiauthor` mà lại nằm
    SAU trong thứ tự nạp nên thắng. Đo được: đậm/màu ăn ngay còn cỡ chữ vẫn 13px. */
.snap-content .p-2.qiauthor,
.snap-content .p-2.qinguontin,
.qimb2-vo .p-2.qiauthor,
.qimb2-vo .p-2.qinguontin {
    padding: 4px 0 !important;
    font-size: 15px;
    line-height: 22px;
    word-break: break-word;
}

.snap-content .qiauthor,
.qimb2-vo .qiauthor {
    color: #111827;
    font-weight: 600;
}

.snap-content .qinguontin,
.qimb2-vo .qinguontin {
    color: #1f2937;
    font-weight: 500;
}

/*  9o. DẢI NỀN CHO KHỐI TIN TIÊU ĐIỂM CỦA TRANG CHỦ `/homemb` (vỏ mobile chung)
    user chốt 2026-08-14: *"xem áp dụng cho cả khối tin tiêu điểm của homemb nhé"*.
    Khối tiêu điểm ở mẫu này là `.HomeTop` (5 tin ảnh lớn), sau đó mới tới các khối chuyên mục
    `.blockhomemobile` — các khối đó GIỮ NGUYÊN.
    Cùng công thức với mẫu Hà Nội và homemb2: kéo tràn hai mép rồi trả 10px đệm; màu lấy từ
    `--mau-md` của đơn vị trộn đen; dải chuyển sắc neo 520px từ đỉnh (khối cao ~2.200px, trải hết
    chiều đó thì nhìn phẳng lì); 16px cuối tan sang trắng để nối mượt khối kế tiếp.
    Hai dòng `background-*` đầu là đường lùi cho trình duyệt chưa hiểu `color-mix()`. */
.snap-content .HomeTop {
    margin-left: -10px !important;
    margin-right: -10px !important;
    padding: 12px 10px 14px !important;
    background-color: #123a63;
    background-image: linear-gradient(to bottom, #2273b8 0, #123a63 520px);
    background-color: color-mix(in srgb, var(--mau-md, #1a5f9e) 45%, #0b1b2e 55%);
    background-image:
        linear-gradient(to bottom,
            rgba(255, 255, 255, 0) 0,
            rgba(255, 255, 255, 0) calc(100% - 16px),
            #fff 100%),
        linear-gradient(to bottom,
            color-mix(in srgb, var(--mau-md, #1a5f9e) 82%, #000 18%) 0,
            color-mix(in srgb, var(--mau-md, #1a5f9e) 45%, #0b1b2e 55%) 520px);
}

.snap-content .HomeTop,
.snap-content .HomeTop a,
.snap-content .HomeTop h1,
.snap-content .HomeTop h2,
.snap-content .HomeTop h3,
.snap-content .HomeTop h4,
.snap-content .HomeTop h5 { color: #fff !important; }

.snap-content .HomeTop .time,
.snap-content .HomeTop .hour-zone,
.snap-content .HomeTop .qitime { color: #aeb4bb !important; }

.snap-content .HomeTop .top-review,
.snap-content .HomeTop .sapo,
.snap-content .HomeTop p { color: #d7dbe0 !important; }

/*  Vạch ngăn giữa các tin: màu xám sáng cũ biến mất trên nền tối. */
.snap-content .HomeTop .HomeTopMains,
.snap-content .HomeTop .border-bottom { border-color: rgba(255, 255, 255, .16) !important; }

/*  🔑 MÀU CHỮ TRONG DẢI — skin `qi-modern-mb.css` đặt màu RIÊNG cho từng thành phần, luật chung
    `.snap-content .HomeTop a` không với tới (đo được: tiêu đề `a.qitieudechinh` vẫn `rgb(26,35,48)`,
    tóm tắt xám `rgb(123,135,148)`, nhãn chuyên mục xanh `rgb(0,76,203)` — chìm hết trên nền tối).
    Nhắm đích danh từng lớp, thêm một cấp `.qi-modern-mb` cho đủ đặc hiệu. */
.snap-content .qi-modern-mb .HomeTop .qitieudechinh,
.snap-content .qi-modern-mb .HomeTop .news-item__titleTop,
.snap-content .qi-modern-mb .HomeTop .news-item__title,
.snap-content .qi-modern-mb .HomeTop .morecontent,
.snap-content .qi-modern-mb .HomeTop .morecontent span,
.snap-content .qi-modern-mb .HomeTop .shortcontent,
.snap-content .qi-modern-mb .HomeTop .sapo { color: #fff !important; }

/*  Nhãn chuyên mục: sáng lên cho nổi trên nền tối nhưng vẫn khác màu tiêu đề. */
.snap-content .qi-modern-mb .HomeTop .tenchuyenmucmobile { color: #9fd0ff !important; }

.snap-content .qi-modern-mb .HomeTop .time,
.snap-content .qi-modern-mb .HomeTop .qitime { color: #b9c2cc !important; }

/*  Ảnh trong dải: thẻ bọc `.qimargin15` có lề âm −15px (mẹo cho ảnh tràn mép của bản cũ, khi khối còn
    nằm trong cột có đệm 15px). Nay khối đã tự tràn hai mép nên lề âm đó đẩy ảnh ra **x = −5**, lệch so
    với chữ (10px). Khử để ảnh thẳng hàng với mọi thứ khác trong dải. */
.snap-content .HomeTop .qimargin15 {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/*  🔴 CHỮ CHÌM VÀO NỀN (user báo 2026-08-14, ảnh khoanh đỏ dòng tóm tắt + nhãn chuyên mục + ngày):
    skin của mẫu này đặt màu cho RẤT NHIỀU lớp con khác nhau, liệt kê từng lớp kiểu gì cũng sót.
    Dùng luật QUÉT SẠCH cho mọi thẻ trong dải rồi mở lại đúng hai ngoại lệ (nhãn chuyên mục sáng
    hơn, ngày xám nhạt) — cách này không thể sót lớp nào. */
.snap-content .HomeTop,
.snap-content .HomeTop * { color: #fff !important; }

.snap-content .HomeTop .tenchuyenmucmobile,
.snap-content .HomeTop .tenchuyenmuc { color: #9fd0ff !important; }

.snap-content .HomeTop .time,
.snap-content .HomeTop .qitime,
.snap-content .HomeTop .hour-zone { color: #c8d2dc !important; }

/*  🔴 "DẤU MÀU TRẮNG" LÀ GÌ (user hỏi 2026-08-14): đó là nút **"..." của `jquery.shorten.js`**
    (`a.morelink`) — skin cho nó `background: #fff`, mà luật quét sạch của tôi lại tô chữ thành trắng
    ⇒ chữ trắng trên nền trắng = một ô vuông trắng 13×18px. Trả nền trong suốt + màu sáng dễ thấy. */
.snap-content .HomeTop .morelink,
.snap-content .HomeTop .lesslink {
    background: none !important;
    color: #9fd0ff !important;
    text-decoration: none !important;
}

/*  🔴 NHÃN CHUYÊN MỤC + NGÀY VẪN "CHÌM": không phải do luật không ăn (đo được nhãn đã là `#9fd0ff`,
    ngày `#b9c2cc`) mà do **cùng tông xanh với nền** và cỡ chữ chỉ 11,5px. Đổi cách thể hiện: nhãn
    thành viên "chip" nền mờ chữ trắng — tách hẳn khỏi nền, đọc rõ ở cỡ chữ nhỏ; ngày sáng gần trắng. */
.snap-content .HomeTop .tenchuyenmucmobile,
.snap-content .HomeTop .tenchuyenmuc {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .18);
    color: #fff !important;
    font-weight: 600;
}

.snap-content .HomeTop .time,
.snap-content .HomeTop .qitime,
.snap-content .HomeTop .hour-zone { color: #e2e8f0 !important; }

/*  🖼️ ẢNH KHÔNG BỊ "CHÌM" VÀO NỀN (user hỏi 2026-08-14: *"làm thế nào để ảnh không bị chìm vào
    nền"*). Ảnh của các trường phần lớn là poster nền vàng/đỏ nhạt, đặt lên dải màu đậm cùng tông thì
    mép ảnh lẫn vào nền, không rõ đâu là khung ảnh.
    Cách chữa: viền sáng MỜ 1px ôm sát mép ảnh (tách khỏi nền dù nền màu gì) + bóng đổ nhẹ xuống dưới
    (tạo cảm giác ảnh nổi lên trên dải). Dùng `box-shadow` hai lớp nên KHÔNG chiếm thêm chỗ, bố cục
    và kích thước ảnh giữ nguyên từng pixel. */
.snap-content .HomeTop img {
    border-radius: 8px;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .3), 0 6px 16px rgba(0, 0, 0, .35);
}

/*  🔴 DÒNG CHỮ CHẠY PHẢI TƯƠNG PHẢN VỚI NỀN (user chốt 2026-08-14: *"màu chữ chạy tương phản với màu
    nền"*). Dải "Chào mừng…" nay lấy nền theo màu đơn vị (`--mau-md`) nên chữ phải trắng; nhưng nội
    dung dòng chạy là HTML do đơn vị tự soạn — nhiều nơi dán từ Word nên mang theo `color:#000` và
    `background:#fff` nội tuyến, đúng họ lỗi đã gặp ở chân trang (hai thanh trắng rỗng).
    Ép trắng + khử nền nội tuyến trong phạm vi dải này (kiểu nội tuyến không có `!important` nên luật
    này thắng). Áp cho CẢ hai vỏ điện thoại. */
.qimb2-vo .header_text_banner,
.qimb2-vo .header_text_banner *,
.snap-content .header_text_banner,
.snap-content .header_text_banner * {
    color: #fff !important;
}

.qimb2-vo .header_text_banner [style*="background"],
.snap-content .header_text_banner [style*="background"] {
    background-color: transparent !important;
    background-image: none !important;
}

/* /Scripts/texttoVoice/Texttovice.css */

/*.ArticleDetailControl {
    background: none repeat scroll 0 0 #ffffff;
    padding: 2px;
    margin-right: 15px;
    text-align: justify;
}*/

    .ArticleDetailControl .ArticleContent > table {
        margin: 0 !important;
        width: 100% !important;
    }

    .ArticleDetailControl .PostDate, .Poster {
        color: #424242;
        font: italic 12px arial;
        margin-bottom: 5px;
        text-align: right;
    }

    .ArticleDetailControl .ArticleHeader {
        color: #166eca;
        font: bold 14pt arial;
        text-align: justify;
        line-height: 25px;
    }

    .ArticleDetailControl .ArticleSummary {
        font: italic bold 10pt arial;
        margin: 20px 0;
        text-align: justify;
    }

    .ArticleDetailControl .ImgDetailImage {
        height: auto !important;
        margin-bottom: 20px;
        display: none;
        max-width: 450px !important;
        vertical-align: top;
        margin-left: auto;
        margin-right: auto;
    }

    .ArticleDetailControl .ArticleContent img {
        height: auto !important;
        max-width: 450px !important;
    }

    .ArticleDetailControl .ArticleContent {
        clear: both;
    }

    .ArticleDetailControl .EmptyNote {
        color: #ff6a00;
        font-size: 18px;
    }

    .ArticleDetailControl .UtilBar {
        padding: 20px 0;
        text-align: right;
    }

        .ArticleDetailControl .UtilBar .Print {
            background: url("/images/voice/print.png") no-repeat scroll center center rgba(0, 0, 0, 0);
            cursor: pointer;
            display: inline-block;
            height: 22px;
            margin-right: 10px;
            width: 22px;
        }

        .ArticleDetailControl .UtilBar .Email {
            background: url("/images/voice/email.png") no-repeat scroll center center rgba(0, 0, 0, 0);
            cursor: pointer;
            display: inline-block;
            height: 22px;
            width: 22px;
        }

    .ArticleDetailControl .UISocialShare .facebook, .likefacebook, .gplus, .twitter {
        float: left;
        margin: 10px 0;
    }

    .ArticleDetailControl .tool {
        height: 40px;
        background: #f3f3f4;
        text-align: right;
        display: flex;
        width: 100%;
        padding-top: 4px;
        cursor: pointer;
        justify-content: flex-end;
        align-items: center;
    }

        .ArticleDetailControl .tool a {
            text-decoration: none;
        }

        .ArticleDetailControl .tool1 span.line_height_increase {
            padding-right: 5px;
            background: url(/images/voice/line-height-increase.png) no-repeat 0 0;
            width: 31px;
            height: 31px;
            display: inline-block;
        }

        .ArticleDetailControl .tool1 span.line_height_decrease {
            background: url(/images/voice/line-height-decrease.png) no-repeat 0 0;
            width: 31px;
            height: 31px;
            display: inline-block;
        }

        .ArticleDetailControl .tool span.font_plus {
            background: url(/images/voice/up.png) no-repeat 0 0;
            width: 31px;
            height: 31px;
            display: inline-block;
            vertical-align: top;
        }

        .ArticleDetailControl .tool span.font_minus {
            background: url(/images/voice/down.png) no-repeat 0 0;
            width: 31px;
            height: 31px;
            display: inline-block;
            margin-right: 5px;
            vertical-align: top;
        }

#tangtuongphan {
    background: url(/images/voice/tangtuongphan.png) no-repeat 0 0;
    width: 31px;
    height: 31px;
    display: inline-block;
    margin-right: 5px;
    vertical-align: top;
}

#giamtuongphan {
    background: url(/images/voice/giamtuongphan.png) no-repeat 0 0;
    width: 31px;
    height: 31px;
    display: inline-block;
    margin-right: 5px;
    vertical-align: top;
}

.ArticleDetailControl .tool1 .print {
    background: url(/images/voice/p.png) no-repeat left top;
    width: 29px;
    height: 31px;
    display: inline-block;
    margin-right: 15px;
    vertical-align: top;
    line-height: 31px;
    font-size: 14px;
    font-weight: bold;
    color: #0051a0;
}

.ArticleDetailControl .tool1 .audio {
    background: url(/images/voice/audio2.png) no-repeat 0 0;
    width: 45px;
    border: none;
    margin-top: 5px;
    margin-left: 10px;
    cursor: pointer;
}
.ArticleDetailControl .tool1 .audiomute {
    background: url(/images/voice/audio_mute.png) no-repeat 0 0;
    width: 45px;
    border: none;
    margin-top: 5px;
    margin-left: 10px;
    cursor: pointer;
}


.ArticleDetailControl .tool input::after {
    content: ' ĂƒÆ’Ă†â€™Ăƒâ€ Ă¢â‚¬â„¢ĂƒÆ’Ă‚Â¢ĂƒÂ¢Ă¢â‚¬Å¡Ă‚Â¬Ăƒâ€¦Ă‚Â¾ĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚ÂĂƒÆ’Ă†â€™Ăƒâ€ Ă¢â‚¬â„¢ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Â¡ĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Â»ĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Âc bĂƒÆ’Ă†â€™Ăƒâ€ Ă¢â‚¬â„¢ĂƒÆ’Ă¢â‚¬Â ĂƒÂ¢Ă¢â€Â¬Ă¢â€Â¢ĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Â i viĂƒÆ’Ă†â€™Ăƒâ€ Ă¢â‚¬â„¢ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Â¡ĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚ÂºĂƒÆ’Ă†â€™ĂƒÂ¢Ă¢â€Â¬Ă…Â¡ĂƒÆ’Ă¢â‚¬Å¡Ăƒâ€Ă‚Â¿t ';
    font-weight: bold;
    color: #0051a0;
}
.action_bar_news {
    background: #f3f3f4;
    padding: 5px 20px;
    border-radius: 10px;
    text-align: center;
}
.action_button_change button {
    margin-right: 10px !important;
}

/* /App_Themes/all/allcss/qiStyleDetail.css */

#MainContent {
   
    padding-right: 5px;
}
.qitimedetail {
    color: #666;
    font-size: .875rem;
    line-height: 1rem;
    margin-bottom: 12px;
}
.qicontentdetail {
    text-align: initial !important;
}
.qisummarydetail {
    color: #444;
    font-weight: 600;
    font-size: 16px;
    line-height: 24px;
}
p.qitinlienquan_tieude {
    font-weight: 700;
    font-size: 1.25rem;
    line-height: 1.4375rem;
    color: #c02a29;
}
.qihome_tieudebg {
    background-image:none;
}
.qitinlienquan_tieudebg {
    padding: 5px;
    width: 100%;
}
h5.qititle {
    color: #1c1c1c;
    font-weight: 500;
    font-size: 15px;
    line-height: 26px;
}

p.qisummary {
    color: #333;
    font-weight: normal;
}
.qicontentdetail * {
    font-size: 17px;
    line-height: 26px;
    /*  font-family: initial;*/
    font-family: "Noto Serif",serif;
    color: #161616;
    max-width: 100% !important;
}
.qicontentdetail > img
{
    max-width:100%;
    padding:10px;
}
.qitieudechitiet {
    font-weight: 600;
    font-size: 24px;
    line-height: 36px;
}
.hienthixemtruoc {
    padding: 5px;
    text-align: center;
    background-color: #e5eecc;
    border: solid 1px #c3c3c3;
    font-weight: bold;
}

.noidungxemtruoc1 {
    margin-top: 10px;
}

.hienthixemtruoc:hover {
    cursor: zoom-in;
}

.noidungxemtruoc {
    display: none;
}

.anhnoidung {
    cursor: zoom-in;
    max-width: 100% !important;
    margin: 5px 0px;
    width: auto !important;
}

.ContentODM * {
    max-width: 1000px !important;
    overflow: auto;
    word-wrap: break-word;
}

/* Style the Image Used to Trigger the Modal */
#myImg {
    border-radius: 5px;
    cursor: pointer;
    transition: 0.3s;
}

    #myImg:hover {
        opacity: 0.7;
    }

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 10000; /* Sit on top */
    padding-top: 100px; /* Location of the box */
    margin-top: 10px;
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
}

/* Modal Content (Image) */
.modal-content {
    margin: auto;
    display: block;
    max-width: 100%;
}

/* Caption of Modal Image (Image Text) - Same Width as the Image */
#caption {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #ccc;
    padding: 10px 0;
    height: 150px;
}

/* Add Animation - Zoom in the Modal */
.modal-content, #caption {
    animation-name: zoom;
    animation-duration: 0.6s;
}

@keyframes zoom {
    from {
        transform: scale(0)
    }

    to {
        transform: scale(1)
    }
}

/* The Close Button */
.close {
    position: absolute;
    top: 20px;
    right: 20px;
    color: #fff !important;
    font-size: 80px;
    font-weight: bold;
    transition: 0.3s;
}

    .close:hover,
    .close:focus {
        color: #fff;
        text-decoration: none;
        cursor: pointer;
    }
.full-img {
    width: 100% !important;
}
/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px) {
    .modal-content {
        width: 100%;
    }
}
.chititiettin
{
    margin:10px;
}
.qitieudetincungchuyenmuc {
    color: #004580;
    font-size: 25px;
    margin-top: 15px;
    border-bottom: 2px solid;
    padding-bottom: 5px;
    font-weight:600;
}
p.qitinlienquan_tieude { 
    margin-top:10px;
    font-size: 21px;
    color: #004580;
}
.qibootomSpace {
    border-bottom: 1px solid #ddd;
    padding-bottom: 20px;
    margin-bottom: 10px;
}
.p-2.qiauthor {
    font-size: 13px;
}
.p-2.qinguontin {
    font-size: 13px;
}
.col.qibinhluan {
    padding: 10px;
}
.qibinhluan .btn-info {
    background-color: #004580 !important;
    padding: 6px 20px;
    border-radius: 5px;
}

.qibinhluan * {
    font-size:13px;
}

.item_hint2 li {
    padding: 10px 5px 5px 5px;
    width: 100%;
    border-bottom: 1px solid #E0E0E0;
}
.item_hint2 li:last-child {
  
    border-bottom: 0px solid #E0E0E0;
}
.item_hint li {
    padding: 10px 0px !important;
    width: 100%;
}