        /*
         * ============================================================
         *  TRANG TỔNG HỢP TIN TỨC  (/tat-ca-tin-tuc)
         * ============================================================
         *
         * Bốn ảnh dựng nên toàn bộ giao diện, đều nằm trong /images/image_ttgh:
         *
         *   bg_tong_hop_tin_tuc.png    1920x1980  phong cảnh, nền của cả mục
         *   bg-main-sub.png            1376x1587  khung giấy — bản PC
         *   bg-main-sub2.png           1402x2240  khung giấy — bản MOBILE
         *   title_tong_hop_tin_tuc.png 1009x339   biển tên đè lên mái ngói
         *
         * HAI ẢNH KHUNG, MỖI CỠ MÀN MỘT ẢNH:
         *   - PC giữ bg-main-sub.png (tỉ lệ 1376/1587 = 1.153) — tờ giấy ngang
         *     vừa phải, 12 tin mỗi trang lấp gần kín.
         *   - Mobile dùng bg-main-sub2.png (tỉ lệ 1402/2240 = 1.598, cao hơn
         *     38.5% ở cùng bề rộng) vì màn hẹp thì tờ giấy PC chỉ hiện được
         *     ~7 dòng rồi phải cuộn; khung cao hơn cho ~9 dòng.
         * Ảnh khung mobile cũng chính là ảnh trang chi tiết tin dùng ở mọi cỡ
         * màn (site-master.css).
         *
         * ĐỔI ẢNH LÀ PHẢI ĐỔI CẢ BỐN THỨ, không chỉ url: aspect-ratio, hệ số
         * width (ảnh/thân giấy), và bốn số inset của .news-content-main — tất
         * cả đều bám tỉ lệ ảnh. Bản mobile ghi đè đủ cả bốn ở khối
         * @media (max-width: 1024px) cuối file.
         *
         * SỐ ĐO HAI ẢNH (quét alpha + màu; bộ của bg-main-sub2 chép từ
         * site-master.css):
         *                              bg-main-sub      bg-main-sub2
         *   cả tấm ảnh                 1376x1587        1402x2240
         *   thân giấy (rộng)           1264px           1262px
         *   mái thò ra trái / phải     64 / 48px        76 / 64px
         *   lòng giấy (trong viền)     x 90..1290       x 90..1325
         *                              đáy y~1550       y 315..2210
         *
         * File này CHỈ dùng cho trang tổng hợp tin tức. Bản cũ mang theo cả
         * đống CSS chết (owl carousel, .page1..page5 của landing page, khối
         * .news-detail-* của trang chi tiết tin) đều đã comment hoặc không có
         * HTML tương ứng — bỏ hết, chỉ giữ những gì trang này thật sự dùng.
         *
         * Footer + side menu có CSS riêng ở /css/side-menu-footer.css.
         *
         * ---- ĐƠN VỊ: vì sao chữ bên trong khung dùng cqw chứ không phải vw --
         *
         * Bề rộng khung giấy KHÔNG còn tỉ lệ thẳng với bề rộng màn hình nữa
         * (xem công thức ở .news-wrap: có calc, có trần 1600px, có bậc 960px
         * dưới 1200px). Nếu chữ bên trong vẫn tính bằng vw thì màn càng rộng chữ càng
         * to trong khi khung đã đụng trần đứng yên — chữ phình ra khỏi khung.
         *
         * cqw = 1% bề rộng của .news-wrap (nhờ container-type: inline-size).
         * Mọi thứ bên trong vì thế luôn cân đúng theo khung, khung to nhỏ thế
         * nào chữ cũng theo đúng tỉ lệ đó.
         */

        @charset "UTF-8";

        /* Font của hàng tab, lấy giống chữ "Fanpage" bên side menu. Bên đó
           khai báo trong /css/side-menu-footer.css (trang này cũng nạp file
           ấy), nhưng khai báo lại ở đây cho file tự đứng được một mình —
           trùng @font-face cùng một URL thì trình duyệt gộp làm một, không
           tải hai lần. */
        @font-face {
            font-family: 'FzGameBrV2';
            src: url('/fonts/FzGameBrV2.ttf') format('truetype');
            font-weight: normal;
            font-style: normal;
            font-display: swap;
        }

        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body,
        html {
            color: #333;
            background: #272727;
            width: 100%;
            font-family: "Roboto", sans-serif;
            overflow-x: hidden;
            scroll-behavior: smooth;
        }

        /* Ẩn thanh cuộn trang cho gọn; danh sách tin bật lại riêng ở dưới. */
        ::-webkit-scrollbar {
            width: 0;
        }

        /* KHÔNG dùng transition: all — trang này đặt cỡ chữ bằng đơn vị
           container (cqw), mà Chrome 148 nội suy font-size theo cq unit bị
           kẹt ở 0px: toàn bộ tiêu đề tin, nút tab và nút phân trang biến mất.
           Liệt kê từng thuộc tính để font-size không nằm trong danh sách chuyển
           đổi. ĐỪNG ĐỔI LẠI THÀNH all. */
        a {
            text-decoration: none;
            display: block;
            transition: color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, transform 0.3s ease, filter 0.3s ease, opacity 0.3s ease;
        }

        .imgFull {
            display: block;
            width: 100%;
            height: auto;
        }

        .showOnMobile {
            display: none !important;
        }

        .showOnPc {
            display: block !important;
        }

        .header-mobile {
            display: none;
        }

        .menu-mobile {
            display: none;
        }

        /* ==================== PC BOTTOM NAVIGATION ====================
         *
         * Thanh nav dùng chung với layouts/site.blade.php: markup chép trong
         * blade, còn style thì KẾ THỪA THẲNG site-master.css (khối "STYLE CỦA
         * HEADER MENU (PC - bottom nav)") — file đó đã được nạp ở <head> ngay
         * TRƯỚC file này, không chép lại bộ số ở đây.
         *
         * Vì sao nạp được trước, xem chú thích ở <head> của
         * tong-hop-tin-tuc.blade.php.
         *
         * Chỗ chừa cho thanh nav (fixed nên không chiếm chỗ trong dòng chảy,
         * để nguyên là nó che mất dòng bản quyền cuối footer). 70px = 47px cao
         * thanh nav + 23px hở.
         *
         * Phải bọc .wrapper mới đủ mạnh: side-menu-footer.css nạp SAU file này
         * và đặt .footer { padding: 2.6vw 0 } — cùng độ ưu tiên thì file nạp
         * sau thắng, viết .footer trơn ở đây là bị nuốt.
         *
         * min-width: 1025px vì đúng khoảng đó thanh nav mới hiện (.showOnPc
         * tắt từ 1024px xuống); để ngoài media query thì mobile lãnh nguyên
         * 70px trắng thừa dưới chân trang.
         */
        @media (min-width: 1025px) {
            .wrapper .footer {
                padding-bottom: 70px;
            }
        }

        /* ==================== MỤC TIN TỨC ====================
         *
         * Nền phong cảnh để cover chứ không phải <img> trải hết bề rộng: chiều
         * cao mục do khung giấy quyết định (khung có tỉ lệ cố định, màn hẹp là
         * nó cao lên), mà ảnh nền thì tỉ lệ chết 1920x1980 — hai cái không bao
         * giờ khớp nhau. Dùng <img> thì màn hẹp khung giấy sẽ thò ra ngoài ảnh
         * nền; cover thì ảnh luôn phủ kín, chỉ bị cắt bớt rìa, đúng như bản
         * thiết kế (bản mẫu cũng là một khung cắt của ảnh gốc).
         */
        .page2-news {
            position: relative;
            width: 100%;
            overflow: hidden;
            padding: 8vw 0 12vw;
            background: url("/images/image_ttgh/bg_tong_hop_tin_tuc.webp") center top / cover no-repeat;
        }

        /*
         * BỀ RỘNG KHUNG GIẤY — canh THÂN GIẤY bằng đúng khung bài viết bên
         * trang chi tiết tin.
         *
         * Trước đây công thức này đặt lên .news-wrap, mà .news-wrap là TRỌN
         * TẤM ẢNH bg-main-sub.png (1376px) — trong đó mái ngói thò ra ngoài
         * thân giấy 64px bên trái, 48px bên phải, thân giấy thật chỉ rộng
         * 1264px. Bên chi tiết tin thì .r-posts (nhận công thức) LÀ thân giấy,
         * mái ngói thò ra ngoài bằng ::before có inset âm. Kết quả: cùng một
         * công thức nhưng tờ giấy bên này hẹp hơn bên kia 1264/1376 = 8.1%.
         *
         * Nay công thức tính cho THÂN GIẤY (--paper-w), rồi nhân ngược
         * 1376/1264 ra bề rộng cả tấm ảnh. Hai trang vì thế có tờ giấy rộng
         * y hệt nhau ở mọi cỡ màn. Bản mobile cũng theo đúng lối này, xem khối
         * @media (max-width: 1024px).
         *
         * --paper-w bám đúng bề rộng .r-posts bên trang chi tiết tin. Bên đó
         * .r-posts nằm TRONG .container, mà .container có padding ngang 15px
         * mỗi bên, nên thân giấy = bề rộng .container trừ 30px — đó là số 30px
         * trong công thức, không phải lề tự đặt.
         *
         * Bề rộng .container bên kia:
         *   - từ 1200px trở lên: site-master.css mở #mainContent > .container
         *     thành "khoảng giữa" .container (1140px) và .container-fluid,
         *     tức (1140px + bề rộng trang) / 2, trần 1600px cho màn siêu rộng
         *     kẻo dòng tin dài quá đọc mỏi mắt.
         *     Màn 1920 ra 1522px → thân giấy 1492px; màn 1366 ra 1245px → 1215px.
         *   - 1025–1199px: dưới ngưỡng đó bên kia là .container mặc định của
         *     Bootstrap, mức lg = 960px → thân giấy 930px.
         *   - từ 1024px trở xuống: khối @media (max-width: 1024px) cuối file
         *     ghi đè width bằng 92vw, không dùng công thức này.
         *
         * --paper-cap là trần calc(90.3859vw - 20px) chép nguyên từ .r-posts
         * bên site-master.css. Bên đó trần này sinh ra để footer không tụt
         * xuống dưới đáy ảnh nền background_ttgh.png; trang này nền khác nên
         * không cần, nhưng phải chép theo thì hai khung mới bằng nhau ở khoảng
         * 1025–1400px — đó chính là khoảng trần ăn, ví dụ màn 1280 trần cắt
         * xuống 1137px trong khi công thức trả 1173px.
         *
         * Đo thật ở 1030/1280/1366/1600/1920: cả tấm ảnh (kể cả mái ngói) vẫn
         * nằm gọn trong mục, không cắt mất chóp mái và không đẻ thanh cuộn
         * ngang. Nếu sau này nới trần lên thì .page2-news đã sẵn overflow:
         * hidden đỡ, mái chỉ bị cắt chứ không sinh thanh cuộn.
         *
         * aspect-ratio giữ đúng tỉ lệ ảnh gốc nên mái ngói không bao giờ méo.
         * container-type biến khung thành mốc cho đơn vị cqw của mọi thứ bên
         * trong (xem chú thích đầu file) — khung to lên bao nhiêu thì chữ và
         * mọi khoảng cách bên trong tự lớn theo đúng bấy nhiêu.
         */
        .page2-news .news-wrap {
            position: relative;
            --paper-cap: calc(90.3859vw - 20px);
            --paper-w: min(calc(960px - 30px), var(--paper-cap));
            width: calc(var(--paper-w) * 1376 / 1264);
            aspect-ratio: 1376 / 1587;
            margin: 0 auto;
            container-type: inline-size;
            background: url("/images/image_ttgh/bg-main-sub.webp") center center / 100% 100% no-repeat;
        }

        @media (min-width: 1200px) {
            .page2-news .news-wrap {
                --paper-w: min(calc(min(calc((1140px + 100%) / 2), 1600px) - 30px), var(--paper-cap));
            }
        }

        /* Biển tên đè lên mái ngói, chóp trang trí nhô lên trên nóc. */
        .page2-news .news-title-img {
            position: absolute;
            top: 1%;
            left: 50%;
            transform: translateX(-50%);
            width: 66%;
            height: auto;
            z-index: 3;
            pointer-events: none;
        }

        /*
         * Vùng chữ nằm gọn trong lòng khung giấy. Bốn số dưới đây đo theo mép
         * TRONG của đường viền vàng trên bg-main-sub.png (1376x1587: viền trái
         * ~x90, phải ~x1290, đáy ~y1550) và chừa chỗ phía trên cho mái + biển
         * tên. Muốn chữ rộng/hẹp hơn thì chỉnh left/right; muốn chữ bắt đầu
         * cao/thấp hơn thì chỉnh top.
         *
         * Bản mobile dùng ảnh khung KHÁC (bg-main-sub2, cao hơn) nên có bộ số
         * riêng ở khối @media (max-width: 1024px) — sửa bên này đừng quên bên
         * kia.
         */
        .page2-news .news-content-main {
            position: absolute;
            left: 8%;
            right: 8%;
            top: 23%;
            bottom: 4%;
            display: flex;
            flex-direction: column;
            z-index: 2;
        }

        /* ==================== Ô TÌM KIẾM ==================== */
        .page2-news .news-search-wrap {
            position: relative;
            flex: 0 0 auto;
            margin-bottom: 1.67cqw;
        }

        .page2-news .news-search-input {
            width: 100%;
            padding: 0.7cqw 3.2cqw 0.7cqw 1.2cqw;
            border: 1px solid rgba(139, 90, 43, 0.45);
            border-radius: 0.42cqw;
            font-family: inherit;
            font-size: 1.2cqw;
            color: #3a2a1c;
            background: rgba(255, 252, 245, 0.75);
            outline: none;
            transition: border-color 0.3s;
        }

        .page2-news .news-search-input::placeholder {
            color: #a08b74;
        }

        .page2-news .news-search-input:focus {
            border-color: #8d1b1b;
            background: rgba(255, 253, 249, 0.95);
        }

        /* Tu <span> trang tri thanh <button> gui form: bo pointer-events: none
           va xoa nen/vien mac dinh cua nut. */
        .page2-news .news-search-icon {
            position: absolute;
            right: 1.1cqw;
            top: 50%;
            transform: translateY(-50%);
            padding: 0;
            border: none;
            background: none;
            color: #8d1b1b;
            font-family: inherit;
            font-size: 1.2cqw;
            line-height: 1;
            cursor: pointer;
            transition: color 0.2s ease, filter 0.2s ease;
        }

        .page2-news .news-search-icon:hover {
            filter: brightness(1.25);
        }

        /* ==================== HÀNG TAB ====================
         *
         * Dải nền để hàng tab tách hẳn khỏi danh sách tin bên dưới.
         *
         * Màu lấy đúng bộ đang dùng cả trang, không thêm màu mới:
         *   rgba(139, 90, 43, x) = #8b5a2b, sắc gỗ đã dùng cho viền ô tìm
         *   kiếm và thanh cuốn; phủ lên mặt giấy (≈ rgb(241,228,209)) ra
         *   nâu nhạt ăn nhập với giấy chứ không đục như nền đặc.
         *
         * Chuyển sáng → tối từ trên xuống + viền dưới đậm hơn ba cạnh
         * kia (0.5 so với 0.3) cho cả dải trông như lõm xuống mặt giấy, và
         * để đường phân cách với danh sách rõ hơn đường viền thường.
         *
         * padding ngang 1.2cqw: bản PC sáu tab chỉ chiếm 48/84cqw nên dải còn
         * rất rộng tay cho space-around (xem justify-content bên dưới); bản
         * mobile grid 3 cột mỗi cột hụt 0.8cqw, nhãn dài nhất "HƯỚNG DẪN" vẫn
         * còn thừa ~6.4cqw trong ô.
         */
        .page2-news .news-tabs-nav {
            flex: 0 0 auto;
            display: flex;
            /* Biển nay nhỏ (8cqw x 6 = 48cqw trong 81.6cqw lòng dải) nên
               space-between rải chúng ra tận hai mép, nhìn rời rạc.
               space-around chia phần dư (81.6 lòng dải − 48 sáu ô − 11 năm
               khe gap = 22.6cqw) thành sáu suất 3.77cqw đặt quanh mỗi ô, nên
               hai mép chỉ được nửa suất còn giữa hai ô thì cộng hai nửa suất
               lại rồi cộng thêm gap. Đo thật: mép 1.94cqw, giữa 5.94cqw. */
            justify-content: space-around;
            align-items: center;
            gap: 2.2cqw;
            margin-bottom: 2cqw;
            padding: 0.5cqw 1.2cqw;
            border: 1px solid rgba(139, 90, 43, 0.3);
            border-bottom-color: rgba(139, 90, 43, 0.5);
            border-radius: 0.5cqw;
            background: linear-gradient(180deg, rgba(255, 250, 240, 0.6) 0%, rgba(139, 90, 43, 0.16) 100%);
            /* Sợi sáng sát mép trên, làm dải nổi khối thay vì phẳng lì. */
            box-shadow: inset 0 1px 0 rgba(255, 253, 246, 0.75);
        }

        /*
         * TÊN ẢNH NGƯỢC VỚI CÔNG DỤNG — đọc kỹ trước khi đổi:
         *   block-news/bg-tab-active.webp  (96x40)  = tấm biển GỖ NÂU, trơn
         *                                             -> tab CHƯA chọn
         *   image_ttgh/bg_button_tin_tuc.webp (99x43) = biển ĐỎ SON, hoa văn
         *                                             -> tab ĐANG chọn
         * Đây đúng là cách landing-page.css đang dùng cặp ảnh này ở khối tin
         * trang chủ (.menu-item / .menu-item.active), giữ nguyên cho hai trang
         * nhìn cùng một bộ.
         *
         * flex đổi 0 0 auto -> 0 0 11.6cqw: nay tab nào cũng đắp biển nên nhãn
         * dài ngắn khác nhau sẽ ra sáu tấm biển to nhỏ khác nhau, nhìn rời
         * rạc — phải cho sáu ô cùng một cỡ, đúng lý do bản mobile bên dưới
         * chọn grid cột đều thay vì flex-wrap.
         *
         * Bề ngang CỐ ĐỊNH 8cqw, BÁM SÁT KHỔ GỐC 96x40 CỦA ẢNH — chữ phải
         * nhường chỗ cho ảnh chứ không ngược lại.
         *
         * Không đặt đúng 96px được: đơn vị trong khung là cqw nên khổ px của
         * biển đổi theo bề ngang .news-wrap (1458.7px ở màn 1600, 1632.9px ở
         * màn 1920 — xem công thức --paper-w), mà 96px lại là số cứng. Vả lại
         * nhãn dài nhất "HƯỚNG DẪN" không nhét vừa 96px trừ hai góc hoa văn
         * trừ khi hạ chữ xuống ~10px, lúc ấy dấu thanh tiếng Việt nát.
         *
         * 8cqw là mức sát khổ gốc nhất mà chữ còn đọc được:
         *              biển       so với ảnh gốc   chữ 0.85cqw
         *   màn 1600   117x49px       1.22 lần        12.4px
         *   màn 1920   131x54px       1.36 lần        13.9px
         * Chữ dài nhất chiếm 5.83cqw (màn 1600) / 6.12cqw (màn 1920), chừa
         * hơn 0.94cqw mỗi bên trong khi hai góc hoa văn chỉ chiếm ~0.8cqw.
         *
         * Muốn nhỏ nữa thì phải hạ chữ dưới 0.85cqw (12.4px ở màn 1600) —
         * xuống nữa là dấu mũ/dấu thanh của "HƯỚNG DẪN" dính vào nhau.
         *
         * Sáu ô nay chỉ chiếm 48cqw trong 81.6cqw lòng dải; space-between sẽ
         * rải thành năm khe 6.7cqw, biển rời rạc như bị văng ra hai mép. Nên
         * .news-tabs-nav đổi sang justify-content: space-around + gap 2.2cqw.
         *
         * border-radius về 0 (cả hai trạng thái): bo góc thì hai góc hoa văn
         * của biển bị cắt cụt.
         */
        .page2-news .news-tab-item {
            /* Tab nay la <a> chu khong con la <button> (phan trang chuyen sang
               may chu, xem tong-hop-tin-tuc.blade.php). <button> duoc trinh
               duyet tu can giua chu, <a> thi khong — phai tu bat flex, khong
               thi nhan don ve sat le trai tam bien. */
            display: flex;
            align-items: center;
            justify-content: center;
            flex: 0 0 8cqw;
            /* min-width: auto của flex item = bề ngang min-content, mà chữ để
               nowrap nên nhãn dài nhất cộng đệm ngang có thể vượt 8cqw và kéo
               ô rộng ra, phá mất "sáu ô một cỡ". Ép về 0 cho chắc. */
            min-width: 0;
            background: url("/images/block-news/bg-tab-active.webp") center center / 100% 100% no-repeat;
            border: 1px solid transparent;
            border-radius: 0;
            /* Giống chữ "Fanpage" bên side menu (side-menu-footer.css). */
            font-family: 'FzGameBrV2', sans-serif;
            /* 0.85cqw là cỡ chữ lớn nhất còn nhét vừa tấm biển 8cqw (xem bảng
               đo ở chú thích trên). Nhỏ hơn nữa thì biển sát khổ gốc hơn nhưng
               dấu thanh tiếng Việt bắt đầu dính. */
            font-size: 0.85cqw;
            font-weight: 500;
            letter-spacing: 0.5px;
            /* Nâu #6b4630 của bản cũ là chữ đặt thẳng trên nền giấy sáng; nay
               chữ nằm trên biển gỗ nâu nên phải đảo sang màu kem + đổ bóng
               tối, giống hệt tab chưa chọn ở khối tin trang chủ. */
            color: #efe6d6;
            text-shadow: 0 0.05cqw 0.12cqw rgba(0, 0, 0, 0.75);
            text-transform: uppercase;
            white-space: nowrap;
            cursor: pointer;
            /* padding ngang rộng tay để chữ của tab đang chọn không đè lên hai
               góc hoa văn vàng của bg_button_tin_tuc.png (hoa văn chiếm chừng
               10% bề ngang ảnh mỗi bên). Đặt ở đây chứ không đặt riêng cho
               .active, vì chỉ nới lúc active thì mỗi lần đổi tab cả hàng lại
               xê dịch.

               padding DỌC cũng phải nới theo cỡ chữ: biển kéo giãn vừa ô, ô
               càng bè ngang thì hoa văn càng bị kéo dẹt.

               Ô nay rộng cứng 8cqw chứ không co theo chữ nữa, nên phải cao
               8 / 2.4 = 3.33cqw mới giữ được tỉ lệ 2.4 của ảnh gốc (96x40).
               Trừ thân chữ 0.85 x 1.5 = 1.275cqw và 2px viền (0.13cqw) thì
               mỗi bên còn (3.33 − 1.275 − 0.13) / 2 = 0.96cqw. */
            padding: 0.96cqw 0.6cqw;
            transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, transform 0.25s ease, filter 0.25s ease, opacity 0.25s ease;
        }

        /* Đỏ #a61d24 cũ nay chìm nghỉm vào biển gỗ nâu — hover chuyển thành
           chữ sáng lên kèm rọi nhẹ cả tấm biển. */
        .page2-news .news-tab-item:hover:not(.active) {
            color: #fff6da;
            filter: brightness(1.15);
        }

        /* Tab đang chọn: biển đỏ bg_button_tin_tuc.webp (99x43) kéo giãn vừa ô. */
        .page2-news .news-tab-item.active {
            color: #f3e491;
            font-weight: 700;
            border-color: transparent;
            background: url("/images/image_ttgh/bg_button_tin_tuc.webp") center center / 100% 100% no-repeat;
        }

        /* ==================== DANH SÁCH TIN ==================== */
        .page2-news .news-list-scroll {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            padding-right: 0.83cqw;
        }

        .page2-news .news-list-scroll::-webkit-scrollbar {
            width: 0.53cqw;
            display: block;
        }

        .page2-news .news-list-scroll::-webkit-scrollbar-track {
            background: rgba(139, 90, 43, 0.12);
            border-radius: 0.27cqw;
        }

        .page2-news .news-list-scroll::-webkit-scrollbar-thumb {
            background: rgba(139, 90, 43, 0.5);
            border-radius: 0.27cqw;
        }

        .page2-news .news-pane {
            display: none;
        }

        .page2-news .news-pane.active {
            display: block;
            animation: fadeInNews 0.4s ease forwards;
        }

        .page2-news .news-items-ul {
            list-style: none;
        }

        /*
         * Viên kim cương đầu dòng.
         *
         * KHÔNG phóng to chữ cho đầy khung — cỡ chữ giữ ở mức đọc bình thường
         * (~20px). padding dọc 1.26cqw là mức giãn cách đọc dễ, KHÔNG phải số
         * canh cho đầy tờ giấy.
         *
         * Từ khi khung đổi sang bg-main-sub2.png (cao thêm 38.5%), 12 tin của
         * một trang (ITEMS_PER_PAGE trong tong-hop-tin-tuc.js) chỉ lấp hơn nửa
         * vùng danh sách — đo thật: dư 628px ở màn 1366, 784px ở màn 1920. Đây
         * là CHỦ Ý, không phải lỗi: giữ 12 tin và giữ giãn cách, phần dưới tờ
         * giấy để trống. Muốn lấp kín thì có hai lối — nâng ITEMS_PER_PAGE lên
         * 20 (vùng danh sách chứa đúng 20.3 dòng ở cả 1366 lẫn 1920), hoặc nâng
         * padding này lên 3.2cqw.
         *
         * Hàng phân trang vì thế nằm tách hẳn dưới đáy giấy: .news-list-scroll
         * là flex: 1 1 auto nên nó chiếm hết chỗ dư, đẩy hàng phân trang xuống
         * sát đáy.
         *
         * Nếu sau này chỉnh lại cho đầy khung thì nhớ: số này ăn theo chiều cao
         * hàng tab ở trên (phóng to chữ/biển gỗ của tab là vùng danh sách hụt
         * đi đúng chừng ấy), và phải lấy theo màn CHẬT nhất (1366) chứ không
         * theo 1920 — ô tìm kiếm có viền 1px cố định không co theo cqw, màn
         * càng nhỏ thì phần cứng ấy càng ăn nhiều chỗ tương đối.
         */
        .page2-news .news-li {
            position: relative;
            /* padding trái 3.2cqw (cũ 2.5): dịch cả dòng sang phải cho đỡ sát
               viền khung. Khoảng viên kim cương → chữ giữ nguyên 1.55cqw
               (3.2 − 1.1 − 0.55), đổi padding thì phải đổi left của ::before
               theo đúng chừng ấy. */
            padding: 1.26cqw 7.4cqw 1.26cqw 3.2cqw;
        }

        /*
         * Nút xem bài ở cuối dòng (ảnh view-plus.webp, khổ gốc 59x60).
         *
         * Đặt tuyệt đối chứ không cho .news-li thành flex row: cả khối tiêu đề
         * + ngày đang là dòng chảy thường, đổi sang flex là phải tính lại
         * ::before (viên kim cương) và cách tiêu đề xuống dòng thứ hai.
         *
         * top = padding-top + (chiều cao DÒNG tiêu đề − cạnh nút) / 2
         *     = 1.26 + (1.3 x 1.35 − 1.5) / 2 = 1.39cqw
         * tức tâm nút trùng tâm dòng tiêu đề, đúng mốc mà ::before đang dùng.
         * ĐỔI CỠ CHỮ, line-height HAY CỠ NÚT THÌ TÍNH LẠI.
         *
         * right 5.3cqw — KHÔNG ĐƯỢC HẠ XUỐNG SÁT MÉP, nút sẽ chui vào gầm
         * .side-menu. Dải nút bên phải là position: fixed, rộng 13.9583vw,
         * nên mép trái của nó nằm ở 0.860417 x bề rộng màn, trong khi mép phải
         * .news-content-main ở vw/2 + 0.42 x .news-wrap — hai đường ấy cắt
         * nhau, dải nút ĂN VÀO tờ giấy ở mọi màn dưới ~1850px:
         *
         *     màn   1025  1200  1366  1440  1600  1800  1920
         *     đè    4.56  4.68  4.77  4.16  2.47  0.61  -0.38  (cqw)
         *
         * (Chuyện dải nút đè lên giấy đã có từ trước — ở màn hẹp nó che cả tab
         * "TIÊU ĐIỂM" — nhưng che mất một tấm biển trang trí thì khác che mất
         * một cái nút bấm được.)
         *
         * Nặng nhất là 4.77cqw ở màn 1366, cộng 0.5cqw hở ra 5.3cqw. Chỉ tốn
         * chỗ trên giấy chứ không xê dịch gì khác vì tiêu đề tin đều ngắn.
         *
         * Bản mobile lấy lại 2.2cqw ở khối @media cuối file: .side-menu bị tắt
         * hẳn từ 1024px xuống nên không còn gì để tránh.
         *
         * padding phải của .news-li vì thế phải nâng 1 -> 7.4cqw
         * (5.3 + 1.5 nút + 0.6 hở) để tiêu đề dài không chui xuống dưới nút.
         */
        /* Dong bao "chua co bai" / "tim khong ra" khong phai mot tin: bo vien
           kim cuong dau dong va tra lai le phai (khong co nut view-plus). */
        .page2-news .news-li-trong {
            padding-right: 3.2cqw;
            color: #6b5a4a;
            font-style: italic;
        }

        .page2-news .news-li-trong::before {
            display: none;
        }

        .page2-news .news-li .news-plus {
            position: absolute;
            right: 5.3cqw;
            top: 1.39cqw;
            width: 1.5cqw;
            line-height: 0;
        }

        .page2-news .news-li .news-plus img {
            display: block;
            width: 100%;
            height: auto;
        }

        .page2-news .news-li .news-plus:hover {
            transform: scale(1.15);
            filter: brightness(1.15);
        }

        /*
         * top = padding-top + (chiều cao DÒNG chữ − cạnh viên) / 2
         *     = 1.26 + (1.3 x 1.35 − 0.55) / 2 = 1.86cqw
         * tức tâm viên kim cương trùng tâm dòng tiêu đề (không phải tâm cả
         * khối tiêu đề + ngày — để tiêu đề xuống hai dòng thì viên vẫn
         * đứng yên ở dòng đầu). ĐỔI CỠ CHỮ HAY line-height THÌ TÍNH LẠI.
         */
        .page2-news .news-li::before {
            content: "";
            position: absolute;
            left: 1.1cqw;
            top: 1.86cqw;
            width: 0.55cqw;
            height: 0.55cqw;
            background: #7a1a12;
            transform: rotate(45deg);
        }

        .page2-news .news-li .news-link {
            font-size: 1.3cqw;
            color: #2b1d14;
            line-height: 1.35;
        }

        .page2-news .news-li .news-link:hover {
            color: #a61d24;
            transform: none !important;
            filter: none !important;
        }

        .page2-news .news-li .news-time {
            display: block;
            margin-top: 0.25cqw;
            font-size: 0.9cqw;
            color: #8a7a6d;
        }

        @keyframes fadeInNews {
            from {
                opacity: 0;
                transform: translateY(10px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        /* ==================== PHÂN TRANG ====================
         *
         * JS (tong-hop-tin-tuc.js) dựng ra: [prev] [số...] [next]. Tất cả đều
         * mang class .pg-btn, riêng hai mũi tên có thêm .pg-prev / .pg-next,
         * dấu ... là .pg-ellipsis.
         *
         * BẢN .webp ĐÃ CẮT HẾT LỀ TRONG SUỐT của bản .png — bắt buộc, đừng
         * thay lại bằng .png. Mấy tấm .png gốc có viền rỗng lệch (active thừa
         * 4px bên phải + 3px dưới, next thừa 2px phải, prev thừa 2px trái,
         * truncase thừa cả bốn phía). Ảnh kéo cho vừa ô thì phần rỗng ấy cũng
         * bị kéo theo, đẩy hình vẽ lệch khỏi tâm ô, trong khi con số lại căn
         * giữa ô -> số nằm lệch trong khung. Cắt xong thì tâm hình = tâm ô,
         * số tự vào giữa.
         *
         * Khổ ảnh SAU KHI CẮT (số dùng cho mọi phép tính bên dưới):
         *   pagination_active.webp    58 x 66   trang đang xem
         *   pagination-nomal.webp     53 x 59   trang thường
         *   pagination_prev.webp      55 x 59   mũi tên lùi
         *   pagination_next.webp      60 x 59   mũi tên tiến
         *   pagination_truncase.webp  32 x 10   dấu ...
         * (scripts/cat-le-pagination.py sinh ra từ .png, chạy lại được.)
         *
         * MỌI Ô ĐỀU MỘT CỠ, lấy theo bề rộng lớn nhất (next 60) và chiều cao
         * lớn nhất (active 66), rồi ảnh nhỏ hơn thì thu background-size lại
         * cho đúng khổ của nó và canh giữa ô. Làm vậy vì tấm active cao hơn
         * tấm thường 12%: nếu để ô co theo ảnh thì mỗi lần đổi trang cả hàng
         * lại xê dịch.
         *
         *   active 58/60 = 96.67% | 66/66 = 100%
         *   nomal  53/60 = 88.33% | 59/66 = 89.39%
         *   prev   55/60 = 91.67% | 59/66 = 89.39%
         *   next   60/60 = 100%   | 59/66 = 89.39%
         *
         * Chiều cao ô 3.1cqw (≈47px ở khung PC 1522px) -> bề rộng ô
         * 3.1 x 60/66 = 2.82cqw. Chín nút + dấu ... chiếm chừng 460px, thừa
         * chỗ trong dải 1522px.
         *
         * Nhãn của hai mũi tên (&#10094; / &#10095;) và ba chấm của
         * .pg-ellipsis bị tắt bằng font-size: 0 — hình vẽ đã có sẵn trong ảnh,
         * để chữ lại là chồng hai lớp mũi tên.
         */
        .page2-news .news-pagination-wrap {
            flex: 0 0 auto;
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 0.58cqw;
            flex-wrap: wrap;
            margin-top: 1.67cqw;
        }

        .page2-news .news-pagination-wrap .pg-btn {
            flex: 0 0 auto;
            width: 2.82cqw;
            height: 3.1cqw;
            padding: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border: none;
            border-radius: 0;
            background: url("/images/pagination/pagination-nomal.webp") center center / 88.33% 89.39% no-repeat;
            /* Nâu sẫm cho ăn với ô giấy kem của pagination-nomal, thêm sợi
               sáng phía dưới cho chữ nổi khỏi vân giấy. */
            color: #5a3312;
            text-shadow: 0 0.05cqw 0.1cqw rgba(255, 250, 235, 0.7);
            font-family: inherit;
            font-size: 1.25cqw;
            font-weight: 700;
            line-height: 1;
            cursor: pointer;
            transition: color 0.2s ease, transform 0.2s ease, filter 0.2s ease, opacity 0.2s ease;
        }

        .page2-news .news-pagination-wrap .pg-btn:hover {
            /* Ảnh nền không đổi lúc hover, chỉ rọi sáng lên; chặn luôn
               transform: scale(1.05) mà site-master đặt cho mọi nút. */
            filter: brightness(1.12);
            transform: none !important;
        }

        /* Trang đang xem: biển đỏ, cao hơn tấm thường 12% (ảnh 58x66). */
        .page2-news .news-pagination-wrap .pg-btn.active {
            background-image: url("/images/pagination/pagination_active.webp");
            background-size: 96.67% 100%;
            color: #ffeec2;
            font-size: 1.45cqw;
            text-shadow: 0 0.05cqw 0.12cqw rgba(0, 0, 0, 0.75);
            pointer-events: none;
        }

        /*
         * Hai mũi tên: hình đã vẽ sẵn trong ảnh nên tắt nhãn &#10094;/&#10095;
         * bằng font-size: 0.
         */
        .page2-news .news-pagination-wrap .pg-btn.pg-prev,
        .page2-news .news-pagination-wrap .pg-btn.pg-next {
            font-size: 0;
        }

        .page2-news .news-pagination-wrap .pg-btn.pg-prev {
            background-image: url("/images/pagination/pagination_prev.webp");
            background-size: 91.67% 89.39%;
        }

        .page2-news .news-pagination-wrap .pg-btn.pg-next {
            background-image: url("/images/pagination/pagination_next.webp");
            background-size: 100% 89.39%;
        }

        /* Hết trang đầu/cuối: giữ nguyên ảnh, chỉ làm nhạt và tắt bấm — đổi
           hẳn ảnh khác thì hàng nút nhấp nháy mỗi lần sang trang. */
        .page2-news .news-pagination-wrap .pg-btn.disabled {
            opacity: 0.4;
            filter: grayscale(0.5);
            pointer-events: none;
        }

        /* Ba chấm: dùng ảnh pagination_truncase (32x10 sau khi cắt lề, tỉ lệ
           3.2) thay cho ký tự "...", nên nhãn cũng tắt bằng font-size: 0. */
        .page2-news .news-pagination-wrap .pg-ellipsis {
            flex: 0 0 auto;
            width: 1.7cqw;
            height: 0.53cqw;
            font-size: 0;
            background: url("/images/pagination/pagination_truncase.webp") center center / 100% 100% no-repeat;
        }

        /* ============================================================
         *  MOBILE / TABLET
         * ============================================================
         * Khung giấy nới gần hết bề rộng màn hình. Vẫn là cqw nhưng số lớn hơn
         * hẳn bản PC: khung mobile chỉ rộng ~345px so với ~1522px bên PC, giữ
         * nguyên số cqw thì chữ tụt xuống còn hơn một phần năm, không đọc nổi.
         */
        @media (max-width: 1024px) {
            .showOnMobile {
                display: block !important;
            }

            .showOnPc {
                display: none !important;
            }

            /*
             * Chừa chỗ cho header mobile — cùng lỗi và cùng cách sửa như
             * landing-page.css: header là position:fixed nhưng nội dung bắt
             * đầu từ y=0 nên bị che mất 11.71875vw trên cùng.
             */
            .wrapper {
                padding-top: 11.71875vw;
            }

            /* ----- Header mobile ----- */
            .header-mobile {
                position: fixed;
                top: 0;
                left: 0;
                width: 100%;
                height: 11.71875vw;
                background: #211f1f;
                z-index: 1100;
                display: flex;
                align-items: center;
            }

            .header-mobile .header-mobile-inner {
                width: 100%;
                height: 100%;
                padding: 0 3.90625vw;
                display: flex;
                justify-content: space-between;
                align-items: center;
            }

            .header-mobile .h-m-left {
                display: flex;
                align-items: center;
                gap: 1.46484375vw;
            }

            .header-mobile .h-m-left .h-m-logo {
                width: 9.765625vw;
                height: auto;
                border-radius: 1.953125vw;
                overflow: hidden;
            }

            .header-mobile .h-m-left .h-m-title {
                display: flex;
                flex-direction: column;
                color: #fd5044;
                font-size: 2.9296875vw;
                line-height: 1.1;
            }

            .header-mobile .h-m-left .h-m-title span:last-child {
                color: #fff;
            }

            .header-mobile .h-m-right {
                display: flex;
                align-items: center;
                gap: 5.859375vw;
            }

            .header-mobile .h-m-right .h-m-download {
                width: 27.1484375vw;
            }

            .header-mobile .h-m-right .h-m-download img {
                width: 100%;
                height: auto;
            }

            .header-mobile .h-m-right .h-m-menu {
                background: none;
                border: none;
                padding: 0;
                width: 5.859375vw;
                cursor: pointer;
            }

            .header-mobile .h-m-right .h-m-menu img {
                width: 100%;
                height: auto;
            }

            /* ----- Menu mobile (ngăn kéo) ----- */
            .menu-mobile {
                display: block;
                position: fixed;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                z-index: 1200;
                pointer-events: none;
                transition: 0.3s;
            }

            .menu-mobile.active {
                pointer-events: auto;
            }

            .menu-mobile.active .menu-m-overlay {
                opacity: 1;
            }

            .menu-mobile.active .menu-m-content {
                transform: translateX(0);
            }

            .menu-mobile .menu-m-overlay {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: rgba(0, 0, 0, 0.451);
                opacity: 0;
                transition: 0.3s;
            }

            .menu-mobile .menu-m-content {
                position: absolute;
                top: 0;
                right: 0;
                width: 31.25vw;
                height: 100%;
                background: #111;
                transform: translateX(100%);
                transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                display: flex;
                flex-direction: column;
                align-items: center;
                padding-top: 7.8125vw;
            }

            .menu-mobile .menu-m-content .menu-m-close {
                position: absolute;
                top: 2.9296875vw;
                right: 2.9296875vw;
                background: none;
                border: none;
                color: #fff;
                font-size: 5.859375vw;
                line-height: 1;
                cursor: pointer;
            }

            .menu-mobile .menu-m-content .menu-m-logo {
                width: 13.18359375vw;
                margin-bottom: 3.90625vw;
            }

            .menu-mobile .menu-m-content .menu-m-logo img {
                width: 100%;
                height: auto;
                border-radius: 2.44140625vw;
            }

            .menu-mobile .menu-m-content .menu-m-list {
                width: 100%;
                list-style: none;
                padding: 0 4.39453125vw;
            }

            .menu-mobile .menu-m-content .menu-m-list li {
                width: 100%;
                position: relative;
                border-bottom: 1px solid #464647;
            }

            .menu-mobile .menu-m-content .menu-m-list li a {
                display: flex;
                align-items: center;
                padding: 3.90625vw 0;
                color: #fff;
                text-decoration: none;
                font-size: 2.44140625vw;
                gap: 0.9765625vw;
            }

            .menu-mobile .menu-m-content .menu-m-list li a i {
                width: 3.90625vw;
                height: 3.80859375vw;
                display: flex;
                align-items: center;
                justify-content: center;
                font-style: normal;
                background-size: contain !important;
            }

            .menu-mobile .menu-m-content .menu-m-list li a i.icon-home {
                background: url(/images/landingpage/icon-home.webp) center center no-repeat;
            }

            .menu-mobile .menu-m-content .menu-m-list li a i.icon-fanpage {
                background: url(/images/landingpage/icon-fb.webp) center center no-repeat;
            }

            .menu-mobile .menu-m-content .menu-m-list li a i.icon-community {
                background: url(/images/landingpage/icon-group.webp) center center no-repeat;
            }

            .menu-mobile .menu-m-content .menu-m-list li a:hover {
                color: #fcedac;
            }

            /* ----- Mục tin tức ----- */
            .page2-news {
                /* chừa chỗ cho header mobile fixed phía trên */
                padding: 24vw 0 16vw;
            }

            /*
             * KHUNG MOBILE = bg-main-sub2 (cao hơn), CANH THÂN GIẤY BẰNG ĐÚNG
             * BÊN site-master.
             *
             * Đo trên trang chạy layout site.blade.php ở màn 375px:
             *   thân giấy (.r-posts)        = 92vw = 345px, nằm x 15..360
             *                                 (15px lề mỗi bên do padding của
             *                                 .container Bootstrap)
             *   cả tấm ảnh (.r-posts::before, mái thò ra hai bên bằng inset âm)
             *                               = 102.206vw = 383px, x −5.8..377.5
             * Tức bên đó mái ngói CỐ TÌNH thò khỏi khung nhìn rồi bị
             * .r-bg-main { overflow-x: clip } cắt.
             *
             * Bộ số cũ ở đây là width: 92vw đặt cho CẢ TẤM ẢNH, nên thân giấy
             * chỉ còn 92 × 1262/1402 = 82.8vw = 310px, lề hai bên 32px — hụt so
             * với bên site-master 22px mỗi bên, đúng chỗ lệch cần sửa.
             *
             * 102.206vw = 92 × 1402/1262, tức đặt thân giấy về đúng 92vw. Mái
             * thò ra 1.1vw mỗi bên như bên kia, và bị .page2-news
             * { overflow: hidden } cắt nên không đẻ thanh cuộn ngang.
             *
             * Hệ quả: .news-wrap rộng thêm 11% mà mọi thứ bên trong tính bằng
             * cqw (= 1% bề rộng .news-wrap) nên chữ cũng to thêm 11% — chữ tin
             * từ 12.0px lên 13.3px ở màn 375, dễ đọc hơn chứ không bí thêm.
             *
             * margin-left ÂM, KHÔNG dùng lại margin: 0 auto của bản PC: hộp giờ
             * RỘNG HƠN khung nhìn, mà theo chuẩn CSS hộp quá khổ thì lề auto
             * tính về 0 và lề phải bị bỏ qua — ảnh dạt sát mép trái, thân giấy
             * lệch hẳn (đo thật: lề 20.8px bên trái mà 9.5px bên phải).
             *
             * --paper-w ở đây phải đi theo BẬC .container của Bootstrap y như
             * bên site-master, chứ không phải 92vw phẳng. Bên đó .r-posts nằm
             * trong .container (padding ngang 15px mỗi bên) nên thân giấy =
             * bề rộng .container − 30px, mà .container thì nhảy bậc:
             *   < 576px      : 100% (fluid)  → thân giấy calc(100% − 30px)
             *   576–767px    : 540px         → 510px
             *   768–991px    : 720px         → 690px
             *   992–1024px   : 960px         → 930px
             * (từ 1025px là bản PC, xem --paper-w ở khối .news-wrap trên kia —
             * cũng đúng bậc 960px này rồi tới công thức riêng ở 1200px.)
             *
             * Dùng % chứ không vw: .container ăn theo bề rộng BODY (đã trừ
             * thanh cuộn dọc), còn 100vw thì tính cả thanh cuộn — cửa sổ desktop
             * kéo hẹp dưới 576px sẽ lệch đúng bằng bề ngang thanh cuộn.
             *
             * margin-left ÂM canh cho THÂN GIẤY nằm giữa màn:
             *   thân giấy bắt đầu ở 76/1402 = 5.4208% của tấm ảnh
             *   lề trái ảnh = (100% − paper)/2 − 0.054208 × paper × 1.110935
             *               = 50% − 0.560213 × paper
             * Ra đúng khoảng bên site-master đo được ở màn 375: ảnh trải
             * −5.8px..377.5px, thân giấy 15px..360px.
             */
            .page2-news .news-wrap {
                --paper-w: calc(100% - 30px);
                width: calc(var(--paper-w) * 1402 / 1262);
                max-width: none;
                margin: 0 0 0 calc(50% - var(--paper-w) * 0.560213);
                aspect-ratio: 1402 / 2240;
                background-image: url("/images/image_ttgh/bg-main-sub2.webp");
            }

            .page2-news .news-title-img {
                width: 72%;
            }

            /*
             * Màn hẹp thì khung giấy (tỉ lệ cứng theo ảnh) không đủ chỗ cho
             * trọn 12 tin như bản PC. Ở đây ưu tiên GIỮ ĐÚNG tỉ lệ ảnh — mái
             * ngói không bị kéo méo — nên phần dư sẽ cuộn trong
             * .news-list-scroll (thanh cuộn đã tạo kiểu riêng). Các số dưới đây
             * bóp sát lề để lộ ra được nhiều dòng nhất có thể trước khi cuộn.
             *
             * top 17% chứ không 20% như hồi ảnh cũ: biển tên bản mobile rộng
             * 72% nên cao 72/2.976 = 24.2% bề RỘNG = 15.1% chiều cao của khung
             * mới, hết ở 16.1%. Khung cao thêm 38.5% mà biển tên không cao thêm
             * theo, giữ 20% là chừa thừa một mảng giấy trắng.
             */
            .page2-news .news-content-main {
                left: 6.5%;
                right: 6.5%;
                top: 17%;
                bottom: 3%;
            }

            /*
             * Thu ngắn ô tìm kiếm cho khỏi đè lên viền gỗ của khung.
             *
             * Ô rộng 100% của .news-content-main, mà hộp ấy trải 6.5% → 93.5%
             * bề ngang .news-wrap, trong khi mặt giấy của bg-main-sub2.webp
             * (đo canvas: x 88..1322 của ảnh rộng 1402) chỉ từ 6.28% đến
             * 94.29% — viền gỗ dày chỉ ~12px ảnh nằm sát ngay ngoài đó. Tức
             * mép ô cách viền 0.22% bên trái và 0.79% bên phải, gần như chạm.
             *
             * Lề trái/phải lệch nhau vì chính hộp nội dung đã lệch: muốn hai
             * khe hở BẰNG NHAU 2.5% thì
             *   trái  = 2.5 − 0.22 = 2.3cqw      phải = 2.5 − 0.79 = 1.7cqw
             * Ô còn trải 8.8% → 91.8%, khe hở hai bên ≈ 9.7px ở màn 375.
             * ĐỔI left/right CỦA .news-content-main THÌ PHẢI TÍNH LẠI HAI SỐ NÀY.
             *
             * .news-search-icon đặt tuyệt đối theo chính .news-search-wrap nên
             * tự trôi theo, không phải sửa.
             */
            .page2-news .news-search-wrap {
                margin: 0 1.7cqw 1.5cqw 2.3cqw;
            }

            .page2-news .news-search-input {
                padding: 1.2cqw 7cqw 1.2cqw 2.6cqw;
                font-size: 2.9cqw;
                border-radius: 0.65cqw;
            }

            .page2-news .news-search-icon {
                right: 2.4cqw;
                font-size: 2.9cqw;
            }

            /*
             * MOBILE: 4 tab mỗi hàng, tab thứ 5 trở đi tự xuống hàng.
             * Sáu nhãn nên ra 4 + 2.
             *
             * Dùng grid 4 cột đều nhau chứ không phải flex-wrap: cột bằng nhau
             * thì biển gỗ của tab đang chọn lúc nào cũng đúng một cỡ dù nhãn
             * dài ngắn khác nhau, và hai nút hàng dưới thẳng cột với hai nút
             * đầu hàng trên. flex-wrap thì nút co theo độ dài chữ, mỗi hàng
             * gãy một kiểu.
             *
             * justify-content: space-between của bản PC vô hiệu ở đây (cột 1fr
             * đã lấp kín hàng) nên không cần gỡ.
             */
            /*
             * Lề ngang lấy ĐÚNG bộ số của .news-search-wrap (2.3 / 1.7cqw)
             * nên dải tab và ô tìm kiếm trải cùng một khổ 8.8% → 91.8% bề
             * ngang .news-wrap, và cũng cách viền gỗ 2.5% như nhau. Không
             * để dải rộng hết .news-content-main được: hộp ấy chạm viền,
             * nền có màu là lộ ngay ra.
             */
            .page2-news .news-tabs-nav {
                display: grid;
                grid-template-columns: repeat(3, 1fr);
                gap: 0.6cqw;
                margin: 0 1.7cqw 1.75cqw 2.3cqw;
                padding: 0.7cqw 1.2cqw;
                border-radius: 0.65cqw;
            }

            /*
             * Bản trước nhét cả sáu nhãn vào MỘT hàng nên phải hạ chữ xuống
             * 2.28cqw (màn 390px chỉ còn 8.2px) và bóp padding ngang còn
             * 0.5cqw — chữ của tab đang chọn nằm sát hai góc hoa văn biển gỗ.
             *
             * Nay grid 4 cột nên mỗi ô rộng gấp rưỡi, lấy lại được cỡ chữ.
             * Đo thật bằng canvas với đúng font FzGameBrV2, nhãn dài nhất là
             * "HƯỚNG DẪN": mức tối đa còn vừa ô là 3.01cqw (đo ở 360/390/430px
             * đều ra xấp xỉ số này). Lấy 2.9cqw để chừa biên cho lúc font chưa
             * tải xong phải rơi về sans-serif.
             *
             * padding dọc nâng 0.76 → 1.4cqw: ô grid nay rộng cứng 25% hàng
             * chứ không co theo chữ nữa, ô mà dẹt quá thì biển gỗ (ảnh gốc
             * 99x43) bị kéo bè, hoa văn hai góc méo. 1.4cqw kéo tỉ lệ ô từ
             * 4.3 về 3.4 — chưa bằng 2.3 của ảnh gốc nhưng nới thêm nữa là ăn
             * mất chỗ của danh sách tin.
             */
            .page2-news .news-tab-item {
                font-size: 2.9cqw;
                letter-spacing: 0;
                padding: 1.4cqw 0.9cqw;
                /* Như bản PC: bo góc sẽ cắt cụt hoa văn hai góc của biển, mà
                   nay biển đắp cho CẢ tab chưa chọn nên lộ ra ở cả sáu ô. */
                border-radius: 0;
                text-shadow: 0 0.1cqw 0.25cqw rgba(0, 0, 0, 0.75);
            }

            .page2-news .news-list-scroll {
                padding-right: 1.3cqw;
            }

            .page2-news .news-list-scroll::-webkit-scrollbar {
                width: 0.87cqw;
            }

            /*
             * Mobile .news-content-main bắt đầu ở 6.5% bề ngang khung, mà mép
             * giấy của bg-main-sub2.webp ở 6.42% — tức hộp nội dung nằm SÁT
             * viền. Viên kim cương chỉ còn cách viền 0.73cqw (2.8px ở màn
             * 375) nên dính lên viền. Đẩy cả dòng sang phải 1.6cqw:
             *   ::before left 0.65 -> 2.2cqw  (cách viền 2.28cqw ≈ 8.7px)
             *   padding trái  3.7 -> 5.3cqw (giữ khoảng viên → chữ 2.01cqw)
             *
             * top = padding-top + (chiều cao dòng − cạnh viên) / 2
             *     = 0.98 + (3.48 x 1.35 − 1.09) / 2 = 2.78cqw   (cũ 2.12 — cao
             * hơn tâm dòng chữ 0.66cqw nên nhìn lệch lên trên).
             */
            .page2-news .news-li {
                padding: 0.98cqw 6.6cqw 0.98cqw 5.3cqw;
            }

            /*
             * Cùng lối tính như bản PC, thay bộ số theo cỡ chữ mobile:
             *   right  2.2cqw  — đối xứng với left của ::before
             *   nút    3.6cqw
             *   top    = 0.98 + (3.48 x 1.35 − 3.6) / 2 = 1.53cqw
             *   padding phải = 2.2 + 3.6 + 0.8 hở = 6.6cqw
             */
            .page2-news .news-li .news-plus {
                right: 2.2cqw;
                top: 1.53cqw;
                width: 3.6cqw;
            }

            .page2-news .news-li::before {
                left: 2.2cqw;
                top: 2.78cqw;
                width: 1.09cqw;
                height: 1.09cqw;
            }

            /* Không hạ thêm hai cỡ chữ này để nhét nhiều dòng hơn: dưới mức này
               là chữ nhỏ hơn 11px trên điện thoại 375px, đọc không nổi. Thà lộ
               ra 7 dòng đọc được rồi cuộn tiếp còn hơn 8 dòng li ti. */
            .page2-news .news-li .news-link {
                font-size: 3.48cqw;
            }

            .page2-news .news-li .news-time {
                font-size: 2.46cqw;
            }

            .page2-news .news-pagination-wrap {
                gap: 0.87cqw;
                margin-top: 1.3cqw;
            }

            /*
             * Giữ đúng tỉ lệ ô của bản PC (60 x 66): 7cqw cao -> 6.36cqw rộng.
             * Ở khung mobile ~345px là ô 24.2 x 21.7px, cả hàng chín nút cộng
             * khe chiếm ~219px nên vẫn nằm gọn một dòng.
             *
             * Không hạ nhỏ hơn: dưới mức này thì hoa văn viền của ảnh nhoè
             * thành một vệt, không còn ra hình cái biển nữa.
             */
            .page2-news .news-pagination-wrap .pg-btn {
                width: 6.36cqw;
                height: 7cqw;
                font-size: 2.7cqw;
                border-radius: 0;
                padding: 0;
            }

            .page2-news .news-pagination-wrap .pg-btn.active {
                font-size: 3.1cqw;
            }

            .page2-news .news-pagination-wrap .pg-ellipsis {
                width: 4.3cqw;
                height: 1.34cqw;   /* 4.3 / 3.2 */
            }
        }

        /*
         * BA BẬC .container CÒN LẠI CỦA BOOTSTRAP (xem chú thích --paper-w ở
         * .news-wrap trong khối mobile trên kia). Để riêng ngoài khối
         * max-width: 1024px vì CSS thuần không cho lồng @media; ba khối này
         * phải nằm SAU khối đó để thắng (cùng độ ưu tiên, luật sau ăn).
         *
         * Chỉ đổi --paper-w, còn width và margin-left tự tính lại theo nó.
         */
        @media (min-width: 576px) and (max-width: 1024px) {
            .page2-news .news-wrap {
                --paper-w: 510px;
            }
        }

        @media (min-width: 768px) and (max-width: 1024px) {
            .page2-news .news-wrap {
                --paper-w: 690px;
            }
        }

        @media (min-width: 992px) and (max-width: 1024px) {
            .page2-news .news-wrap {
                --paper-w: 930px;
            }
        }
