/* ============================================================
   MẪU WEB 990k — MỘT bộ xương, NĂM bộ da.
   Đổi da bằng class trên <body>: gd-do-vang | gd-xanh-y-te
                       | gd-navy-cong-ty | gd-xanh-la | gd-hong-lam-dep
   Không framework. Không JS bắt buộc. Một chủ đề sáng, cố ý.

   Bản này viết lại sau khi ĐO 25 bản mẫu theme WordPress bán chạy
   (Astra, Kadence, GeneratePress, Blocksy, Divi, Elementor) rồi rút số.
   Bốn luật khiến bản cũ trông rẻ, cả bốn đều đo được:

   1. MỘT DẢI MÀU trong 800px đầu. Bản cũ có 6 dải trong 720px đầu, ba
      trong số đó là ba sắc đỏ khác nhau nằm trong 171px. Cả trang có
      ~13 dải vì mọi mục xen kẽ trắng/kem. Đo trên 25 bản mẫu: trang
      6-9 mục thì chỉ 1-3 mục có nền khác trắng, và chúng gom cụm.
      Nay: băng đầu (tối) · dải ba lời hứa (kem) · mục liên hệ (kem) ·
      chân trang (tối). Hết. Mọi mục khác nền trắng.

   2. MỘT MÀU BÃO HOÀ, mọi ô màu còn lại S < 25%. Bản cũ có 91 mã màu
      và bốn sắc gần-trắng lệch nhau dưới 3% dùng làm bốn tín hiệu khác
      nhau — mắt không phân biệt nổi, chỉ thấy bẩn. Nay mọi biến suy ra
      từ ĐÚNG BỐN SỐ mỗi bộ da: (góc màu, S nhấn, L nhấn, L nền tối).
      Xám đều lệch nhẹ về góc màu của bộ da — xám trung tính tuyệt đối
      trông như chưa ai chọn.

   3. MÀU NHẤN LÀ MỰC, KHÔNG PHẢI GIẤY. Đo tỉ lệ dùng trên bản mẫu thật:
      12:1 nghiêng về mực. Bản cũ tô nguyên dải vàng bão hoà cho ba lời
      hứa và nguyên thanh đỏ cho đầu bảng giá. Nay màu nhấn chỉ còn ở
      nút, giá, liên kết, chữ nghiêng trong băng đầu, tiêu đề chân trang.

   4. CÓ THANG. Bản cũ: 12 bậc cỡ chữ trong đó 7 bậc lệch nhau 6-9%
      (mắt không thấy, chỉ máy thấy), 28 giá trị khoảng cách với 13 giá
      trị lệch lưới 4px, 8 công thức đổ bóng. Nay: 7 bậc khoảng cách
      nhân 1,5 (thang lõi WordPress), 4 bậc cỡ chữ, MỘT công thức bóng.

   Một số ĐO ĐƯỢC phải nhớ, đừng chép số của theme Tây về:
   dấu tiếng Việt CHẠM NHAU khi line-height < 1,142. Đo bằng fontTools
   trên Be Vietnam Pro (unitsPerEm=1000): đỉnh chữ 'ế' ở 0,914em, chữ
   'ộ' trải -0,227…0,774em, nên khe giữa hai dòng = line-height - 1,142.
   WordPress Twenty Twenty-Five đặt heading lineHeight 1,125 — con số đó
   là BẪY với tiếng Việt. Dưới đây không chỗ nào dưới 1,25.
   ============================================================ */

/* ---------- Thang dùng chung, không theo bộ da ---------- */
:root{
  /* Thang khoảng cách nhân 1,5 — lấy đúng thang lõi WordPress. */
  --s1:8px; --s2:12px; --s3:16px; --s4:24px; --s5:36px; --s6:54px; --s7:81px;
  /* Đo trên 25 bản mẫu: đệm mục máy bàn 70-104px, điện thoại 24-64px,
     tỉ lệ điện thoại/máy bàn 0,50-0,60. clamp() cho đúng dải đó. */
  --khoang-muc:clamp(48px,8vw,96px);
  --le:clamp(16px,4vw,32px);
  --rong:1120px;
  /* KHÔNG hạ hai số này xuống dưới 1,25 — xem ghi chú dấu tiếng Việt. */
  --lh-de:1.25;
  --lh-than:1.65;
  --f-nho:14px;
  --f-tem:13px;                       /* chữ nhỏ nhất được phép: chốt soi
                                         bắt mọi chữ dưới 12px */
  --f-h3:clamp(18px,2.2vw,21px);
  --f-h2:clamp(24px,3.4vw,32px);
  --f-h1:clamp(29px,5vw,42px);
  /* Bề rộng ruột chữ. Đơn vị ch = bề rộng chữ SỐ "0", ở phông này rộng
     hơn chữ thường ~28%: viết 64ch tưởng 64 chữ, đo ra 78. Dùng em.
     Đo trên trang thật: 30em ≈ 69 chữ. */
  --ruot:30em;
  /* MỘT công thức bóng cho cả trang. Đo trên bản mẫu thật: alpha
     0,04-0,20, nhoè >= 20px, spread ÂM. Twenty Twelve dùng alpha 0,30
     nhoè 6px — đó là dấu vân tay "2012" đo được. */
  --bong:0 1px 2px rgba(0,0,0,.04),0 12px 28px -12px rgba(0,0,0,.12);
  --trang:#ffffff;
  --xanh-zalo:#0068ff;
  --chu-tieu-de:Roboto,"Helvetica Neue",Arial,sans-serif;
  --chu-than:Roboto,"Helvetica Neue",Arial,sans-serif;
}

