/* ═══════════════════════════════════════════════════════════════════════════
   AMATAY · ama.css — Hệ thiết kế (Amatay-Spec § 2)
   Bảng màu trích trực tiếp từ LOGO. CSS thuần, không Bootstrap/Tailwind.
   Mobile-first · Sáng/Tối · @media print
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 1. BIẾN: MÀU LẤY TỪ LOGO ─────────────────────────────────────────────── */
:root{
  /* XANH ĐẬM — chữ "AI MARKETING", thân chữ A/i */
  --ama-navy-900:#001233; --ama-navy-800:#001848; --ama-navy-700:#00246C; --ama-navy-600:#002E86;
  /* Nền của các mảng TỐI đặt chữ trắng lên trên (thanh bên quản trị, hộp
     thông báo, dải giới thiệu). Phải là màu tối ở CẢ hai chế độ sáng và tối —
     tách riêng khỏi --ama-navy-800 vì ở chế độ tối biến đó lật thành xanh
     nhạt để làm màu CHỮ, kéo theo thanh bên sáng trắng mà chữ vẫn trắng. */
  --ama-nen-dam:#001848;
  /* XANH DƯƠNG — vòng swoosh, khối pixel, gradient chữ A */
  --ama-blue-700:#0038A8; --ama-blue-600:#0048C0; --ama-blue-500:#0054CC;
  --ama-blue-400:#0060D8; --ama-blue-300:#0078E4;
  --ama-blue-100:#DCE9FB; --ama-blue-050:#F0F5FE;
  /* CAM — chữ "ASSISTANT", vòng swoosh cam, ô vuông chữ i */
  --ama-orange-600:#B4490A; --ama-orange-500:#F26A1B; --ama-orange-400:#FF8A2B;
  --ama-orange-100:#FFE8D6; --ama-orange-050:#FFF6EF;
  /* TRUNG TÍNH */
  --ama-white:#FFFFFF; --ama-paper:#FEFEFE;
  --ama-gray-050:#F6F8FB; --ama-gray-100:#EDF1F6; --ama-gray-200:#DDE3EC;
  /* Xám nhạt cũ #98A4B8 chỉ đạt 2,5:1 trên nền trắng — dùng làm chữ phụ ở
     dòng thời gian phiếu, ngày giờ, ghi chú thì người trên 50 tuổi đọc không
     ra. Hạ xuống #647491 (4,7:1) mà vẫn nhạt hơn hẳn chữ chính. */
  /* gray-600 là màu chữ phụ. Trên nền trắng nó thừa sức, nhưng khi dòng đó
     nằm trong ô nhấn màu (phiếu hỏng, việc trễ) thì nền hồng nhạt kéo tỉ lệ
     xuống 4,4 — chỉ hụt một chút, và chỉ ở vài dòng, nên rất dễ lọt. */
  --ama-gray-400:#647491; --ama-gray-600:#556279; --ama-gray-800:#2A3548;
  /* TRẠNG THÁI */
  --ama-success:#0F7A4C; --ama-warning:#996E00; --ama-danger:#C62929; --ama-info:#0078E4;
  /* ★★★ HAI MÀU DÀNH RIÊNG CHO CHỮ                                (Lượt 75)
   *
   *  Ba lượt quét bắt được 20 vi phạm trên trang phiếu đăng ký — và cả 20 đều
   *  MỚI LỘ RA vì lượt trước gộp sáu thẻ thành MỘT FORM: những ô trước đây bị
   *  giấu trong thẻ khác nên máy đo không nhìn thấy, nay hiện hết một lượt.
   *  Chúng chưa bao giờ đúng, chỉ là chưa bao giờ bị nhìn.
   *
   *      `--ama-orange-500` #F26A1B làm chữ giá trên nền trắng → 3,06 (cần 4,5)
   *      `--ama-danger`     #C62929 làm chữ "Xoá dòng" trên nền tối → 2,55
   *
   *  ★★ KHÔNG sửa thẳng `--ama-orange-500` và `--ama-danger`: hai màu ấy còn
   *     đang làm NỀN ở chỗ khác (`.chip--danger.is-on` là chữ trắng trên nền
   *     đỏ ấy). Làm nhạt màu nền đi để chữ dễ đọc là chữa chỗ này, hỏng chỗ
   *     kia. Màu làm NỀN và màu làm CHỮ là hai việc khác nhau, nên hai tên.
   *  ★ Và phải khai ở CẢ BA khối chủ đề, không chỉ khối gốc: một màu chỉ khai
   *    trong khối nền tối thì người để máy ở chế độ "theo hệ thống" không bao
   *    giờ nhận được nó. */
  --ama-cam-chu:#B4490A;   /* cam làm CHỮ trên nền sáng — 5,39 */
  --ama-do-chu:#C62929;    /* đỏ làm CHỮ trên nền sáng  — 5,60 */
  /* GRADIENT THƯƠNG HIỆU */
  --ama-grad-hero:linear-gradient(135deg,#001848 0%,#0038A8 55%,#0060D8 100%);
  --ama-grad-cta:linear-gradient(135deg,#F26A1B 0%,#FF8A2B 100%);
  --ama-grad-swoosh:linear-gradient(90deg,#0054CC 0%,#0078E4 45%,#F26A1B 100%);

  /* Chữ — Be Vietnam Pro có đủ dấu tiếng Việt chuẩn */
  --ama-font-head:'Inter','Be Vietnam Pro','Segoe UI',system-ui,-apple-system,sans-serif;
  --ama-font-body:'Inter','Be Vietnam Pro','Segoe UI',system-ui,-apple-system,sans-serif;
  --ama-font-mono:'JetBrains Mono','SFMono-Regular',Consolas,monospace;

  /* Thang khoảng cách 4px */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;
  --sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--sp-24:96px;
  /* Bo góc */
  --r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:24px;--r-pill:999px;
  /* Đổ bóng — 3 mức, không dùng nhiều hơn */
  --sh-1:0 1px 2px rgba(0,24,72,.06),0 1px 3px rgba(0,24,72,.08);
  --sh-2:0 4px 12px rgba(0,24,72,.08),0 2px 4px rgba(0,24,72,.05);
  --sh-3:0 12px 32px rgba(0,24,72,.14),0 4px 8px rgba(0,24,72,.06);
  --sh-cta:0 6px 18px rgba(242,106,27,.32);
  /* Chuyển động */
  --ease:cubic-bezier(.4,0,.2,1); --dur-fast:140ms; --dur:220ms; --dur-slow:360ms;
  /* Nền theo vai trò */
  --bg:var(--ama-paper); --surface:var(--ama-white); --text:var(--ama-navy-800);
  --text-soft:var(--ama-gray-600); --border:var(--ama-gray-200); --alt:var(--ama-blue-050);
  color-scheme:light;
}

/* ── 2. CHẾ ĐỘ TỐI ────────────────────────────────────────────────────────── */
:root[data-theme="dark"]{
  --ama-paper:#0A1224; --ama-white:#111C33;
  --ama-gray-050:#131F38; --ama-gray-100:#1B2A47; --ama-gray-200:#25375A;
  --ama-gray-400:#7A8AA6; --ama-gray-600:#AAB7CC; --ama-gray-800:#E4EAF3;
  --ama-navy-800:#8FB4FF; --ama-navy-900:#050B18; --ama-nen-dam:#0A162E;
  --ama-blue-050:#131F38; --ama-blue-100:#1B2A47;
  --ama-orange-050:#2A1A0E; --ama-orange-100:#3A2312;
  --bg:#0A1224; --surface:#111C33; --text:#E4EAF3; --text-soft:#AAB7CC;
  --border:#25375A; --alt:#131F38; --eyebrow:#6EA8FF;
  --sh-1:0 1px 3px rgba(0,0,0,.4); --sh-2:0 4px 14px rgba(0,0,0,.45);
  --ama-cam-chu:#FF8A2B;
  --ama-do-chu:#FF8F8F;
  --sh-3:0 14px 36px rgba(0,0,0,.55);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ama-paper:#0A1224; --ama-white:#111C33;
    --ama-gray-050:#131F38; --ama-gray-100:#1B2A47; --ama-gray-200:#25375A;
    --ama-gray-400:#7A8AA6; --ama-gray-600:#AAB7CC; --ama-gray-800:#E4EAF3;
    --ama-navy-800:#8FB4FF; --ama-navy-900:#050B18; --ama-nen-dam:#0A162E;
    --ama-blue-050:#131F38; --ama-blue-100:#1B2A47;
    --ama-orange-050:#2A1A0E; --ama-orange-100:#3A2312;
    --bg:#0A1224; --surface:#111C33; --text:#E4EAF3; --text-soft:#AAB7CC;
    --border:#25375A; --alt:#131F38; --eyebrow:#6EA8FF;
    --sh-1:0 1px 3px rgba(0,0,0,.4); --sh-2:0 4px 14px rgba(0,0,0,.45);
    /* ★ Nền tối thì phải ĐẢO SÁNG lên, không phải giữ nguyên. */
    --ama-cam-chu:#FF8A2B;   /* 7,21 trên #111C33 */
    --ama-do-chu:#FF8F8F;    /* 6,35 trên #1B2A47 */
    --sh-3:0 14px 36px rgba(0,0,0,.55);
    color-scheme:dark;
  }
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ── 3. NỀN TẢNG ──────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--bg);color:var(--text);
  font:400 17px/1.65 var(--ama-font-body);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--ama-chu-lien-ket);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:3px solid var(--ama-blue-400);outline-offset:3px;border-radius:var(--r-sm)}
::selection{background:var(--ama-blue-100);color:var(--ama-navy-800)}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:0;z-index:999;padding:12px 20px;
  background:var(--ama-nen-dam);color:#fff;border-radius:0 0 var(--r-md) 0}
.skip-link:focus{left:0}

h1,h2,h3,h4{font-family:var(--ama-font-head);line-height:1.22;margin:0 0 var(--sp-3);
  color:var(--text);font-weight:700;letter-spacing:-.015em}
h1{font-size:32px;font-weight:800;letter-spacing:-.02em}
h2{font-size:26px}
h3{font-size:20px}
h4{font-size:17px;font-weight:600}
p{margin:0 0 var(--sp-4)}
ul,ol{margin:0 0 var(--sp-4);padding-left:1.3em}
li{margin-bottom:var(--sp-2)}
small{font-size:14px;color:var(--text-soft)}
blockquote{margin:var(--sp-6) 0;padding:var(--sp-4) var(--sp-5);border-left:4px solid var(--ama-orange-500);
  background:var(--ama-orange-050);border-radius:0 var(--r-md) var(--r-md) 0;font-style:italic}
code{font-family:var(--ama-font-mono);font-size:.86em;background:var(--ama-blue-050);
  padding:2px 7px;border-radius:var(--r-sm);color:var(--ama-chu-lien-ket)}
hr{border:0;border-top:1px solid var(--border);margin:var(--sp-8) 0}

@media (min-width:768px){
  h1{font-size:44px} h2{font-size:32px} h3{font-size:22px}
}
@media (min-width:1024px){
  h1{font-size:56px} h2{font-size:36px} h3{font-size:24px}
  body{font-size:17px}
}

/* ── 4. BỐ CỤC ────────────────────────────────────────────────────────────── */
.ama-container{width:100%;max-width:1180px;margin:0 auto;padding:0 var(--sp-5)}
/* ★★★ LƯỢT 77 — KHUNG ĐẦU TRANG RỘNG HƠN KHUNG NỘI DUNG.
 *
 *  Đo được sau khi đưa 8 mục thực đơn ra cùng hàng: đầu trang cần **1.413px**
 *  mà khung chỉ cho **1.180px** → tràn 233px.
 *
 *  ★ Đầu trang là MỘT HÀNG NGANG; khung 1.180px sinh ra để giữ dòng chữ đọc
 *    không dài quá mắt theo kịp — một ràng buộc của VĂN BẢN, không phải của
 *    một hàng nút. Nới riêng đầu trang lên 1.340px là trả lại 160px mà không
 *    đụng gì tới bề rộng đọc của các khối bên dưới. */
.ama-header .ama-container{max-width:1340px}
/* ★★ Và dưới 1.360px thì khung đầu trang bám sát mép: mỗi bên 20px lề là đủ,
 *    không cần giữ khoảng trắng của một khung đọc. */
@media (max-width:1359px){ .ama-header .ama-container{padding:0 var(--sp-4)} }
.ama-container--narrow{max-width:820px}
.ama-section{padding:var(--sp-12) 0}
.ama-section--alt{background:var(--alt)}
.ama-section--dark{background:var(--ama-nen-dam);color:#fff}
.ama-section--dark h1,.ama-section--dark h2,.ama-section--dark h3{color:#fff}
.ama-section--warm{background:var(--ama-orange-050)}
@media (min-width:768px){.ama-section{padding:var(--sp-20) 0}}

.ama-grid{display:grid;gap:var(--sp-5);grid-template-columns:minmax(0,1fr)}
.ama-grid--2{grid-template-columns:minmax(0,1fr)}
.ama-grid--3{grid-template-columns:minmax(0,1fr)}
/* ★★★ LƯỢT 76 — HAI CỘT TRÊN MÀN 390px LÀ NGUYÊN NHÂN CỦA CẢ HAI VẤN ĐỀ.
 *
 *  Mổ một thẻ Lính trên màn 390px, lưới 2 cột → mỗi thẻ rộng **165px**:
 *
 *      109px  phần đầu (số + tên)
 *       59px  tên tiếng Anh   ← VỠ BỐN DÒNG trong 165px
 *      116px  dòng tả
 *      298px  danh sách việc  ← mỗi dòng việc vỡ 2–3 dòng
 *       86px  phần chân
 *      ────
 *      686px một thẻ, và chiều cao danh sách việc chạy từ 196px tới 430px
 *
 *  Nên khối `agents` cao **3.421px** trên điện thoại (một phần năm cả trang
 *  chủ), và bảy thẻ lệch nhau **186px**. Hai cột không làm nó gọn hơn — nó
 *  làm mọi dòng chữ vỡ ra, và chữ vỡ thì cao hơn chữ không vỡ.
 *
 *  ★★ Một cột dưới 560px: không dòng nào vỡ, nên mỗi thẻ thấp hơn hẳn VÀ bảy
 *     thẻ bằng nhau. Gọn hơn bằng cách cho chữ đủ chỗ — không phải bằng cách
 *     nhồi thêm cột.
 *  ★ Thẻ "năm việc" thì ngược lại: ruột nó ngắn (một dòng tên + 3 dòng tả),
 *    nên hai cột vẫn vừa và tiết kiệm được thật. Giữ 2 cột cho nó. */
.ama-grid--4{grid-template-columns:minmax(0,1fr)}
@media (min-width:560px){.ama-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ama-grid--5{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:640px){.ama-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ama-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:900px){.ama-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ama-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ama-grid--5{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* ★★★ LƯỢT 76 — HAI NỬA PHẢI CAO BẰNG NHAU.
 *
 *  Đo được ở khối bản đồ: bản đồ 380px, khung bên phải 579px → **lệch 199px**
 *  trên máy tính và 236px trên điện thoại. `align-items:center` căn giữa hai
 *  khối cao khác nhau, nên khối thấp nổi lơ lửng giữa hai vệt trắng.
 *  ★ `stretch` cho hai nửa kéo bằng nhau; khối nào cần căn giữa ruột thì tự
 *    lo bên trong nó. */
.ama-split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6);
  align-items:stretch}
@media (min-width:960px){.ama-split{grid-template-columns:1.1fr .9fr;gap:var(--sp-12)}}

/* ★★★ LƯỢT 76 — THU DIỆN TÍCH PHẦN GIỚI THIỆU KHỐI.
 *
 *  Đo được: riêng phần tiêu đề của khối `agents` cao **203px** trên điện
 *  thoại — gần một phần tư màn hình chỉ để giới thiệu khối sắp tới. Có 11
 *  phần tiêu đề như vậy trên trang chủ, nên mỗi 16px cắt ở đây nhân lên 11
 *  lần.
 *  ★ `--sp-10` (40px) → `--sp-6` (24px) và câu phụ 17px → 16px. */
.sec-head{text-align:center;max-width:720px;margin:0 auto var(--sp-6)}
.sec-head p{color:var(--text-soft);font-size:16px;margin:0;line-height:1.55}
.sec-head__tai{margin-top:var(--sp-3)!important}
.eyebrow{display:inline-block;font:700 13px/1 var(--ama-font-head);letter-spacing:.18em;
  text-transform:uppercase;color:var(--eyebrow,var(--ama-blue-600));margin-bottom:var(--sp-3)}
.ama-section--dark .eyebrow{color:var(--ama-orange-400)}

/* ── 5. THẺ (CARD) ────────────────────────────────────────────────────────── */
.ama-card{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5);box-shadow:var(--sh-1);transition:box-shadow var(--dur) var(--ease),
  transform var(--dur) var(--ease)}
.ama-card--hover:hover{box-shadow:var(--sh-2);transform:translateY(-3px)}
.ama-card h3{margin-bottom:var(--sp-2)}
.ama-card p:last-child{margin-bottom:0}

/* ── 6. NÚT ───────────────────────────────────────────────────────────────── */
.btn-cta,.btn-primary,.btn-ghost,.btn-danger,.btn-white{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  min-height:48px;padding:0 var(--sp-6);border:0;border-radius:var(--r-pill);
  font:700 16px/1 var(--ama-font-head);letter-spacing:.01em;cursor:pointer;
  text-decoration:none!important;white-space:nowrap;max-width:100%;
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),
             background var(--dur) var(--ease)}
.btn-cta{background:var(--ama-grad-cta);color:#fff;box-shadow:var(--sh-cta)}
.btn-cta:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(242,106,27,.42)}
.btn-cta:active{transform:translateY(0)}
.btn-primary{background:var(--ama-blue-600);color:#fff}
.btn-primary:hover{background:var(--ama-blue-700);transform:translateY(-2px)}
.btn-ghost{background:transparent;color:var(--ama-chu-lien-ket);
  box-shadow:inset 0 0 0 2px var(--ama-blue-600)}
.btn-ghost:hover{background:var(--ama-blue-050)}
.btn-white{background:#fff;color:var(--ama-navy-800);box-shadow:var(--sh-2)}
.btn-white:hover{transform:translateY(-2px)}
.btn-danger{background:var(--ama-danger);color:#fff}
.btn-cta[disabled],.btn-primary[disabled]{background:var(--ama-gray-200);
  color:var(--ama-gray-400);box-shadow:none;cursor:not-allowed;transform:none}
.btn-sm{min-height:38px;padding:0 var(--sp-4);font-size:14px}
.btn-lg{min-height:56px;padding:0 var(--sp-8);font-size:17px}
.btn-block{display:flex;width:100%}
.btn-icon{width:40px;height:40px;flex:none;min-height:44px;padding:0;border-radius:var(--r-md);
  background:transparent;color:var(--text-soft);display:inline-grid;place-items:center;
  border:0;cursor:pointer;font-size:18px;transition:background var(--dur) var(--ease)}
.btn-icon:hover{background:var(--ama-gray-100);color:var(--text)}
.btn-group{display:flex;flex-wrap:wrap;gap:var(--sp-3)}

@media (max-width:400px){
  .btn-cta,.btn-primary,.btn-ghost,.btn-white,.btn-danger{
    white-space:normal;padding:10px var(--sp-4);line-height:1.3;text-align:center}
  .btn-lg{font-size:15px}
}

/* ── 7. NHÃN & HUY HIỆU ───────────────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--r-pill);
  font:700 12px/1.5 var(--ama-font-head);letter-spacing:.04em}
.badge--blue{background:var(--ama-blue-100);color:var(--ama-chu-lien-ket)}
.badge--orange{background:var(--ama-orange-100);color:var(--ama-orange-600)}
.badge--green{background:var(--ama-success-100);color:var(--ama-success-700)}
.badge--gray{background:var(--ama-gray-100);color:var(--ama-gray-600)}
.badge--live{background:var(--ama-success-100);color:var(--ama-success-700)}
.badge--soon{background:var(--ama-gray-100);color:var(--ama-gray-400)}
/* ★ Thiếu đúng một biến thể: "cần người để ý". (Lượt 83)
 *   Màu chữ dùng `--ama-warning` (#996E00) chứ không phải một sắc vàng nhạt —
 *   vàng nhạt trên nền vàng nhạt là cặp màu đọc không nổi, và một nhãn
 *   "Cần gọi hỏi lại" mà đọc không nổi thì không gọi được ai. */
.badge--warn{background:#FFF4D6;color:var(--ama-warning)}
.pill-outline{display:inline-block;padding:6px 16px;max-width:100%;border-radius:var(--r-pill);
  border:1.5px solid rgba(255,255,255,.35);color:#fff;
  font:700 12px/1.5 var(--ama-font-head);letter-spacing:.16em;text-transform:uppercase;
  word-break:break-word}

/* ── 8. HEADER ────────────────────────────────────────────────────────────── */
.ama-header{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--surface) 88%,transparent);
  backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);
  border-bottom:1px solid var(--border)}
.ama-header__inner{display:flex;align-items:center;gap:var(--sp-4);height:64px}
.ama-logo{display:flex;align-items:center;gap:10px;flex:none;text-decoration:none!important}
.ama-logo__mark{width:40px;height:40px;border-radius:11px;background:var(--ama-grad-hero);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font:800 16px/1 var(--ama-font-head);flex:none;box-shadow:var(--sh-1);white-space:nowrap}
.ama-logo__mark span{color:var(--ama-orange-400)}
.ama-logo__txt{display:none;flex-direction:column;line-height:1.15}
.ama-logo__name{font:800 16px/1.1 var(--ama-font-head);color:var(--text);letter-spacing:-.02em}
/* ★★★ LƯỢT 77 — DÒNG SLOGAN CHIẾM MẤT CHỖ CỦA THỰC ĐƠN.
 *
 *  ĐO ĐƯỢC: khối logo rộng **358px**, trong đó riêng dòng slogan là **308px** —
 *  31 ký tự ở cỡ 12px với giãn chữ 0,16em. Thực đơn còn 407px, và từ 1.100px
 *  trở xuống thực đơn **biến mất hẳn** thành nút ba gạch.
 *
 *  Chủ dự án: *"thiết kế dòng chữ này cho nó gọn lại, rút lại, chữ nhỏ xíu
 *  thôi"* — để lấy chỗ đưa các mục con của "Dịch vụ" ra cùng hàng.
 *
 *  ★ Giãn chữ 0,16em trên 31 ký tự tự nó đã cộng thêm ~60px. Hạ cỡ chữ xuống
 *    9,5px và giãn chữ xuống 0,04em: dòng ấy còn ~150px, trả lại một nửa chỗ.
 *  ★★ `max-width` + cắt bằng ba chấm: một bản dịch dài hơn sẽ bị kẹp lại chứ
 *     không đẩy thực đơn văng đi lần nữa. */
/* ★★★ 12px LÀ SÀN, KHÔNG PHẢI GỢI Ý.
 *  Tôi hạ dòng này xuống 9,5px cho vừa hàng đầu trang, và bộ kiểm thử kêu đỏ
 *  ngay: dự án có luật CẤM cỡ chữ dưới 12px (chữ nhỏ hơn thế thì người trên
 *  40 tuổi đọc không nổi — mà khách của Amatay phần lớn là chủ tiệm ở tuổi
 *  ấy). Chủ dự án bảo "chữ nhỏ xíu thôi", nhưng "nhỏ" có một cái sàn.
 *  ★ Chỗ tiết kiệm thật nằm ở CÂU NGẮN (`TenHieu::sloganNgan`), không nằm ở
 *    việc thu chữ xuống mức đọc không ra. */
.ama-logo__sub{font:700 12px/1.25 var(--ama-font-head);letter-spacing:.02em;
  color:var(--ama-orange-600);text-transform:uppercase;
  /* ★ Trần đủ cho trọn câu 31 ký tự ở cỡ 9,5px. Trần 22ch cắt thành
   *   "AI MARKETING FOR LOC…" — chữ cụt giữa từ trông như hỏng, mà mục đích
   *   là thu gọn chứ không phải giấu bớt. Vẫn giữ cắt-ba-chấm làm lưới an
   *   toàn cho bản dịch dài hơn. */
  max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ★★★ DƯỚI 1.360px THÌ GIẤU HẲN DÒNG SLOGAN, ĐỪNG CẮT NÓ.
 *
 *  Đo được: để trọn câu thì ở 1.280px hàng đầu trang thừa 33px. Cắt bớt thành
 *  "AI MARKETING FOR LOC…" thì vừa, nhưng một câu cụt giữa từ trông như trang
 *  hỏng — và nó chẳng nói thêm gì cho ai.
 *
 *  ★ Giấu hẳn thì không mất thông tin: câu ấy vẫn nằm trong `aria-label` của
 *    chính thẻ logo (máy đọc màn hình vẫn đọc đủ), và vẫn hiện nguyên ở chân
 *    trang. Màn hẹp thì tám mục thực đơn đáng chỗ hơn một dòng phụ đề. */
/* ★ Dạng ngắn vừa ở mọi khổ desktop, nên không phải giấu nữa. Dưới 1.000px
 *   thì cả khối chữ logo đã ẩn sẵn (luật `.ama-logo__txt{display:none}`). */
/* Trong chân trang nền xanh đậm, chữ cam đậm lại tối quá — dùng sắc sáng hơn.
   Cùng một chữ "Assistant", hai nền khác nhau, hai màu khác nhau. */
.ama-footer .ama-logo__sub{color:var(--ama-orange-400)}
.ama-nav{display:none;margin-left:auto;align-items:center;gap:2px;flex-wrap:nowrap}
/* ★ Đệm 12px×2 nhân bảy mục là 168px chỉ để chừa lề. Xuống 9px vẫn bấm được
 *   thoải mái (vùng bấm cao 38px) và trả lại 42px cho chữ. */
/* ★ Đo được ở 1.280px: hàng đầu trang còn thừa 56px. Đệm 8px×2 nhân tám mục
 *   là 128px chỉ để chừa lề; xuống 6px trả lại 32px, cỡ chữ 14→13.5 trả thêm
 *   ~24px. Vùng bấm vẫn cao 36px — ngón tay và chuột đều tới được. */
.ama-nav a{white-space:nowrap;padding:8px 6px;border-radius:var(--r-md);color:var(--text);font-weight:600;
  font-size:13.5px;text-decoration:none!important;transition:background var(--dur) var(--ease)}
.ama-nav a:hover{background:var(--ama-blue-050)}
.ama-header__tools{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}
.ama-nav+.ama-header__tools{margin-left:var(--sp-3)}
.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-pill);
  overflow:hidden;background:var(--surface)}
.lang-switch a{padding:7px 11px;font:700 12px/1 var(--ama-font-head);color:var(--text-soft);
  text-decoration:none!important;transition:all var(--dur) var(--ease)}
.lang-switch a.is-active{background:var(--ama-blue-600);color:#fff}
.header-cta{display:none}
@media (min-width:800px){
  .ama-header__inner{height:72px}
  .ama-logo__txt{display:flex}
  .header-cta{display:inline-flex}
}
@media (min-width:1180px){
  .ama-nav{display:flex}
  .ama-menu-btn{display:none!important}
}

/* ── 9. NGĂN KÉO DI ĐỘNG ──────────────────────────────────────────────────── */
.ama-menu-btn{display:inline-grid}
.ama-drawer{position:fixed;inset:0;z-index:100;visibility:hidden;pointer-events:none;
  overflow:hidden}
.ama-drawer[aria-hidden="false"]{visibility:visible;pointer-events:auto}
.ama-drawer__scrim{position:absolute;inset:0;background:rgba(0,18,51,.5);opacity:0;
  transition:opacity var(--dur) var(--ease)}
.ama-drawer[aria-hidden="false"] .ama-drawer__scrim{opacity:1}
.ama-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(84vw,320px);
  background:var(--surface);box-shadow:var(--sh-3);padding:var(--sp-5);
  transform:translateX(100%);transition:transform var(--dur-slow) var(--ease);
  overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.ama-drawer[aria-hidden="false"] .ama-drawer__panel{transform:translateX(0)}
.ama-drawer__panel a{display:block;padding:14px 12px;border-radius:var(--r-md);
  color:var(--text);font-weight:600;font-size:17px;text-decoration:none!important;
  border-bottom:1px solid var(--ama-gray-100)}
.ama-drawer__panel a:last-of-type{border-bottom:0}
.ama-drawer__close{position:absolute;top:12px;right:12px}

/* ── 10. THANH TAB ĐÁY (DI ĐỘNG) ──────────────────────────────────────────── */
.ama-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));background:var(--surface);
  border-top:1px solid var(--border);box-shadow:0 -3px 14px rgba(0,24,72,.08);
  padding-bottom:env(safe-area-inset-bottom)}
