{# ══ Ô NHẬP MÃ PIN DÙNG CHUNG TOÀN APP ══════════════════════════════════════ Trước 28/07/2026 app có 3 kiểu nhập PIN khác nhau: · askPin() — modal ô mật khẩu (16 trang) · showPinConfirm()— modal RIÊNG của pos.html, TRÙNG id với modal của base → askPin trên trang Bán hàng mở nhầm modal (lỗi thật, đã đo) · prompt() — hộp trần của trình duyệt, HIỆN RÕ SỐ PIN (5 trang in) Nay gộp về MỘT kiểu: bàn phím số ngay trong app. Vì sao bàn phím trong app tiện hơn ô nhập thường: · iPhone KHÔNG bật bàn phím hệ thống (ô ẩn) → không che màn hình, không giật · nút to (58px) dễ bấm bằng ngón cái, tay đeo găng vẫn trúng · gõ đủ số là TỰ xác nhận, không phải với tay bấm nút · sai PIN thì rung + xoá, gõ lại ngay tại chỗ (không phải mở lại từ đầu) · máy tính vẫn gõ bằng bàn phím vật lý được (số, Backspace, Enter, Esc) CÁCH DÙNG askPin('Xóa hóa đơn HD123', pin => {...}) ← kiểu cũ, vẫn chạy askPin({title:'🗑️ Xóa hóa đơn', message:'Không hoàn tác', okLabel:'Xóa'}, async pin => {...}) ← kiểu đầy đủ pinLoi('❌ Sai mã PIN') → báo lỗi, GIỮ modal để gõ lại dongPin() → đóng #}