/* ---------- Bộ da mặc định: ĐỎ (quán ăn / kinh doanh chung) ---------- */
:root{
  --chinh:#b63420;
  --chinh-dam:#592017;
  --nhan:#e4978b;
  --kem:#f9f6f6;
  --soc:#fbf9f9;
  --vien:#e9e3e2;
  --chu:#29201f;
  --chu-nhat:#766360;
  --bang-chu:#e7dcda;
  --chan-chu:#e7dcda;
  --o-trong-nen:#f2eeed;
  --o-trong-chu:#937a76;
  --bo-goc:4px;
  --co-chu-goc:16px;
  --ty-le-anh-dau:4/3;
}

/* ---------- Bộ da: XANH Y TẾ (nha khoa, phòng khám, nhà thuốc) ---------- */
body.gd-xanh-y-te{
  --chinh:#11699c;
  --chinh-dam:#103c56;
  --nhan:#8bc3e4;
  --kem:#f6f8f9;
  --soc:#f9fafb;
  --vien:#e2e6e9;
  --chu:#1f2529;
  --chu-nhat:#606e76;
  --bang-chu:#dae2e7;
  --chan-chu:#dae2e7;
  --o-trong-nen:#edf0f2;
  --o-trong-chu:#768993;
  --bo-goc:8px;
  --co-chu-goc:17px;
  --ty-le-anh-dau:4/3;
}

/* ---------- Bộ da: NAVY CÔNG TY (xưởng, vật tư, dịch vụ kỹ thuật) ---------- */
body.gd-navy-cong-ty{
  --chinh:#284871;
  --chinh-dam:#182739;
  --nhan:#8bb2e4;
  --kem:#f6f7f9;
  --soc:#f9fafb;
  --vien:#e2e5e9;
  --chu:#1f2329;
  --chu-nhat:#606a76;
  --bang-chu:#dae0e7;
  --chan-chu:#dae0e7;
  --o-trong-nen:#edeff2;
  --o-trong-chu:#768393;
  --bo-goc:0;
  --co-chu-goc:16px;
  --ty-le-anh-dau:16/9;
}

/* ---------- Bộ da: XANH LÁ (nông sản, thực phẩm, vật tư nông nghiệp) ---------- */
body.gd-xanh-la{
  --chinh:#226d31;
  --chinh-dam:#173b1e;
  --nhan:#8be49d;
  --kem:#f6f9f7;
  --soc:#f9fbf9;
  --vien:#e2e9e3;
  --chu:#1f2921;
  --chu-nhat:#607665;
  --bang-chu:#dae7dd;
  --chan-chu:#dae7dd;
  --o-trong-nen:#edf2ee;
  --o-trong-chu:#76937c;
  --bo-goc:2px;
  --co-chu-goc:17px;
  --ty-le-anh-dau:4/3;
}

/* ---------- Bộ da: HỒNG LÀM ĐẸP (tóc, nail, spa) ---------- */
body.gd-hong-lam-dep{
  --chinh:#a12b5a;
  --chinh-dam:#4c1a2e;
  --nhan:#e48baf;
  --kem:#f9f6f7;
  --soc:#fbf9fa;
  --vien:#e9e2e5;
  --chu:#291f23;
  --chu-nhat:#766069;
  --bang-chu:#e7dadf;
  --chan-chu:#e7dadf;
  --o-trong-nen:#f2edef;
  --o-trong-chu:#937682;
  --bo-goc:14px;
  --co-chu-goc:16px;
  --ty-le-anh-dau:4/3;
}

/* ============================================================
   Bộ xương — dùng chung cho cả năm bộ da
   ============================================================ */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--trang);
  color:var(--chu);
  font:400 var(--co-chu-goc)/var(--lh-than) var(--chu-than);
  padding-bottom:72px;                /* chừa chỗ cho thanh Gọi/Zalo dính đáy */
  -webkit-font-smoothing:antialiased;
}
/* height:auto bắt buộc đi kèm width/height trên thẻ <img>. Thiếu nó thì khi
   max-width bóp ảnh hẹp lại, chiều cao vẫn giữ đúng số ghi trên thẻ — ảnh bẹt
   ra méo hình. Ô nào tự đặt height riêng thì luật của ô đó thắng, không sao. */
img{max-width:100%;height:auto;display:block}
a{color:var(--chinh);text-decoration:none}
a:hover{text-decoration:underline}
/* Vòng lấy nét: dùng màu chính (đậm, ăn trên nền trắng). Trên hai vùng
   nền tối thì đổi sang trắng — màu chính nằm trên nền tối cùng góc màu
   là gần như vô hình. */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--chinh);outline-offset:2px}