/* ★★★ LƯỢT 76 — CHỮ TRONG THANH ĐÁY KHÔNG ĐƯỢC VỠ.
 *
 *  Đo được trên màn 390px: ô CTA rộng **78px**, cao **72px**, chữ trải **5
 *  dòng**. Nguyên do không nằm ở CSS mà ở CHUỖI: `nav.register` dùng chung cho
 *  ba chỗ rộng 78px, 139px và 420px, và bản tiếng Anh của nó là "GET STARTED".
 *  Một chuỗi cho ba bề rộng ấy thì chỗ hẹp nhất phải vỡ. Lượt này tách riêng
 *  một chuỗi ngắn cho thanh đáy (`nav.register_tab`).
 *
 *  ★★ Và chặn ở CSS thêm một lớp nữa, vì bản dịch nào cũng có thể dài ra: kẹp
 *     đúng MỘT dòng, thừa thì bỏ bằng dấu ba chấm. Một ô điều hướng cao gấp
 *     đôi mấy ô bên cạnh làm cả thanh lệch, và người ta bấm trượt. */
.ama-tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;min-height:60px;color:var(--text-soft);font:600 12px/1.2 var(--ama-font-head);
  text-decoration:none!important;text-align:center;padding:6px 2px;
  white-space:nowrap;overflow:hidden}
.ama-tabbar a>:not(i){display:block;max-width:100%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.ama-tabbar a i{font-style:normal;font-size:19px;line-height:1}
/* ★ Dùng biến chữ-liên-kết (đổi theo chế độ Sáng/Tối), KHÔNG dùng thẳng
   --ama-blue-600. Biến đó là màu xanh ĐẬM cố định: ở chế độ Tối nó nằm trên
   nền xanh đen và chỉ đạt 2,2:1 — mục đang chọn trên thanh dưới cùng hoá ra
   là mục KHÓ ĐỌC NHẤT, trên mọi trang công khai. */
.ama-tabbar a.is-active{color:var(--ama-chu-lien-ket)}
.ama-tabbar__cta{position:relative}
.ama-tabbar__cta i{width:46px;height:46px;border-radius:50%;background:var(--ama-grad-cta);
  color:#fff!important;display:grid;place-items:center;margin-top:-18px;
  box-shadow:var(--sh-cta);font-size:20px!important}
/* Chữ nhỏ 10,5px thì màu cam sáng chỉ đạt 3,06:1 — dùng bậc đậm hơn */
.ama-tabbar__cta{color:var(--ama-orange-600)!important}
body{padding-bottom:66px}
@media (min-width:1180px){.ama-tabbar{display:none}body{padding-bottom:0}}

/* ── 11. HERO ─────────────────────────────────────────────────────────────── */
.hero{position:relative;background:var(--ama-grad-hero);color:#fff;overflow:hidden;
  padding:var(--sp-12) 0 var(--sp-16)}
.hero::before{content:"";position:absolute;inset:0;opacity:.14;pointer-events:none;
  background-image:
    radial-gradient(circle at 12% 22%,rgba(255,255,255,.5) 1.5px,transparent 1.6px),
    radial-gradient(circle at 82% 68%,rgba(255,138,43,.7) 2px,transparent 2.1px);
  background-size:46px 46px,64px 64px}
.hero__grid{position:relative;display:grid;grid-template-columns:minmax(0,1fr);
  gap:var(--sp-8);align-items:center}
.hero h1{color:#fff;margin:var(--sp-4) 0 var(--sp-4);text-wrap:balance;max-width:16ch}
/* ★★★ LƯỢT 77 — TIÊU ĐỀ NHỎ LẠI ĐỂ CÂN VỚI CỘT PHẢI.
  *  Chủ dự án: *"Cho kích thước nhỏ lại và cân nó bằng hình bên tay phải"*.
  *  Đo được: ở 46px câu tiêu đề chiếm NĂM dòng và cao 248px trên một cột 600px,
  *  trong khi cả cột phải chỉ có một khung điện thoại 264px. Xuống 38/42px thì
  *  tiêu đề còn bốn dòng và hai cột nhìn ngang nhau. */
@media (min-width:960px){.hero h1{max-width:none;font-size:38px}}
@media (min-width:1280px){.hero h1{font-size:42px}}
.hero__lead{font-size:17px;line-height:1.7;color:rgba(255,255,255,.9);
  margin-bottom:var(--sp-6);max-width:54ch}
.hero__ticks{display:grid;gap:var(--sp-2);margin-top:var(--sp-8);
  grid-template-columns:minmax(0,1fr);font-size:14.5px;color:rgba(255,255,255,.92)}
.hero__ticks span{display:flex;align-items:flex-start;gap:8px}
.hero__ticks span::before{content:"✓";color:var(--ama-orange-400);font-weight:800;flex:none}
.hero__visual{position:relative}
.hero__phone{background:#fff;border-radius:22px;padding:14px;box-shadow:var(--sh-3);
  max-width:290px;margin:0 auto;color:var(--ama-navy-800)}
.hero__phone-bar{height:5px;width:44px;background:var(--ama-gray-200);border-radius:3px;
  margin:0 auto var(--sp-3)}
.hero__post{border:1px solid var(--ama-gray-100);border-radius:var(--r-md);overflow:hidden}
.hero__post-img{height:104px;background:linear-gradient(135deg,#FFE8D6,#DCE9FB);
  display:grid;place-items:center;font-size:34px}
.hero__post-body{padding:11px 12px;font-size:12.5px;line-height:1.5}
.hero__post-meta{display:flex;align-items:center;gap:6px;margin-top:9px;
  font-size:12px;color:var(--ama-gray-600)}
.hero__note{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);
  border-radius:var(--r-md);padding:12px 14px;margin-top:var(--sp-4);
  font-size:13.5px;color:#fff;display:flex;gap:9px;align-items:flex-start;max-width:290px;
  margin-left:auto;margin-right:auto}
@media (min-width:640px){.hero__ticks{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (min-width:960px){
  .hero{padding:var(--sp-20) 0}
  .hero__grid{grid-template-columns:1.15fr .85fr;gap:var(--sp-12)}
  .hero__lead{font-size:19px}
  .hero__phone{max-width:320px}
}

/* ── 12. DẢI TIN CẬY ──────────────────────────────────────────────────────── */
.trust{background:var(--surface);border-bottom:1px solid var(--border)}
.trust__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);
  padding:var(--sp-6) 0}
.trust__item{text-align:center}
.trust__num{font:800 26px/1.1 var(--ama-font-head);color:var(--ama-navy-800);
  letter-spacing:-.02em}
.trust__lab{font-size:12.5px;color:var(--text-soft);margin-top:3px;line-height:1.4}
@media (min-width:900px){
  .trust__grid{grid-template-columns:repeat(5,minmax(0,1fr));padding:var(--sp-8) 0}
  .trust__num{font-size:32px}
  .trust__lab{font-size:13.5px}
}

/* ── 13. NGŨ GIÁC 5 BƯỚC ──────────────────────────────────────────────────── */
.penta{position:relative}
/* ★★★ LƯỢT 76 — NĂM THẺ PHẢI CAO BẰNG NHAU.
 *
 *  Đo được trên điện thoại: 361 · 361 · 294 · 294 · 249 px → **lệch 112px**.
 *  Trên máy tính lưới kéo cho đều 294px, nhưng dòng tả bên trong vẫn so le
 *  **3 · 4 · 5 · 6 dòng** — nên thẻ nào cũng chừa một khoảng trắng khác nhau
 *  ở dưới, và mắt đọc ra ngay là chưa xong.
 *
 *  ★★ Chữa HAI đầu, không một đầu: rút dòng tả cho đều (xem bản vá i18n của
 *     lượt này) VÀ đặt sàn 3 dòng ở đây. Chỉ rút chữ thì lần sau ai sửa chữ
 *     là lệch lại; chỉ đặt sàn thì chữ dài vẫn đẩy thẻ cao lên. */
.penta__item{text-align:center;padding:var(--sp-4) var(--sp-3);min-width:0;
  display:flex;flex-direction:column}
.penta__icon{width:52px;height:52px;margin:0 auto var(--sp-2);border-radius:50%;
  display:grid;place-items:center;font-size:26px;background:var(--surface);
  box-shadow:var(--sh-2);border:2px solid var(--ama-blue-100)}
.penta__item:nth-child(3) .penta__icon,
.penta__item:nth-child(5) .penta__icon{border-color:var(--ama-orange-100)}
.penta__name{font:800 13px/1.2 var(--ama-font-head);letter-spacing:.1em;
  color:var(--ama-navy-800);margin-bottom:4px;overflow-wrap:anywhere;hyphens:auto}
.penta__en{font:700 12px/1.3 var(--ama-font-head);letter-spacing:.14em;
  color:var(--ama-gray-400);margin-bottom:var(--sp-3);text-transform:uppercase;
  overflow-wrap:anywhere}
@media (min-width:560px){ .penta__desc{min-height:4.8em!important} }
.penta__desc{font-size:14px;color:var(--text-soft);line-height:1.6;margin:0;
  /* ★ Sàn 3 dòng: 3 × 1.6 = 4.8em. Thẻ nào chữ ngắn thì chừa đúng bằng thẻ
   *   chữ dài, nên năm thẻ cao bằng nhau mà không cắt chữ của ai.
   * ★★ Thẻ "năm việc" xếp HAI CỘT ngay từ màn hẹp nhất, nên ở đây phải đặt
   *    sàn cho CẢ điện thoại — khác thẻ Lính (một cột dưới 560px). Trên màn
   *    hẹp, 60 ký tự vỡ thành 5 dòng, nên sàn ở đó là 5 × 1.6 = 8em. */
  min-height:8em;
  overflow-wrap:anywhere}

/* ── 14. THẺ AGENT ────────────────────────────────────────────────────────── */
.agent{position:relative;display:flex;flex-direction:column;height:100%}
.agent__head{display:flex;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-2);
  min-width:0}
.agent__head>div:not(.agent__no){min-width:0;flex:1}
.agent__no{width:38px;height:38px;border-radius:var(--r-md);flex:none;display:grid;
  place-items:center;font:800 15px/1 var(--ama-font-head);color:#fff;
  background:var(--ama-grad-cta);box-shadow:var(--sh-1)}
.agent--soon .agent__no{background:var(--ama-gray-400);box-shadow:none}
/* ★★★ LƯỢT 76 — BẢY THẺ LÍNH PHẢI CAO BẰNG NHAU.
 *
 *  Đo được trên điện thoại: thấp nhất 686px, cao nhất 905px → **lệch 219px**.
 *  Không phải do dòng tả (đã đều, 38–54 ký tự) mà do:
 *      · TÊN lính dài ngắn khác nhau — "Mạng xã hội" một dòng, còn
 *        "Hồ sơ doanh nghiệp Google" và "Website & Tìm kiếm AI" hai dòng;
 *      · danh sách việc 4 dòng hoặc 5 dòng (đúng theo bản in, không sửa được).
 *
 *  ★★ Nên đặt SÀN theo số dòng lớn nhất: tên 2 dòng, tả 2 dòng, việc 5 dòng.
 *     Thẻ nào ít hơn thì chừa trống đúng bằng thẻ nhiều nhất. Cách khác là
 *     cắt bớt việc của ba lính 5 việc — nhưng con số 31 đầu việc in trên bản
 *     giấy, sửa nó là làm bản in nói khác phần mềm. */
.agent__title{font:700 16px/1.25 var(--ama-font-head);color:var(--text);margin:2px 0 2px;

  overflow-wrap:anywhere}
.agent__en{font-size:12px;color:var(--ama-gray-400);letter-spacing:.03em;overflow-wrap:anywhere}
.agent__desc{font-size:14.5px;color:var(--text-soft);line-height:1.6;
  margin-bottom:var(--sp-3)}
.agent__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);
  padding-top:var(--sp-3);border-top:1px solid var(--ama-gray-100);font-size:12.5px;
  color:var(--text-soft);flex-wrap:wrap}
.agent--soon{opacity:.72}
.agent__note{font-size:12px;color:var(--ama-orange-600);margin-top:var(--sp-2);
  display:flex;gap:5px;align-items:flex-start}

/* ── 15. BẢNG GIÁ ─────────────────────────────────────────────────────────── */
.price{position:relative;display:flex;flex-direction:column;text-align:center;height:100%}
.price--pop{border-color:var(--ama-orange-500);box-shadow:var(--sh-3);
  border-width:2px}
.price__flag{position:absolute;top:-13px;left:50%;transform:translateX(-50%);
  background:var(--ama-grad-cta);color:#fff;padding:5px 16px;border-radius:var(--r-pill);
  font:800 12px/1 var(--ama-font-head);letter-spacing:.14em;white-space:nowrap;
  box-shadow:var(--sh-cta)}
.price__name{font:800 15px/1 var(--ama-font-head);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ama-blue-600);margin:var(--sp-2) 0 var(--sp-4)}
.price--pop .price__name{color:var(--ama-orange-500)}
.price__amt{font:800 46px/1 var(--ama-font-head);color:var(--text);letter-spacing:-.03em}
.price__per{font-size:15px;color:var(--text-soft);font-weight:600}
.price__tag{font-size:14px;color:var(--text-soft);margin:var(--sp-2) 0 var(--sp-4);
  min-height:44px;line-height:1.5}
/* ★ Đo được: riêng danh sách tính năng cao 407px trong một thẻ giá 712px —
 *   quá nửa. Siết khe dòng, không cắt dòng nào: mỗi dòng là một hạn mức khách
 *   cần đọc để so hai gói. */
.price__list{list-style:none;padding:0;margin:0 0 var(--sp-4);text-align:left;flex:1}
.price__list li{display:flex;gap:9px;align-items:flex-start;font-size:14.5px;
  margin-bottom:var(--sp-2)}
.price__list li::before{content:"✓";color:var(--ama-success-700);font-weight:800;flex:none}
.price__note{font-size:13px;color:var(--text-soft);text-align:center;margin-top:var(--sp-6)}

/* ── 16. AGENT-PICKER (Menu-List tự tính tiền) ────────────────────────────── */
.picker{background:var(--surface);border:2px solid var(--ama-blue-100);
  border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-2)}
.picker__head{font:800 14px/1 var(--ama-font-head);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ama-navy-800);margin-bottom:var(--sp-4);text-align:center}
.picker__list{display:grid;gap:var(--sp-2);margin-bottom:var(--sp-4)}
.checkbox-card{position:relative;display:block;cursor:pointer}
.checkbox-card input{position:absolute;opacity:0;width:0;height:0}
.checkbox-card>span{display:flex;align-items:center;gap:11px;min-height:52px;
  padding:10px 14px;border:2px solid var(--border);border-radius:var(--r-md);
  background:var(--surface);font:500 15px/1.35 var(--ama-font-body);color:var(--text);
  transition:all var(--dur) var(--ease)}
.checkbox-card input:checked+span{border-color:var(--ama-blue-600);background:var(--ama-blue-050);
  color:var(--ama-navy-800);font-weight:600;box-shadow:inset 0 0 0 1px var(--ama-blue-600)}
.checkbox-card input:focus-visible+span{outline:3px solid var(--ama-blue-400);outline-offset:2px}
.checkbox-card input:disabled+span{opacity:.55;cursor:not-allowed}
.checkbox-card__tick{width:22px;height:22px;border-radius:6px;border:2px solid var(--border);
  flex:none;display:grid;place-items:center;font-size:13px;color:transparent;
  transition:all var(--dur) var(--ease)}
.checkbox-card input:checked+span .checkbox-card__tick{background:var(--ama-blue-600);
  border-color:var(--ama-blue-600);color:#fff}
.checkbox-card__main{flex:1;min-width:0}
.checkbox-card__name{font-weight:600;display:block}
.checkbox-card__meta{font-size:12px;color:var(--text-soft);display:block;margin-top:1px}
.checkbox-card__price{font:700 13px/1 var(--ama-font-head);color:var(--ama-cam-chu);
  white-space:nowrap;flex:none}
.picker__sum{border-top:2px dashed var(--border);padding-top:var(--sp-4);text-align:center}
.picker__count{font-size:14px;color:var(--text-soft);margin-bottom:var(--sp-2)}
.picker__total{font:800 34px/1 var(--ama-font-head);color:var(--ama-navy-800);
  letter-spacing:-.02em}
.picker__total small{font:600 15px/1 var(--ama-font-head);color:var(--text-soft)}
.picker__match{margin-top:var(--sp-3);padding:9px 14px;border-radius:var(--r-md);
  background:var(--ama-success-100);color:var(--ama-success-700);font-size:13.5px;font-weight:600}
.picker__disc{margin-top:var(--sp-2);font-size:13px;color:var(--text-soft)}
.picker__hint{font-size:12px;color:var(--ama-orange-600);margin-top:var(--sp-2);
  display:none}
.picker__hint.is-on{display:block}

/* ── 17. QUY TRÌNH 3 BƯỚC ─────────────────────────────────────────────────── */
.step{position:relative;text-align:center;padding-top:var(--sp-4)}
.step__no{width:52px;height:52px;border-radius:50%;background:var(--ama-grad-hero);
  color:#fff;display:grid;place-items:center;font:800 21px/1 var(--ama-font-head);
  margin:0 auto var(--sp-4);box-shadow:var(--sh-2)}
.step h3{font-size:18px}
.step p{font-size:14.5px;color:var(--text-soft);margin:0}

/* ── 18. VỀ CHÚNG TÔI ─────────────────────────────────────────────────────── */
.about__body{max-width:760px;margin:0 auto;font-size:16.5px;line-height:1.8;
  color:rgba(255,255,255,.9)}
.about__body h3{font-size:20px;margin:var(--sp-8) 0 var(--sp-3);color:#fff}
.about__body strong{color:#fff}
.about__body blockquote{background:rgba(255,255,255,.08);border-left-color:var(--ama-orange-400);
  color:#fff}
.about__body table{width:100%;border-collapse:collapse;margin:var(--sp-4) 0;font-size:15px}
.about__body td{padding:10px 4px;border-bottom:1px solid rgba(255,255,255,.14)}
.about__body td:last-child{text-align:right;white-space:nowrap;color:var(--ama-orange-400);
  font-weight:700}
.about__body ol{padding-left:1.2em}
.about__body a{color:var(--ama-orange-400)}

/* ── 19. CAM KẾT BẢO MẬT ──────────────────────────────────────────────────── */
.sec-list{display:grid;gap:var(--sp-4);counter-reset:s}
.sec-item{display:flex;gap:var(--sp-3);align-items:flex-start;background:var(--surface);
  border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-1)}
.sec-item__no{width:34px;height:34px;border-radius:50%;background:var(--ama-orange-500);
  color:#fff;display:grid;place-items:center;font:800 15px/1 var(--ama-font-head);flex:none}
.sec-item p{margin:0;font-size:14.5px;line-height:1.55}
.sec-sum{text-align:center;font-size:13.5px;color:var(--text-soft);font-style:italic;
  margin-top:var(--sp-6)}

/* ── 20. HỎI–ĐÁP ──────────────────────────────────────────────────────────── */
.faq{max-width:800px;margin:0 auto}
.faq details{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-md);margin-bottom:var(--sp-3);overflow:hidden}
.faq summary{padding:var(--sp-3) var(--sp-4);cursor:pointer;font-weight:600;font-size:15.5px;
  list-style:none;display:flex;justify-content:space-between;gap:var(--sp-4);align-items:center;
  min-height:56px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:400 24px/1 var(--ama-font-head);color:var(--ama-blue-600);
  flex:none;transition:transform var(--dur) var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details>div{padding:0 var(--sp-5) var(--sp-5);color:var(--text-soft);font-size:15px;
  line-height:1.7}

/* ── 21. LIÊN HỆ ──────────────────────────────────────────────────────────── */
.contact-card{background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-6);
  box-shadow:var(--sh-1);border:1px solid var(--border);height:100%}
.contact-card h3{font-size:15px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ama-blue-600);margin-bottom:var(--sp-4)}
.contact-row{display:flex;align-items:flex-start;gap:11px;padding:9px 0;
  border-bottom:1px solid var(--ama-gray-100);font-size:15px}
.contact-row:last-child{border-bottom:0}
.contact-row i{font-style:normal;font-size:17px;flex:none;line-height:1.5}
.contact-row a{font-weight:600;word-break:break-word}
.contact-row small{display:block;color:var(--text-soft);font-size:12.5px;margin-top:1px}

/* ── 22. BẢN ĐỒ ───────────────────────────────────────────────────────────── */
.map-panel{background:var(--surface);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-1);border:1px solid var(--border);
  /* ★ Nửa bản đồ kéo cao bằng nửa bên phải, và khung ảnh bản đồ ăn hết phần
   *   dư — chứ không để một vệt trắng dưới chân bản đồ. */
  display:flex;flex-direction:column}
.map-panel .map-canvas{flex:1;min-height:340px;height:auto}
.map-canvas{height:340px;background:var(--ama-blue-050);display:grid;place-items:center;
  color:var(--text-soft);font-size:14px;text-align:center;padding:var(--sp-5)}
.map-stats{padding:var(--sp-5)}
.map-stats__row{display:flex;justify-content:space-between;padding:9px 0;
  border-bottom:1px solid var(--ama-gray-100);font-size:15px}
.map-stats__row:last-child{border-bottom:0}
.map-stats__row b{font-weight:700}
.map-attr{font-size:12px;color:var(--ama-gray-400);padding:var(--sp-2) var(--sp-5)}

/* ── 23. FOOTER ───────────────────────────────────────────────────────────── */
.ama-footer{background:var(--ama-navy-900);color:rgba(255,255,255,.72);
  padding:var(--sp-8) 0 var(--sp-5);font-size:14px}
.ama-footer a{color:rgba(255,255,255,.82);text-decoration:none}
.ama-footer a:hover{color:#fff;text-decoration:underline}
.ama-footer h4{color:#fff;font-size:13px;letter-spacing:.1em;text-transform:uppercase;
  margin-bottom:var(--sp-4)}
.ama-footer ul{list-style:none;padding:0;margin:0}
.ama-footer li{margin-bottom:6px;line-height:1.45}
/* ★★★ LƯỢT 76 — FOOTER thu từ 1.012px (điện thoại) xuống. Bốn cột cao
 *  159 · 164 · 196 · 209px → lệch 50px; khe 32px giữa các cột nhân bốn lần. */
.ama-footer__grid{display:grid;gap:var(--sp-5);grid-template-columns:1fr}
.ama-footer__bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:var(--sp-5);
  padding-top:var(--sp-5);display:flex;flex-wrap:wrap;gap:var(--sp-3);
  justify-content:space-between;font-size:13px}
@media (min-width:768px){.ama-footer__grid{grid-template-columns:1.6fr 1fr 1fr 1.2fr}}

/* ── 24. CHATBOT NỔI ──────────────────────────────────────────────────────── */
.chat-fab{position:fixed;right:16px;bottom:80px;z-index:65;min-height:56px;
  border-radius:var(--r-pill);background:var(--ama-grad-cta);color:#fff;border:0;cursor:pointer;
  display:inline-flex;align-items:center;gap:9px;padding:0 20px 0 16px;
  box-shadow:var(--sh-cta);transition:transform var(--dur) var(--ease);
  font:700 15px/1 var(--ama-font-head)}
.chat-fab:hover{transform:scale(1.05)}
.chat-fab__i{font-size:23px;line-height:1}
@media (max-width:479px){.chat-fab{padding:0;width:56px;justify-content:center}
  .chat-fab__t{display:none}}
@media (min-width:1180px){.chat-fab{bottom:24px;right:24px}}

/* ── Hộp trò chuyện ─────────────────────────────────────────────────────── */
.chat{position:fixed;z-index:70;right:16px;bottom:148px;width:min(calc(100vw - 32px),392px);
  height:min(72vh,560px);background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-xl);box-shadow:var(--sh-3);display:flex;flex-direction:column;
  overflow:hidden}
