/* ═══════════════════════════════════════════════════════════════════════════
   sv-base.css — LỚP NỀN, ÁP ĐƯỢC CHO MỌI TRANG
   Chỉ chạm 3 thứ ⛔ KHÔNG chiếm chỗ: họ chữ · vòng tiêu điểm · chữ số đều cột.
   ⇒ Rủi ro vỡ bố cục gần bằng 0. Áp lượt 1.
   Nạp CUỐI <head>, sau <style> của trang.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  /* Cây web ⛔ KHÔNG đóng gói tệp font nào (đã đếm: 0 .woff/.ttf/.otf) và máy
     chủ ⛔ không ra Internet ổn định ⇒ chỉ dùng font CÓ SẴN trong máy.
     Đủ dấu tiếng Việt trên Windows · macOS · Android. */
  --sv-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Roboto,
             'Helvetica Neue', Arial, sans-serif;
  --sv-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Màu vòng tiêu điểm: mượn màu nhấn của trang, có mặc định vàng thương hiệu.
     Trang nào màu nhấn khác thì khai đè --sv-focus (xem HƯỚNG DẪN ÁP). */
  --sv-focus: #C9A227;
}

/* Nút và ô nhập ⛔ KHÔNG tự thừa kế font — không nói rõ thì trình duyệt vẽ
   chúng bằng font mặc định của HỆ ĐIỀU HÀNH, khác hẳn phần chữ còn lại. */
body, button, input, select, textarea, .act, .ghost, .danger{
  font-family: var(--sv-font);
}
code, kbd, pre, samp, .mono, .ma, .khoa-hien{ font-family: var(--sv-font-mono); }

/* Cột số ⛔ không nhảy ngang khi giá trị đổi. */
.kpi b, .num, .mono, .stat b, td.num, .ma{ font-variant-numeric: tabular-nums; }

/* ── VÒNG TIÊU ĐIỂM BÀN PHÍM ──────────────────────────────────────────────
   `outline` vẽ NGOÀI hộp ⇒ ⛔ không đổi cao/rộng của bất kỳ phần tử nào.
   Cùng công thức với hop.css (2px, offset 2px) để hai nửa web giống nhau. */
:focus-visible{ outline: 2px solid var(--sv-focus); outline-offset: 2px; }
/* 14 tệp tự tắt viền ô nhập bằng outline:none; 12 tệp bù lại bằng đổi màu viền,
   riêng my.html và pricing_admin.html ⛔ KHÔNG bù gì. Trả lại bằng vòng này. */
input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline: 2px solid var(--sv-focus); outline-offset: 1px;
}

/* ── THUỘC TÍNH `hidden` PHẢI THẮNG MỌI LUẬT `display` ────────────────────
   ⛔ BỌ CÓ THẬT, bắt được bằng mắt 13/09: sv-nut.css đặt `display:inline-flex`
     cho .act/.ghost/... Luật ấy nặng 0,1,0 — BẰNG luật `[hidden]{display:none}`
     của trình duyệt, mà bảng của tác giả luôn thắng bảng của trình duyệt
     ⇒ nút mang `hidden` BẬT SÁNG TRỞ LẠI. Đo trên my.html: 2 nút lộ
     (`Đăng xuất`, `Hủy yêu cầu`) — cả hai đáng lẽ phải ẩn.
   ⭐ Đây đúng là cách hop.css:194 đã chữa từ trước; chép về cho nửa còn lại.
   ⛔ An toàn: đã quét cả cây, ⛔ không trang nào CỐ Ý hiện phần tử [hidden]
     (8/8 lượt đều là khẳng định lại display:none). */
[hidden]{ display: none !important; }