.bang a:focus-visible,.chan a:focus-visible,.day a:focus-visible{outline-color:#fff}

.khung{width:100%;max-width:var(--rong);margin:0 auto;padding:0 var(--le)}

/* ---------- Thanh trên cùng ---------- */
/* Trước là dải nền --chinh-dam, tức dải màu tối THỨ HAI trong 100px đầu,
   ngay trên băng đầu cũng tối. Hai dải tối kẹp một dải trắng mỏng là
   dáng trang 2010. Nay: nền kem, chữ xám, một nét viền chân. */
.thanh-tren{background:var(--kem);color:var(--chu-nhat);font-size:var(--f-tem);
  border-bottom:1px solid var(--vien)}
.thanh-tren .khung{display:flex;flex-wrap:wrap;gap:4px var(--s4);align-items:center;
  justify-content:space-between;min-height:36px}
.thanh-tren span{display:inline-flex;align-items:center;gap:6px}
.thanh-tren b{font-weight:700;color:var(--chu)}
.thanh-tren svg{width:13px;height:13px;fill:var(--chinh);flex:none}

/* ---------- Đầu trang ---------- */
/* Viền chân 3px màu chính -> 1px màu viền. Nét dày nhất đo được trên
   25 bản mẫu là 1px, không có ngoại lệ. */
.dau-trang{background:var(--trang);border-bottom:1px solid var(--vien)}
.dau-trang .khung{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center;
  justify-content:space-between;padding-top:var(--s3);padding-bottom:var(--s3)}
.hieu{display:flex;align-items:center;gap:var(--s2)}
.hieu:hover{text-decoration:none}
.dau-bat{width:48px;height:48px;flex:none;border-radius:var(--bo-goc);
  background:var(--chinh);display:grid;place-items:center}
.dau-bat svg{width:26px;height:26px;fill:#fff}
/* Bỏ chữ hoa. Chữ hoa tiếng Việt cõng nguyên tầng dấu nên nặng hơn hẳn
   chữ hoa tiếng Anh; đo trên bản mẫu thật cũng chỉ dùng chữ hoa cho
   nhãn nhỏ, không dùng cho tên. Giãn chữ âm giúp tên lớn bớt rời, nhưng
   chặn ở -0,01em: quá mức là dấu chạm thân chữ bên cạnh. */
.hieu h1{margin:0;font:700 clamp(20px,2.6vw,26px)/var(--lh-de) var(--chu-tieu-de);
  color:var(--chinh);letter-spacing:-.01em}
.hieu p{margin:2px 0 0;font-size:var(--f-nho);color:var(--chu-nhat)}

/* Viền đứt -> viền liền. Viền đứt trên hộp số điện thoại đọc ra "ô nhập
   liệu tạm" chứ không ra "thông tin quan trọng". */
.hop-hotline{display:flex;align-items:center;gap:var(--s2);
  border:1px solid var(--vien);border-radius:var(--bo-goc);
  padding:var(--s1) var(--s3);background:var(--trang)}
.hop-hotline svg{width:24px;height:24px;fill:var(--chinh);flex:none}
.hop-hotline small{display:block;font-size:var(--f-tem);color:var(--chu-nhat);
  text-transform:uppercase;letter-spacing:.08em}
.hop-hotline strong{font:700 21px/1.25 var(--chu-tieu-de);
  color:var(--chinh);font-variant-numeric:tabular-nums}

/* ---------- Băng đầu trang ---------- */
/* Bỏ nền chuyển sắc xuyên tâm + nền chuyển sắc dọc. Đo trên 25 bản mẫu:
   nền băng đầu hoặc là ẢNH, hoặc là MỘT màu phẳng. Chuyển sắc hai lớp
   trên nền màu đặc là dấu vân tay 2013. */
.bang{position:relative;background:var(--chinh-dam);color:#fff;overflow:hidden}
.bang-nen{position:absolute;inset:0;background:var(--chinh-dam)}
.bang .khung{position:relative;display:grid;gap:var(--s5);align-items:center;
  grid-template-columns:1.05fr .95fr;
  padding-top:clamp(40px,7vw,88px);padding-bottom:clamp(40px,7vw,88px)}
/* Bỏ chữ hoa + bỏ đổ bóng chữ. Bóng chữ đen 55% dưới tiêu đề là cách
   duy nhất bản cũ làm cho chữ đọc được trên nền chuyển sắc; nền phẳng
   thì tương phản đã đủ, bóng chỉ còn làm chữ nhoè. */
.bang h2{margin:0 0 var(--s3);font:700 var(--f-h1)/var(--lh-de) var(--chu-tieu-de);
  letter-spacing:-.01em;text-wrap:balance}
.bang h2 em{font-style:normal;color:var(--nhan);display:block}
.bang p{margin:0;font-size:17px;color:var(--bang-chu);max-width:var(--ruot)}
.nut-hang{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s5)}

/* Nút: cao 56px. Đo trên bản mẫu thật 48-54px; cộng thêm vì đây là nút
   GỌI ĐIỆN trên điện thoại, thứ được bấm nhiều nhất trang.
   Bỏ chuyển sắc dọc và bỏ box-shadow "0 3px 0" (nút nổi kiểu 2014). */
.nut{display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);
  min-height:56px;padding:var(--s2) var(--s5);border-radius:var(--bo-goc);
  font:700 17px/1.25 var(--chu-than);border:1px solid transparent;cursor:pointer}
.nut svg{width:19px;height:19px;fill:currentColor;flex:none}
.nut:hover{text-decoration:none;filter:brightness(1.06)}
/* Nút chính trên nền tối: nền TRẮNG, chữ màu chính. Đã thử nền màu nhấn
   trước — màu nhấn là sắc nhạt (L 72%) nên trên nền tối nó đọc ra "nút
   phụ đang mờ" chứ không ra "bấm vào đây". Trắng đặc + trắng viền là
   đúng cặp đo được trên bản mẫu thật, và thứ bậc rõ ngay từ xa.
   Tương phản chữ trên nền trắng đã tính đủ 5 bộ da: 6,00 · 5,96 · 9,31
   · 6,36 · 6,98. */
.nut-nhan{background:#fff;color:var(--chinh)}
.nut-vien{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}

/* Viền trắng 4px + bóng đen 40% -> khung ảnh kiểu album 2011.
   Nay: không viền, bo theo bộ da, một công thức bóng chung. */
/* padding PHẢI là 0. Bản trước để 12px cho chữ "chưa có ảnh" thở, nhưng
   khi CÓ ảnh thì 12px đó thành một khung nền sáng viền quanh tấm ảnh —
   đúng cái khung ảnh album 2011 vừa bỏ, chỉ là vẽ bằng padding thay vì
   bằng border. Chữ chỗ trống tự đệm lấy. */
.o-anh{border:0;border-radius:var(--bo-goc);box-shadow:var(--bong);
  background:var(--o-trong-nen);aspect-ratio:var(--ty-le-anh-dau);
  display:grid;place-items:center;text-align:center;padding:0;overflow:hidden}
/* <picture> nam GIUA .o-anh va <img>. No la inline, cao tu dong, nen khung
   1/1 cua .o-anh khong truyen xuong duoc va object-fit ben duoi thanh cau
   lenh chet: moi o anh vien xam tren duoi. Cho <picture> thanh khoi cao
   day o thi anh moi cat vua khung. */
.o-anh picture{display:block;width:100%;height:100%}
.o-anh img{width:100%;height:100%;object-fit:cover}
.o-anh span{font:700 var(--f-tem)/1.5 var(--chu-tieu-de);color:var(--o-trong-chu);
  text-transform:uppercase;letter-spacing:.1em;padding:var(--s3)}

/* ---------- Ba lời hứa ---------- */
/* Trước: nguyên dải vàng bão hoà chạy hết bề ngang, ngay dưới băng đỏ —
   dải màu thứ hai trong 800px đầu, và là chỗ màu nhấn bị dùng làm GIẤY
   thay vì làm MỰC. Nay: nền kem, biểu tượng màu chính, ngăn bằng khoảng
   trống chứ không bằng vạch. */
.hua{background:var(--kem);color:var(--chu);border-bottom:1px solid var(--vien)}
.hua .khung{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4);
  padding-top:var(--s5);padding-bottom:var(--s5)}
.hua > .khung > div{display:flex;align-items:flex-start;gap:var(--s2)}
.hua svg{width:26px;height:26px;fill:var(--chinh);flex:none;margin-top:2px}
.hua b{display:block;font:700 16px/var(--lh-de) var(--chu-tieu-de)}
.hua small{font-size:var(--f-nho);color:var(--chu-nhat);line-height:1.5}

/* ---------- Khung mục chung ---------- */
.muc{padding:var(--khoang-muc) 0}
.muc-kem{background:var(--kem)}
/* Bỏ chữ hoa, bỏ màu chính. Tiêu đề mục màu chính x8 mục là màu nhấn
   phủ quá 10% diện tích trang — ngưỡng đo được trên bản mẫu thật. */
.tieu-de{text-align:center;margin:0 0 var(--s5);
  font:700 var(--f-h2)/var(--lh-de) var(--chu-tieu-de);
  color:var(--chu);letter-spacing:-.005em;text-wrap:balance}
/* Có câu dẫn thì tiêu đề nhích lại gần nó, hết khoảng cách âm. :has()
   thay cho margin-top âm — trình duyệt cũ không hiểu thì chỉ hở rộng
   hơn một chút, không vỡ. */
.khung:has(> .dan) > .tieu-de{margin-bottom:var(--s2)}
.dan{text-align:center;max-width:var(--ruot);margin:0 auto var(--s5);
  color:var(--chu-nhat);font-size:17px}

/* ---------- Bảng giá ---------- */
/* Ba lỗi đo được ở bản cũ, sửa cả ba:
   1. Bảng trải hết 1140px nên giữa tên món và giá hở 919px trống, bằng
      81% bề ngang bảng — mắt không nối được hàng. Nay chặn 760px, đặt
      giữa (bảng hai chiều thì vẫn trải, vì nó có nhiều cột giá).
   2. Kẻ sọc chẵn/lẻ ĐẾM CẢ dòng nhóm, nên qua mỗi dòng nhóm nhịp sọc
      lật pha, sinh ra hai dòng tô liền nhau. Nay bỏ hẳn sọc: hàng phân
      cách bằng nét 1px là đủ, và không còn gì để lật pha.
   3. Đầu bảng là thanh đỏ đặc chữ trắng — dải màu bão hoà thứ ba trên
      trang. Nay đầu bảng là chữ xám nhỏ trên nền trắng, dưới một nét. */
.bang-gia{width:100%;border-collapse:collapse;background:var(--trang);
  font-size:var(--co-chu-goc)}
.bang-gia:not(.bang-2c){max-width:760px;margin-left:auto;margin-right:auto}
.bang-gia caption{caption-side:top;text-align:left;padding:0 0 var(--s2);
  font-size:var(--f-nho);color:var(--chu-nhat);max-width:var(--ruot)}
.bang-gia th{background:var(--trang);color:var(--chu-nhat);text-align:left;
  padding:0 var(--s2) var(--s1);font:700 var(--f-tem)/1.3 var(--chu-tieu-de);
  text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--chu)}