@media (min-width:1180px){.chat{bottom:92px;right:24px}}
@media (max-width:479px){.chat{right:8px;left:8px;width:auto;bottom:142px;height:min(74vh,540px)}}
.chat[hidden]{display:none}
.chat__h{display:flex;align-items:center;gap:11px;padding:12px 14px;flex:none;
  background:var(--ama-nen-dam);color:#fff}
.chat__av{width:38px;height:38px;border-radius:11px;background:var(--ama-grad-cta);flex:none;
  display:grid;place-items:center;font:800 16px/1 var(--ama-font-head)}
.chat__ten{flex:1;min-width:0}
.chat__ten b{display:block;font:700 14.5px/1.3 var(--ama-font-head)}
.chat__ten small{display:block;font-size:12px;color:rgba(255,255,255,.7)}
.chat__x{background:transparent;border:0;color:#fff;cursor:pointer;font-size:15px;
  width:34px;height:34px;border-radius:9px;flex:none}
.chat__x:hover{background:rgba(255,255,255,.16)}
.chat__ds{flex:1;overflow-y:auto;padding:var(--sp-4);display:flex;flex-direction:column;
  gap:11px;background:var(--ama-gray-050);overscroll-behavior:contain}
.chat__f{flex:none;display:flex;gap:8px;padding:10px;border-top:1px solid var(--border);
  background:var(--surface);align-items:flex-end}
.chat__f textarea{flex:1;min-width:0;resize:none;border:1px solid var(--border);
  border-radius:var(--r-md);padding:11px 12px;font:400 15px/1.45 var(--ama-font-body);
  background:var(--surface);color:var(--text);max-height:96px}
.chat__f textarea:focus{outline:none;border-color:var(--ama-blue-600)}
.chat__f button{flex:none;width:44px;height:44px;border-radius:var(--r-md);border:0;
  background:var(--ama-grad-cta);color:#fff;cursor:pointer;font-size:16px}
.chat__ghi{flex:none;margin:0;padding:8px 12px;font-size:12px;text-align:center;
  color:var(--text-soft);background:var(--surface);border-top:1px solid var(--border)}
.chat__ghi a{color:var(--ama-chu-lien-ket);font-weight:700;text-decoration:none}

.cbub{max-width:88%;display:flex;flex-direction:column;gap:7px}
.cbub--user{align-self:flex-end;align-items:flex-end}
.cbub--bot{align-self:flex-start}
.cbub__t{padding:11px 14px;border-radius:16px;font-size:15px;line-height:1.55;
  white-space:pre-wrap;overflow-wrap:anywhere}
.cbub--bot .cbub__t{background:var(--surface);border:1px solid var(--border);
  border-bottom-left-radius:5px;color:var(--text)}
.cbub--user .cbub__t{background:var(--ama-blue-600);color:#fff;border-bottom-right-radius:5px}
.cbub__mo{font-size:12.5px;color:var(--ama-orange-600);font-weight:600}
.cbub__nut{display:flex;gap:7px;flex-wrap:wrap}
.cbtn{display:inline-flex;align-items:center;min-height:36px;padding:0 13px;
  border-radius:var(--r-pill);border:1.5px solid var(--ama-blue-600);background:var(--surface);
  color:var(--ama-blue-600);font:600 13.5px/1 var(--ama-font-head);text-decoration:none}
.cbtn:hover{background:var(--ama-blue-600);color:#fff}
.cbub__goi{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.cbub__goi small{color:var(--text-soft);font-size:12px}
.cgoi{text-align:left;border:1px dashed var(--border);background:var(--surface);
  border-radius:12px;padding:8px 12px;cursor:pointer;font:500 13.5px/1.4 var(--ama-font-body);
  color:var(--ama-blue-700);max-width:100%;overflow-wrap:anywhere}
.cgoi:hover{border-color:var(--ama-blue-600);border-style:solid;background:var(--ama-blue-050)}
.cbub--go .cbub__t{display:none}
.cbub--go{flex-direction:row;gap:5px;padding:13px 16px;background:var(--surface);
  border:1px solid var(--border);border-radius:16px;border-bottom-left-radius:5px;width:auto}
.cbub--go span{width:7px;height:7px;border-radius:50%;background:var(--ama-gray-400);
  animation:cgo 1.1s infinite}
.cbub--go span:nth-child(2){animation-delay:.16s}
.cbub--go span:nth-child(3){animation-delay:.32s}
@keyframes cgo{0%,60%,100%{opacity:.28;transform:translateY(0)}
  30%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.cbub--go span{animation:none;opacity:.6}}

/* ── 25. BIỂU MẪU ─────────────────────────────────────────────────────────── */
.field{margin-bottom:var(--sp-4)}
.field-label{display:block;font:600 15px/1.4 var(--ama-font-head);margin-bottom:6px;
  color:var(--text)}
.field-label .req{color:var(--ama-danger-700);margin-left:2px}
.field-hint{font-size:13px;color:var(--text-soft);margin-top:4px}
.field-err{font-size:13px;color:var(--ama-danger-700);margin-top:4px;font-weight:600}
.input,.select,.textarea{
  width:100%;min-height:48px;padding:11px 14px;border:2px solid var(--border);
  border-radius:var(--r-md);background:var(--surface);color:var(--text);
  font:400 16px/1.4 var(--ama-font-body);  /* 16px BẮT BUỘC — iOS không tự phóng to */
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.textarea{min-height:110px;resize:vertical;padding-top:12px}
.input:focus,.select:focus,.textarea:focus{outline:0;border-color:var(--ama-blue-600);
  box-shadow:0 0 0 3px var(--ama-blue-100)}
.input[aria-invalid="true"]{border-color:var(--ama-danger)}
.select{appearance:none;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%235A6880' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer}
.switch input{position:absolute;opacity:0}
.switch__track{width:46px;height:26px;border-radius:13px;background:var(--ama-gray-200);
  position:relative;transition:background var(--dur) var(--ease);flex:none}
.switch__track::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;
  border-radius:50%;background:#fff;box-shadow:var(--sh-1);
  transition:transform var(--dur) var(--ease)}
.switch input:checked+.switch__track{background:var(--ama-blue-600)}
.switch input:checked+.switch__track::after{transform:translateX(20px)}

/* ── 26. BẢNG DỮ LIỆU ─────────────────────────────────────────────────────── */
.ama-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r-md);
  border:1px solid var(--border)}
.ama-table{width:100%;border-collapse:collapse;font-size:14.5px;background:var(--surface)}
.ama-table th{text-align:left;padding:12px 14px;background:var(--ama-gray-050);
  font:600 13px/1.3 var(--ama-font-head);color:var(--text-soft);white-space:nowrap;
  border-bottom:1px solid var(--border);position:sticky;top:0}
.ama-table td{padding:12px 14px;border-bottom:1px solid var(--ama-gray-100)}
.ama-table tr:last-child td{border-bottom:0}
.ama-table tbody tr:hover{background:var(--ama-blue-050)}

/* ── 27. PHẢN HỒI: TOAST · MODAL · TIẾN TRÌNH ─────────────────────────────── */
.toast-wrap{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);z-index:200;
  display:flex;flex-direction:column;gap:9px;width:min(92vw,420px);pointer-events:none}
.toast{background:var(--ama-nen-dam);color:#fff;border-radius:var(--r-md);
  padding:13px 17px;font-size:14.5px;box-shadow:var(--sh-3);pointer-events:auto;
  animation:toastIn var(--dur) var(--ease);display:flex;gap:10px;align-items:flex-start}
.toast--ok{background:var(--ama-success)} .toast--err{background:var(--ama-danger)}
.toast--warn{background:var(--ama-warning);color:#111}
@keyframes toastIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (min-width:1180px){.toast-wrap{bottom:24px;left:auto;right:24px;transform:none}}

.modal{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:var(--sp-4);
  background:rgba(0,18,51,.55);visibility:hidden;opacity:0;
  transition:opacity var(--dur) var(--ease),visibility var(--dur)}
.modal[aria-hidden="false"]{visibility:visible;opacity:1}
.modal__box{background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-6);
  width:min(94vw,560px);max-height:88vh;overflow-y:auto;box-shadow:var(--sh-3);
  overscroll-behavior:contain;transform:translateY(12px);
  transition:transform var(--dur) var(--ease)}
.modal[aria-hidden="false"] .modal__box{transform:none}

.progress{height:8px;background:var(--ama-gray-100);border-radius:var(--r-pill);overflow:hidden}
.progress__bar{height:100%;background:var(--ama-grad-cta);border-radius:var(--r-pill);
  transition:width var(--dur-slow) var(--ease)}
.skeleton{background:linear-gradient(90deg,var(--ama-gray-100) 25%,var(--ama-gray-050) 50%,
  var(--ama-gray-100) 75%);background-size:200% 100%;animation:sk 1.4s infinite;
  border-radius:var(--r-sm)}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
.empty-state{text-align:center;padding:var(--sp-12) var(--sp-5);color:var(--text-soft)}
.empty-state__icon{font-size:44px;margin-bottom:var(--sp-3);opacity:.55}
.alert{border-radius:var(--r-md);padding:14px 17px;font-size:15px;display:flex;gap:11px;
  align-items:flex-start;margin-bottom:var(--sp-4)}
.alert--info{background:var(--ama-blue-050);color:var(--ama-chu-lien-ket);
  border:1px solid var(--ama-blue-100)}
.alert--warn{background:var(--ama-warning-100);color:var(--ama-warning-700);border:1px solid #F3E0A8}
.alert--ok{background:var(--ama-success-100);color:var(--ama-success-700);border:1px solid #B6E4CE}
.alert--err{background:var(--ama-danger-100);color:var(--ama-danger-700);border:1px solid #F5C6C6}

/* ── 28. DẢI BĂNG STAGING ─────────────────────────────────────────────────── */
/* Dải băng cảnh báo: nền vàng SÁNG với chữ gần đen. Dùng --ama-warning (đã
   làm tối để chữ trắng đọc được) làm NỀN thì chữ đen trên đó chỉ còn 4,03:1. */
.staging-banner{position:sticky;top:0;z-index:80;background:#FFC81F;color:#1A1300;
  /* ★ LƯỢT 79 — đáy của clamp() là 8,5px: trên màn 360px nó tính ra 9,2px,
   *   thủng sàn 12px của dự án. `clamp()` che cái sai rất giỏi vì trong mã nó
   *   trông như đã lo cho mọi bề rộng — chỉ khi ĐO ở đúng 360px mới lộ. */
  font:700 clamp(12px,2.55vw,12.5px)/28px var(--ama-font-head);text-align:center;
  letter-spacing:0;height:28px;overflow:hidden;padding:0 6px;white-space:nowrap}
@media (min-width:600px){.staging-banner{letter-spacing:.02em}}
.staging-banner+.ama-header{top:28px}

/* ── 29. HIỆN DẦN KHI CUỘN ────────────────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(18px);
  transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}

/* ── 30. TIỆN ÍCH ─────────────────────────────────────────────────────────── */
.text-center{text-align:center}
.mt-0{margin-top:0}.mb-0{margin-bottom:0}
.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.mt-8{margin-top:var(--sp-8)}
.mb-4{margin-bottom:var(--sp-4)}.mb-6{margin-bottom:var(--sp-6)}
.muted{color:var(--text-soft)}
.nowrap{white-space:nowrap}
.hide-mobile{display:none}
@media (min-width:768px){.hide-mobile{display:block}.hide-desktop{display:none}}

/* ── 31. IN ẤN — A4 ───────────────────────────────────────────────────────── */
@media print{
  @page{size:A4 portrait;margin:12mm}
  html,body{background:#fff!important;color:#000!important;font-size:10.5pt;
    padding-bottom:0!important}
  .no-print,.ama-header,.ama-tabbar,.ama-drawer,.chat-fab,.ama-footer,
  .staging-banner,.toast-wrap,.modal,.lang-switch,.btn-icon{display:none!important}
  .print-only{display:block!important}
  .ama-section{padding:0!important}
  .ama-container{max-width:100%!important;padding:0!important}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt;color:#555}
  a[href^="#"]::after,a[href^="tel"]::after,a[href^="mailto"]::after{content:""}
  .page-break{break-after:page}
  table,tr,.ama-card,.price,.agent{break-inside:avoid}
  h1,h2,h3{break-after:avoid}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;
    box-shadow:none!important}
  .hero{background:#fff!important;color:#000!important}
  .hero h1,.ama-section--dark h2,.ama-section--dark h3{color:#000!important}
  .ama-section--dark{background:#fff!important;color:#000!important}
  .about__body{color:#000!important}
}
.print-only{display:none}

/* ── 32. TRANG IN A4 CHUYÊN DỤNG ──────────────────────────────────────────── */
.a4{width:210mm;min-height:297mm;margin:0 auto;background:#fff;color:#001848;
  padding:12mm;font:10.5pt/1.45 var(--ama-font-body);box-shadow:var(--sh-3)}
.a4 *{color:inherit}
.a4__head{display:flex;align-items:center;gap:6mm;border-bottom:1.2mm solid #0048C0;
  padding-bottom:4mm;margin-bottom:5mm}
.a4__mark{width:20mm;height:20mm;border-radius:4mm;background:var(--ama-grad-hero);color:#fff;
  display:flex;align-items:center;justify-content:center;font:800 9mm/1 var(--ama-font-head);
  flex:none;white-space:nowrap}
.a4__mark span{color:#FF8A2B}
.a4__title{font:800 7mm/1.1 var(--ama-font-head);letter-spacing:-.02em;margin:0}
.a4__tag{font:700 2.6mm/1 var(--ama-font-head);letter-spacing:.24em;color:#B4490A;
  text-transform:uppercase;margin-top:1.5mm}
.a4__claim{font:800 5.4mm/1.3 var(--ama-font-head);text-align:center;margin:0 0 4mm;
  text-wrap:balance}
.a4__penta{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2mm;text-align:center;
  padding:3mm 0;border-top:.3mm solid #DDE3EC;border-bottom:.3mm solid #DDE3EC;margin-bottom:4mm}
.a4__penta div{font:800 2.7mm/1.3 var(--ama-font-head);letter-spacing:.06em}
.a4__penta span{display:block;font-size:5mm;margin-bottom:1mm}
.a4__cols{display:grid;grid-template-columns:1.15fr .85fr;gap:6mm;margin-bottom:4mm}
.a4 h3{font:800 3.6mm/1.2 var(--ama-font-head);letter-spacing:.1em;text-transform:uppercase;
  color:#0048C0;margin:0 0 2.5mm}
.a4__row{display:flex;justify-content:space-between;gap:3mm;padding:1.6mm 0;
  border-bottom:.2mm dotted #DDE3EC;font-size:3.1mm}
.a4__row:last-child{border-bottom:0}
.a4__price{border:.4mm solid #F26A1B;border-radius:2.5mm;padding:3mm;margin-bottom:2.5mm}
.a4__price b{font-size:4.4mm;color:#B4490A}
.a4__steps{background:#F0F5FE;border-radius:2.5mm;padding:3.5mm;margin-bottom:4mm;
  font-size:3.2mm;line-height:1.6}
.a4__ticks{display:grid;grid-template-columns:1fr 1fr;gap:1.5mm 4mm;font-size:3.1mm;
  margin-bottom:4mm}
.a4__ticks span::before{content:"✓ ";color:#0F7A4C;font-weight:800}
.a4__foot{display:flex;align-items:center;gap:5mm;border-top:1.2mm solid #001848;
  padding-top:3.5mm;margin-top:auto}
.a4__qr{width:26mm;height:26mm;flex:none;border:.3mm solid #DDE3EC;border-radius:2mm;
  display:grid;place-items:center;background:#fff}
.a4__contact{font-size:3.2mm;line-height:1.7}
.a4__contact b{font-size:3.8mm}
@media print{.a4{width:auto;min-height:0;margin:0;padding:0;box-shadow:none}
  body{background:#fff}}
@media (max-width:230mm){.a4{width:100%;padding:var(--sp-5)}}

/* ══════════════════════════════════════════════════════════════════════════
   33. TRÌNH HƯỚNG DẪN 6 BƯỚC — Phiếu thông tin tiệm (Amatay-Spec § 10)
   ★ Một bộ CSS cho CẢ máy tính và di động. Không có bản riêng cho di động.
   ══════════════════════════════════════════════════════════════════════════ */
.wiz{max-width:940px;margin:0 auto}
/* Thanh tiến độ dính NGAY DƯỚI thanh điều hướng (cao 64px), không nấp sau nó.
   Có dải BẢN CHẠY THỬ thì thanh điều hướng tụt xuống 28px, thanh này tụt theo. */
.wiz__top{position:sticky;top:64px;z-index:40;background:var(--bg);
  padding:var(--sp-3) 0 var(--sp-3);border-bottom:1px solid var(--border);
  margin-bottom:var(--sp-6)}
.staging-banner~main .wiz__top{top:92px}
/* Chừa chỗ cho thanh nút dính đáy — ô cuối cùng của mỗi bước không bị che khuất */
/* ★ Trên điện thoại có HAI thanh dính ở đáy màn hình chồng lên nhau:
     thanh nút của trình hướng dẫn (.wiz__nav, cao ~102px) nằm trên
     thanh thực đơn dưới cùng (.ama-tabbar, cao 64px).
     Đo trên máy 390×844: ô cuối của bước 1 (booking_link) có mép dưới ở
     681px trong khi thanh nút bắt đầu ở 678px — cuộn hết cỡ vẫn bị che,
     không cách nào nhìn thấy trọn ô. Phải chừa đủ chỗ cho CẢ HAI thanh. */
@media (max-width:599px){
  .wiz__panel{padding-bottom:calc(var(--sp-10) + 118px + env(safe-area-inset-bottom))}
}
.wiz__toprow{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:9px}
.wiz__stepno{font:700 13px/1 var(--ama-font-head);color:var(--ama-chu-lien-ket);flex:none}
.wiz__pct{margin-left:auto;font:700 13px/1 var(--ama-font-head);
  color:var(--ama-orange-500);flex:none}
.wiz__save{font-size:12px;color:var(--text-soft);flex:none;transition:opacity var(--dur)}
.wiz__save.is-off{opacity:0}

/* Dải chấm bước — cuộn ngang được trên máy nhỏ, không kéo trang tràn */
.wiz__rail{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;padding-bottom:2px}
.wiz__rail::-webkit-scrollbar{display:none}
.wiz__dot{flex:1 0 auto;min-width:0;display:flex;align-items:center;gap:7px;
  padding:7px 11px;border-radius:var(--r-pill);border:2px solid var(--border);
  background:var(--surface);font:600 13px/1.2 var(--ama-font-head);color:var(--text-soft);
  cursor:pointer;white-space:nowrap;transition:all var(--dur) var(--ease)}
.wiz__dot i{font-style:normal;width:20px;height:20px;flex:none;border-radius:50%;
  display:grid;place-items:center;background:var(--ama-gray-100);
  font:700 12px/1 var(--ama-font-head);color:var(--text-soft)}
.wiz__dot.is-on{border-color:var(--ama-blue-600);background:var(--ama-blue-050);
  color:var(--ama-navy-800)}
.wiz__dot.is-on i{background:var(--ama-blue-600);color:#fff}
.wiz__dot.is-done i{background:var(--ama-success);color:#fff}
.wiz__dot span{display:none}
@media (min-width:768px){.wiz__dot span{display:inline}}

/* Tấm bước */
.wiz__panel[hidden]{display:none}
.wiz__panel{animation:wizIn var(--dur) var(--ease)}
@keyframes wizIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.wiz__head{margin-bottom:var(--sp-5)}
.wiz__head h2{font-size:clamp(21px,4.4vw,29px);margin:0 0 5px;display:flex;
  align-items:center;gap:10px;flex-wrap:wrap}
.wiz__head p{color:var(--text-soft);margin:0;font-size:15px}
.wiz__note{background:var(--ama-blue-050);border-left:4px solid var(--ama-blue-600);
  border-radius:0 var(--r-md) var(--r-md) 0;padding:11px 15px;font-size:14px;
  color:var(--text);margin-bottom:var(--sp-5)}

/* Lưới 12 cột — dùng chung desktop/tablet/mobile, chỉ đổi số cột */
.wiz-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));
  gap:0 var(--sp-4)}
.wiz-grid>.field{grid-column:span 12}
/* Phải viết .wiz-grid>.f-d6 chứ không phải .f-d6: luật nền .wiz-grid>.field
   có độ ưu tiên (0,2,0), một lớp đơn (0,1,0) không đè nổi — cả biểu mẫu sẽ
   rơi về 1 cột trên máy tính mà không báo lỗi gì. */
/* ★★★ LƯỢT 73 — KHỔ ĐIỆN THOẠI, thứ lược đồ đã khai từ đầu mà CSS chưa từng
   nghe. Xem chú thích ở `$cls` trong `app/views/site/register.php`.

   ★★ DƯỚI 380px THÌ MỌI Ô CHIẾM CẢ DÒNG, bất kể lược đồ khai gì. Trên một
   màn hình 320px, hai ô cạnh nhau còn ~140px mỗi cái — chưa đủ cho một nhãn
   tiếng Việt có dấu, và ngón tay cái bấm vào đúng ô mình muốn là chuyện may
   rủi. Đây là chỗ CSS được quyền không nghe lược đồ, và nó phải nói ra vì sao.

   ★ Khoảng 380–599px mới áp `f-m*`: đó là dải của gần như mọi điện thoại đang
   dùng, và ở đó “Tiểu bang | Mã ZIP” nằm cạnh nhau đọc tự nhiên hơn hẳn hai
   dòng rời. */
@media (min-width:380px) and (max-width:599px){
  .wiz-grid>.f-m1{grid-column:span 1} .wiz-grid>.f-m2{grid-column:span 2} .wiz-grid>.f-m3{grid-column:span 3} .wiz-grid>.f-m4{grid-column:span 4} .wiz-grid>.f-m5{grid-column:span 5} .wiz-grid>.f-m6{grid-column:span 6} .wiz-grid>.f-m7{grid-column:span 7} .wiz-grid>.f-m8{grid-column:span 8} .wiz-grid>.f-m9{grid-column:span 9} .wiz-grid>.f-m10{grid-column:span 10} .wiz-grid>.f-m11{grid-column:span 11} .wiz-grid>.f-m12{grid-column:span 12}}
@media (min-width:600px){
  .wiz-grid>.f-t1{grid-column:span 1} .wiz-grid>.f-t2{grid-column:span 2} .wiz-grid>.f-t3{grid-column:span 3} .wiz-grid>.f-t4{grid-column:span 4} .wiz-grid>.f-t5{grid-column:span 5} .wiz-grid>.f-t6{grid-column:span 6} .wiz-grid>.f-t7{grid-column:span 7} .wiz-grid>.f-t8{grid-column:span 8} .wiz-grid>.f-t9{grid-column:span 9} .wiz-grid>.f-t10{grid-column:span 10} .wiz-grid>.f-t11{grid-column:span 11} .wiz-grid>.f-t12{grid-column:span 12}}
@media (min-width:1024px){
  .wiz-grid>.f-d1{grid-column:span 1} .wiz-grid>.f-d2{grid-column:span 2} .wiz-grid>.f-d3{grid-column:span 3} .wiz-grid>.f-d4{grid-column:span 4} .wiz-grid>.f-d5{grid-column:span 5} .wiz-grid>.f-d6{grid-column:span 6} .wiz-grid>.f-d7{grid-column:span 7} .wiz-grid>.f-d8{grid-column:span 8} .wiz-grid>.f-d9{grid-column:span 9} .wiz-grid>.f-d10{grid-column:span 10} .wiz-grid>.f-d11{grid-column:span 11} .wiz-grid>.f-d12{grid-column:span 12}}
.field[hidden]{display:none}

/* Lưới thẻ tick — luôn minmax(0,1fr) để không tràn ở 320px */
.card-grid{display:grid;gap:9px;grid-template-columns:repeat(auto-fit,minmax(min(100%,168px),1fr))}
.card-grid--wide{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.sub-label{font:600 13px/1.3 var(--ama-font-head);color:var(--text-soft);
  margin:var(--sp-3) 0 7px;text-transform:uppercase;letter-spacing:.03em}

/* Nút nói 🎤 */
.ta-wrap{position:relative}
.mic{position:absolute;right:9px;bottom:9px;width:42px;height:42px;border-radius:50%;
  border:2px solid var(--border);background:var(--surface);font-size:19px;cursor:pointer;
  display:grid;place-items:center;transition:all var(--dur) var(--ease)}
.mic:hover{border-color:var(--ama-blue-600)}
.mic.is-rec{background:var(--ama-danger);border-color:var(--ama-danger);color:#fff;
  animation:micPulse 1.1s infinite}
@keyframes micPulse{0%,100%{box-shadow:0 0 0 0 rgba(210,43,43,.55)}
  70%{box-shadow:0 0 0 11px rgba(210,43,43,0)}}
.counter{font-size:12px;color:var(--text-soft);text-align:right;margin-top:3px}
.counter.is-over{color:var(--ama-danger-700);font-weight:700}

/* Hàng kênh online */
.chan{border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  margin-bottom:10px;overflow:hidden;transition:border-color var(--dur) var(--ease)}
.chan.is-on{border-color:var(--ama-blue-600)}
.chan__head{display:flex;align-items:center;gap:11px;padding:11px 13px;cursor:pointer;
  min-height:56px}
.chan__head input{position:absolute;opacity:0;width:0;height:0}
.chan__tick{width:24px;height:24px;flex:none;border-radius:7px;border:2px solid var(--border);
  display:grid;place-items:center;font-size:14px;color:transparent;
  transition:all var(--dur) var(--ease)}
.chan.is-on .chan__tick{background:var(--ama-blue-600);border-color:var(--ama-blue-600);
  color:#fff}
.chan__ico{font-size:21px;flex:none;line-height:1}
.chan__txt{flex:1;min-width:0}
.chan__name{font:600 15px/1.3 var(--ama-font-head);display:block}
.chan__sub{font-size:12.5px;color:var(--text-soft);display:block;margin-top:1px}
.chan__star{flex:none;font-size:12px;font-weight:700;color:var(--ama-orange-600);
  background:var(--ama-orange-050);border-radius:var(--r-pill);padding:3px 9px;
  white-space:nowrap}
.chan__body{padding:0 13px 13px;border-top:1px dashed var(--border);margin-top:2px;
  padding-top:13px}
.chan__body[hidden]{display:none}
.chan__acc{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.chan__acc label{cursor:pointer}
.chan__acc input{position:absolute;opacity:0;width:0;height:0}
.chan__acc span{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;
  border:2px solid var(--border);border-radius:var(--r-pill);font:600 13px/1 var(--ama-font-head);
  color:var(--text-soft);background:var(--surface);transition:all var(--dur) var(--ease)}
.chan__acc input:checked+span{border-color:var(--ama-orange-500);
  background:var(--ama-orange-050);color:var(--ama-orange-600)}

/* Cam kết bảo mật 3 điều */
.pledge{background:var(--ama-blue-050);border:2px solid var(--ama-blue-100);
  border-radius:var(--r-lg);padding:var(--sp-5);margin-bottom:var(--sp-5)}
.pledge h3{font-size:16px;margin:0 0 10px;display:flex;align-items:center;gap:8px}
.pledge ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.pledge li{font-size:14px;line-height:1.5;padding-left:26px;position:relative}
.pledge li::before{content:"🔒";position:absolute;left:0;top:0}

/* Bảng khuyến mãi — cuộn ngang trong chính nó, trang không bao giờ tràn */
.promo-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface)}
.promo{width:100%;min-width:680px;border-collapse:collapse}
.promo th{font:600 12.5px/1.3 var(--ama-font-head);text-align:left;padding:9px 10px;
  background:var(--ama-gray-050);color:var(--text-soft);border-bottom:2px solid var(--border);
  text-transform:uppercase;letter-spacing:.03em}
.promo td{padding:6px 7px;border-bottom:1px solid var(--border);vertical-align:middle}
.promo tr:last-child td{border-bottom:0}
.promo .input{min-height:42px;font-size:15px;border-width:1px}
.promo__del{width:38px;height:38px;border:0;background:transparent;cursor:pointer;
  border-radius:var(--r-sm);font-size:16px;color:var(--ama-gray-400)}
.promo__del:hover{background:var(--ama-gray-100);color:var(--ama-do-chu)}
.skip-box{border:2px dashed var(--border);border-radius:var(--r-md);padding:14px;
  margin-bottom:var(--sp-4)}

/* Giờ mở cửa — ô nhập + nút gợi ý nhanh */
.hours-quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.hours-quick button{border:1px solid var(--border);background:var(--surface);
  border-radius:var(--r-pill);padding:6px 11px;font:600 12.5px/1 var(--ama-font-head);
  color:var(--text-soft);cursor:pointer;min-height:34px}
.hours-quick button:hover{border-color:var(--ama-blue-600);color:var(--ama-chu-lien-ket)}

/* Bảng ký tên */
.sigpad{border:2px dashed var(--border);border-radius:var(--r-md);background:var(--surface);
  position:relative;overflow:hidden}
.sigpad canvas{display:block;width:100%;height:190px;touch-action:none;cursor:crosshair}
.sigpad__hint{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;
  color:var(--ama-gray-400);font-size:14px}
.sigpad.is-signed .sigpad__hint{display:none}
.sigpad__bar{display:flex;justify-content:flex-end;gap:8px;padding:8px;
  border-top:1px dashed var(--border)}

/* Ô đồng ý uỷ quyền */
.consent{border:2px solid var(--ama-orange-500);background:var(--ama-orange-050);
  border-radius:var(--r-lg);padding:var(--sp-5);cursor:pointer;display:flex;gap:13px;
  align-items:flex-start}
.consent input{position:absolute;opacity:0;width:0;height:0}
.consent__tick{width:28px;height:28px;flex:none;border-radius:8px;border:2px solid var(--ama-orange-500);
  background:#fff;display:grid;place-items:center;font-size:17px;color:transparent;
  transition:all var(--dur) var(--ease)}
.consent input:checked~.consent__tick{background:var(--ama-orange-500);color:#fff}
.consent__txt{font-size:14.5px;line-height:1.6}
.consent[aria-invalid="true"]{border-color:var(--ama-danger);background:#FDECEC}

/* Bước 6 — xem lại */
.review{display:grid;gap:var(--sp-4)}
.review__sec{border:2px solid var(--border);border-radius:var(--r-lg);background:var(--surface);
  overflow:hidden}
.review__head{display:flex;align-items:center;gap:10px;padding:12px 15px;
  background:var(--ama-gray-050);border-bottom:1px solid var(--border)}
.review__head b{flex:1;min-width:0;font:700 15px/1.3 var(--ama-font-head)}
.review__rows{padding:6px 15px 12px}
.review__row{display:flex;gap:var(--sp-4);padding:8px 0;border-bottom:1px dotted var(--border);
  font-size:14.5px;flex-wrap:wrap}
.review__row:last-child{border-bottom:0}
.review__row dt{flex:0 0 190px;min-width:0;color:var(--text-soft);margin:0}
.review__row dd{flex:1 1 200px;min-width:0;margin:0;font-weight:600;
  overflow-wrap:anywhere}
.review__empty{padding:14px 15px;color:var(--text-soft);font-size:14px}
.meter{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;
  border:2px solid var(--ama-blue-100);background:var(--ama-blue-050);
  border-radius:var(--r-lg);padding:var(--sp-5);margin-bottom:var(--sp-5)}
/* Con số phần trăm to nhất trang tra cứu — cùng lý do như trên (2,1:1 ở chế độ Tối). */
.meter__num{font:800 40px/1 var(--ama-font-head);color:var(--ama-chu-lien-ket);flex:none}
.meter__txt{flex:1 1 220px;min-width:0;font-size:14px;color:var(--text-soft)}
.meter .progress{width:100%;margin-top:8px}

/* Thanh điều hướng dưới cùng */
.wiz__nav{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;
  margin-top:var(--sp-8);padding-top:var(--sp-5);border-top:2px solid var(--border)}
.wiz__nav .grow{flex:1 1 auto;min-width:0}
@media (max-width:599px){
  .wiz__nav{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));
    background:var(--bg);padding-bottom:var(--sp-3);z-index:30;margin-top:var(--sp-6)}
  .wiz__nav .btn-cta,.wiz__nav .btn-primary{flex:1 1 100%}
}

/* Trang cảm ơn & tra cứu */
.done{text-align:center;max-width:640px;margin:0 auto}
.done__ico{width:92px;height:92px;margin:0 auto var(--sp-5);border-radius:50%;
  background:var(--ama-success-100);display:grid;place-items:center;font-size:44px}
.done__code{font:800 27px/1 var(--ama-font-mono);color:var(--ama-navy-800);
  letter-spacing:.06em;background:var(--ama-gray-050);border:2px dashed var(--border);
  border-radius:var(--r-md);padding:15px;margin:var(--sp-5) 0;overflow-wrap:anywhere}
.tl{list-style:none;margin:var(--sp-6) 0 0;padding:0;text-align:left}
.tl li{position:relative;padding:0 0 var(--sp-6) 34px;border-left:2px solid var(--border);
  margin-left:11px}
.tl li:last-child{border-left-color:transparent;padding-bottom:0}
.tl li::before{content:"";position:absolute;left:-9px;top:2px;width:16px;height:16px;
  border-radius:50%;background:var(--ama-gray-200);border:3px solid var(--bg)}
.tl li.is-done::before{background:var(--ama-success)}
.tl li.is-now::before{background:var(--ama-orange-500);
  box-shadow:0 0 0 4px var(--ama-orange-050)}
.tl b{display:block;font:700 15px/1.4 var(--ama-font-head)}
.tl small{color:var(--text-soft);font-size:13px}
/* Trên máy nhỏ, nút Chat tròn nằm đè lên nút "Tiếp tục" của biểu mẫu —
   trang có trình hướng dẫn thì đẩy nút Chat lên trên thanh nút. */
@media (max-width:599px){body.has-wiz .chat-fab{bottom:calc(146px + env(safe-area-inset-bottom))}}
.done__lead{font-size:17px;line-height:1.7;color:var(--text-soft);max-width:54ch;
  margin:var(--sp-3) auto var(--sp-4)}
/* Thẻ tick trong cùng một hàng phải cao bằng nhau — ô nào chữ dài xuống 2 dòng
   mà ô bên cạnh vẫn 1 dòng thì hàng trông so le, rất khó nhìn trên máy tính. */
.card-grid>.checkbox-card{height:100%}
.card-grid>.checkbox-card>span{height:100%}

/* Bảng khuyến mãi trên điện thoại: 5 cột trong 390px là không đọc nổi.
   Dưới 600px mỗi dòng thành một thẻ dựng đứng, có nhãn cho từng ô —
   chủ tiệm điền bằng ngón tay, không phải kéo ngang tìm cột. */
.promo__del-txt{display:none}
@media (max-width:599px){
  .promo-wrap{overflow:visible;border:0;background:transparent}
  .promo{min-width:0;display:block}
  .promo thead{display:none}
  .promo tbody{display:grid;gap:12px}
  .promo tr{display:block;border:2px solid var(--border);border-radius:var(--r-md);
    background:var(--surface);padding:12px 13px}
  .promo td{display:block;padding:0 0 10px;border:0}
  .promo td:last-child{padding-bottom:0;text-align:right}
  .promo td[data-label]::before{content:attr(data-label);display:block;
    font:600 12px/1.3 var(--ama-font-head);color:var(--text-soft);
    text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px}
  .promo td[data-label=""]::before{content:none}
  .promo .input{min-height:46px;border-width:2px}
  .promo__del{width:auto;padding:0 13px;min-height:40px;display:inline-flex;
    align-items:center;gap:7px;border:1px solid var(--border);color:var(--text-soft)}
  .promo__del-txt{display:inline;font:600 13px/1 var(--ama-font-head)}
}

/* ══════════════════════════════════════════════════════════════════════════
   THÀNH PHẦN DÙNG CHUNG — lọc nhanh · nhãn trạng thái · hạn xử lý ·
   phân trang · màn hình trống.
   ★ Trước đây những khối này nằm trong admin.css, nên cổng chủ tiệm (chỉ nạp
     ama.css + portal.css) hiện ra chữ trần: "Đang xử lý3 Đã xong3" thay vì
     những viên thuốc bấm được. Chuyển sang đây để CẢ HAI vỏ dùng chung một
     bản duy nhất — sửa một chỗ là cả hệ thống đổi theo.
   ══════════════════════════════════════════════════════════════════════════ */
.chips{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:var(--sp-3) var(--sp-4)}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 14px;
  border-radius:var(--r-pill);border:2px solid var(--border);background:var(--surface);
  font:600 13.5px/1 var(--ama-font-head);color:var(--text-soft);cursor:pointer;
  text-decoration:none!important;white-space:nowrap;transition:all var(--dur) var(--ease)}
/* ★ TRẠNG THÁI DI CHUỘT CŨNG PHẢI ĐỌC ĐƯỢC Ở CHẾ ĐỘ TỐI (Lượt 22).
   --ama-blue-600 là xanh ĐẬM CỐ ĐỊNH, không lật theo chế độ. Đặt nó làm màu
   chữ trên nền tối cho 2,21:1 — nhãn thẻ lọc gần như biến mất đúng lúc người
   ta đang trỏ vào nó.
   Bốn lượt quét trợ năng trước đều chấm sạch, vì con trỏ chuột chưa bao giờ
   tình cờ dừng trên một thẻ lọc: MÁY ĐO CHỈ ĐO ĐƯỢC TRẠNG THÁI NÓ VÔ TÌNH ĐẶT
   PHẦN TỬ VÀO. Nay bộ quét có bước di chuột riêng. */
/* :not(.is-on) — thẻ ĐANG CHỌN có nền xanh và chữ trắng; để :hover đè lên
   thì chữ trắng biến thành xanh nhạt trên nền xanh: 2,62:1. Bản vá đầu của
   chính Lượt 22 đã tạo ra đúng lỗi đó, và bộ quét mới bắt được ngay. */
.chip:not(.is-on):hover{border-color:var(--ama-blue-400);color:var(--ama-chu-lien-ket)}
.chip.is-on{background:var(--ama-blue-600);border-color:var(--ama-blue-600);color:#fff}
.chip--danger{border-color:#F3C9C9;color:var(--ama-danger-700)}
.chip--danger.is-on{background:var(--ama-danger);border-color:var(--ama-danger);color:#fff}
.chip--warn{border-color:#F3E0A8;color:var(--ama-warning-700)}
/* ★ KHÔNG viết cứng màu chữ trên nền cảnh báo. #241C00 đặt trên #996E00 chỉ
   đạt 3,69:1 — dưới chuẩn 4,5:1 — và thẻ lọc "Hợp đồng sắp hết" đang chọn là
   thẻ người quản lý bấm nhiều nhất. Tính từ chính màu nền thì không lệch. */
.chip--warn.is-on{background:var(--ama-warning);border-color:var(--ama-warning);
  color:var(--ama-chu-tren-warning)}
.chip--ok{border-color:#B6E4CE;color:var(--ama-success-700)}
.chip--ok.is-on{background:var(--ama-success);border-color:var(--ama-success);color:#fff}
/* opacity:.8 kéo tương phản xuống 3,67:1 — đổi sang màu đã tính sẵn */
/* Con số trong thẻ lọc PHẢI theo màu chữ của thẻ: thẻ trắng thì chữ đậm,
   thẻ đang chọn (nền xanh) thì chữ trắng. Đặt cứng một màu là hỏng một trong
   hai trạng thái; opacity .8 như bản đầu thì cả hai đều mờ dưới chuẩn. */
.chip__n{font-size:12px;color:inherit;font-weight:700}  /* Không dùng opacity ở đây: mờ đi 8% là tỉ lệ tương phản tụt xuống dưới
     chuẩn ngay, mà con số trong thẻ lọc lại là thứ người ta nhìn đầu tiên. */

.st{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-pill);
  font:700 12px/1.5 var(--ama-font-head);white-space:nowrap}
.st::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.st--new{background:var(--ama-blue-100);color:var(--ama-chu-lien-ket)}
.st--contacted{background:#E4E9F2;color:#3A4A66}
.st--info_pending{background:var(--ama-warning-100);color:var(--ama-warning-700)}
.st--qualified{background:#E0E9FF;color:var(--ama-blue-700)}
.st--proposal_sent{background:var(--ama-orange-100);color:var(--ama-orange-600)}
.st--won{background:var(--ama-success-100);color:var(--ama-success-700)}
.st--lost{background:var(--ama-danger-100);color:var(--ama-danger-700)}
.st--spam{background:var(--ama-gray-100);color:var(--ama-gray-600)}
/* Trung tính: "chưa rõ / không còn" — KHÔNG dùng màu đỏ, vì đỏ nghĩa là hỏng */
.st--na{background:var(--ama-gray-100);color:var(--ama-gray-600)}
.st--todo{background:var(--ama-blue-100);color:var(--ama-chu-lien-ket)}
.st--doing{background:var(--ama-orange-100);color:var(--ama-orange-600)}
.st--blocked{background:var(--ama-danger-100);color:var(--ama-danger-700)}
.st--review{background:var(--ama-warning-100);color:var(--ama-warning-700)}
.st--done{background:var(--ama-success-100);color:var(--ama-success-700)}
.st--cancelled{background:var(--ama-gray-100);color:var(--ama-gray-600)}

/* Hạn gọi — quá hạn phải đập vào mắt */
.sla{font:600 13px/1.35 var(--ama-font-head);white-space:nowrap;max-width:100%}
.sla--late{color:var(--ama-danger-700);font-weight:800}
.sla--soon{color:var(--ama-orange-600)}
/* ★ Hẹn ĐÚNG HÔM NAY — chưa trễ, nhưng hết hôm nay là trễ. Phải khác hẳn cả
   "quá hẹn" (đỏ) lẫn "hẹn ngày kia" (xám nhạt), nếu không thì người trực đọc
   lướt sẽ xếp nó vào nhóm còn thong thả. Dùng màu chữ, KHÔNG dùng opacity. */
.sla--due{color:var(--ama-orange-600);font-weight:800}
.sla--ok{color:var(--text-soft)}
.sla--done{color:var(--ama-success-700)}

.pager{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;
  margin-top:var(--sp-4);font-size:14px;color:var(--text-soft)}
.pager__n{display:flex;gap:5px;flex-wrap:wrap;flex:1 1 auto}
.pager a,.pager span.pg{min-width:38px;height:38px;padding:0 10px;border-radius:9px;
  border:1px solid var(--border);background:var(--surface);display:inline-flex;
  align-items:center;justify-content:center;text-decoration:none;color:var(--text);
  font:600 14px/1 var(--ama-font-head)}
.pager a:hover{border-color:var(--ama-blue-600);color:var(--ama-chu-lien-ket)}
.pager .is-on{background:var(--ama-blue-600);border-color:var(--ama-blue-600);color:#fff}
.pager .gap{border:0;background:transparent}

.empty{text-align:center;padding:var(--sp-16) var(--sp-5);color:var(--text-soft)}
.empty__i{font-size:46px;margin-bottom:var(--sp-3)}
.empty b{display:block;font:700 17px/1.4 var(--ama-font-head);color:var(--text);
  margin-bottom:5px}

/* ══════════════════════════════════════════════════════════════════════════
   VÙNG CHỌN TỆP — dùng chung cho cổng chủ tiệm VÀ hậu đài.
   ★ Trước đây khối này chỉ có trong portal.css, mà hậu đài không nạp tệp đó:
     trang "Nhập kho kiến thức từ Excel" hiện ra một khung trần, và ô <input
     type=file> bị position:absolute mà không có mốc neo nên trôi ra khỏi màn
     hình, đẩy cả trang rộng thêm 5px ở khổ 360–390px.
   ══════════════════════════════════════════════════════════════════════════ */
.drop{position:relative;border:2px dashed var(--border);border-radius:var(--r-lg);
  padding:var(--sp-6);text-align:center;background:var(--surface);overflow:hidden;
  transition:all var(--dur) var(--ease)}
.drop.is-over{border-color:var(--ama-blue-600);background:var(--ama-blue-050)}
.drop__i{font-size:38px;margin-bottom:var(--sp-2)}
.drop b{display:block;font:700 16px/1.4 var(--ama-font-head);margin-bottom:4px}
.drop small{color:var(--text-soft);font-size:13.5px;line-height:1.5;display:block}
/* Giấu ô chọn tệp mà KHÔNG dùng display:none (máy đọc màn hình bỏ qua) và
   không để nó trôi ra ngoài khung: neo vào .drop, kích thước 1px, cắt sạch. */
.drop input[type=file]{position:absolute;left:0;top:0;width:1px;height:1px;
  opacity:0;overflow:hidden;clip-path:inset(50%);pointer-events:none}
.drop label{display:inline-flex;margin-top:var(--sp-4)}
.picked{display:grid;gap:8px;margin-top:var(--sp-4)}
.picked__i{display:flex;align-items:center;gap:11px;padding:11px 13px;
  border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}
.picked__i b{flex:1;min-width:0;font:600 14.5px/1.35 var(--ama-font-head);
  overflow-wrap:anywhere}
.picked__i small{color:var(--text-soft);font-size:12.5px;flex:none}
.picked__x{border:0;background:transparent;cursor:pointer;font-size:16px;
  width:34px;height:34px;flex:none;border-radius:8px;color:var(--ama-gray-400)}
.picked__x:hover{background:var(--ama-gray-100);color:var(--ama-danger)}

/* ═══ TRANG VĂN BẢN (Hỏi-Đáp · Bảo mật · Quyền riêng tư · Điều khoản) ═══════
   Chữ dài phải dễ đọc trên điện thoại: dòng không quá rộng, khoảng cách thoáng,
   tiêu đề bám dính khi cuộn để người đọc luôn biết mình đang ở mục nào. */
.doc{padding:var(--sp-10) 0 var(--sp-16)}
.doc__head{max-width:820px;margin:0 auto var(--sp-8);padding:0 var(--sp-5)}
.doc__head h1{font-size:clamp(26px,4.2vw,38px);line-height:1.22;margin:0 0 var(--sp-3)}
.doc__meta{color:var(--text-soft);font-size:14.5px;margin:0}
.doc__body{max-width:820px;margin:0 auto;padding:0 var(--sp-5);font-size:16.5px;line-height:1.75}
.doc__body h2{font-size:21px;line-height:1.3;margin:var(--sp-10) 0 var(--sp-3);
  padding-top:var(--sp-3);border-top:1px solid var(--border);color:var(--ama-navy-800)}
.doc__body h2:first-of-type{border-top:0;padding-top:0;margin-top:var(--sp-6)}
/* ★ KHÔNG dùng --ama-navy-700: biến đó KHÔNG lật ở chế độ Tối (chỉ -800 lật),
   nên tiêu đề nhỏ hoá ra xanh đen trên nền xanh đen — 1,3:1, gần như vô hình. */
.doc__body h3{font-size:17px;margin:var(--sp-6) 0 var(--sp-2);color:var(--ama-navy-800)}
.doc__body p{margin:0 0 var(--sp-4);color:var(--text-soft)}
.doc__body strong,.doc__body b{color:var(--ama-navy-800)}
.doc__body ul,.doc__body ol{margin:0 0 var(--sp-4);padding-left:22px;color:var(--text-soft)}
.doc__body li{margin-bottom:var(--sp-2)}
/* Liên kết nằm giữa đoạn văn phải phân biệt được KHÔNG CHỈ bằng màu —
   người mù màu (khoảng 1 trong 12 nam giới) không thấy khác biệt nào. */
.doc__body a{color:var(--ama-chu-lien-ket);text-decoration:underline;
  text-underline-offset:2px}
.doc__note{background:var(--ama-blue-050);border:1px solid var(--ama-blue-100);
  border-radius:var(--r-md);padding:var(--sp-4) var(--sp-5);margin:0 0 var(--sp-6)}
.doc__note p:last-child{margin-bottom:0}
.doc__warn{background:var(--ama-orange-050);border:1px solid var(--ama-orange-100)}
.doc__toc{background:var(--ama-gray-050);border:1px solid var(--border);border-radius:var(--r-md);
  padding:var(--sp-4) var(--sp-5);margin:0 0 var(--sp-8)}
.doc__toc ol{margin:0;padding-left:20px;columns:2;column-gap:var(--sp-6)}
.doc__toc li{margin-bottom:4px;break-inside:avoid}
@media (max-width:640px){.doc__toc ol{columns:1}}
.doc__tbl{width:100%;border-collapse:collapse;margin:0 0 var(--sp-6);font-size:15px}
.doc__tbl th,.doc__tbl td{border:1px solid var(--border);padding:10px 12px;text-align:left;
  vertical-align:top}
.doc__tbl th{background:var(--ama-gray-050);font-weight:700;color:var(--ama-navy-800)}
.doc__tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Hỏi–Đáp: mỗi câu là một khối bấm mở */
.qa{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  margin-bottom:var(--sp-3);overflow:hidden}
.qa summary{cursor:pointer;padding:var(--sp-4) var(--sp-5);font-weight:650;font-size:16.5px;
  color:var(--ama-navy-800);list-style:none;display:flex;gap:12px;align-items:flex-start}
.qa summary::-webkit-details-marker{display:none}
.qa summary::before{content:"+";color:var(--ama-orange-500);font-weight:800;font-size:19px;
  line-height:1.3;flex:none}
.qa[open] summary::before{content:"−"}
.qa summary:hover{background:var(--ama-gray-050)}
.qa__a{padding:0 var(--sp-5) var(--sp-4) calc(var(--sp-5) + 24px);color:var(--text-soft)}

/* Chữ cảnh báo trên nền sáng. --ama-warning được chọn để CHỮ TRẮNG đọc được
   TRÊN nó; dùng chính nó làm màu chữ trên nền trắng thì chỉ đạt 4,19:1.
   Bậc đậm hơn dành riêng cho chữ. */
.canh-bao-chu{color:var(--ama-warning-700);font-weight:600}

/* Liên kết nằm GIỮA một câu chữ: phải gạch chân. Chỉ đổi màu là không đủ —
   người mù màu không phân biệt được đâu là chỗ bấm được, và chuẩn WCAG đòi
   tương phản 3:1 giữa chữ liên kết và chữ xung quanh, điều mà xanh trên xám
   nhạt (1,38:1) không đạt. */
.lg__sub a, .card__b p a, .alert a,
small a, .muted a, .tml a{text-decoration:underline;text-underline-offset:2px}

/* ── LỊCH TUẦN ĐẦU MIỄN PHÍ trên trang tra cứu (Lượt 35) ───────────────────
   Chỗ DUY NHẤT một người CHƯA KÝ xem được lịch của mình. Viền và nền nhạt để
   khối này nổi hẳn khỏi phần "tiến độ hồ sơ" — đây là món quà, không phải một
   dòng trạng thái nữa. Đọc được ở cả nền sáng và nền tối. */
.lich-mp{margin-top:var(--sp-6);padding:var(--sp-5);border-radius:var(--r-md);
  background:var(--ama-blue-050);border:1px solid var(--ama-blue-100);text-align:left}
.lich-mp__h{margin:0 0 6px;font:800 18px/1.35 var(--ama-font-head);color:var(--text)}
.lich-mp__d{margin:0 0 var(--sp-4);font-size:15px;color:var(--text)}
.lich-mp__ds{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.lich-mp__o{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;
  padding:9px 11px;border-radius:var(--r-sm);background:var(--surface);
  border:1px solid var(--border)}
.lich-mp__ngay{flex:0 0 auto;font-weight:800;font-size:14.5px;min-width:8.5em}
.lich-mp__kenh{flex:0 0 auto;font-size:14.5px}
.lich-mp__cd{flex:1 1 12em;min-width:0;font-size:14.5px;color:var(--text-soft);
  overflow-wrap:anywhere}
.lich-mp__ghi{margin:var(--sp-4) 0 0;font-size:14px;color:var(--text-soft)}

/* ── CÒN THIẾU QUYỀN ĐĂNG BÀI trên trang tra cứu (Lượt 36) ─────────────────
   Bước 2 của lời hứa: "mời email của chúng tôi làm Quản trị viên — 2 phút".
   Khối này đứng TRÊN khối lịch vì chưa có quyền thì chưa có lịch. */
.thieu-q{margin-top:var(--sp-6);padding:var(--sp-5);border-radius:var(--r-md);
  background:var(--ama-warning-100);border:1px solid #F3E0A8;text-align:left}
.thieu-q__h{margin:0 0 6px;font:800 18px/1.35 var(--ama-font-head);color:var(--text)}
.thieu-q__d,.thieu-q__mail{margin:0 0 var(--sp-3);font-size:15px;color:var(--text)}
.thieu-q__addr{font-family:var(--ama-font-mono);font-size:17px;word-break:break-all}
.thieu-q__ds{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.thieu-q__ds li{padding:8px 11px;border-radius:var(--r-sm);background:var(--surface);
  border:1px solid var(--border);font-size:14.5px;overflow-wrap:anywhere}
.thieu-q__tt{display:inline-block;margin-left:4px;font-size:13px;color:var(--text-soft)}
.thieu-q__tt--do{color:var(--ama-danger-700);font-weight:600}
.thieu-q__ghi{margin:var(--sp-4) 0 0;font-size:14px;color:var(--text)}

/* ═══════════════════════════════════════════════════════════════════════════
   LƯỢT 45 — NGÓN TAY VÀ CON MẮT.

   ★★★ ĐO ĐƯỢC TRÊN MÁY CHẠY THỬ, TRƯỚC LƯỢT NÀY (đo bằng trình duyệt thật,
   ở tám bề rộng từ 320px tới 1600px):

       trượt ngang ..................... 0px ở MỌI trang, MỌI bề rộng   ✔
       nút/liên kết nhỏ hơn 32px ....... 30 chỗ ở trang chủ (390px)
       chữ nhỏ hơn 12px ................ 12 chỗ ở trang chủ

   Phần khung đã tốt: không trang nào trượt ngang. Phần hỏng nằm ở hai thứ mà
   máy quét trợ năng KHÔNG bắt được vì chúng không vi phạm luật nào cả —
   chúng chỉ làm người dùng trượt tay và nheo mắt.

   ★★ HAI CHUẨN, VIẾT RA ĐỂ SAU NÀY CÒN CÃI ĐƯỢC:
       · Apple HIG:      vùng chạm tối thiểu 44 × 44 pt
       · Google Material: 48 × 48 dp
       · WCAG 2.2 (2.5.8): tối thiểu 24 × 24 CSS px — mức SÀN, không phải mức tốt
     Ta lấy 44px cho MÀN HÌNH CẢM ỨNG, và 12px là cỡ chữ nhỏ nhất được phép.

   ★ CHỈ ÁP CHO `pointer: coarse` — tức là ngón tay. Trên máy tính có chuột,
     một liên kết trong câu văn mà bị nống cao 44px sẽ phá vỡ dòng chữ. Đây là
     chỗ dễ sai nhất khi “sửa cho đúng chuẩn”: áp chuẩn của ngón tay lên con
     trỏ chuột thì trang xấu đi mà chẳng ai dễ bấm hơn.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── ① CỠ CHỮ SÀN: 12px. Dưới mức ấy thì trên điện thoại là nheo mắt. ─────── */
.ama-logo__sub{font-size:12px}
.penta__en{font-size:12px}
.chan__star{font-size:12px}
.price__flag{font-size:12px}
.map-attr{font-size:12px}

/* ── ② VÙNG CHẠM 44px CHO NGÓN TAY ───────────────────────────────────────── */
@media (pointer: coarse){
  /* Liên kết đứng riêng một dòng (thực đơn, chân trang, danh sách) — nống cao
     bằng đệm dọc, KHÔNG bằng chiều cao cứng: chữ dài xuống hai dòng vẫn đúng. */
  .ama-nav a,
  .ama-footer a,
  .chan a,
  .ama-menu a{
    display:inline-flex; align-items:center;
    min-height:44px; padding-block:4px;
  }
  /* Nút đổi ngôn ngữ đo được 36×26 và 40×26 — nhỏ nhất trang, mà lại là thứ
     người Việt lớn tuổi bấm nhiều nhất. */
  .lang-switch a, .ama-lang a, a.is-active{
    min-width:44px; min-height:44px;
    display:inline-flex; align-items:center; justify-content:center;
  }
  /* ★★★ Ô TICK: ĐÃ VIẾT MỘT LUẬT NỚI RỘNG Ở ĐÂY RỒI GỠ ĐI — GHI LẠI VÌ SAO.
   *
   *   Vòng đầu tôi viết `input[type=checkbox]{width:22px;height:22px}` cho dễ
   *   bấm. Rồi đo lại và thấy 20 “ô tick 22×22” mọc lên ở trang đăng ký.
   *   Xem kỹ dòng 429 phía trên:
   *
   *       .checkbox-card input{position:absolute;opacity:0;width:0;height:0}
   *
   *   Ô tick ở đây được CỐ Ý giấu đi, và `.checkbox-card > span` đã cao 52px
   *   từ lâu — cả tấm thẻ mới là vùng bấm. Luật “cho dễ bấm” của tôi lôi
   *   những ô đã giấu ra lại, tức là phá đúng cái đang làm việc tốt.
   *
   *   Bài học, viết ra để lượt sau khỏi làm lại: **đo trước, rồi mới sửa.**
   *   Một luật CSS chung chung áp lên cả trang bao giờ cũng trúng vài chỗ đã
   *   được nghĩ kỹ hơn nó. */
}

/* ── ③ NHỮNG CHỖ CÒN LẠI, TÌM RA BẰNG ĐO LẠI SAU KHI SỬA VÒNG MỘT ────────── */
/* ★★ VÀ MỘT ĐIỀU ĐÃ ĐO RỒI MỚI DÁM KHÔNG SỬA:
 *
 *   Vòng đo thứ hai chỉ ra 20 “ô tick 22×22” trên trang đăng ký và mấy liên
 *   kết 16–18px cao nằm GIỮA CÂU VĂN. Cả hai đều KHÔNG phải lỗi:
 *
 *     · ô tick nằm trong `label.checkbox-card` — cả tấm thẻ mới là vùng bấm,
 *       và tấm thẻ ấy cao hơn 44px từ lâu rồi;
 *     · WCAG 2.5.8 miễn trừ đúng chữ: một liên kết nằm trong một câu văn thì
 *       không bị đòi 24×24, vì nống nó lên là phá vỡ dòng chữ.
 *
 *   Nống chúng lên cho “bảng điểm đẹp” là sửa cái không hỏng và làm hỏng cái
 *   đang tốt. Nên: sửa ĐÚNG ba chỗ dưới đây, và sửa luôn cái thước đo cho nó
 *   thôi đếm nhầm. */
@media (pointer: coarse){
  /* Ô nhập chữ đo được cao 21px — ngón tay bấm trượt là chuyện thường ngày. */
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="password"], input[type="search"], input[type="number"],
  input[type="date"], select, textarea{
    min-height:44px;
  }
  /* Liên kết đứng riêng mà hẹp ngang (mũi tên, dấu ×, số trang). */
  .ama-nav a, .ama-footer a, .chan a, .ama-menu a,
  .pager a, .close, .btn-icon{ min-width:44px; justify-content:center }
}
/* Hai chỗ chữ dưới 12px còn sót, tìm bằng đo lại chứ không bằng trí nhớ. */
.hero__post-meta span{font-size:12px}
.chat__ten small{font-size:12px}

/* ═══════════════════════════════════════════════════════════════════════════
   MÃ XÁC NHẬN BẰNG ẢNH (CAPTCHA)

   ★ Cố ý KHÔNG màu mè: không nền màu, không viền màu, không hiệu ứng. Ảnh do
     máy chủ vẽ đã là xám–đen trung tính; phần khung ở đây chỉ giữ cho nó ngay
     ngắn chứ không tô thêm gì.
   ★ Ảnh giữ nguyên nền xám nhạt ở CẢ giao diện sáng lẫn tối. Đảo màu ảnh theo
     giao diện tối nghe thì hay, nhưng filter:invert làm chữ số nhoè viền và
     khó đọc hẳn — mà dễ đọc mới là yêu cầu đặt ra.
   ★ Cỡ chữ ô nhập 20px và vùng chạm 44px: trên ngưỡng 12px và 32px mà bộ quét
     trợ năng của dự án bắt lỗi, và đủ to để người lớn tuổi gõ 5 chữ số không
     phải nheo mắt.
   ═══════════════════════════════════════════════════════════════════════════ */
.ama-captcha__row{
  display:flex; align-items:center; gap:var(--sp-3);
  flex-wrap:wrap; margin-bottom:var(--sp-3);
}
.ama-captcha__img{
  display:block; border-radius:8px; max-width:100%; height:auto;
  box-shadow:inset 0 0 0 1px var(--border);
}
.ama-captcha__new{
  min-height:44px; padding:0 var(--sp-4); font-size:15px;
}
.ama-captcha__input{
  max-width:11rem; text-align:center;
  font-size:20px; letter-spacing:.4em; text-indent:.4em;
  font-variant-numeric:tabular-nums;
}
/* Người dùng bàn phím phải thấy rõ mình đang ở đâu. */
.ama-captcha__input:focus-visible{ outline:3px solid var(--ama-blue-600); outline-offset:2px; }

@media (max-width:420px){
  /* Màn hình hẹp: ảnh xuống một hàng riêng, nút không bị bóp méo. */
  .ama-captcha__row{ gap:var(--sp-2); }
  .ama-captcha__new{ width:100%; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   LƯỢT 49 — GIÁ GỐC GẠCH NGANG TRÊN THẺ GIÁ  ($700 → $300)

   ★ Dùng thẻ `<s>` trong HTML, không dùng `text-decoration` suông: máy đọc màn
     hình phải đọc ra được rằng đây là giá CŨ, không phải giá đang bán. CSS ở
     đây chỉ lo phần nhìn.
   ★★ Bài học Lượt 47 · 48: mọi lớp dùng ở màn hình đều khai thật, và phép thử
     của Lượt 49 đếm ngược lại.
   ═══════════════════════════════════════════════════════════════════════════ */
.price__goc{font:600 17px/1.2 var(--ama-font-head);color:var(--text-soft);margin-bottom:2px}
.price__goc s{color:var(--ama-danger-700);text-decoration-thickness:2px}

/* ═══════════════════════════════════════════════════════════════════════════
   LƯỢT 49 — HÌNH MINH HOẠ TRANG HƯỚNG DẪN CẤP QUYỀN

   ★ Ô CHỖ TRỐNG phải TRÔNG NHƯ một chỗ trống, không trông như một hình đã hỏng:
     nền gạch chéo nhạt + một cái nhãn bằng chữ. Một khung xám trơn sẽ bị đọc
     thành “ảnh không tải được”, và người ta sẽ đi tìm lỗi mạng.
   ★★ `max-width:100%` và `height:auto` — sale trình bày cho khách bằng điện
     thoại, và một tấm ảnh chụp màn hình máy tính tràn ra ngoài ở 390px là đúng
     cái lỗi Lượt 47 trả giá.
   ═══════════════════════════════════════════════════════════════════════════ */
.gd-anh{margin:var(--sp-4) 0 0}
.gd-anh img{display:block;max-width:100%;height:auto;border-radius:var(--r-md);
  border:1px solid var(--border)}
.gd-anh__trong{display:flex;align-items:center;justify-content:center;min-height:150px;
  border:2px dashed var(--ama-blue-300);border-radius:var(--r-md);
  background:repeating-linear-gradient(45deg,var(--ama-blue-050),var(--ama-blue-050) 10px,
    transparent 10px,transparent 20px)}
.gd-anh__nhan{font:700 13px/1.4 var(--ama-font-head);color:var(--ama-blue-700);
  letter-spacing:.04em;text-transform:uppercase}
.gd-anh__ta{margin:8px 0 0;font-size:13.5px;line-height:1.6;color:var(--text-soft)}

/* ═══════════════════════════════════════════════════════════════════════════
   LƯỢT 49 — TRANG HƯỚNG DẪN CẤP QUYỀN: CHẾ ĐỘ TỐI VÀ BỀ RỘNG 390px

   ★★★ HAI LỖI CÓ SẴN, CHƯA AI ĐO. `/guide/access` chưa từng nằm trong bộ quét
     trợ năng nào; bộ lái Lượt 49 là thứ đầu tiên mở nó ở chế độ tối và ở 390px.

     ① Khối đường dẫn gõ cứng `--ama-blue-050` làm nền và `--ama-blue-700` làm
        chữ TRONG THUỘC TÍNH `style`. Ở chế độ tối cả hai đều là xanh đậm →
        tương phản **1,75 : 1** (chuẩn đòi 4,5 : 1), chữ gần như biến mất.
        Một màu gõ trong `style` thì chế độ tối không với tới được.
     ② Địa chỉ thư mời dài, phông monospace 17px, không xuống dòng được → đẩy
        cái nút Chép ra ngoài màn hình **35px** ở bề rộng 390px.

   ★ `--alt` và `--text` là hai biến ĐÃ KHAI CẢ HAI CHẾ ĐỘ (xem `:root` và khối
     `prefers-color-scheme:dark`). Dùng chúng thì không phải nhớ gì thêm.
   ═══════════════════════════════════════════════════════════════════════════ */
.gd-duong{background:var(--alt);color:var(--text);border-radius:var(--r-md);
  padding:12px 15px;font:600 14px/1.7 var(--ama-font-mono);
  overflow-x:auto;overflow-wrap:anywhere}
.gd-moi__mail{font:600 17px/1.5 var(--ama-font-mono);overflow-wrap:anywhere;word-break:break-all}

/* ═══════════════════════════════════════════════════════════════════════════
   LƯỢT 55 · TRANG KHÁCH: CÂN GIỮA, GỌN LẠI, VÀ CHỦ DỰ ÁN CHỈNH ĐƯỢC

   ★★★ ĐO ĐƯỢC TRƯỚC LƯỢT NÀY, bằng trình duyệt thật:
       máy tính 1440 ..... 11.001px = 12,2 MÀN HÌNH mới xem hết
       điện thoại 390 .... 17.283px = 20,5 MÀN HÌNH
       thanh menu ........ 5 DÒNG, chồng lên đầu trang
       lưới bảng giá ..... lề trái 175px / lề phải 948px — lệch 773px
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── ① THANH MENU: MENU CON CHƯA HỀ CÓ CSS ──────────────────────────────────
   Đầu trang in ra `.ama-nav__grp` + `.ama-nav__sub` (nhóm “Dịch vụ ▾” với ba
   mục con), nhưng KHÔNG dòng CSS nào khai hai lớp ấy — nên menu con đổ thẳng
   xuống thành ba dòng rời, chồng lên logo và nút Đăng ký.
   Một mẩu giao diện được in ra mà chưa ai mặc áo cho nó: cùng họ với “một cái
   núm vặn được mà không nối vào đâu”. */
.ama-nav__grp{position:relative;display:inline-flex;align-items:center}
.ama-nav__grp>a{display:inline-flex;align-items:center;gap:4px}
/* ★ 12px là sàn của dự án — bộ kiểm thử canh đúng chỗ này, vì chủ tiệm 60 tuổi
     nhìn điện thoại giữa tiệm sáng đèn vàng không đọc nổi chữ 11px. Mũi tên
     nhỏ thì dùng `scale`, ĐỪNG hạ cỡ chữ xuống dưới sàn. */
.ama-nav__grp>a i{font-style:normal;font-size:12px;line-height:1;opacity:.7;
  display:inline-block;transform:scale(.85)}
.ama-nav__sub{
  position:absolute;top:100%;left:0;z-index:60;min-width:190px;
  display:flex;flex-direction:column;gap:2px;padding:6px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-md);box-shadow:0 10px 28px rgba(0,0,0,.14);
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease),
             visibility 0s linear var(--dur)}
/* ★ Mở bằng CHUỘT **và** bằng BÀN PHÍM. Chỉ `:hover` thì người đi bằng phím
     Tab không bao giờ tới được ba mục con — và ba lượt quét trợ năng sẽ đỏ. */
.ama-nav__grp:hover>.ama-nav__sub,
.ama-nav__grp:focus-within>.ama-nav__sub{
  opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.ama-nav__sub a{white-space:nowrap;font-size:14.5px;padding:8px 12px}

/* ── ② BẢNG GIÁ PHẢI NẰM GIỮA ───────────────────────────────────────────────
   Lưới khai `--3` (ba cột) từ hồi còn ba gói. Lượt 49 bỏ xuống còn hai gói, và
   hai thẻ nằm lại ở cột 1–2, chừa trống nguyên cột 3 bên phải: lề trái 175px,
   lề phải 948px.
   ★ `--can` co số cột theo số thẻ THẬT rồi đẩy cả cụm vào giữa — thêm hay bớt
     gói lần sau cũng không phải sửa CSS nữa. */
/* ★ `auto-fit` co số cột theo số thẻ THẬT: hai gói thì hai cột, ba gói thì ba,
     và `justify-content:center` đẩy cả cụm vào giữa. Cột trống tự co về 0 nên
     không bao giờ còn khoảng chừa lệch một bên nữa.
     ★ Phải đặt SAU và ĐÈ lên `--2`/`--3` ở cùng ngưỡng màn hình, nếu không
       `repeat(2,minmax(0,1fr))` vẫn kéo hai thẻ ra full chiều ngang. */
@media (min-width:640px){
  .ama-grid--can{grid-template-columns:repeat(auto-fit,minmax(260px,400px));
                 justify-content:center}
}

/* ── ③ NĂM NÚM CHỦ DỰ ÁN CHỈNH ĐƯỢC (Hậu đài → Giao diện) ──────────────────
   Mọi con số dưới đây đọc từ biến do `Theme::css()` sinh ra từ CSDL. Gõ cứng
   một con số ở đây là lấy mất cái núm vừa dựng. */
/* ★ Câu này là TIÊU ĐỀ LỚN của trang — chính câu chủ dự án muốn thu nhỏ:
     “Doanh nghiệp của quý vị có mặt mỗi ngày trên Google, Facebook,
      Instagram, TikTok — mà quý vị không phải làm gì.”
     Nó đang 52px và chiếm ba dòng rưỡi trên màn 1440. Nay mặc định 44px, và
     chỉnh được ở Hậu đài (22–72px) mà không cần lập trình lại. */
@media (min-width:960px){
  .hero h1{font-size:var(--ama-hero-title,44px)}
}
.hero__lead{font-size:var(--ama-hero-sub,17px)!important}

/* Khoảng trắng dọc giữa các khối — trang dài 12 màn hình thì mỗi 8px thừa
   nhân lên mười một lần. */
.ama-section{padding-top:var(--ama-khoang,64px);padding-bottom:var(--ama-khoang,64px)}

/* ── ④ “XEM TIẾP…” — kẹp N dòng rồi mở ra ──────────────────────────────────
   ★ Kẹp bằng CSS, mở bằng một nút THẬT (`<button>`), không phải `<div onclick>`:
     nút thật thì bàn phím tới được, máy đọc màn hình đọc ra được, và trạng thái
     mở/đóng nói được bằng `aria-expanded`.
   ★ Khi JS không chạy, `.gon` KHÔNG kẹp gì cả — chữ hiện đủ. Kẹp trước rồi chờ
     JS mở là cách chắc chắn nhất để mất nội dung trên một máy chặn JS. */
.gon{position:relative}
.gon.is-gon>.gon__than{
  display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;
  -webkit-line-clamp:var(--ama-gon-dong,10);line-clamp:var(--ama-gon-dong,10)}
.gon.is-gon>.gon__than::after{
  content:"";position:absolute;left:0;right:0;bottom:38px;height:64px;
  background:linear-gradient(to bottom,transparent,var(--gon-nen,var(--surface)));
  pointer-events:none}
.gon__nut{display:none;margin-top:var(--sp-3);background:none;border:0;
  padding:8px 0;font:700 15px/1 var(--ama-font-head);color:var(--ama-chu-lien-ket);
  cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.gon.is-du>.gon__nut{display:inline-block}
.gon__nut:focus-visible{outline:2px solid var(--ama-blue-500);outline-offset:3px;border-radius:4px}
/* Nền khối “Về chúng tôi” là nền tối — vệt mờ phải mờ về ĐÚNG nền ấy, nếu không
   nó thành một vệt trắng giữa nền xanh đậm. */
.ama-section--dark .gon{--gon-nen:var(--ama-navy-900)}
.ama-section--warm .gon{--gon-nen:var(--ama-orange-050)}
/* ★ `--surface-alt` KHÔNG TỒN TẠI — tôi gõ theo trí nhớ. Nền của khối `--alt`
     là `--alt`. Bộ kiểm thử của dự án canh đúng chuyện này: “mọi biến CSS được
     dùng đều phải CÓ KHAI ở đâu đó”. Một biến chưa khai thì trình duyệt bỏ cả
     dòng khai báo, và vệt mờ sẽ mờ về một màu khác hẳn nền — không ai thấy cho
     tới khi nhìn đúng khối ấy ở đúng chế độ màu. */
.ama-section--alt  .gon{--gon-nen:var(--alt)}
.ama-section--dark .gon__nut{color:#fff}

/* ── ⑤ HỎI–ĐÁP VÀ LIÊN HỆ XẾP NHIỀU CỘT ────────────────────────────────────
   Hỏi–Đáp một cột chiếm 894px; hai cột còn non nửa. Số cột do người đặt. */
/* ★ Bỏ trần 800px khi xếp nhiều cột — giữ trần thì hai cột chen trong 800px,
     chữ gãy vụn và chẳng tiết kiệm được bao nhiêu chiều cao.
   ★ Và bỏ `margin-bottom` của từng thẻ: trong lưới thì `gap` lo khoảng cách,
     margin cộng thêm vào thành khe đôi. */
.faq--cot{display:grid;gap:var(--sp-3);align-items:start;max-width:1080px;
  grid-template-columns:repeat(var(--ama-faq-cot,2),minmax(0,1fr))}
.faq--cot details{margin-bottom:0}
.lienhe--cot{grid-template-columns:repeat(var(--ama-lienhe-cot,2),minmax(0,1fr))}
@media (max-width:860px){
  .faq--cot,.lienhe--cot{grid-template-columns:1fr}
  .ama-grid--can>*{max-width:none}
}

/* ── ⑥ BA KHỐI ĐƯỢC SIẾT LẠI ────────────────────────────────────────────────
   Đo được: “Cam kết bảo mật” 687px · “Phiếu thông tin doanh nghiệp” 705px ·
   “Liên hệ” 903px trên máy tính — và trên điện thoại lần lượt 933 · 799 ·
   1.650px. Cả ba đều là khối CHỮ NGẮN bị bơm phồng bởi khoảng trắng. */
.sec-head--gon{margin-bottom:var(--sp-6)}
.sec-head--gon h2{margin:0}
.sec-head--gon p{margin-top:var(--sp-2)}
.ama-card--gon{padding:var(--sp-6)}
/* Danh sách ba điều cam kết: khoảng cách giữa các mục vốn rộng bằng cả một
   đoạn văn. */
.sec-list{gap:var(--sp-3)}
.sec-sum{margin-top:var(--sp-4)}
/* Thẻ liên hệ: bốn thẻ, mỗi thẻ đệm bằng một khổ giấy. */
.lienhe--cot .contact-card{padding:var(--sp-5)}
.lienhe--cot .contact-card h3{margin:0 0 var(--sp-3);font-size:17px}
.lienhe--cot .contact-row{padding:6px 0}
/* ★★★ LƯỢT 76 — LUẬT NÀY VIẾT CHO MỘT Ô BẢN ĐỒ CHƯA DỰNG, VÀ NÓ VẪN ĐANG
 *   BÓP BẢN ĐỒ THẬT.
 *
 *  Chú thích cũ của chính nó nói rõ: *"Ô bản đồ chưa dựng (sẽ hiện ở Lượt 8)
 *  đang chiếm một khoảng bằng nửa màn hình cho MỘT DÒNG CHỮ CHỜ"*. Bản đồ đã
 *  dựng thật từ Lượt 55, nhưng luật thu nhỏ thì còn nguyên — và vì nó là
 *  `#map .map-canvas` (id + lớp) nên nó thắng mọi luật lớp thường.
 *
 *  Đo được ở Lượt 76: nửa bản đồ cao **222px** trong khi nửa bên phải cao
 *  **592px** — lệch 370px, và khách trên điện thoại nhìn bản đồ qua một khe.
 *  ★ Nay nó kéo cao bằng nửa bên phải, có sàn 300px để không bao giờ thành khe. */
#map .map-canvas{min-height:300px}

/* ★★★ LƯỢT 76 — KHUNG BẢN ĐỒ Ở CHẾ ĐỘ TOÀN MÀN HÌNH.
 *
 *  Khung bản đồ trên trang chủ cao 380px (máy tính) / 302px (điện thoại) — xem
 *  cả nước Mỹ qua một khe ngang. Nút ⤢ giao cả màn hình cho nó.
 *  ★ `:fullscreen` cần đủ HAI dạng tiền tố: thiếu `:-webkit-full-screen` thì
 *    trên Safari bản đồ vào toàn màn hình mà vẫn cao 380px, còn lại là nền đen.
 *  ★★ `border-radius:0` và bỏ viền: ở toàn màn hình không còn "khung" nào để
 *     bo góc, mà bo góc thì hiện ra bốn vệt đen ở bốn góc màn hình. */
#ama-map:fullscreen, #ama-map:-webkit-full-screen,
.map-canvas:fullscreen, .map-canvas:-webkit-full-screen{
  width:100vw;height:100vh;max-height:none;min-height:0;
  border-radius:0;border:0;background:#E8EDF2}


/* ── ⑦ BẢN ĐỒ (.bd*) — chuyển từ `admin.css` sang ────────────────────────
   Trang khách cũng có bản đồ từ Lượt 55, mà `admin.css` thì chỉ hậu đài nạp.
   Chuyển sang đây để CẢ HAI cùng dùng một bản — chép thành hai thì sớm muộn
   chúng trôi khỏi nhau. */
.bd{position:relative;height:min(66vh,600px);min-height:340px;overflow:hidden;
  border:1px solid var(--border);border-radius:var(--r-lg);background:#E8EDF2;
  cursor:grab;touch-action:none;user-select:none}
.bd.is-keo{cursor:grabbing}
.bd__anh,.bd__diem{position:absolute;inset:0}
.bd__diem{pointer-events:none}
.bd__o{position:absolute;width:256px;height:256px;pointer-events:none;
  /* Ô ảnh kề nhau bị hở đường chỉ trắng khi trình duyệt làm tròn toạ độ —
     nới thêm nửa điểm ảnh là kín. */
  outline:.5px solid transparent}
.bd__cum{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;
  width:34px;height:34px;border-radius:50%;border:2.5px solid #fff;cursor:pointer;
  background:var(--ama-blue-600);color:#fff;font:800 13px/1 var(--ama-font-head);
  display:grid;place-items:center;box-shadow:0 2px 7px rgba(0,0,0,.34)}
.bd__cum:hover{z-index:3;filter:brightness(1.12)}
.bd__cum--1{background:#fff;font-size:17px;border-color:var(--ama-blue-600)}
.bd__cum--1.bd__cum--lead{border-color:var(--ama-orange-500)}
.bd__nut{position:absolute;top:11px;right:11px;display:flex;flex-direction:column;gap:5px;
  z-index:4}
.bd__nut button{width:38px;height:38px;border-radius:10px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);cursor:pointer;font-size:16px;
  box-shadow:var(--sh-1)}
.bd__nut button:hover{border-color:var(--ama-blue-600);color:var(--ama-chu-lien-ket)}
.bd__ghi{position:absolute;right:0;bottom:0;z-index:4;background:rgba(255,255,255,.86);
  padding:3px 8px;font-size:12px;border-radius:6px 0 0 0;color:#333}
.bd__ghi a{color:var(--ama-chu-lien-ket)}
.bd__hop{position:absolute;left:11px;bottom:11px;z-index:5;width:min(320px,calc(100% - 22px));
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-4);box-shadow:var(--sh-2)}
.bd__hop[hidden]{display:none}
.bd__hop b{display:block;font:700 15.5px/1.35 var(--ama-font-head);padding-right:26px;
  overflow-wrap:anywhere}
.bd__dc{font-size:13.5px;color:var(--text-soft);margin-top:3px}
.bd__sub{font-size:12.5px;color:var(--text-soft);margin-top:5px}
.bd__hop .btn-primary{margin-top:var(--sp-3)}
.bd__dong{position:absolute;top:7px;right:7px;width:28px;height:28px;border:0;
  background:transparent;cursor:pointer;font-size:14px;color:var(--ama-gray-400);
  border-radius:7px}
.bd__dong:hover{background:var(--ama-gray-100)}
.bd__ds{max-height:190px;overflow-y:auto;margin-top:var(--sp-2);display:grid;gap:3px}
.bd__dsi{font-size:13.5px;padding:5px 7px;border-radius:7px;color:inherit;
  text-decoration:none;overflow-wrap:anywhere;display:block}
.bd__trong{position:absolute;inset:auto 0 50% 0;text-align:center;z-index:2;
  color:var(--text-soft);font-weight:600;pointer-events:none}
.bd__trong[hidden]{display:none}

/* ── ⑧ TIÊU ĐỀ TỪNG KHỐI — SIẾT LẠI, VÀ CHỈNH ĐƯỢC ─────────────────────────
   Đo được trên trang chủ (1440px), TRƯỚC khi siết:
       h2 = 36px, cao dòng 43,92px (1,22)
       riêng các dòng tiêu đề khối: 924px (tiếng Việt) · 764px (tiếng Anh)
       — gần TRỌN MỘT MÀN HÌNH chỉ để in tên các khối.
   Và ở tiếng Việt bốn tiêu đề gãy thành HAI dòng (“Năm việc chúng tôi làm cho
   doanh nghiệp…”, “Tám ‘chú lính’ — mỗi việc có người chịu…”), ở tiếng Anh thì
   “🔒 OUR SECURITY COMMITMENT TO YOU” gãy hai dòng. Hai thứ tiếng gãy ở hai chỗ
   khác nhau — nên phải sửa bằng CỠ CHỮ chỉnh được, không bằng cách viết lại câu. */
.ama-section h2,.sec-head h2{
  font-size:var(--ama-h2,28px);
  line-height:1.18;
  margin-top:0;
  text-wrap:balance}
/* Lề dưới của cả cụm tiêu đề: `--sp-10` là khoảng cách của một khối lớn, mà
   đây chỉ là một dòng chữ dẫn vào nội dung ngay dưới. */
.sec-head{margin-bottom:var(--sp-6)}
.sec-head p{margin-top:var(--sp-2);font-size:16px;line-height:1.55}
.eyebrow{margin-bottom:var(--sp-2);font-size:12px;letter-spacing:.14em}

/* ── ⑨ HAI CHỖ GIÃN NHẤT CÒN LẠI ───────────────────────────────────────────
   Đo được: mỗi khối đệm 64px trên + 64px dưới, nhân 11 khối = **1.408px** chỉ
   là khoảng trắng — bằng một màn hình rưỡi. Nay mặc định 44px (vẫn chỉnh được
   ở Hậu đài, 0→200px), tiết kiệm ~440px mà mắt gần như không thấy khác.

   Và ô bản đồ cao 596px: `.bd{height:min(66vh,600px)}` là cỡ của một MÀN HÌNH
   BẢN ĐỒ ở hậu đài, nơi người ta ngồi tra cứu. Trên trang bán hàng nó chỉ cần
   đủ để thấy “chúng tôi có mặt ở đâu”. */
#ama-map{height:min(42vh,400px);min-height:300px}
/* Khối hero đệm riêng 80px — nó là khối đầu, không cần thêm khoảng trên. */
.hero{padding-top:var(--sp-8)}
/* Lưới bảng giá cách khối chọn gói bên dưới một khoảng bằng cả một section. */
#pricing .ama-grid--can{margin-bottom:var(--sp-6)!important}

/* ── LƯỢT 58 · Ô THÔNG TIN BẢN ĐỒ HIỆN NGAY KHI RÊ CHUỘT ───────────────────
   ★★★ KHÔNG có `transition`, KHÔNG có `animation-delay`, KHÔNG `setTimeout`
   trong JS. Trước lượt này muốn biết một chấm là gì thì phải BẤM, và bấm vào
   cụm thì nó phóng to chứ không nói gì — người xem phải đoán rồi bấm thử.
   Nay mắt tới đâu, chữ hiện tới đó. */
.bd__hop--re{transition:none;animation:none}
/* Lúc đang rê thì ô nằm dưới con trỏ một chút để không che mất chính cái chấm
   người ta đang nhìn. */
.bd__hop--re .bd__dong{opacity:.55}

/* ── LƯỢT 73 · MỖI ỨNG DỤNG NHẮN TIN MỘT ĐƯỜNG RIÊNG, MỘT MÃ QR RIÊNG ──────
   ★★ ĐO ĐƯỢC trước lượt này: trang chủ (home.php:364) và chân trang
   (footer.php:42) in “💬 Zalo · Viber · WhatsApp” là MỘT liên kết, trỏ tới
   https://zalo.me/16168816464. Ba cái tên, một cánh cửa — và hai trong ba
   cái tên dẫn sai chỗ.

   ★ NÚT MÃ QR CHỈ HIỆN Ở MÀN HÌNH RỘNG. Khách đang cầm điện thoại thì bảo họ
   quét mã trên màn hình của chính cái máy ấy là bảo họ làm việc không làm
   được. Dưới 720px nút biến mất, còn đúng cái link mở thẳng ứng dụng. */
.ott{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.ott--gon{flex-direction:row;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4)}
/* ★★★ LƯỢT 77 — HÀNG ỨNG DỤNG NHẮN TIN PHẢI CĂN THEO THẺ CHỨA NÓ.
 *  Chủ dự án gửi ảnh chụp khối "PHIẾU THÔNG TIN DOANH NGHIỆP": tiêu đề, câu
 *  tả, nút lớn và số điện thoại đều CĂN GIỮA, riêng hàng Zalo · Viber ·
 *  WhatsApp · Messenger dạt hẳn sang TRÁI — *"hơi bị lệch"*.
 *  ★ `justify-content:inherit` không có thật cho flex; nên bắt nó theo thẻ
 *    cha bằng một luật riêng: nằm trong khối `.text-center` thì căn giữa. */
.text-center .ott--gon{justify-content:center}

.ott__d{position:relative;display:flex;align-items:center;gap:var(--sp-2)}

.ott__link{display:inline-flex;align-items:center;gap:9px;padding:7px 0;
  font-weight:600;line-height:1.4;word-break:break-word;min-height:44px}
.ott--gon .ott__link{min-height:0;padding:2px 0}
.ott__icon{font-style:normal;font-size:17px;flex:none}
.ott__ghi{display:block;color:var(--text-soft);font-size:12.5px;font-weight:400;margin-top:1px}

/* ★ 44×44 — ngón tay cái người lớn. Một cái nút 24px cạnh một liên kết là
   một cái nút bấm ba lần mới trúng, và hai lần kia mở nhầm liên kết. */
.ott__qr-nut{flex:none;width:34px;height:34px;display:none;align-items:center;
  justify-content:center;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);color:var(--text-soft);font-size:15px;line-height:1;
  cursor:pointer;transition:border-color .15s,color .15s}
.ott__qr-nut:hover,.ott__qr-nut:focus-visible{border-color:var(--ama-blue-500,#2B5CE6);
  color:var(--ama-blue-500,#2B5CE6)}
.ott__qr-nut[aria-expanded="true"]{border-color:var(--ama-blue-500,#2B5CE6);
  color:var(--ama-blue-500,#2B5CE6)}

.ott__qr{position:absolute;z-index:40;top:calc(100% + 6px);left:0;
  background:#fff;border:1px solid var(--border);border-radius:var(--r-md);
  padding:var(--sp-3);box-shadow:0 12px 32px rgba(10,18,36,.22);text-align:center}
.ott__qr img{display:block;width:180px;height:180px;background:#fff}
.ott__qr small{display:block;margin-top:6px;color:#5A6880;font-size:12px;
  max-width:180px;word-break:break-all}

/* Mã QR luôn nền trắng, kể cả chế độ tối: máy quét đọc tương phản đen-trên-
   trắng. Một mã QR bị đảo màu là một mã QR không quét được. */
@media (min-width:720px){
  .ott__qr-nut{display:inline-flex}
}
@media (max-width:719px){
  .ott__qr{display:none}
}

/* ── LƯỢT 73 · LỐI VÀO CỔNG CHỦ TIỆM TRÊN ĐẦU TRANG ───────────────────────
   ★★ ĐO ĐƯỢC trước lượt này: `/portal/login` có thật và chạy được, nhưng
   grep '/portal' trong toàn bộ app/views/site + app/views/partials trả về
   0 kết quả. Chủ tiệm đang trả tiền hằng tháng không tìm được cổng của chính
   mình trừ khi còn giữ lá thư mời.
   ★ KHÔNG phải nút chính: nút chính là "Đăng ký". Đây là một liên kết nhỏ,
   nhường chỗ cho lời chào hàng — nhưng PHẢI có mặt. */
.ama-header__vao{display:none;align-items:center;gap:5px;padding:7px 10px;
  border-radius:var(--r-sm);font:600 13.5px/1 var(--ama-font-head);
  color:var(--text-soft);white-space:nowrap;transition:color .15s,background .15s}
.ama-header__vao:hover,.ama-header__vao:focus-visible{color:var(--text);background:var(--alt)}
/* Dưới 980px đầu trang chỉ còn logo + ☰; lối vào nằm trong thực đơn trượt. */
@media (min-width:980px){ .ama-header__vao{display:inline-flex} }

/* ── LƯỢT 73 · GỢI Ý THÀNH PHỐ THEO MÃ ZIP ────────────────────────────────
   ★★ Câu gợi ý cũ hứa “Điền ZIP là tự ra Thành phố & Bang” trong khi không
   một dòng mã nào điền Thành phố. Nay có gợi ý thật — nhưng là NÚT BẤM, không
   tự điền đè: gợi ý lấy từ dữ liệu của chính mình nên nó có thể sai, và một
   ô bị điền đè thì khách không nhận ra để sửa. */
.zip-goiy{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;
  font-size:13px;color:var(--text-soft)}
.zip-goiy__nut{min-height:34px;padding:6px 11px;border:1px solid var(--ama-blue-300,#9DBAF5);
  border-radius:var(--r-pill);background:var(--ama-blue-050,#F2F6FF);
  color:var(--ama-chu-lien-ket,#1B4FD8);font:600 13px/1 var(--ama-font-head);cursor:pointer}
.zip-goiy__nut:hover,.zip-goiy__nut:focus-visible{background:var(--ama-blue-100,#E0EAFD)}
@media (max-width:480px){ .zip-goiy__nut{min-height:40px;padding:9px 13px} }

/* ── LƯỢT A · L-21 · Ô BẪY MÁY DÒ — ẩn TUYỆT ĐỐI ──────────────────────────
   ★★ ĐO ĐƯỢC 15/09/2026: bản cũ dùng `position:absolute; left:-9999px` và
   chữ trong <label> vẫn đọc được ở đầu `innerText` của trang. Đẩy ra ngoài
   màn hình KHÔNG phải là xoá khỏi luồng văn bản.
   ★ `clip-path: inset(50%)` + kích thước 0 thì không còn gì để đọc, mà ô vẫn
   nằm trong DOM và vẫn được gửi lên — bẫy vẫn bắt được máy dò.
   ★ KHÔNG dùng `display:none`: một số máy dò bỏ qua ô `display:none`, và bẫy
   sẽ không bắt được ai nữa. */
.bay-may{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;
  pointer-events:none;left:-9999px;top:-9999px}
.bay-may input{width:1px;height:1px;opacity:0}

/* ═══════════════════════════════════════════════════════════════════════════
 *  BẢN IN CÁC LÍNH — ảnh là phần NHÌN, thẻ gói bên dưới là phần ĐỌC ĐƯỢC.
 *
 *  ★★ Ảnh cao 1427 / rộng 1102 — tỷ lệ dọc. Trên điện thoại nó chiếm gần ba
 *     màn hình nếu để nguyên. Nên giới hạn chiều cao theo VIEWPORT và cho ảnh
 *     tự co: thấy được TOÀN BỘ tấm in ngay, muốn đọc kỹ thì bấm vào.
 *  ★ KHÔNG dùng `opacity` lên chữ (bài học Lượt 57). Cỡ chữ nhỏ nhất 12.5px.
 * ═══════════════════════════════════════════════════════════════════════════ */
.poster{padding-top:var(--sp-8);padding-bottom:var(--sp-8)}
/* ★★★ LƯỢT 76 — TẤM IN RỘNG THÊM 25%.
 *
 *  Đo được: tấm in rộng 880px trong khung chứa 1.180px → **bỏ không 300px,
 *  đúng một phần tư chiều ngang**, trong khi đây là thứ chủ dự án muốn "đập
 *  vào mắt họ ngay".
 *
 *  ★★ Dừng ở 1.100px chứ không kéo tới 1.180px: tệp ảnh gốc rộng đúng
 *     **1.102px**. Kéo một tấm ảnh rộng hơn kích thước thật của nó là làm nó
 *     nhoè — rộng thêm mà mờ đi thì không phải rộng thêm. Muốn đủ 1.180px thì
 *     phải có tệp ảnh gốc lớn hơn, đó là việc của người làm ảnh. */
.poster__wrap{display:block;position:relative;max-width:1100px;margin:0 auto;
  border-radius:14px;overflow:hidden;box-shadow:var(--sh-3);
  background:var(--surface);text-decoration:none}
/* ═══════════════════════════════════════════════════════════════════════════
 *  ★★★ LƯỢT 77 — BỎ `max-height`, VÌ NÓ LÀ THỨ TẠO RA HAI VỆT TRẮNG.
 *
 *  Chủ dự án gửi ảnh chụp và nói: *"02 bên còn trống — màu trắng"*, và muốn
 *  *"có kiểu FULL"*.
 *
 *  ĐO ĐƯỢC trên màn 1440×900:
 *      khung bọc  1100 × 792 px
 *      ảnh gốc    1100 × 1424 px  (tấm in DỌC)
 *      max-height 792px (= 88vh) · object-fit: contain
 *
 *  Thẻ `<img>` đúng 1100px — không có vệt trắng NGOÀI nó. Vệt trắng nằm BÊN
 *  TRONG: `contain` phải nhét một tấm dọc 1100×1424 vào một hộp 1100×792, nên
 *  nó thu tấm ảnh còn **612px** và chừa **244px trắng mỗi bên**.
 *
 *  ★★ Chú thích cũ nói lý do đặt trần: *"cả tấm in lọt vào một khung nhìn"*.
 *     Ý tốt, nhưng cái giá là tấm in co lại còn 56% bề rộng — mà đây đúng là
 *     thứ chủ dự án muốn "đập vào mắt họ ngay". Một tấm in nhỏ lại để khỏi
 *     phải cuộn thì không còn đập vào mắt ai.
 *
 *  ★ Trên điện thoại KHÔNG có vệt trắng nào (350×453 đúng tỉ lệ ảnh), nên
 *    không phải sửa gì ở đó — luật `max-height:76vh` cũ cũng bỏ luôn cho khỏi
 *    có ngày nó đóng hộp thư trên một màn ngang.
 * ═══════════════════════════════════════════════════════════════════════════ */
.poster__img{display:block;width:100%;height:auto;background:#fff}
.poster__wrap:focus-visible{outline:3px solid var(--ama-orange-600);outline-offset:3px}
/* ★★★ LƯỢT 76 — NHÃN LÊN GÓC TRÊN–TRÁI.
 *
 *  Chủ dự án: *"01 cái nữa trên cùng bên trái, đừng để nó bên tay phải và
 *  ngang hàng — nó làm hình nhỏ lại"*.
 *
 *  Nhãn cũ nằm `right:10px; bottom:10px`, tức góc DƯỚI–PHẢI, đè lên đúng chỗ
 *  bảng giá trong tấm in. Góc trên–trái là chỗ mắt người đọc chạm vào đầu
 *  tiên, và cũng là chỗ tấm in để trống nhiều nhất.
 *
 *  ★★ `white-space:nowrap` — CHỮ KHÔNG ĐƯỢC VỠ (chủ dự án dặn riêng). Nhãn
 *     tiếng Việt "Bấm để xem cỡ lớn" dài 18 ký tự; thiếu dòng này thì trên
 *     màn hẹp nó rớt xuống hai dòng và cái viên thuốc méo đi.
 *  ★ `max-width` để nhãn không bao giờ tràn khỏi tấm in — nowrap mà không có
 *    trần thì một bản dịch dài đẩy chữ ra ngoài mép ảnh. */
.poster__zoom{position:absolute;top:10px;left:10px;
  padding:6px 12px;border-radius:999px;font:600 13px/1.5 var(--ama-font-head);
  background:rgba(10,18,36,.82);color:#fff;
  white-space:nowrap;max-width:calc(100% - 20px);overflow:hidden;
  text-overflow:ellipsis}
.poster__wrap:hover .poster__zoom{background:var(--ama-orange-600)}

/* ★ Hai gói bên dưới rộng theo tấm in — hai khối kề nhau lệch bề rộng thì mắt
 *   đọc ra ngay là "chưa xong". Khoảng cách trên thu từ sp-8 xuống sp-6. */
.poster__goi{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr));
  max-width:1100px;margin:var(--sp-6) auto 0}
.pgoi{position:relative;background:var(--surface);border:1px solid var(--border);
  border-radius:12px;padding:15px 16px;text-align:center;box-shadow:var(--sh-1)}
.pgoi--pop{border-color:var(--ama-orange-600);border-width:2px;box-shadow:var(--sh-2)}
/* ★★★ CHỮ TRẮNG TRÊN CAM LÀ 3.21 — KHÔNG ĐỌC ĐƯỢC.
 *
 *  Ba lượt quét bắt được ngay: cần 4.5 cho chữ nhỏ, cam `#e36e2a` chỉ cho 3.21.
 *
 *  ★ Nhãn cũ `.price__flag` "qua" được vì nền nó là một dải CHUYỂN SẮC, mà máy
 *    đo không tính nổi nền chuyển sắc nên bỏ qua. Đó là NÉ, không phải đọc
 *    được. Ở đây dùng nền sẫm: tương phản 14:1, và viền cam vẫn giữ đúng nhận
 *    diện thương hiệu. */
.pgoi__flag{position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  padding:3px 12px;border-radius:999px;white-space:nowrap;
  background:#0A1224;color:#fff;border:2px solid var(--ama-orange-600);
  font:700 12.5px/1.6 var(--ama-font-head)}
.pgoi__ten{font:700 15px/1.3 var(--ama-font-head);color:var(--text-soft);
  text-transform:uppercase;letter-spacing:.06em}
.pgoi__gia{margin-top:4px;font:800 32px/1.05 var(--ama-font-head);color:var(--text);
  letter-spacing:-.02em}
.pgoi__gia span{font:600 14px/1 var(--ama-font-head);color:var(--text-soft);margin-left:4px}
.pgoi__linh{margin-top:8px;padding:4px 10px;border-radius:999px;display:inline-block;
  background:var(--alt);color:var(--text);font:700 13px/1.6 var(--ama-font-head)}
.pgoi__tag{margin:7px 0 11px;font-size:13.5px;color:var(--text-soft);min-height:2.6em}

@media (max-width:640px){
  .poster__goi{grid-template-columns:1fr}
  .pgoi__gia{font-size:32px}

}

/* ═══════════════════════════════════════════════════════════════════════════
 *  ĐỂ BẢN IN CÁC LÍNH ĐẬP VÀO MẮT TRÊN ĐIỆN THOẠI.
 *
 *  ★★★ ĐO ĐƯỢC trên màn 390×844: phải cuộn **1.603 px** — gần hai màn hình —
 *      mới thấy tấm in. Chủ dự án yêu cầu nó "đập vào mắt ngay".
 *
 *      Thủ phạm là phần HERO: tiêu đề 6 dòng + đoạn dẫn 4 dòng + 2 nút to.
 *      Đẹp trên máy tính, quá cao trên điện thoại.
 *
 *  ★★ KHÔNG cắt bớt câu chữ — đó là lời chào chính của tiệm. Chỉ siết lại
 *     khoảng cách và cỡ chữ trên màn hẹp, và thêm một chip dẫn thẳng xuống.
 * ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width:640px){
  .hero{padding:var(--sp-6) 0 var(--sp-5)}
  /* ★★★ Đo được: tiêu đề lớn cao **248px** trên màn 390px — gần một phần ba
   *   màn hình cho một câu. Xuống 27px thì vẫn là câu to nhất trang mà bớt
   *   được ~40px, và `max-width:16ch` vẫn giữ câu không tràn dài. */
  .hero h1{font-size:27px;line-height:1.16;margin:var(--sp-2) 0 var(--sp-3)}
  .hero__lead{font-size:15.5px;line-height:1.6}
  .hero .btn-group{gap:10px}
  .hero__note{margin-top:10px}
}
/* Chip dẫn xuống bản in — hiện ở MỌI cỡ màn, ngay dưới hai nút chính. */
/* Dải bản in ngay trong hero — thứ đầu tiên đập vào mắt, kể cả trên điện thoại. */
.hero__banin{display:block;margin-top:16px;max-width:560px;border-radius:12px;
  overflow:hidden;text-decoration:none;box-shadow:var(--sh-2);
  border:2px solid rgba(255,255,255,.34);background:#0A1224}
.hero__banin img{display:block;width:100%;height:auto}
.hero__banin__chu{display:block;padding:9px 14px;text-align:center;
  background:rgba(255,255,255,.12);color:#fff;
  font:700 13.5px/1.5 var(--ama-font-head)}
.hero__banin:hover{border-color:var(--ama-orange-600)}
.hero__banin:hover .hero__banin__chu{background:var(--ama-orange-600)}
.hero__banin:focus-visible{outline:3px solid #fff;outline-offset:3px}


/* ── Phiếu đăng ký: nói thẳng "bắt buộc" / "tuỳ chọn", đừng bắt nhớ dấu sao ── */
.lab__bb{margin-left:6px;font:600 12.5px/1 var(--ama-font-head);color:var(--ama-danger-700)}
.lab__tc{margin-left:6px;font:400 12.5px/1 var(--ama-font-head);color:var(--text-soft)}

/* ── Lưu nửa chừng → link điền tiếp (gửi Zalo/Viber/WhatsApp/email) ───────── */
/* ★★★ LƯỢT 78 — KHUNG "ĐÃ LƯU": BA HÀNG XUỐNG CÒN HAI.
 *  Chủ dự án: *"quăng dòng nút này lên cùng hàng với câu Số 1 … để bên phía
 *  tay phải vì nó còn không gian là khá trống … thu nhỏ khung xanh này hơn
 *  nữa, tiết kiệm trang web"*.
 *  ★ Đệm 12/14 xuống 10/12, và bớt hẳn một hàng: khối này hiện ra NGAY khi
 *    khách vừa gõ ô đầu tiên, nên mỗi pixel của nó đẩy cả phiếu xuống. */
.wiz__tam{margin:10px 0 12px;padding:10px 12px;border-radius:10px;
  background:var(--alt);border:1px solid var(--border)}
/* ★★ Chữ bên trái co giãn, cụm nút bên phải giữ nguyên bề rộng của nó
 *    (`flex:none`) — để nút không bao giờ bị bóp méo.
 *  ★ `flex-wrap` để trên điện thoại chúng tự xuống dòng: ép một hàng ngang
 *    trên màn 390px thì bốn cái nút teo lại còn không bấm trúng. */
.wiz__tam__hang{display:flex;flex-wrap:wrap;gap:8px 14px;
  align-items:flex-start;justify-content:space-between}
.wiz__tam__chu{flex:1 1 15rem;min-width:0}
.wiz__tam__chu b{display:block;font:700 14px/1.4 var(--ama-font-head);color:var(--text)}
.wiz__tam__chu span{display:block;margin-top:2px;font-size:12.5px;color:var(--text-soft)}
.wiz__tam__link{margin-top:8px}
.wiz__tam__link input{width:100%;padding:8px 10px;border-radius:8px;
  border:1px solid var(--border);background:var(--surface);color:var(--text);
  font:400 12.5px/1.4 ui-monospace,monospace}
/* ★★★ `flex:none` LÀ CHỖ SAI: nó sizing cụm nút theo BỀ RỘNG NỘI DUNG, nên
 *   `flex-wrap` bên trong không bao giờ có dịp hoạt động — bốn nút cần 422px
 *   và thân trang tràn ngang trên màn 390px (ba lượt quét bắt ngay).
 *   ★ `flex:0 1 auto` + `min-width:0`: cụm nút được phép CO LẠI, và khi co thì
 *     `flex-wrap` mới cho nút xuống dòng. Trên màn rộng nó vẫn nằm gọn bên
 *     phải như chủ dự án muốn, vì lúc ấy chỗ đủ nên không có gì phải co. */
.wiz__tam__nut{display:flex;gap:7px;flex-wrap:wrap;flex:0 1 auto;min-width:0;margin-top:0}
@media (max-width:560px){ .wiz__tam__nut{flex:1 1 100%;margin-top:4px} }

/* ═══════════════════════════════════════════════════════════════════════════
 *  PHIẾU ĐĂNG KÝ — KHỐI MỞ ĐẦU, VÀ THẺ GỌN LẠI.
 *
 *  ★★ Chủ dự án: "Họ sẽ không có thời gian đâu mà làm trên Web." Nên chữ ít,
 *     dòng sát, thẻ nhỏ — nhưng KHÔNG nhỏ hơn 12.5px và không dùng `opacity`
 *     lên chữ (bài học Lượt 57).
 * ═══════════════════════════════════════════════════════════════════════════ */
.wiz__mo{margin-bottom:14px;padding:14px 16px;border-radius:12px;
  background:var(--alt);border:1px solid var(--border)}
.wiz__mo__so{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.wiz__mo__so span{display:flex;flex-direction:column;align-items:center;
  min-width:86px;padding:7px 12px;border-radius:9px;
  background:var(--surface);border:1px solid var(--border)}
.wiz__mo__so b{font:800 17px/1.1 var(--ama-font-head);color:var(--text)}
.wiz__mo__so span{font:600 12.5px/1.5 var(--ama-font-head);color:var(--text-soft)}
.wiz__mo__chu{margin:0;font-size:13.5px;line-height:1.55;color:var(--text)}
.wiz__mo__tai{display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  margin-top:11px;padding-top:11px;border-top:1px solid var(--border)}
.wiz__mo__tai > span:first-child{font:700 13px/1.4 var(--ama-font-head);color:var(--text)}
.wiz__mo__ghi{flex:1 1 100%;font-size:12.5px;color:var(--text-soft)}

/* ── Thẻ (tab) gọn lại: bấm được, lướt được, không giãn dòng ────────────── */
.wiz__rail{gap:6px}
.wiz__dot{padding:6px 10px}
.wiz__dot span{font-size:12.5px;line-height:1.3}
.wiz__dot i{width:20px;height:20px;font-size:12.5px;line-height:20px}
@media (max-width:640px){
  .wiz__mo{padding:12px 13px}
  .wiz__mo__so span{min-width:0;flex:1 1 0;padding:6px 8px}
  .wiz__mo__chu{font-size:13px}
  .wiz__dot span{max-width:9ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* ── Ô đồng ý TUỲ CHỌN: nhạt hơn ô bắt buộc, nhưng vẫn đọc rõ ───────────── */
.consent--tc{border-color:var(--border);background:var(--surface)}
.consent__cach{margin:8px 0 0;padding:10px 12px;border-radius:9px;
  background:var(--alt);border:1px solid var(--border)}
.consent__cach b{display:block;font:700 13px/1.4 var(--ama-font-head);color:var(--text)}
.consent__cach ol{margin:6px 0 0;padding-left:20px}
.consent__cach li{font-size:12.5px;line-height:1.55;color:var(--text-soft);margin-top:3px}

/* ── Ô tải logo ─────────────────────────────────────────────────────────── */
.upl__in{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.upl__nut{display:inline-block;padding:9px 16px;border-radius:9px;cursor:pointer;
  background:var(--surface);border:1px dashed var(--border);
  font:700 13.5px/1.4 var(--ama-font-head);color:var(--text)}
.upl__nut:hover{border-color:var(--ama-orange-600);border-style:solid}
.upl__in:focus-visible + .upl__nut{outline:3px solid var(--ama-orange-600);outline-offset:2px}
.upl__tt{margin-top:7px;font-size:12.5px;color:var(--text-soft)}
.upl__tt.is-ok{color:var(--ama-success-700);font-weight:600}
.upl__tt.is-loi{color:var(--ama-danger-700);font-weight:600}
.upl__xem{display:block;margin-top:9px;max-width:160px;max-height:90px;
  border-radius:8px;border:1px solid var(--border);background:#fff;object-fit:contain}

/* ── Danh sách đầu việc trên mỗi thẻ Lính — đúng bản in ─────────────────── */
/* ★ Sàn 5 dòng việc — bốn lính có 4 việc, ba lính có 5 (đúng bản in 31 việc).
 *   5 × (13px × 1.5 + 5px gap) ≈ 12.6em… nhưng tính theo em của chính nó cho
 *   khỏi lệ thuộc cỡ chữ: 5 dòng × 1.5 + 4 khe. */
.agent__viec{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;
  align-content:start;flex:1}

/* ★★★ LƯỢT 76 — ĐẶT SÀN CHIỀU CAO **ĐÚNG Ở NƠI CÁC THẺ NẰM CẠNH NHAU**.
 *
 *  Chủ dự án muốn bảy thẻ bằng nhau. Nhưng "bằng nhau" chỉ có nghĩa khi hai
 *  thẻ nằm CẠNH NHAU để mắt so được — mà dưới 560px lưới chỉ có MỘT cột, thẻ
 *  nào cũng chiếm cả bề ngang và không ai thấy nó so le với thẻ nào.
 *
 *  Đo được: ở một cột, bảy thẻ cao 377·377·377·442·387·387·426px — lệch 65px.
 *  Kéo cả bảy lên 442px để "bằng nhau" là cộng thêm **234px** vào một trang
 *  điện thoại đang dài 15.000px, để làm đều một thứ không ai nhìn thấy.
 *
 *  ★★ Nên: từ 560px trở lên (hai cột, rồi bốn cột) thì đặt sàn — tên 2 dòng,
 *     tả 3 dòng, việc 5 dòng — và bảy thẻ bằng nhau tuyệt đối. Dưới 560px để
 *     mỗi thẻ cao đúng phần ruột của nó.
 *  ★ Số dòng việc (4 hoặc 5) và chữ từng dòng lấy nguyên từ BẢN IN 31 đầu
 *    việc — không cắt, vì cắt là làm bản giấy nói khác phần mềm. */
@media (min-width:560px){
  .agent__title{min-height:2.5em}
  .agent__desc{min-height:3.2em}
  .agent__viec{min-height:calc(5 * 1.5em + 4 * 4px)}
}
.agent__viec li{position:relative;padding-left:20px;font-size:13px;line-height:1.5;
  color:var(--text)}
.agent__viec li::before{content:"✓";position:absolute;left:0;top:0;
  font-weight:800;color:var(--ama-success-700)}

/* ═══════════════════════════════════════════════════════════════════════════
 *  KHỐI LIÊN HỆ — GỌN, MỘT DÒNG MỖI MỤC.
 *
 *  ★★ Bản cũ cao 1.523 px trên điện thoại. Thủ phạm: mỗi mục là một khối hai
 *     dòng có icon riêng, lồng trong một thẻ đã có icon ở tiêu đề.
 *  ★ Nay: giá trị và nhãn nằm CÙNG một hàng, icon đúng một lần ở tiêu đề thẻ.
 * ═══════════════════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════════════
 *  KHỐI LIÊN HỆ — BỐN THẺ DỌC THÀNH BỐN DÒNG NGANG          (Lượt 77)
 *
 *  ★★★ Chủ dự án gửi ảnh chụp và viết hẳn cách bày:
 *
 *      📞 Gọi ngay:  (714) 787-7076 Đường dây chính · (616) 881-6464 Hỗ trợ gấp
 *      💬 Nhắn tin:  (616) 881-6464 SMS · Zalo · Viber · WhatsApp · Messenger
 *      … tương tự các dòng còn lại …
 *
 *  Bốn thẻ dọc cao 131·197·262·197px (đo ở Lượt 76) — bốn cột trắng cao nghều
 *  cho mười mấy dòng chữ ngắn. Một dòng ngang cho mỗi LOẠI liên hệ: nhãn bên
 *  trái, mọi lối liên lạc của loại ấy nối tiếp bên phải.
 *
 *  ★★ `align-items:baseline` chứ không `center`: nhãn và các mục có cỡ chữ
 *     khác nhau, căn giữa thì chân chữ so le và mắt đọc ra ngay là lệch.
 *  ★ Vẫn bọc dòng khi hết chỗ (`flex-wrap`) — trên điện thoại một dòng ngang
 *    thành hai, ba dòng, nhưng vẫn là MỘT nhóm, không phải một cái thẻ.
 * ═══════════════════════════════════════════════════════════════════════════ */
.lh-luoi{display:grid;gap:0;grid-template-columns:minmax(0,1fr)}
.lh-the{background:var(--surface);border:1px solid var(--border);border-radius:0;
  padding:11px var(--sp-5);display:flex;flex-wrap:wrap;align-items:baseline;
  gap:6px var(--sp-4);margin:0 0 -1px}
.lh-the:first-child{border-radius:var(--r-md) var(--r-md) 0 0}
.lh-the:last-child{border-radius:0 0 var(--r-md) var(--r-md);margin-bottom:0}
.lh-the__dau{display:flex;align-items:baseline;gap:7px;flex:none;
  min-width:11.5em;padding:0;border:0;margin:0;
  font:700 13px/1.5 var(--ama-font-head);color:var(--text);
  text-transform:uppercase;letter-spacing:.04em}
/* ★ Mỗi mục là một khối không xuống dòng giữa số và nhãn của nó — "(714)
 *   787-7076" mà rớt chữ "Đường dây chính" sang dòng khác thì đọc ra hai thứ. */
.lh-the .lh-muc{display:inline-flex;align-items:baseline;gap:6px;padding:0;
  border:0;min-height:0;white-space:nowrap}
.lh-the .lh-muc--gom{flex-wrap:wrap;white-space:normal}
.lh-the{background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:14px 15px;box-shadow:var(--sh-1)}
.lh-the__dau{display:flex;align-items:center;gap:8px;padding-bottom:9px;
  margin-bottom:4px;border-bottom:1px solid var(--border);
  font:700 13px/1.4 var(--ama-font-head);color:var(--text-soft);
  text-transform:uppercase;letter-spacing:.05em}
.lh-the__dau span{font-size:16px}
.lh-muc{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
  padding:7px 0;text-decoration:none;border-bottom:1px solid var(--border)}
.lh-muc:last-child{border-bottom:0}
.lh-muc__gt{font:600 14.5px/1.4 var(--ama-font-head);color:var(--ama-chu-lien-ket);
  overflow-wrap:anywhere}
.lh-muc__nhan{font-size:12.5px;color:var(--text-soft)}
a.lh-muc:hover .lh-muc__gt{text-decoration:underline}
a.lh-muc:focus-visible{outline:3px solid var(--ama-orange-600);outline-offset:2px;border-radius:6px}
/* ★★★ LƯỢT 77 — NÚT "ĐĂNG KÝ" DƯỚI KHỐI LIÊN HỆ BỊ KÉO DÀI 420px.
 *
 *  Chủ dự án: *"'Đăng ký' bị nhảy"*. Đo được: `display:block` + `max-width:420px`
 *  làm nút giãn hết 420px cho một chữ dài 13 ký tự — nên chữ nổi lơ lửng giữa
 *  một viên thuốc cam khổng lồ, và nó "nhảy" ra khỏi nhịp của bốn dòng liên hệ
 *  ngay trên.
 *
 *  ★ `inline-flex` + `width:auto`: nút rộng đúng bằng chữ của nó, cộng đệm.
 *    Vẫn nằm giữa nhờ khối cha căn giữa, và vẫn là nút lớn (cao 56px) — chỉ
 *    thôi giãn ngang vô cớ. */
.lh-nut{display:inline-flex;align-items:center;justify-content:center;
  width:auto;max-width:100%;margin:var(--sp-6) 0 0;text-align:center}
.lh-nut-boc{text-align:center}
@media (max-width:640px){
  .lh-luoi{gap:10px}
  .lh-the{padding:12px 13px}
  .lh-muc{padding:6px 0}
}

/* ── Nhiều ứng dụng dùng chung một số: in số một lần, tên app thành chip ──── */
.lh-muc--gom{flex-direction:column;align-items:flex-start;gap:6px}
.lh-muc__ung{display:flex;gap:6px;flex-wrap:wrap}
.lh-muc__ung a{padding:3px 10px;border-radius:999px;text-decoration:none;
  background:var(--alt);border:1px solid var(--border);
  font:600 12.5px/1.6 var(--ama-font-head);color:var(--ama-chu-lien-ket)}
.lh-muc__ung a:hover{border-color:var(--ama-orange-600)}
.lh-muc__ung a:focus-visible{outline:3px solid var(--ama-orange-600);outline-offset:2px}

/* ═══════════════════════════════════════════════════════════════════════════
 *  MỘT FORM — THU GỌN GIÃN DÒNG.
 *
 *  ★★ Chủ dự án: "còn giãn dòng quá". Một tờ giấy A4 nhét được 25 dòng; màn
 *     hình cũng nên thế. Gọn KHÔNG phải nhỏ: cỡ chữ giữ nguyên ≥13px, chỉ siết
 *     khoảng cách — chữ vẫn đọc được, mà mỗi màn hình chứa nhiều ô hơn.
 *  ★ Không dùng `opacity` lên chữ (bài học Lượt 57).
 * ═══════════════════════════════════════════════════════════════════════════ */
.wiz__panel{padding-top:var(--sp-5);padding-bottom:var(--sp-5)}
.wiz__panel + .wiz__panel{border-top:1px solid var(--border)}
.wiz__head{margin-bottom:var(--sp-4)}
.wiz__head h2{font-size:19px;line-height:1.3;margin:0}
.wiz__head p{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--text-soft)}
.field{margin-bottom:var(--sp-4)}
.field-label{margin-bottom:4px;line-height:1.35}
.field .hint{margin-top:3px;font-size:12.5px;line-height:1.45}
.wiz__mo{padding:12px 14px;margin-bottom:12px}
.wiz__mo__so{margin-bottom:7px}
.wiz__mo__chu{line-height:1.5}
.wiz__mo__tai{margin-top:9px;padding-top:9px}

/* Khối "đã lưu" — phải đập vào mắt, vì nó gỡ nỗi lo "điền dở mất hết" */
.wiz__tam{border-color:var(--ama-success);border-width:2px;
  background:var(--ama-success-100)}
.wiz__tam__chu b{font-size:14.5px;color:var(--ama-success-700)}
.wiz__tam__chu span{line-height:1.5;color:var(--text)}

@media (max-width:640px){
  .wiz__panel{padding-top:var(--sp-4);padding-bottom:var(--sp-4)}
  .wiz__head h2{font-size:17.5px}
  .field{margin-bottom:var(--sp-3)}
}


/* ═══════════════════════════════════════════════════════════════════════════
 *  KHỐI QUẢNG CÁO                                                 (Lượt 76)
 *
 *  ★ Cùng khuôn với thẻ "năm việc": năm thẻ, hai cột trên điện thoại, và SÀN
 *    chiều cao cho dòng tả để năm thẻ cao bằng nhau. Dòng tả trong `md_ads`
 *    giữ 46–62 ký tự cho đều — nhưng sàn vẫn phải có, vì lần sau ai sửa chữ ở
 *    Hậu đài thì không ai nhắc họ giữ độ dài.
 * ═══════════════════════════════════════════════════════════════════════════ */
.qc__item{text-align:center;padding:var(--sp-4) var(--sp-3);min-width:0;
  display:flex;flex-direction:column}
.qc__icon{width:48px;height:48px;margin:0 auto var(--sp-2);border-radius:50%;
  display:grid;place-items:center;font-size:22px;
  background:var(--alt);border:2px solid var(--border)}
.qc__ten{font:700 14px/1.3 var(--ama-font-head);color:var(--text)}
/* ★★★ LƯỢT 76 — CHỖ LỆCH THẬT LÀ CÁI TÊN, KHÔNG PHẢI DÒNG TẢ.
 *
 *  Mổ năm thẻ trên màn 390px (lưới 2 cột): dòng tả đã đều 4 dòng/84px ở cả
 *  năm — cái sàn làm đúng việc của nó. Nhưng:
 *
 *      "Google Ads"            tên 1 dòng (18px)  → hàng 1 cao 214px
 *      "Facebook & Instagram"  tên 2 dòng (36px)  ↗ (kéo cả hàng lên)
 *      "TikTok Ads" · "Yelp Ads" · "Retargeting"  → hàng 2,3 cao 196px
 *
 *  Một cái tên vỡ hai dòng kéo CẢ HÀNG LƯỚI cao lên, và hai hàng dưới thấp
 *  hơn 18px. Tôi đã đi rút dòng tả hai lần trước khi mổ ra và thấy dòng tả
 *  chưa bao giờ là thủ phạm — **đo cái đang lệch, đừng đoán cái hay lệch.**
 *
 *  ★ Sàn 2 dòng cho tên, CHỈ dưới 560px: trên màn rộng không tên nào vỡ, đặt
 *    sàn ở đó là chừa trống cho một dòng không ai có. */
@media (max-width:559px){ .qc__ten{min-height:2.6em} }
.qc__mo{font-size:13.5px;color:var(--text-soft);line-height:1.55;margin:6px 0 0;
  /* ★★★ SÀN 5 DÒNG TRÊN MÀN HẸP — và đây là một đánh đổi có đo, không phải
   *   một con số tuỳ tiện.
   *
   *   Lái thật trên https://amatay.com, màn 390px, lưới 2 cột: hai thẻ có dòng
   *   tả 55–56 ký tự vỡ thành 5 dòng (214px), ba thẻ còn lại 3–4 dòng (196px)
   *   → lệch 18px, và năm thẻ thành hàng răng cưa.
   *
   *   Sàn 4 dòng (6.2em) không đỡ nổi hai thẻ kia. Sàn 5 dòng đỡ được cả năm,
   *   giá phải trả là **~63px** cộng vào một trang đang dài 15.900px — tức
   *   0,4%. Chủ dự án dặn riêng "phải làm sao là bằng nhau", nên đổi 0,4%
   *   chiều dài lấy năm thẻ đều nhau là đáng.
   *   ★ Từ 560px lên thì chữ không vỡ nhiều nữa, sàn 3 dòng là đủ. */
  min-height:6.2em}
@media (min-width:560px){ .qc__mo{min-height:4.65em} }

/* ★★★ CÂU VỀ TIỀN PHẢI ĐỌC ĐƯỢC, KHÔNG PHẢI MỘT DÒNG CHỮ NHỎ.
 *  Chủ tiệm tưởng gói 300 đô đã gồm tiền quảng cáo, rồi tháng sau thấy thẻ bị
 *  trừ thêm — đó là cách mất một khách đã trả tiền. Nền cam nhạt + viền cam để
 *  mắt dừng lại, và màu chữ dùng `--text` (không phải màu nhạt) để đủ tương
 *  phản: bài học "đừng làm mờ chữ" của lượt trước. */
.qc__note{margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);
  background:var(--ama-orange-050);border:1px solid var(--ama-orange-100);
  border-radius:var(--r-md)}
.qc__bill{margin:0 0 var(--sp-3);font-size:15px;color:var(--text);line-height:1.5}
.qc__ba{list-style:none;margin:0;padding:0;display:grid;gap:7px;
  grid-template-columns:minmax(0,1fr)}
.qc__ba li{font-size:14.5px;color:var(--text);line-height:1.5}
@media (min-width:860px){ .qc__ba{grid-template-columns:repeat(3,minmax(0,1fr))} }


/* ═══════════════════════════════════════════════════════════════════════════
 *  KHỐI QUẢNG CÁO — NHÃN "ĐANG PHỤC VỤ" VÀ DẢI VÍ DỤ            (Lượt 77)
 * ═══════════════════════════════════════════════════════════════════════════ */
.qc__song{display:inline-flex;align-items:center;gap:6px}
/* ★★★ CHẤM NHẤP NHÁY — VÀ NÓ PHẢI BIẾT DỪNG.
 *  Chủ dự án muốn "chóp chóp, nháy nháy". Nhưng có người chóng mặt hoặc lên
 *  cơn vì hiệu ứng nhấp nháy, và hệ điều hành của họ ĐÃ NÓI RA điều đó qua
 *  `prefers-reduced-motion`. Bỏ qua lời ấy là bắt họ chịu đựng một thứ trang
 *  trí. Nhãn vẫn còn, vẫn đọc được — chỉ là chấm đứng yên.
 *  ★ Nhấp bằng `opacity` là đúng ở ĐÂY (khác luật cấm làm mờ CHỮ): đây là một
 *    chấm tròn trang trí có `aria-hidden`, không phải chữ ai cần đọc. */
@keyframes ama-nhap{0%,100%{opacity:1}50%{opacity:.25}}
/* ★ Cỡ theo `em` chứ không theo px: dự án CẤM cỡ chữ tuyệt đối dưới 12px, và
 *   luật ấy đúng — chỉ là cái chấm này không phải chữ ai đọc (`aria-hidden`).
 *   Dùng `em` thì nó co theo nhãn chứa nó và không phá luật. */
/* ★ LƯỢT 79 — `.85em` của một nhãn 12px ra đúng 10,2px, thủng sàn 12px của
 *   chính dự án. Cỡ tương đối thừa hưởng cái sai của cha nó; sàn thì phải
 *   là con số tuyệt đối, nếu không mỗi chỗ đặt lại ra một cỡ khác. */
.qc__cham{animation:ama-nhap 1.4s ease-in-out infinite;font-size:12px;line-height:1}
@media (prefers-reduced-motion:reduce){ .qc__cham{animation:none} }

.qc__vidu{margin-top:var(--sp-5);padding:var(--sp-4) var(--sp-5);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}
.qc__vidu-dau{font:700 13px/1.3 var(--ama-font-head);color:var(--text);
  text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-3)}
.qc__vidu-ds{list-style:none;margin:0;padding:0;display:grid;gap:8px;
  grid-template-columns:minmax(0,1fr)}
@media (min-width:860px){ .qc__vidu-ds{grid-template-columns:repeat(3,minmax(0,1fr))} }
.qc__vidu-ds li{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;
  font-size:14px;color:var(--text);line-height:1.5}
.qc__vidu-icon{font-size:15px}
.qc__vidu-noi{color:var(--text-soft);font-size:13px}
.qc__vidu-so{color:var(--ama-blue-600);font-weight:600;white-space:nowrap}
.qc__vidu-ghi{margin:var(--sp-3) 0 0;font-size:13px;color:var(--text-soft);line-height:1.5}


/* ★ Hai nút chính trong cột phải: rộng bằng nhau, xếp dọc, cách đều. */
.hero__nut{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);margin-top:var(--sp-5)}
.hero__nut .btn-block{width:100%}


/* ★ Tiêu đề khối bấm được: giữ nguyên dáng tiêu đề (không gạch chân, không đổi
 *   màu) để không ai tưởng đây là một dòng chữ lạ — nhưng có gạch chân khi rê
 *   chuột và có viền khi đi bằng bàn phím, để người ta biết nó bấm được. */
.sec-head__link{color:inherit;text-decoration:none}
.sec-head__link:hover{text-decoration:underline;text-underline-offset:4px}
.sec-head__link:focus-visible{outline:3px solid var(--ama-orange-600);outline-offset:4px;
  border-radius:6px}


/* ★★★ LƯỢT 78 — NÚT NHẤP NHÁY ĐỂ GÂY CHÚ Ý.
 *  Chủ dự án: *"hãy cho chớp chớp hay nháy nháy để gây chú ý"*.
 *  ★ Nhấp bằng VIỀN và BÓNG, không nhấp bằng `opacity` của cả nút: làm mờ nút
 *    đi rồi sáng lại khiến CHỮ bên trong cũng mờ theo, và chữ mờ thì đúng cái
 *    lỗi trợ năng đã trả giá 87 lần ở lượt trước.
 *  ★★ Và nó phải biết dừng: có người chóng mặt vì hiệu ứng nhấp nháy, và hệ
 *     điều hành của họ đã nói ra điều đó. Dừng rồi thì nút vẫn còn viền cam —
 *     vẫn nổi hơn một nút thường, chỉ là đứng yên. */
@keyframes ama-nhap-nut{
  0%,100%{box-shadow:0 0 0 0 rgba(242,106,27,0);border-color:var(--border)}
  50%    {box-shadow:0 0 0 5px rgba(242,106,27,.22);border-color:var(--ama-orange-500)}
}
.nut-nhap{animation:ama-nhap-nut 1.8s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){
  .nut-nhap{animation:none;border-color:var(--ama-orange-500)}
}


/* ═══════════════════════════════════════════════════════════════════════════
 *  Ô QUẢNG CÁO TRÊN TRANG KHÁCH                                   (Lượt 78)
 *
 *  ★★★ HAI Ô DỌC HAI BÊN CHỈ HIỆN KHI MÀN HÌNH ĐỦ RỘNG THẬT.
 *      Khung nội dung rộng 1180px. Một ô 300px mỗi bên cần 1180 + 300×2 + lề
 *      = **1840px** mới không đè lên chữ. Dưới mức ấy thì ẩn hẳn — đè quảng
 *      cáo lên nội dung là cách nhanh nhất mất cả hai.
 *  ★★ `position:sticky` chứ không `fixed`: `fixed` thì ô quảng cáo theo người
 *     ta suốt cả trang kể cả khi đã cuộn qua chân trang, và trên máy tính bảng
 *     nó che mất nút. `sticky` dừng lại trong phần của nó.
 * ═══════════════════════════════════════════════════════════════════════════ */
/* ★★★ LƯỢT 79 — BỎ `display:none` MẶC ĐỊNH.
 *   Nó là gốc của cả lỗi Lượt 79: ô quảng cáo mặc định ẨN, rồi mỗi vị trí tự
 *   bật lại trong một `@media` riêng — nên **quên bật ở một bề rộng nào đó là
 *   im lặng mất tiền**, không một con số nào đỏ. Nay mặc định là HIỆN; muốn
 *   giấu ở đâu thì phải viết ra chỗ ấy, và người sau đọc thấy ngay.
 *   Ô trống thì `qc-o.php` không in thẻ nào cả, nên không có gì để giấu. */
.qc-o{position:relative;text-align:center}
.qc-o__link{display:inline-block;line-height:0;border-radius:var(--r-md);
  overflow:hidden;border:1px solid var(--border);background:var(--surface)}
.qc-o__anh{display:block;max-width:100%;height:auto}
/* ★ Nhãn "Quảng cáo" phải ĐỌC ĐƯỢC — 12px là sàn của dự án, và luật quảng cáo
 *   ở Mỹ đòi nhãn rõ ràng chứ không phải chữ xám nhạt giấu ở góc. */
/* ★★★ LƯỢT 80 — NHÃN PHẢI CÓ NỀN CỦA RIÊNG NÓ.
 *   Đo được: hai ô dọc `position:fixed` trôi qua khối #about nền xanh đậm, và
 *   nhãn `var(--text-soft)` trên nền ấy gần như mất hẳn. Ô quảng cáo nằm đè
 *   lên nền nào là chuyện của lúc cuộn trang — không đoán trước được, nên
 *   nhãn phải tự mang nền đi theo. Đây là nhãn LUẬT QUẢNG CÁO Ở MỸ (FTC) đòi
 *   phải rõ ràng; một nhãn không đọc được thì coi như không có. */
.qc-o__nhan{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;
  background:var(--surface);border:1px solid var(--border);
  font:600 12px/1.5 var(--ama-font-head);
  color:var(--text-soft);letter-spacing:.06em;text-transform:uppercase}

/* ═══════════════════════════════════════════════════════════════════════════
 *  LƯỢT 79 — Ô QUẢNG CÁO PHẢI HIỆN TRÊN ĐIỆN THOẠI
 *
 *  ★★★ ĐO ĐƯỢC, VÀ ĐÂY LÀ CHUYỆN TIỀN BẠC CHỨ KHÔNG PHẢI CHUYỆN ĐẸP XẤU:
 *      luật cũ cho dải ngang hiện từ 720px và cột dọc từ 1840px. Trên iPhone
 *      SE 375 · iPhone 14 Pro 393 · Pixel 7 412 · Galaxy S8 360, **cả bốn ô
 *      đều `display:none`**. Ba công ty vừa trả tiền đặt quảng cáo nhận đúng
 *      **không một lượt hiện nào** từ người dùng điện thoại — mà đó là phần
 *      đông người vào trang.
 *
 *      Luật cũ không sai vì cẩu thả: 970×250 thu vừa màn 375px thì chữ còn
 *      8–15px, không đọc nổi; 300×600 thì cao gấp rưỡi màn hình. Ẩn đi là
 *      cách chữa đúng cho ẢNH SAI CỠ. Cách chữa đúng cho VẤN ĐỀ là **có ảnh
 *      đúng cỡ cho điện thoại** — 320×100 và 300×250 theo chuẩn IAB — rồi để
 *      `<picture>` chọn. Xem `app/views/partials/qc-o.php`.
 *
 *  ★★ HAI Ô DỌC KHÔNG CÒN `fixed` DƯỚI 1840px. Trên điện thoại chúng nằm
 *     TRONG DÒNG CHẢY của trang, ngay trước chân trang — một chỗ đặt quảng
 *     cáo bình thường và lịch sự. Một ô `fixed` trên màn 390px là ô đè lên
 *     nội dung; đó là thứ làm người ta bỏ trang, và cũng làm người đặt quảng
 *     cáo mang tiếng.
 * ═══════════════════════════════════════════════════════════════════════════ */
.qc-o--tren,.qc-o--duoi,.qc-o--trai,.qc-o--phai{display:block;margin:var(--sp-5) auto}
/* Ảnh không bao giờ rộng hơn ô chứa, kể cả bản 970px trên máy tính bảng. */
.qc-o__link{max-width:100%}

/* Hai ô dọc chuyển sang bám hai bên — chỉ khi màn đủ rộng để KHÔNG che nội
   dung: 1840 = 1180 khung giữa + 2×(20 chừa + 300 ô) + 20 mép. */
@media (min-width:1840px){
  .qc-o--trai,.qc-o--phai{position:fixed;top:120px;width:300px;z-index:40;margin:0}
  .qc-o--trai{left:calc(50% - 590px - 20px - 300px)}
  .qc-o--phai{right:calc(50% - 590px - 20px - 300px)}
}

/* ═══════════════════════════════════════════════════════════════════════════
 *  LƯỢT 80 — MỘT CHỖ ĐẶT CHIA THÀNH NHIỀU Ô CON
 *
 *  ★★★ VÌ SAO LÀ `grid` VỚI BIẾN `--qc-o-so` CHỨ KHÔNG PHẢI LỚP `.qc-o--5o`:
 *      số ô con do chủ dự án đặt trong Hậu đài, từ 1 tới 5, và có thể đổi bất
 *      cứ lúc nào. Dựng sẵn năm lớp CSS thì đổi sang 6 ô phải sửa CSS — tức
 *      là một con số trong cơ sở dữ liệu lại cần một lượt lập trình. Biến
 *      CSS đi thẳng từ bảng ra thẻ, không qua ai cả.
 *
 *  ★★ TRÊN ĐIỆN THOẠI KHÔNG ÉP ĐỦ 5 CỘT. Màn 360px chia 5 thì mỗi ô còn 64px
 *     — logo co lại tới mức không đọc được tên công ty, đúng cái hỏng Lượt 79
 *     đi chữa. Nên dưới 720px lưới tự xuống dòng theo `auto-fit`, mỗi ô tối
 *     thiểu 140px: màn 360 ra 2 cột, màn 393 ra 2 cột, máy tính bảng ra 4.
 *
 *  ★ Ô con KHÔNG bao giờ cao hơn ảnh của nó: `align-items:center` để logo
 *    thấp (260×110) không bị kéo giãn trong ô cao hơn.
 * ═══════════════════════════════════════════════════════════════════════════ */
/* ★ `stretch` chứ không `center`: ô lời mời (cao 82px) và ô logo (cao 122px)
 *   đứng cạnh nhau mà lệch đáy trông như một hàng bị hỏng. Kéo mọi ô bằng
 *   nhau, rồi căn giữa PHẦN RUỘT bên trong từng ô. */
/* ★ KHAI MẶC ĐỊNH CHO `--qc-o-so` NGAY TẠI ĐÂY. Thẻ `<aside>` ghi đè nó bằng
 *   thuộc tính `style` lấy từ CSDL; nhưng một biến CSS chỉ tồn tại trong
 *   `style` thì bộ dò "biến nào được dùng mà chưa khai" không thấy nó ở đâu
 *   cả — và người đọc CSS cũng không biết nó là gì. */
.qc-o__luoi{--qc-o-so:5;display:grid;gap:var(--sp-3);align-items:stretch;justify-items:stretch}
.qc-o--ngang .qc-o__luoi{grid-template-columns:repeat(var(--qc-o-so,5),minmax(0,1fr))}
.qc-o--doc   .qc-o__luoi{grid-template-columns:minmax(0,1fr)}
@media (max-width:719px){
  .qc-o--ngang .qc-o__luoi{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
}
.qc-o__o{display:flex;align-items:center;justify-content:center;width:100%;min-width:0}
.qc-o__o--trong{align-items:stretch}
.qc-o__o .qc-o__link{max-width:100%}

/* ─── Lời mời ở ô còn trống ────────────────────────────────────────────────
 * ★★★ VÙNG BẤM ≥44px VÀ CHỮ ≥12px — sàn của Lượt 79. Một lời mời đặt quảng
 *     cáo mà bấm không trúng trên điện thoại thì nó chỉ là chỗ chiếm đất.
 * ★★ Chữ phụ dùng `var(--text-soft)`, KHÔNG dùng `opacity`: Lượt 79 đã tìm
 *    ra 87 vi phạm trợ năng chỉ từ hai dòng CSS làm mờ chữ bằng opacity.
 * ★ Viền nét đứt là quy ước ai cũng đọc được: "chỗ này chưa có gì". */
.qc-o__moi{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;width:100%;min-height:72px;padding:var(--sp-3) var(--sp-2);
  border:1px dashed var(--border);border-radius:var(--r-md);
  background:var(--surface);text-decoration:none;text-align:center}
.qc-o__moi:hover,.qc-o__moi:focus-visible{border-color:var(--ama-blue-500);background:var(--alt)}
.qc-o__moi-dau{font:700 18px/1 var(--ama-font-head);color:var(--ama-blue-600)}
.qc-o__moi-chinh{font:600 13px/1.35 var(--ama-font-head);color:var(--text)}
.qc-o__moi-phu{font:500 12px/1.35 var(--ama-font-body);color:var(--text-soft)}


/* ═══════════════════════════════════════════════════════════════════════════
 *  LƯỢT 79 — HÀNG THẺ VUỐT NGANG TRÊN ĐIỆN THOẠI
 *
 *  ★★★ ĐO ĐƯỢC: trên iPhone 14 Pro, riêng khối 7 Lính cao **2.879px = 3,4
 *      màn hình vuốt**, trong tổng số 16.012px = 19 màn của cả trang. Bảy thẻ
 *      giống hệt nhau xếp chồng dọc là bắt người ta vuốt qua ba màn hình chỉ
 *      để đi hết MỘT khối — và ai vuốt tới thẻ thứ tư thì đã quên thẻ thứ nhất.
 *
 *  ★★ MỘT HÀNG VUỐT NGANG CÓ ĐIỂM NEO là cách mọi ứng dụng di động giải bài
 *     này. Thẻ rộng 86% màn → **luôn ló ra một mẩu thẻ kế bên**, và chính cái
 *     mẩu ló ấy nói cho người ta biết là còn nữa và vuốt được. Một hàng cuộn
 *     mà thẻ vừa khít màn thì trông y như chỉ có một thẻ.
 *
 *  ★ NÓ VẪN PHẢI DÙNG ĐƯỢC BẰNG BÀN PHÍM. `tabindex="0"` + `role="region"` +
 *    nhãn: người không vuốt được thì cuộn bằng phím mũi tên. Khung cuộn không
 *    có tiêu điểm là khung mà bàn phím không bao giờ tới được.
 *
 *  ★★ CHỈ ÁP DƯỚI 720px. Trên máy tính lưới nhiều cột thấy được cả 7 thẻ một
 *     lúc — ở đó cuộn ngang là bước lùi, vì chuột cuộn ngang rất tệ.
 * ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width:719px){
  .ama-grid--vuot{
    display:flex; gap:var(--sp-4);
    overflow-x:auto; overflow-y:hidden;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    /* Chừa mép bằng đệm rồi kéo ngược lề: thẻ đầu và thẻ cuối vẫn neo đúng
       mép khung chữ, không bị dính sát cạnh màn hình. */
    padding:2px var(--sp-4) var(--sp-3); margin-inline:calc(var(--sp-4) * -1);
    scroll-padding-inline:var(--sp-4);
    scrollbar-width:thin;
  }
  .ama-grid--vuot > *{
    flex:0 0 86%; scroll-snap-align:start; min-width:0;
  }
  .ama-grid--vuot:focus-visible{outline:2px solid var(--ama-blue-500);outline-offset:2px;border-radius:var(--r-md)}
  /* Gợi ý vuốt — chữ thật, không phải mũi tên trang trí, vì người dùng máy
     đọc màn hình cũng cần biết khối này cuộn ngang. */
  .vuot-mach{display:block;margin-top:var(--sp-2);text-align:center;
    font:600 12px/1.4 var(--ama-font-head);color:var(--text-soft);letter-spacing:.02em}
}
@media (min-width:720px){ .vuot-mach{display:none} }


/* ═══════════════════════════════════════════════════════════════════════════
 *  LƯỢT 79 — 366 CHỖ BẤM NHỎ HƠN ĐẦU NGÓN TAY
 *
 *  ★★★ ĐO ĐƯỢC trên 5 máy × 4 trang: **366 nút/liên kết cao dưới 44px**, gom
 *      lại thành 25 nhóm. Nặng nhất là bốn nút nhắn tin — Zalo · Viber ·
 *      WhatsApp · Messenger — **cao đúng 28px**, và đó là bốn thứ khách bấm
 *      nhiều nhất trên trang.
 *
 *  ★★ GỐC LÀ MỘT DÒNG DO CHÍNH TA VIẾT Ở LƯỢT 77: `.ott--gon .ott__link
 *     {min-height:0}` — dựng bản "gọn" để tiết kiệm diện tích trên máy tính,
 *     và nó ĐÈ LÊN luật 44px nằm ngay dòng trên. Nén cho máy tính đã bóp nghẹt
 *     ngón tay trên điện thoại, còn phép thử thì chỉ canh `.ama-nav` nên không
 *     hé một tiếng. **"Gọn" là gọn cho CON TRỎ CHUỘT, không phải cho NGÓN TAY.**
 *
 *  ★★★ KHỐI NÀY PHẢI NẰM CUỐI TỆP. Lần viết đầu tôi đặt nó ở dòng ~1500,
 *      trong khi `.ott--gon .ott__link{min-height:0}` ở dòng 1913. Cùng độ
 *      mạnh thì **luật viết sau thắng** — nên `pointer: coarse` khớp đúng,
 *      `matchMedia` trả `true`, mà `min-height` tính ra vẫn là `0px`. Đo mới
 *      thấy; đọc mã thì thấy hai luật đều "có viết đúng".
 *
 *  ★★ NGOẠI LỆ CÓ THẬT, KHÔNG PHẢI NGOẠI LỆ CHO TIỆN: WCAG 2.5.8 miễn trừ
 *     liên kết NẰM TRONG MỘT CÂU VĂN ("inline"). Nống một chữ giữa câu lên
 *     44px thì câu văn vỡ dòng và đọc còn khó hơn. Nên bốn chỗ này giữ nguyên:
 *     ghi công OpenStreetMap trong khung bản đồ · số điện thoại giữa đoạn
 *     `p.muted` · liên kết "xem quy trình" giữa `p.mt-4` · số điện thoại trong
 *     `div.call`. Chúng ĐỀU có một bản đứng riêng, đủ lớn, ở khối Liên hệ.
 * ═══════════════════════════════════════════════════════════════════════════ */
@media (pointer: coarse){

  /* ── ① Bốn nút nhắn tin: 28px. Bản "gọn" thôi bóp theo chiều DỌC; nó vẫn
         gọn theo chiều NGANG (xếp hàng, tự bọc dòng) như ý ban đầu. ───────── */
  .ott--gon .ott__link{min-height:44px;padding-block:5px}

  /* ── ② Mọi nút cỡ nhỏ: 38px. Một luật thay cho mười hai chỗ — nút Chép,
         Zalo, WhatsApp, Email ở phiếu đăng ký, ＋ Thêm dòng, ↺ Xoá chữ ký,
         ⬇ Tải biểu mẫu, 📄 Tải tờ giới thiệu, ✕ Xoá dòng. ─────────────────── */
  .btn-sm, .promo__del{min-height:44px}

  /* ── ③ Hàng liên hệ (21px) và liên kết ứng dụng nhắn tin trong đó (28px).
         ★★★ PHẢI VIẾT `.lh-the .lh-muc` CHỨ KHÔNG PHẢI `.lh-muc`: luật gọn ở
         dòng 2281 là `.lh-the .lh-muc{min-height:0}` — độ mạnh (0,2,0), nó
         thắng `.lh-muc` (0,1,0) dù ta viết sau. **Đây là lần thứ BA trong
         cùng một lượt**: `.ott--gon`, `.lh-the`, và trước đó là chính luật
         44px của Lượt 45. Cứ mỗi lần nén giao diện cho máy tính, người ta lại
         viết thêm một `min-height:0` — và ngón tay trả giá, im lặng.
         Nên Lượt này không chỉ vá ba chỗ mà dựng BỘ QUÉT NGÓN TAY thường
         trực: xem `tests/a11y/sweep-didong.mjs`. */
  .lh-the .lh-muc, .lh-muc, .lh-muc__ung a{min-height:44px}
  .lh-muc__ung a{display:inline-flex;align-items:center}

  /* ── ⑧ Liên kết phụ cạnh tiêu đề mục (33px) và nút hiện mã QR (34px). ─── */
  .sec-head__link{display:inline-flex;align-items:center;min-height:44px}
  .ott__qr-nut{min-width:44px;min-height:44px}

  /* ── ④ Bản đồ. Chấm cụm 34–42px, nút phóng/thu 38px. Trên máy cảm ứng chấm
         to hơn là ĐÚNG chứ không phải nhân nhượng: ngón tay che mất chấm nhỏ
         ngay khi chạm vào, nên người ta không biết mình bấm trúng cái nào. ── */
  .bd__cum{min-width:44px;min-height:44px}
  .bd__nut button{width:44px;height:44px}

  /* ── ⑤ Chấm bước ở phiếu đăng ký (36px) — người ta bấm để nhảy giữa 3 phần. */
  .wiz__dot{min-height:44px}

  /* ── ⑥ Nút micro trong ô nhập (42px) và nút giờ nhanh (34px). ──────────── */
  .mic{width:44px;height:44px}
  .hours-quick button{min-height:44px}

  /* ── ⑦ Logo ở đầu trang (40px) — nó là đường về trang chính. ───────────── */
  .ama-logo{min-height:44px}

  /* ── ⑨ Nút "Xem thêm" của khối rút gọn (31px) — nó là cách DUY NHẤT đọc hết
         phần "Về chúng tôi"; nút mở nội dung mà bấm trượt thì nội dung ấy coi
         như không có. ──────────────────────────────────────────────────────── */
  .gon__nut{min-height:44px;padding-block:12px}

  /* ── ⑩ Số điện thoại đứng riêng trong thẻ gọi (40px). KHÁC với số nằm giữa
         câu văn ở `p.muted` — cái đó là ngoại lệ WCAG, cái này là một nút gọi
         đứng một mình, và trên điện thoại bấm vào là quay số thật. ─────────── */
  .call a{display:inline-flex;align-items:center;min-height:44px}

  /* ── ⑪ Liên kết "Xem quy trình cấp quyền 2 phút" ở khối Cam kết (16px).
   *     Nó ĐỨNG MỘT MÌNH trong đoạn của nó — không có chữ nào bên cạnh — nên
   *     KHÔNG rơi vào ngoại lệ "liên kết giữa câu văn". Nó là một nút, chỉ
   *     tình cờ trông giống một dòng chữ. ─────────────────────────────────── */
  .pledge a{display:inline-flex;align-items:center;min-height:44px}
}

/* ═══════════════════════════════════════════════════════════════════════════
 *  KHỐI THU GỌN TRONG PHIẾU ĐĂNG KÝ                               (Lượt 82)
 *
 *  ★★★ Phiếu giấy Ver 1.6 hỏi 16 điều; phiếu web có 57 trường. Bỏ 41 trường
 *      kia là ném đi thứ Hậu đài đang dùng; để cả 57 ra màn hình thì chủ tiệm
 *      mở lên là đóng lại. Nên phần "Muốn nội dung hay hơn nữa?" cuộn lại.
 *
 *  ★★ NÚT MỞ PHẢI TRÔNG NHƯ MỘT LỜI MỜI, KHÔNG PHẢI MỘT CÁI KHOÁ. Nền nhạt,
 *     viền nét đứt, và nói luôn "bỏ trống cũng nộp được" — người ta mở ra vì
 *     tò mò chứ không vì sợ thiếu.
 *
 *  ★ Vùng bấm ≥44px và chữ ≥13px — sàn Lượt 79. `<summary>` mặc định cao
 *    khoảng 20px, tức là bấm trượt trên điện thoại.
 * ═══════════════════════════════════════════════════════════════════════════ */
.wiz-gon{border:1px dashed var(--border);border-radius:var(--r-lg);background:var(--alt)}
.wiz-gon[open]{background:var(--surface);border-style:solid}
.wiz-gon__nut{display:flex;flex-direction:column;gap:2px;min-height:56px;
  padding:var(--sp-3) var(--sp-4);cursor:pointer;list-style:none}
.wiz-gon__nut::-webkit-details-marker{display:none}
/* ★ Mũi tên tự vẽ: `list-style` mặc định mỗi trình duyệt một kiểu, và ở chế độ
 *   Tối thì cái mặc định của Safari gần như tàng hình. */
.wiz-gon__nut::after{content:'▾';position:absolute;right:var(--sp-4);
  font:700 16px/1 var(--ama-font-head);color:var(--ama-blue-600)}
.wiz-gon{position:relative}
.wiz-gon[open] .wiz-gon__nut::after{content:'▴'}
.wiz-gon__nut:hover,.wiz-gon__nut:focus-visible{background:var(--ama-blue-050);
  border-radius:var(--r-lg)}
.wiz-gon__chu{font:600 15px/1.4 var(--ama-font-head);color:var(--text);padding-right:28px}
.wiz-gon__phu{font:500 13px/1.4 var(--ama-font-body);color:var(--text-soft)}
.wiz-gon > .wiz-grid{padding:0 var(--sp-4) var(--sp-4)}


/* ═══════════════════════════════════════════════════════════════════════════
 *  TRANG NỘP HỒ SƠ BẰNG TAY                                       (Lượt 83)
 *
 *  ★★★ CỠ CHỮ VÀ CỠ Ô BẤM Ở ĐÂY TO HƠN CHỖ KHÁC, VÀ ĐÓ LÀ CỐ Ý. Người đọc
 *      trang này là người vừa nói "tôi không rành máy tính" — phần lớn lớn
 *      tuổi, phần lớn đang cầm điện thoại, nhiều người đang đeo kính. Một ô
 *      bấm 36px và chữ 13px thì đúng chuẩn, nhưng đúng chuẩn mà họ bấm trượt
 *      ba lần rồi bỏ thì vẫn là thất bại.
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ── Ba cách gửi, nói ngay ở đầu ─────────────────────────────────────────── */
.nop-cach{display:grid;gap:var(--sp-4);grid-template-columns:repeat(3,1fr);
  margin:var(--sp-6) 0}
.nop-cach__o{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);padding:var(--sp-5)}
.nop-cach__ico{font-size:30px;line-height:1;margin-bottom:10px}
.nop-cach__o b{display:block;font:600 16px/1.35 var(--ama-font-head);
  color:var(--text);margin-bottom:6px}
.nop-cach__o p{margin:0;font-size:14.5px;line-height:1.55;color:var(--text-soft)}

/* ── Hai khung việc ──────────────────────────────────────────────────────── */
.nop-khung{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);padding:var(--sp-6);margin-bottom:var(--sp-6)}
.nop-khung__de{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 var(--sp-3);font:700 20px/1.3 var(--ama-font-head);color:var(--text)}
.nop-form__hang{display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:var(--sp-4)}

/* ★ Dấu sao bắt buộc: dùng màu CÓ ĐỦ ĐỘ TƯƠNG PHẢN, không phải `red` nhạt —
 *   một dấu sao không ai nhìn thấy là một ô bắt buộc không ai biết. */
.nop-sao{color:var(--ama-cam-chu);font-weight:700}

/* ── Phép tính hai số ────────────────────────────────────────────────────── */
.nop-ma{background:var(--alt);border:1px dashed var(--border);
  border-radius:var(--r-md);padding:var(--sp-4);margin:var(--sp-4) 0}
.nop-ma__hang{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
/* ★★ Phép tính phải TO. Nó không phải một ảnh captcha méo chữ cố làm cho khó
 *    đọc — nó chỉ cần chặn máy móc, nên với người thì càng dễ đọc càng tốt. */
.nop-ma__phep{font:700 26px/1 var(--ama-font-head);color:var(--text);
  letter-spacing:.04em;font-variant-numeric:tabular-nums}
.nop-ma__o{max-width:88px;font-size:22px;font-weight:700;text-align:center;
  padding:10px 8px}

/* ── Ô đếm tệp ───────────────────────────────────────────────────────────── */
.nop-dem{font-weight:600;min-height:1.4em}
.nop-dem--ok{color:var(--ama-success)}
/* ★ Dùng màu chữ, KHÔNG dùng `opacity` — chữ mờ là lỗi trợ năng đã trả giá
 *   87 lần ở Lượt 77. */
.nop-dem--xau{color:var(--ama-do-chu)}

/* ── Trên điện thoại ─────────────────────────────────────────────────────── */
@media (max-width:860px){
  .nop-cach{grid-template-columns:1fr;gap:var(--sp-3)}
  .nop-cach__o{padding:var(--sp-4)}
  .nop-khung{padding:var(--sp-4)}
  .nop-khung__de{font-size:18px}
  /* ★★★ Ô CHỌN TỆP PHẢI CAO HẲN TRÊN ĐIỆN THOẠI. Đây là ô quan trọng nhất
   *     trang này, và trên điện thoại nó mở ra thư viện ảnh — tức là chỗ khách
   *     lấy tấm ảnh họ vừa chụp tờ giấy. Bấm trượt ô này là mất cả hồ sơ. */
  .nop-khung input[type=file]{min-height:56px;padding:14px;font-size:16px}
  .nop-ma__phep{font-size:24px}
}