.bang-gia th:last-child,.bang-gia td:last-child{text-align:right;white-space:nowrap}
.bang-gia td{padding:var(--s2);border-top:1px solid var(--vien)}
/* Dòng nhóm là ô duy nhất của hàng nên dính luật căn phải của cột giá.
   Trả nó về căn trái — nhóm món phải thẳng hàng với tên món bên dưới. */
.bang-gia tr.nhom td{text-align:left;background:var(--kem);
  font:700 var(--f-tem)/1.3 var(--chu-tieu-de);
  text-transform:uppercase;color:var(--chu-nhat);letter-spacing:.08em}
.gia{font-weight:700;color:var(--chu);font-variant-numeric:tabular-nums}
/* Ô ảnh món: khung vuông cố định, ảnh nào cũng cắt vừa, hàng không nhảy cao thấp. */
.bang-gia td.o-mon{width:80px;padding:var(--s1) 0 var(--s1) 0}
.bang-gia td.o-mon img{display:block;width:64px;height:64px;object-fit:cover;
  border-radius:var(--bo-goc);background:var(--soc)}
/* Chữ chỉ dành cho trình đọc màn hình. */
.chi-doc{position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap}
/* ---------- Bảng giá hai chiều ---------- */
/* Cột đầu là TÊN hạng mục, không phải tiêu đề cột, nên phải trả nó về
   dáng chữ thường — luật .bang-gia th ở trên đang tô chữ hoa xám nhỏ. */
.bang-2c th[scope="row"]{background:var(--trang);color:var(--chu);
  font:400 var(--co-chu-goc)/1.4 var(--chu-than);text-transform:none;letter-spacing:0;
  padding:var(--s2);border-top:1px solid var(--vien);border-bottom:0;white-space:normal;
  /* Ghim cột tên lại khi cuộn ngang: cuộn tới cột giá thứ tư vẫn biết đang
     đọc dòng nào. Viền phải vẽ bằng box-shadow vì ô sticky trong bảng
     border-collapse hay rụng mất border. Nền phải ĐỤC, không trong suốt,
     không thì chữ cột dưới trôi qua dưới nó khi cuộn. */
  position:sticky;left:0;z-index:1;box-shadow:1px 0 0 var(--vien)}
.bang-2c tr.nhom td{position:sticky;left:0}
/* Mọi cột giá căn phải, không riêng cột cuối. */
.bang-2c th:not(:first-child){text-align:right}
.bang-2c td.gia{text-align:right;white-space:nowrap}
.bang-2c th[scope="col"]{white-space:nowrap}
/* Dòng nhắc vuốt: máy bàn thấy hết bảng rồi thì nhắc làm gì. */
.chi-cuon{display:none;margin:var(--s2) auto 0;font-size:var(--f-nho);
  color:var(--chu-nhat);text-align:center}

.cuon-ngang{overflow-x:auto}

/* ---------- Lưới ---------- */
/* Công thức lưới dùng lại khắp trang: minmax(min(100%,Xpx),1fr).
   min(100%,...) là thứ chặn tràn ở màn 320px — thiếu nó thì ô rộng Xpx
   cứng, màn hẹp hơn là đẩy trang cuộn ngang. auto-fit để 1/2/3/5/7 ô
   đều xếp được mà không cần thêm câu lệnh màn hình nào. */
/* Truoc: repeat(4,1fr) cung. Tiem co 5 anh thi hang hai con tro 1 o, tiem
   6 anh con 2 o — luoi rach. auto-fill tu chia theo be rong that. */
.luoi-anh{display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));
  gap:var(--s2)}
.luoi-anh figure{margin:0}
.luoi-anh .o-anh{aspect-ratio:1/1;padding:0}
.luoi-anh figcaption{font-size:var(--f-nho);color:var(--chu-nhat);
  padding-top:var(--s1);text-align:center}

/* ---------- Trước / sau ---------- */
.luoi-ts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));
  gap:var(--s5)}
.luoi-ts figure{margin:0}
.luoi-ts .cap{display:grid;grid-template-columns:1fr 1fr;gap:var(--s1)}
.luoi-ts .o-anh{position:relative;aspect-ratio:1/1;padding:0}
.nhan-ts{position:absolute;top:0;left:0;z-index:1;background:rgba(0,0,0,.72);color:#fff;
  padding:5px 10px;font:700 var(--f-tem)/1.3 var(--chu-tieu-de);
  text-transform:uppercase;letter-spacing:.08em}
/* Truoc: nen var(--chinh). Do ra 2.41:1 (navy) va 1.89:1 (xanh la) — chu
   12px/700 khong dat nguong chu lon 3:1, phai la 4.5:1. Giu nguyen nen den
   nhu nhan "Truoc" (dat), phan biet hai nhan bang net mau ben trai. */
.nhan-ts.sau{border-left:4px solid var(--chinh)}
.luoi-ts figcaption{font-size:var(--f-nho);color:var(--chu-nhat);
  padding-top:var(--s1);text-align:center}
.nho-ts{margin:var(--s4) auto 0;font-size:var(--f-nho);color:var(--chu-nhat);
  text-align:center}

/* ---------- Các cơ sở ---------- */
.luoi-cn{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:var(--s4)}
.luoi-cn article{padding:var(--s4)}
/* Luat 44px o duoi chi phu .dong-tin trong khoi lien he va chan trang.
   The tung co so cung toan link tel: — cao 19px neu khong noi them. */
.luoi-cn .dong-tin{padding:var(--s1) 0;align-items:flex-start}
.luoi-cn .dong-tin a{display:inline-flex;align-items:center;min-height:44px}
.nut-nho{min-height:44px;padding:var(--s1) var(--s3);font-size:var(--f-nho);
  margin-top:var(--s2);display:inline-flex;align-items:center;
  color:var(--chinh);border-color:var(--vien)}

/* ---------- Giờ theo ngày ---------- */
.gio-tuan{border-collapse:collapse;margin-top:var(--s1);font-size:var(--f-nho)}
.gio-tuan th{text-align:left;font-weight:400;color:var(--chu-nhat);
  padding:3px var(--s3) 3px 0;white-space:nowrap}
.gio-tuan td{padding:3px 0;font-weight:700;font-variant-numeric:tabular-nums}

/* ---------- Thẻ chữ ---------- */
.the{background:var(--trang);border:1px solid var(--vien);border-radius:var(--bo-goc);
  box-shadow:var(--bong);padding:var(--s4)}
.the h3{margin:0 0 var(--s2);font:700 var(--f-h3)/var(--lh-de) var(--chu-tieu-de);
  color:var(--chu)}
/* Căn đều mà không có gạch nối tiếng Việt thì phải kéo dãn khoảng trắng
   để lấp cho vừa mép phải: đo được dòng xấu nhất giãn 6,14px so với
   3,73px thường, tức 65%, thành vệt trắng dọc giữa đoạn. Căn trái. */
.the p{margin:0 0 var(--s2);max-width:var(--ruot)}
/* Thẻ chỉ có một cột chữ thì trải hết bề ngang khung — đo ra một dòng
   149 chữ, hết dòng mắt dò ngược về đầu là lạc hàng. Chặn thẻ theo đúng
   bề rộng ruột cộng hai lề trong, rồi đặt giữa. */
.the-hep{max-width:calc(var(--ruot) + var(--s4) * 2 + 2px);
  margin-left:auto;margin-right:auto}
.the p:last-child{margin-bottom:0}
.the ul{margin:0;padding-left:var(--s4)}
.the li{margin-bottom:6px;max-width:var(--ruot)}
.cot-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));
  gap:var(--s4);align-items:start}

/* ---------- Hồ sơ năng lực ---------- */
.luoi-nl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:var(--s4)}
.luoi-nl article{background:var(--trang);border:1px solid var(--vien);
  border-radius:var(--bo-goc);box-shadow:var(--bong);overflow:hidden}
.luoi-nl .o-anh{border-radius:0;box-shadow:none;aspect-ratio:16/10;padding:0}
.luoi-nl .noi{padding:var(--s3)}
.luoi-nl h3{margin:0 0 6px;font:700 17px/var(--lh-de) var(--chu-tieu-de);color:var(--chu)}
.luoi-nl p{margin:0;font-size:var(--f-nho);color:var(--chu-nhat)}

/* ---------- Lời khách (khối mới, ẩn khi rỗng) ---------- */
.luoi-dg{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:var(--s4)}
.luoi-dg blockquote{margin:0 0 var(--s2)}
.luoi-dg blockquote p{text-align:left;margin:0;max-width:var(--ruot)}
.luoi-dg figcaption{display:flex;align-items:center;gap:var(--s1);
  font:700 var(--f-nho)/var(--lh-de) var(--chu-tieu-de);color:var(--chu-nhat)}
.luoi-dg figcaption svg{width:18px;height:18px;fill:var(--chinh);flex:none}

/* ---------- Đối tác / khách hàng (khối mới, ẩn khi rỗng) ---------- */
.luoi-dt{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));
  gap:var(--s3);align-items:center}
.o-doi-tac{display:grid;place-items:center;padding:var(--s2);
  border:1px solid var(--vien);border-radius:var(--bo-goc);background:var(--trang)}
.o-doi-tac img{max-height:48px;width:auto;filter:grayscale(1);opacity:.75}
.o-doi-tac-chu{min-height:48px;text-align:center;font-weight:600;
  font-size:var(--f-nho);color:var(--chu-nhat);line-height:1.4;
  display:grid;place-items:center}

/* ---------- Giấy phép ---------- */
.giay-phep{border-left:3px solid var(--chinh);background:var(--trang)}
.giay-phep dl{display:grid;grid-template-columns:auto 1fr;gap:var(--s1) var(--s3);margin:0}
.giay-phep dt{font-weight:700;color:var(--chu-nhat);font-size:var(--f-tem);
  text-transform:uppercase;letter-spacing:.08em}
.giay-phep dd{margin:0;max-width:var(--ruot)}

/* ---------- Liên hệ ---------- */
.lien-he{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));
  gap:var(--s5);align-items:start}
.dong-tin{display:flex;gap:var(--s2);padding:var(--s2) 0;
  border-bottom:1px solid var(--vien)}
.dong-tin:last-child{border-bottom:none}
/* Ngón tay cái không bấm trúng dòng chữ cao 18px. Mốc 44px của Apple,
   48dp của Google — số máy và Zalo là thứ khách bấm nhiều nhất, phải to. */
.dong-tin a[href^="tel:"],.dong-tin a[href*="zalo"],
.chan a[href^="tel:"],.chan a[href*="zalo"]{
  display:inline-flex;align-items:center;min-height:44px}
.dong-tin svg{width:20px;height:20px;fill:var(--chinh);flex:none;margin-top:3px}
.dong-tin b{display:block;font-size:var(--f-tem);text-transform:uppercase;
  color:var(--chu-nhat);letter-spacing:.08em;font-weight:700}
.o-ban-do{border:1px solid var(--vien);background:var(--o-trong-nen);aspect-ratio:16/11;
  display:grid;place-items:center;text-align:center;padding:0;
  border-radius:var(--bo-goc);overflow:hidden}
.o-ban-do iframe{width:100%;height:100%;border:0;display:block}
/* Bản đồ là LINK, không phải iframe. Iframe Google Maps nạp ngay lúc mở trang:
   IP khách, chuỗi trình duyệt và địa chỉ trang chạy sang Google, kèm cookie của
   Google, dù khách chưa bấm gì. Gói này tự chốt không gọi bên thứ ba, nên bản
   đồ chỉ mở khi khách tự bấm. Ô giữ nguyên khung 16/11 cho bố cục khỏi nhảy. */
.o-ban-do .di-ban-do{width:100%;height:100%;display:grid;place-content:center;
  justify-items:center;gap:var(--s1);padding:var(--s4);text-decoration:none;
  color:var(--chinh-dam);background:var(--o-trong-nen)}
.o-ban-do .di-ban-do svg{width:28px;height:28px;fill:currentColor}
.o-ban-do .di-ban-do b{font:700 var(--f-nho)/1.4 var(--chu-tieu-de)}
.o-ban-do .di-ban-do span{font-size:var(--f-tem);text-transform:none;
  letter-spacing:0;color:var(--o-trong-chu);padding:0}
.o-ban-do .di-ban-do:hover b{text-decoration:underline}
.o-ban-do span{font:700 var(--f-tem)/1.6 var(--chu-tieu-de);color:var(--o-trong-chu);
  text-transform:uppercase;letter-spacing:.1em;padding:var(--s3)}

/* ---------- Chân trang ---------- */
.chan{background:var(--chinh-dam);color:var(--chan-chu);padding:var(--s6) 0 0;
  font-size:var(--f-nho)}
.chan .khung{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:var(--s5)}
.chan h4{margin:0 0 var(--s2);font:700 var(--f-nho)/var(--lh-de) var(--chu-tieu-de);
  text-transform:uppercase;color:var(--nhan);letter-spacing:.08em}
.chan p{margin:0}
/* Giữ gạch chân: trong chân trang màu chữ liên kết bằng đúng màu chữ
   thường nên bỏ gạch là mất dấu hiệu duy nhất nhận ra bấm được. Nhưng cột
   "Nội dung trang" gồm toàn liên kết, năm gạch chân xếp dọc thì ồn hơn hẳn
   hai cột kia. Hạ độ đậm nét gạch và đẩy xuống cho rời chân chữ.
   Vì gạch chân là dấu hiệu DUY NHẤT nhận ra bấm được nên nó là thành phần
   phi văn bản mang thông tin: WCAG 1.4.11 đòi 3:1 so với nền. Trộn trắng
   lên năm nền --chinh-dam rồi tính, mức .45 KHÔNG đủ. .52 thì nền thấp
   nhất vẫn qua 3:1 kể cả khi trình duyệt làm tròn lệch một đơn vị mỗi
   kênh; mắt thường không thấy khác .45. Chốt trong kiem-tra.mjs ĐỌC con
   số này ra rồi tính lại với cả năm nền, nên hạ xuống là chốt rớt.
   Đừng đụng ĐỘ DÀY nét nếu thấy ồn: 1px lên 2px là gấp đôi sức nặng nét.
   Cần gạt an toàn là offset. */
.chan a{color:#fff;text-decoration:underline;
  text-decoration-color:rgba(255,255,255,.52);text-underline-offset:3px}
.chan ul{margin:0;padding:0;list-style:none}
.chan li{margin-bottom:var(--s1)}
/* Ghi công ảnh mượn. CC BY và CC BY-SA bắt buộc in tên tác giả, tên ảnh gốc và
   giấy phép ngay trên bản đang phát hành — bóc EXIF xong thì trang là chỗ duy
   nhất còn ghi được. Gấp vào <details> cho chân trang khỏi dài ra, nhưng dòng
   mở luôn nhìn thấy: gấp không phải giấu. */
.ghi-cong{max-width:var(--rong);margin:var(--s4) auto 0;padding:0 var(--le);
  font-size:var(--f-tem);color:var(--chan-chu)}
/* Truoc day khoi nay dat opacity:.75. Opacity nhan len CA khoi nen khoi
   ghi cong trong nhu bi hong, va no lam moi phep do tuong phan tinh ra sai
   (may do doc mau khai bao, khong doc mau sau khi nhan mo). Doi mau chu la
   dung, do duoc, va van nhat hon chu chinh. */
.ghi-cong summary{cursor:pointer;display:flex;align-items:center;min-height:44px}
.ghi-cong p{margin:var(--s2) 0}
.ghi-cong ul{display:grid;gap:var(--s1)}
.ghi-cong li{margin-bottom:0}

/* Dòng bản quyền nằm ngoài .khung nên màn rộng nó chạm hai mép màn hình
   trong khi mọi thứ khác dừng ở --rong. Cho vào cùng lề. */
.ban-quyen{border-top:1px solid rgba(255,255,255,.18);margin:var(--s5) auto 0;
  max-width:var(--rong);padding:var(--s3) var(--le);text-align:center;
  font-size:var(--f-tem)}

/* ---------- Nút kiếm tiền ---------- */
/* Chỉ còn thanh dính đáy trên ĐIỆN THOẠI. Hai vòng tròn nổi trên máy bàn
   đã bỏ: tel: trên máy bàn gần như vô dụng, và vòng nhấp nháy vô hạn
   (scale .9 -> 1.35, 1.8s, không do người dùng bấm) là chi tiết đơn lẻ
   làm trang trông rẻ nhất. */
.day{position:fixed;left:0;right:0;bottom:0;z-index:60;display:grid;
  grid-template-columns:1fr 1fr;box-shadow:0 -1px 0 rgba(0,0,0,.12)}
.day a{display:flex;align-items:center;justify-content:center;gap:var(--s1);
  min-height:56px;padding:var(--s2) var(--s1);color:#fff;
  font:700 16px/1.25 var(--chu-than)}
.day a:hover{text-decoration:none}
.day svg{width:20px;height:20px;fill:#fff}
.day .goi{background:var(--chinh)}
.day .zalo{background:var(--xanh-zalo)}

/* ---------- Điện thoại ---------- */
@media (max-width:860px){
  /* Điện thoại: ảnh món nhỏ lại cho tên món còn chỗ thở. */
  .bang-gia td.o-mon{width:64px}
  .bang-gia td.o-mon img{width:52px;height:52px}
  .bang .khung{grid-template-columns:1fr;gap:var(--s4)}
  .hua .khung{grid-template-columns:1fr;gap:var(--s4)}
  .luoi-anh{grid-template-columns:repeat(2,1fr)}
  .dau-trang .khung{justify-content:center;text-align:center}
  .hieu{flex-direction:column;text-align:center}
  .nut-hang{gap:var(--s2)}
  .nut{flex:1 1 100%}
  .giay-phep dl{grid-template-columns:1fr;gap:2px var(--s3)}
  .giay-phep dd{margin-bottom:var(--s2)}
  /* Bảng đã cuộn ngang được rồi thì đừng bóp cột tên: cho nó đủ chỗ
     xuống nhiều nhất hai dòng, thừa thì để người ta vuốt. */
  .bang-2c th[scope="row"]{min-width:150px;max-width:52vw;font-size:var(--f-nho)}
  .bang-2c{font-size:var(--f-nho)}
  /* Dau bang va dong nhom dung --f-tem — co chu nho nhat cua trang — trong
     khi day la bang khach doc lau nhat. Tren dien thoai keo len 15px. */
  .bang-gia th,.bang-gia tr.nhom td{font-size:15px}
  .chi-cuon{display:block}
}
@media (min-width:861px){
  .day{display:none}
  body{padding-bottom:0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
}
