/* NBKH v2 — giao diện phần thân hai app */

html,body{max-width:100%;overflow-x:hidden;overflow-x:clip;overscroll-behavior-x:none}
header{width:100%;min-width:0;background:var(--chinh);color:#fff;
       padding:calc(13px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) 13px calc(16px + env(safe-area-inset-left));
       position:sticky;top:0;z-index:50;box-shadow:0 2px 8px rgba(0,0,0,.14);
       isolation:isolate;background-clip:border-box;transition:transform .24s cubic-bezier(.22,1,.36,1);will-change:transform}
header.anKhiCuon{transform:translateY(calc(-100% - 2px))}
header .d1{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
header .d1{align-items:center}
header .thuongHieu{display:inline-flex;align-items:center;gap:9px;color:#fff;text-decoration:none;
                   min-width:0;font-size:17px;font-weight:850;line-height:1.1;letter-spacing:.1px}
header .thuongHieu img{width:48px;height:48px;object-fit:contain;border-radius:0;background:transparent;padding:0;box-shadow:none;flex:0 0 auto}
header h1{margin:0;font-size:16px;font-weight:700;letter-spacing:-.2px}
header .nguoi{background:rgba(255,255,255,.18);border-radius:20px;padding:4px 11px;
              font-size:12px;font-weight:700;display:inline-flex;align-items:center;
              gap:5px;margin-top:5px}
header .nutDau{display:flex;gap:7px;align-items:center;flex:0 0 auto}
/* Nút trên thanh đầu trang: nền trắng đục + viền, không để chìm vào màu nền */
header .nutTron{background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.6);
                color:var(--chinh);width:40px;height:40px;border-radius:11px;
                box-shadow:0 1px 4px rgba(0,0,0,.16)}
header .nutTron:active{background:#fff}
header .nutTron .ic{stroke:var(--chinh);stroke-width:2.2}
header .nutQuay{background:rgba(255,255,255,.92);color:var(--chinh);border:1px solid rgba(255,255,255,.6);
                box-shadow:0 1px 4px rgba(0,0,0,.16);font-weight:800}
header .nutQuay .ic{stroke:var(--chinh);stroke-width:2.2}
header .nguoi{background:rgba(255,255,255,.24)}

.nutTron{background:rgba(255,255,255,.18);border:none;color:#fff;width:38px;height:38px;
         border-radius:10px;display:flex;align-items:center;justify-content:center;
         font-family:inherit;padding:0}
.nutTron:active{background:rgba(255,255,255,.3)}
.nutTron .ic{width:20px;height:20px}

main{width:100%;min-width:0;padding:14px calc(16px + env(safe-area-inset-right)) 30px calc(16px + env(safe-area-inset-left));max-width:620px;margin:0 auto}

/* ---------- Tab bar điều hướng kiểu ứng dụng ---------- */
body.nbkh-khoa-nen{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}
body.coTabApp main{padding-bottom:calc(104px + env(safe-area-inset-bottom))}
.tabApp{position:fixed;z-index:105;left:50%;right:auto;transform:translateX(-50%);
        bottom:max(8px,env(safe-area-inset-bottom));
        width:calc(100% - env(safe-area-inset-left) - env(safe-area-inset-right) - 20px);
        max-width:600px;height:68px;margin:0;padding:0;
        display:flex;align-items:center;gap:10px;background:transparent;pointer-events:none}
.tabApp-cum{height:64px;min-width:0;flex:1;padding:7px 8px;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);align-items:center;gap:4px;
        border:1px solid rgba(226,232,240,.95);border-radius:23px;background:rgba(255,255,255,.94);
        box-shadow:0 12px 34px rgba(15,23,42,.2);pointer-events:auto}
/* v3.0.222: bỏ backdrop-filter blur(18px) của thanh tab — nền đã đục 94% nên vệt mờ gần như không thấy, nhưng trình duyệt phải
   làm mờ lại phần nội dung phía sau ở mọi khung hình khi cuộn (tốn nhất trên Android yếu). */
.tabApp-muc,.tabApp-them{appearance:none;border:0;background:transparent;color:#64748b;
        min-width:0;height:50px;padding:0;border-radius:16px;text-decoration:none;
        display:flex;flex-direction:row;align-items:center;justify-content:center;gap:0;
        font:750 10px/1.1 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
.tabApp-muc svg,.tabApp-them svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;
        stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.tabApp-muc span,.tabApp-them span{display:block;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tabApp-muc>span:last-child{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.tabApp-muc.dang{color:var(--chinh);background:var(--chinh-nhat)}
.tabApp-muc .tabIcon,.tabApp-them .tabIcon{display:flex;align-items:center;justify-content:center}
.tabApp-muc .tabIcon{position:relative}.tabApp-muc .chamTB{position:absolute;right:-4px;top:-2px;width:8px;height:8px;border-radius:50%;background:#dc2626;border:1.5px solid #fff}
.tabApp-muc:active{background:#f1f5f9}
.tabApp-them{flex:0 0 64px;width:64px;height:64px;padding:0;align-self:center;gap:0;
        border-radius:50%;background:var(--chinh);color:#fff;border:5px solid rgba(255,255,255,.92);
        pointer-events:auto;
        box-shadow:0 7px 18px color-mix(in srgb,var(--chinh) 36%,transparent)}
.tabApp-them svg{width:27px;height:27px;stroke-width:2.5}
.tabApp-them>span:last-child{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.tabApp-them:active{transform:scale(.94)}
.tabApp-dem{display:block;min-width:0}
/* Modal luôn ưu tiên toàn bộ vùng đáy: ẩn cả cụm điều hướng lẫn CTA giữa.
   nbkh-khoa-nen được shell tự bật/tắt theo mọi lớp popup dùng chung. */
.tabApp.neoVV{top:var(--tab-top);bottom:auto}
/* v3.0.254 (chủ dự án 09/11/2026): Thu ngân — nút tròn thanh dưới là Tìm kiếm; chạm vào thì cả thanh thành ô gõ, neo trên
   bàn phím (vo.js neoThanhTabTheoVungNhin). + Thêm lượt lên đầu trang (nút đậm). font 17px để iOS không phóng to khi gõ. */
.tabApp-tim{flex:1;min-width:0;height:60px;padding:0 6px 0 16px;display:flex;align-items:center;gap:8px;pointer-events:auto;
        border-radius:30px;background:#fff;border:1.5px solid var(--chinh);box-shadow:0 12px 34px rgba(15,23,42,.22)}
.tabApp-tim[hidden]{display:none}
.tabApp-timIc svg{width:20px;height:20px;fill:none;stroke:#64748b;stroke-width:2.2;stroke-linecap:round;display:block}
.tabApp-tim input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;padding:0;
        font:600 17px/1.2 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:#0f172a;-webkit-appearance:none;appearance:none}
.tabApp-tim input#oTim,.tabApp-tim input#oTim:focus,.tabApp-tim input#oTim:focus-visible{border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;padding:0!important;border-radius:0!important}
.tabApp-tim input::-webkit-search-cancel-button{display:none}
.tabApp-timDong{flex:0 0 46px;width:46px;height:46px;border:0;border-radius:50%;background:#f1f5f9;color:#0f172a;
        display:grid;place-items:center;padding:0}
.tabApp-timDong svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.tabApp.dangTim .tabApp-cum,.tabApp.dangTim .tabApp-them{display:none}
header .nutTron.nutThemLuotDau{background:var(--chinh);border-color:var(--chinh)}
header .nutTron.nutThemLuotDau .ic{stroke:#fff;stroke-width:2.6}
.oTimNgay{gap:10px}.oTimNgay .nhanTimNgay{flex:1;font-size:14px;font-weight:700;color:var(--mo)}
/* v3.0.254: Cá nhân nằm ở logo header (dấu người nhỏ góc logo); nút thứ ba thanh dưới mở popup xem nhanh Booking
   (xem-nhanh-booking.js, dùng lại khung .popTB của popup Thông báo). */
header .logoCaNhan-anh{position:relative;display:inline-block;flex:0 0 auto;line-height:0}
header .logoCaNhan-dau{position:absolute;right:-3px;bottom:-3px;width:20px;height:20px;border-radius:50%;background:#111;
        border:2px solid #fff;display:grid;place-items:center}
header .logoCaNhan-dau svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round}
.popBK-dong{position:relative}
.popBK-dong.popTB-tin .popTB-dong1 b{font-weight:700;color:var(--chu)}
.popBK-dong .popTB-dong1 time{order:-1;font-weight:800;color:var(--chu)}
.popBK-tt{flex:0 0 auto;font-style:normal;font-size:12px;font-weight:700;padding:2px 8px;border-radius:10px;background:#fef3c7;color:#92400e}
.popBK-dong.daDen .popBK-tt{background:#dcfce7;color:#166534}
.popBK-dong.khongDen .popBK-tt{background:#f1f5f9;color:#64748b}
.popBK-dong.khongDen .popTB-dong1 b{text-decoration:line-through;color:var(--mo)}
body.coThanhTacVu .tabApp,body.nbkh-khoa-nen .tabApp{display:none}
body.coThanhTacVu main{padding-bottom:30px}
@media (min-width:760px){
  .tabApp{max-width:560px}
}
@media print{
  .tabApp{display:none!important}body.coTabApp main{padding-bottom:30px}
}

/* ---------- Trang Thông báo / Cá nhân ---------- */
.trangDocLap{padding-top:18px}.dauTrangCon{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.dauTrangCon h1{font-size:24px;margin:0 0 3px}.dauTrangCon p{margin:0;color:var(--mo);font-size:13px}
.nutIconChuan{appearance:none;width:44px;height:44px;padding:0;border:1px solid #dbe3ee;border-radius:13px;background:#fff;color:var(--chinh);display:inline-flex;align-items:center;justify-content:center}
.nutIconChuan svg,.hangTrang svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dongThongBao{display:grid;gap:8px}.tinDong{width:100%;border:1px solid var(--vien);border-radius:15px;padding:14px 15px;text-align:left;background:#fff;color:var(--chu);font:inherit}
.tinDong.chuaDoc{background:#fff;border-color:#99f6e4}.tinDong.daDoc{opacity:.58;background:#fff}
.tinDong[data-duong]:not([data-duong=""]){cursor:pointer}
.tinDong[data-duong]:not([data-duong=""])::after{content:'›';float:right;margin-top:7px;color:#94a3b8;font-size:22px;line-height:1}
.dauTin{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:9px}.dauTin i{width:8px;height:8px;border-radius:50%;background:var(--chinh)}.daDoc .dauTin i{background:#cbd5e1}
.dauTin b{font-size:14px}.dauTin time{font-size:10px;color:var(--mo)}.noiDungTin{display:block;padding:6px 0 0 17px;color:#475569;font-size:13px;line-height:1.45}
.hoSoTrang,.nhomTrang{background:#fff;border:1px solid var(--vien);border-radius:17px;padding:18px;margin-bottom:14px}.hoSoTrang{display:flex;align-items:center;gap:14px}
.avtTrang{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--chinh);color:#fff;font-weight:850;font-size:24px}.hoSoTrang h1{margin:0 0 5px;font-size:21px}.hoSoTrang span{color:var(--mo);font-size:13px}
.nhomTrang h2{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.8px;color:var(--mo)}.loiTatApp{display:grid}
.hangTrang{min-height:56px;width:100%;border:0;border-bottom:1px solid #eef2f7;background:#fff;color:var(--chu);display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 2px;text-decoration:none;font:inherit}.hangTrang:last-child{border-bottom:0}.hangTrang.dang{color:var(--chinh);font-weight:800}.hangTrang.nguyHiem{color:#dc2626;justify-content:flex-start}.hangTrang.nguyHiem .nutIconChuan{color:#dc2626;background:#fef2f2}
.hangTrang>b{margin-right:auto;text-align:left}.hangTrang>em{font-style:normal;font-size:11px;color:var(--mo);white-space:nowrap}.nhomTrang.an{display:none}

.the{min-width:0;max-width:100%;background:var(--the);border:1px solid var(--vien);border-radius:14px;
     padding:16px;margin-bottom:12px}
.the h2{margin:0 0 10px;font-size:12.5px;text-transform:uppercase;letter-spacing:.7px;
        color:var(--chinh);font-weight:800}
.the p{margin:0;font-size:14px;color:var(--mo);line-height:1.6}

.kiemTra{margin-top:14px;padding:12px 14px;border-radius:11px;background:#f8fafc;
         border:1px solid var(--vien);font-size:13px;line-height:1.6;color:var(--mo);
         word-break:break-word}
.kiemTra .tot{color:#047857}
.kiemTra .xau{color:#b91c1c}

.the h2{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nutPhu{background:#f1f5f9;border:1px solid var(--vien);color:var(--chinh);font-size:11.5px;
        font-weight:800;padding:7px 12px;border-radius:8px;letter-spacing:0;text-transform:none;
        display:inline-flex;align-items:center;gap:6px;font-family:inherit}
.nutVeDanhSach{margin:0 0 10px;padding:10px 13px;border:1px solid var(--vien);border-radius:11px;
  background:#fff;color:var(--chinh);font:800 13px inherit;display:inline-flex;align-items:center;gap:6px}

/* ---------- Thống kê ---------- */
/* Năm ô vừa đúng một hàng trên điện thoại. Chữ nhỏ hơn bản bốn ô trước
   đây — thà nhỏ mà đọc được cả năm nhãn, còn hơn to mà "Chờ chốt" bị
   cắt thành "Chờ ch…" hoặc phải cuộn ngang mới thấy ô cuối. */
.tomtat{display:flex;gap:5px;margin-bottom:12px}
.tomtat .o{flex:1 1 0;min-width:0;background:var(--the);border:1px solid var(--vien);
           border-radius:11px;padding:8px 2px;text-align:center;
           font-family:inherit;-webkit-tap-highlight-color:transparent}
.tomtat .o b{display:block;font-size:16px;line-height:1.25;color:var(--chinh);
             font-variant-numeric:tabular-nums}
.tomtat .o span{font-size:9.5px;line-height:1.3;color:var(--mo);display:block;
                white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
                letter-spacing:-.1px}
.tomtat .o.chua b{color:var(--cam)}
.tomtat .o.chi b{color:var(--luc)}
.tomtat .o.cho{border-color:#f59e0b;background:#fffbeb}.tomtat .o.cho b{color:#d97706}
.tomtat .o.chua{border-color:#fb923c;background:#fff7ed}
.tomtat .o.chi{border-color:#10b981;background:#ecfdf5}
.tomtat .o.huy{border-color:#ef4444;background:#fef2f2}.tomtat .o.huy b{color:#dc2626}

/* Một ngôn ngữ hình ảnh cho các thao tác phụ trên cả ba app. */
.nutPhu,.btnTim,.bk-nut-icon,.bk-doi-che-do button{
  min-width:42px;min-height:42px;padding:0 11px;border:1px solid #dbe3ee!important;
  border-radius:13px!important;background:#fff!important;color:var(--chinh)!important;
  box-shadow:none!important;display:inline-flex;align-items:center;justify-content:center;gap:0
}
.nutPhu .ic,.btnTim .ic,.bk-nut-icon .ic,.bk-doi-che-do .ic{width:21px;height:21px;stroke-width:1.8}

/* Ô đếm kiêm bộ lọc: ô đang chọn tô nền đậm để phân biệt rõ với bốn ô
   còn lại. Chỉ đổi màu viền thì trên nắng ngoài bến gần như không thấy. */
.tomtat .o.on{background:var(--chinh);border-color:var(--chinh)}
.tomtat .o.on b, .tomtat .o.on span{color:#fff}
.tomtat .o:active{transform:scale(.96)}

/* Máy nhỏ như iPhone SE: bóp thêm một nấc, vẫn giữ đủ năm ô trên hàng */
@media (max-width:360px){
  .tomtat{gap:4px}
  .tomtat .o{padding:7px 1px}
  .tomtat .o b{font-size:15px}
  .tomtat .o span{font-size:8.5px}
}

/* ---------- Khối chụp ảnh ---------- */
.oChup{border:2px dashed #cbd5e1;border-radius:13px;padding:30px 12px;text-align:center;
       background:#f8fafc;display:flex;flex-direction:column;align-items:center;gap:9px;
       font-size:13.5px;color:#94a3b8;font-weight:600}
.oChup .ic{width:30px;height:30px;stroke:#cbd5e1}
.oChup.coAnh{padding:0;border-style:solid;overflow:hidden;background:#e2e8f0}
.oChup img{width:100%;max-height:230px;object-fit:cover;display:block}
.btnChup{width:100%;margin-top:11px;padding:16px;border:none;border-radius:12px;
         background:var(--chinh);color:#fff;font-size:16px;font-weight:800;font-family:inherit;
         display:flex;align-items:center;justify-content:center;gap:9px}
.btnChup:active{opacity:.88}
.btnChup .ic{width:21px;height:21px}

/* Băng nhận dạng biển số */
.bangAI{margin-top:11px;background:#fffbeb;border:1px solid #fcd34d;border-radius:11px;
        padding:11px 13px;display:flex;align-items:center;gap:10px;font-size:13.5px}
.bangAI.an{display:none}
.bangAI .tt{flex:1;font-weight:700;color:#92400e;line-height:1.4}
.bangAI .tt small{display:block;font-weight:600;font-size:11.5px;color:#b45309;margin-top:2px}
.bangAI .tt .taiXeAI{margin-top:4px;font-size:12.5px;color:#78350f}
.bangAI .tt .taiXeAI b{font-weight:850}
.bangAI button{background:#92400e;color:#fff;border:none;border-radius:9px;padding:9px 14px;
               font-size:13px;font-weight:800;font-family:inherit;flex:0 0 auto}
.bangAI.loi{background:#fef2f2;border-color:#fecaca}
.bangAI.loi .tt{color:#b91c1c} .bangAI.loi .tt small{color:#dc2626}
.bangAI.dangDoc{background:#eff6ff;border-color:#bfdbfe}
.bangAI.dangDoc .tt{color:#1d4ed8}
.bangAI .cham{width:9px;height:9px;border-radius:50%;background:#1d4ed8;display:inline-block;
              margin-right:7px;animation:nhap 1s ease-in-out infinite}
@keyframes nhap{0%,100%{opacity:.25}50%{opacity:1}}

/* Ô biển số do AI điền, chưa ai xác nhận */
input.aiChua{border-style:dashed;border-color:#f59e0b;background:#fffbeb}

/* ---------- Bộ đếm khách ---------- */
.dem{display:flex;gap:9px;align-items:center}
.dem button{width:56px;height:52px;border:1.5px solid var(--vien);background:#f8fafc;
            border-radius:12px;font-size:24px;font-weight:800;color:var(--chinh);font-family:inherit}
.dem button:active{background:#e2e8f0}
.dem input{flex:1;text-align:center;font-weight:800;font-size:20px;min-width:0}
.khachTach{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.khachTach>div>span{display:block;font-size:11.5px;font-weight:800;color:var(--mo);margin-bottom:6px}
.khachTach .dem{gap:5px}
.khachTach .dem button{width:38px;height:46px;border-radius:10px}
.khachTach .dem input{height:46px;padding:8px 3px;font-size:18px}
.tongKhach{margin-top:10px;padding:10px 12px;border-radius:10px;background:#ecfdf5;
           color:#065f46;font-size:13px;display:flex;justify-content:space-between;align-items:center}
.tongKhach b{font-size:16px;font-variant-numeric:tabular-nums}
/* Tổng khách phải đọc ngang cỡ hai ô đếm bên trên, không nhỏ hơn. */
.tongKhach output{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
@media(max-width:360px){.tongKhach output{font-size:17px}}
@media(max-width:360px){
  .khachTach{gap:7px}.khachTach .dem button{width:34px}.khachTach .dem input{font-size:17px}
}
.goiy{font-size:11.5px;color:var(--mo);margin-top:6px;line-height:1.5}
/* Xe đã có trong sổ — đổi màu để nhân viên biết tên phía dưới là hệ thống
   tự điền, không phải mình vừa gõ, và biết là không cần gõ lại */
.goiy.quen{color:var(--chinh);font-weight:600}
.goiy.quen b{font-weight:800}

/* ---------- Hai nút trạng thái ----------
   Lên bè làm hàng chục lần mỗi ngày nên chiếm 70% để bấm không trượt.
   Xoá thông tin hiếm dùng, để nhỏ và xám cho khỏi bấm nhầm. */
.nutTT{display:flex;gap:10px}
.nutTT button{min-height:82px;padding:12px 8px;border:none;border-radius:13px;color:#fff;
              font-size:15.5px;font-weight:800;font-family:inherit;line-height:1.2;
              display:flex;align-items:center;justify-content:center;gap:8px}
.nutTT #btnLenBe{flex:0 0 70%;background:var(--luc)}
.nutTT #btnXoaTT{flex:1 1 0;background:#64748b;flex-direction:column;gap:4px;font-size:13px}
.nutTT button:disabled{background:#94a3b8}

/* ---------- Thẻ lượt ---------- */
  .ds{padding:11px 14px 20px}
  /* Viền đổi màu theo trạng thái để khoanh vùng từng lượt.
     Dùng đường viền thay vì mảng màu — mảng màu lớn kéo mắt đi,
     đường viền chỉ phân định ranh giới. */
  .luot{background:#fff;border:1.5px solid var(--ttMau,#e2e8f0);border-radius:14px;
        margin-bottom:11px;overflow:hidden;box-shadow:0 1px 3px rgba(15,23,42,.05)}
  .luot.tt-cho_chot{--ttMau:#fbd24e}
  .luot.tt-chua_chi{--ttMau:#fb923c}
  .luot.tt-da_chi{--ttMau:#34d399}
  .luot.tt-huy{--ttMau:#f87171}
  .luot .dau{padding:12px 13px 10px;cursor:pointer}
  .luot .d1{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
  .luot .bien{font-weight:800;font-size:19px;letter-spacing:.5px}
  .luot .ten{font-size:13.5px;color:var(--mo);margin-top:2px}
  /* Cột phải xếp dọc: trạng thái → giờ → hoa hồng */
  .luot .d1{align-items:flex-start}
  .luot .phai{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:0 1 auto;min-width:min-content}
  .luot .gio{font-size:12.5px;color:var(--mo);display:inline-flex;align-items:center;gap:4px;
             font-variant-numeric:tabular-nums}
  .luot .hh{font-weight:800;color:var(--chinh);font-size:16px}
  /* v3.0.221 (chủ dự án 05/11/2026 "Sắp bố cục dạng lưới"): hàng Bàn và hàng cano chung một lưới, các cột căn trái — số bàn
     thẳng mã đoàn, số khách thẳng số vé, bill thẳng tiền vé. .meta/.metaCano là display:contents để ô con vào thẳng lưới. */
  .luot .luoiMeta{display:grid;grid-template-columns:minmax(46px,max-content) minmax(29px,max-content) minmax(90px,max-content);column-gap:7px;width:max-content;max-width:100%;row-gap:5px;
    align-items:center;justify-items:start;margin-top:6px;font-size:12.5px;color:var(--mo);white-space:nowrap}
  .luot .luoiMeta.khongTien{grid-template-columns:minmax(46px,max-content) minmax(29px,max-content)}
  .luot .luoiMeta .meta,.luot .luoiMeta .metaCano{display:contents}
  .luot .luoiMeta .vachLuoi{grid-column:1/-1;justify-self:stretch;border-top:1px solid var(--vien)}
  .luot .luoiMeta .o3{font-variant-numeric:tabular-nums}
.luot .luoiMeta .trong svg{opacity:.3}
  .luot .meta{font-size:12.5px;color:var(--mo);margin-top:6px;white-space:nowrap}
  /* v3.0.221 (chủ dự án 05/11/2026): dòng meta một hàng ở điện thoại; "Bàn" đậm như mã đoàn; icon người thay chữ "khách". */
  .luot .meta .banThe,.luot .metaCano .maDoanThe{display:inline-flex;align-items:center;gap:4px;color:var(--chu);font-weight:800}
  .luot .meta .icBan,.luot .metaCano .icTau{width:13px;height:13px;fill:currentColor;stroke:none;flex:0 0 auto}
  .luot .meta .soKhachThe{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums}
  /* Chủ dự án 05/11/2026: icon người đậm bằng icon vé — viền cùng màu .5 đơn vị (~0,27px) bù nét mảnh của tệp gốc. */
  .luot .meta .icKhach{width:13px;height:13px;fill:currentColor;stroke:currentColor;stroke-width:.5;stroke-linejoin:round;flex:0 0 auto}
  .luot .metaCano .soVeThe{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums}
  .luot .metaCano .icVe{width:15px;height:11.25px;fill:currentColor;stroke:none;flex:0 0 auto}
  .luot .metaCano .icVe .icVeVach{fill:none;stroke:currentColor;stroke-width:41;stroke-linecap:round}
  /* db/117 (v3.0.145): mã đoàn · vé + tiền vé cano · giờ lên tàu / đã về. */
  .luot .metaCano{font-size:12.5px;color:var(--mo);margin-top:4px;min-width:0;overflow-wrap:anywhere}
  .luot .metaCano .maDoanThe{color:var(--chu);font-weight:800}
  .luot .metaCano .mocCanoThe{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
  /* Hàng trạng thái: số ảnh → số tin nhắn → nhãn trạng thái. Các chỉ báo
     cho biết nội dung vẫn tồn tại dù đang ẩn và luôn nằm cùng một hàng. */
  .luot .ttHang{display:flex;align-items:center;justify-content:flex-end;
                gap:6px;flex-wrap:nowrap}
  .luot .ttHang .con{font-size:11px;font-weight:700;color:var(--chinh);white-space:nowrap}
  /* Chế độ gọn: bỏ khoảng đệm dưới cho thẻ sát nhau, cuộn nhanh hơn */
  .luot.cd-gon .dau{padding-bottom:13px}
  .badge{font-size:10.5px;font-weight:800;padding:4px 9px;border-radius:20px;white-space:nowrap}
  .badge.cho_chot{background:#fef9c3;color:#854d0e}
  .badge.chua_chi{background:#ffedd5;color:#9a3412}
  .badge.da_chi{background:#d1fae5;color:#065f46}
  .badge.huy{background:#fee2e2;color:#991b1b}

/* ---------- Hai ô ảnh ---------- */
  .anh2{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 13px 11px}
  .oAnh{aspect-ratio:4/3;border-radius:11px;overflow:hidden;background:#fbfcfd;position:relative;
        display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;
        font-family:inherit;width:100%;border:1.5px dashed #dde3ea}
  /* Có ảnh rồi thì bỏ viền nét đứt, để ảnh tự nói */
  .oAnh:has(img){border-style:solid;border-color:transparent;background:#eef2f6}
  .oAnh img{width:100%;height:100%;object-fit:cover;display:block}
  .oAnh .trong{font-size:12px;color:#94a3b8;font-weight:600;text-align:center;padding:0 10px;line-height:1.45;
               display:flex;flex-direction:column;align-items:center;gap:6px}
  .oAnh .trong .ic{width:22px;height:22px;stroke:#b4c0cc}
  .oAnh .nhan{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.62));
              color:#fff;font-size:10.5px;font-weight:700;padding:14px 8px 6px;text-align:left}
  .oAnh:active{opacity:.75}
  .oAnh.khoa{background:#fbfcfd;border-style:solid;border-color:#eef2f6;cursor:default}
  .oAnh.khoa:active{opacity:1}
  .oAnh.khoa .trong{color:#a8b4c0}

  /* ---------- Khung tin nhắn ---------- */

/* ---------- Chat kiểu Zalo ---------- */
  .chat{border-top:1px solid #f1f5f9;padding:10px 13px 12px}
  /* Nền sáng hơn nền ngoài + viền, để khối chat không lẫn vào trang.
     Mặt nạ mờ dần hai đầu cho biết còn nội dung phía trên/dưới —
     trước đây tin nhắn bị cắt ngang, nhìn như đang tan vào nền. */
  .tinDs{background:#f7f9fb;border:1px solid #e6ecf2;border-radius:14px;
         padding:11px 10px;max-height:340px;overflow-y:auto;
         -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,
                            #000 calc(100% - 14px),transparent 100%);
         mask-image:linear-gradient(to bottom,transparent 0,#000 14px,
                    #000 calc(100% - 14px),transparent 100%)}
  /* Ít tin thì không cần mờ — bỏ mặt nạ đi cho gọn */
  .tinDs.itTin{-webkit-mask-image:none;mask-image:none}
  /* v3.0.258: chỉ hiện 3 tin mới nhất; tin cũ ẩn tới khi bấm "Xem N tin trước" (the-luot.js khungChat) */
  .tinDs:not(.moCu) .bong.tinCu{display:none}
  .xemTinCu{display:block;margin:0 auto 8px;padding:4px 12px;border:1px solid #e6ecf2;border-radius:999px;
            background:#fff;color:#475569;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
  .xemTinCu:active{background:#eef2f6}
  /* Ẩn thanh cuộn — vẫn cuộn được, chỉ không hiện vạch xám bên cạnh */
  .tinDs{scrollbar-width:none;-ms-overflow-style:none}
  .tinDs::-webkit-scrollbar{display:none}

  .bong{display:flex;margin-bottom:3px;max-width:100%}
  .bong.hetChuoi{margin-bottom:11px}
  .bong.coCX{margin-bottom:20px}          /* chừa chỗ cho viên cảm xúc thò xuống */
  .bong:last-child{margin-bottom:0}
  .khoi{max-width:84%;position:relative}
  /* Bo tròn đều bốn góc */
  .bong .noi{padding:9px 13px 7px;border-radius:15px;font-size:14.5px;line-height:1.42;
             word-break:break-word;display:inline-block;max-width:100%}
  /* Giờ nằm dưới cùng bên TRÁI trong bong bóng */
  .bong .luc{font-size:11.5px;color:#9aa8b6;margin-top:4px;display:block;line-height:1;text-align:left}
  /* Tên người gửi nằm TRONG bong bóng, ngay trên dòng chữ */
  .bong .ai{font-size:13.5px;font-weight:600;margin-bottom:4px;display:block}
  /* Người khác: bám trái, nền trắng KHÔNG viền */
  .bong.ho{justify-content:flex-start}
  .bong.ho .noi{background:#fff;border:1px solid #e6ecf2;color:#0f172a}
  /* Mình: bám phải, nền xanh nhạt, chữ đen */
  .bong.toi{justify-content:flex-end}
  .bong.toi .khoi{display:flex;flex-direction:column;align-items:flex-end}
  .bong.toi .noi{background:#d5e9f7;color:#0f172a}
  .bong .noi.chiIcon{background:none!important;font-size:40px;padding:2px 2px 0;line-height:1.1}
  .bong .noi.chiIcon .luc{font-size:11.5px}

  /* Viên cảm xúc + trái tim nằm cạnh nhau, thò xuống mép dưới bên phải */
  .cx{position:absolute;bottom:-13px;right:7px;display:flex;align-items:center;gap:5px;z-index:3}
  .pill{background:#fff;border:1px solid #eef2f6;border-radius:20px;padding:3px 9px;
        font-size:12px;font-weight:700;color:#475569;
        box-shadow:0 2px 8px rgba(15,23,42,.13);white-space:nowrap;display:flex;align-items:center;gap:3px}
  /* Trái tim CHỈ hiện khi rê chuột vào tin nhắn */
  .nutThich{width:28px;height:28px;border-radius:50%;background:#fff;border:1px solid #eef2f6;
            box-shadow:0 2px 8px rgba(15,23,42,.13);font-size:14px;
            display:flex;align-items:center;justify-content:center;font-family:inherit;
            opacity:0;pointer-events:none;transition:opacity .15s;padding:0;color:#8b98a5}
  .khoi:hover .nutThich{opacity:1;pointer-events:auto}
  .nutThich.daThich{opacity:1;pointer-events:auto;color:#e11d48}
  /* Máy cảm ứng không có chuột — chạm vào tin để hiện trái tim */
  @media (hover:none){
    .khoi.chamMo .nutThich{opacity:1;pointer-events:auto}
  }

  .tinTrong{font-size:12.5px;color:#94a3b8;padding:16px 0;text-align:center}

/* ---------- Ô nhập kiểu Zalo ---------- */
  .goTin{display:flex;align-items:center;gap:4px;border:1px solid var(--vien);border-radius:22px;
         background:#fff;margin-top:8px;padding:2px 4px 2px 6px}
  .goTin input{flex:1;border:none;padding:11px 4px;font-size:16px;font-family:inherit;background:transparent;min-width:0}
  .goTin input:focus{outline:none}
  /* Ô tin nhắn ở màn nhập lượt đứng cùng nhịp với các hàng thông tin xe (72px),
     không dùng chiều cao composer trong thẻ lượt. */
  .goTinMoi{min-height:72px;margin-top:0;padding:6px 8px 6px 10px}
  .goTinMoi input{padding:11px 6px}
  .nutTron{background:transparent;border:none;padding:0;width:38px;height:38px;border-radius:50%;
           display:flex;align-items:center;justify-content:center;font-family:inherit;flex:0 0 auto}
  .nutTron:active{background:#f1f5f9}
  .nutTron .ic{width:22px;height:22px;stroke:var(--mo)}
  /* Nút phải: rỗng thì là Like, gõ chữ thì thành Gửi */
  .nutGui{font-size:23px;line-height:1}
  .nutGui.guiDi .ic{stroke:none;fill:var(--chinh);width:23px;height:23px}
  .banEmoji{display:none;gap:5px;flex-wrap:wrap;padding:9px 4px 3px;justify-content:flex-start}
  .banEmoji.hien{display:flex}
  .banEmoji button{background:#f1f5f9;border:none;border-radius:9px;width:38px;height:36px;
                   font-size:20px;line-height:1;font-family:inherit}
  .banEmoji button:active{background:#e2e8f0}

/* ---------- Gợi ý ---------- */
.oGoiY{position:relative}
.dsGoiY{position:absolute;left:0;right:0;top:calc(100% + 5px);background:#fff;
        border:1px solid var(--vien);border-radius:12px;z-index:90;overflow:hidden;
        max-height:262px;overflow-y:auto;box-shadow:0 10px 28px rgba(15,23,42,.16)}
.dsGoiY.an{display:none}
.dsGoiY button{display:flex;width:100%;align-items:center;gap:10px;padding:11px 13px;border:none;
               background:#fff;border-bottom:1px solid #f1f5f9;text-align:left;font-family:inherit}
.dsGoiY button:last-child{border-bottom:none}
.dsGoiY button:active{background:#f1f5f9}
.dsGoiY .tt{flex:1;min-width:0}
.dsGoiY .b{font-weight:800;font-size:15.5px;letter-spacing:.4px;display:block}
.dsGoiY .t{font-size:12px;color:var(--mo);display:block;margin-top:1px;
           white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dsGoiY .n{font-size:11px;font-weight:700;color:var(--chinh);background:var(--chinh-nhat);
           padding:3px 8px;border-radius:20px;white-space:nowrap}
.dsGoiY mark{background:#fde68a;color:inherit;border-radius:3px;padding:0 1px}

/* ---------- Popup ---------- */
.lop{position:fixed;inset:0;background:rgba(15,23,42,.5);display:none;
     align-items:flex-end;z-index:100;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
.lop.hien{display:flex}
.popup{background:#fff;width:100%;max-width:620px;margin:0 auto;border-radius:18px 18px 0 0;
       min-width:0;overflow-x:hidden;padding:20px 16px calc(18px + env(safe-area-inset-bottom));max-height:90dvh;overflow-y:auto}
.popup h3{margin:0 0 16px;font-size:17px}
.chonTT{display:flex;gap:9px}
.chonTT button{flex:1;padding:14px 6px;border:1.5px solid var(--vien);background:#fff;
               border-radius:12px;font-size:13.5px;font-weight:800;color:var(--mo);
               font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:6px}
.chonTT button .ic{width:20px;height:20px;stroke-width:2.4}
.chonTT button.on.lenbe{background:#ecfdf5;border-color:#6ee7b7;color:#047857}
.chonTT button.on.huy{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}
.hangNut{display:flex;gap:9px}
.nutXam{flex:0 0 110px;padding:16px;border:1px solid var(--vien);background:#f8fafc;
        border-radius:12px;font-weight:800;font-family:inherit;color:var(--mo);font-size:15px}

/* ---------- Bổ sung cho app thật ---------- */
.nutSua{background:var(--chinh-nhat);border:1px solid var(--chinh);color:var(--chinh);
        font-size:12.5px;font-weight:800;padding:8px 13px;border-radius:9px;
        display:inline-flex;align-items:center;gap:6px;font-family:inherit;flex:0 0 auto}
.trongRong{text-align:center;color:var(--mo);padding:30px 16px;font-size:14px}

/* Danh sách lượt nằm ngoài thẻ trắng để thẻ lượt tự đứng riêng */
.ds{padding:0}

/* ---------- Lọc trạng thái ---------- */
.loc{display:flex;gap:6px;margin-bottom:11px;overflow-x:auto;scrollbar-width:none}
.loc::-webkit-scrollbar{display:none}
.loc button{flex:0 0 auto;padding:8px 14px;border:1px solid var(--vien);background:var(--the);
            border-radius:20px;font-size:13px;font-weight:700;color:var(--mo);
            white-space:nowrap;font-family:inherit}
.loc button.on{background:var(--chinh);color:#fff;border-color:var(--chinh)}

/* ---------- Hàng Thêm lượt · Sắp xếp · Tìm ---------- */
.hangTim{display:flex;gap:8px;margin-bottom:11px}
.btnThem{flex:1;padding:13px;border:none;border-radius:11px;background:var(--chinh);color:#fff;
         font-size:15px;font-weight:800;font-family:inherit;
         display:flex;align-items:center;justify-content:center;gap:7px}
.btnTim{flex:0 0 48px;width:48px;border:1px solid var(--vien);border-radius:11px;background:var(--the);
        display:flex;align-items:center;justify-content:center;font-family:inherit}
.btnTim .ic{width:21px;height:21px;stroke:var(--mo)}
.btnTim.on{background:var(--chinh);border-color:var(--chinh)}
.btnTim.on .ic{stroke:#fff}
.nhacXep{margin:-5px 0 11px;font-size:11.5px;color:var(--chinh);font-weight:700}
.oTim{display:flex;gap:8px;margin-bottom:11px;align-items:center}
.oTim input{flex:1;padding:12px 14px;border:1px solid var(--chinh);border-radius:11px;
            font-size:14.5px;font-family:inherit;min-width:0}
.oTim button{flex:0 0 44px;height:44px;border:none;background:#f1f5f9;border-radius:11px;
             display:flex;align-items:center;justify-content:center;font-family:inherit}
.oTim button .ic{stroke:var(--mo)}
.oTim #btnTrangTim{font-size:30px;line-height:1;font-weight:500;color:var(--chu);display:grid;place-items:center}
/* v3.0.225 (chủ dự án 05/11/2026 "chỉ cho phép tìm kiếm trong ngày, hoặc nhập ngày"): ô ngày thay nút › trang tìm đầy đủ;
   cỡ chữ 16px để Safari iOS không phóng to trang khi chạm. */
.oTim input.oNgayTim{flex:0 0 auto;width:150px;min-width:0;padding:10px 8px;border:1px solid var(--vien);border-radius:11px;
  font-size:16px;color:var(--chu);background:#fff;font-family:inherit}

/* Trang tìm kiếm toàn bộ lịch sử */
.trangTimKiem{min-width:0;max-width:100%;box-sizing:border-box}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.tk-o-chinh{display:flex;align-items:center;gap:8px;margin-bottom:12px;min-width:0}
/* appearance:none là bắt buộc: WebKit tự vẽ input[type=search] và bỏ qua
   border-radius, làm ô nhập không bo đủ bốn góc trên Safari/iOS. */
.tk-o-chinh input{min-width:0;flex:1;height:48px;padding:0 15px;border:1px solid var(--chu);border-radius:18px;background:#fff;color:var(--chu);font:inherit;font-size:16px;box-sizing:border-box;appearance:none;-webkit-appearance:none}
.tk-o-chinh input::-webkit-search-cancel-button,
.tk-o-chinh input::-webkit-search-decoration{display:none;-webkit-appearance:none}
.tk-o-chinh button{flex:0 0 48px;width:48px;height:48px;border:0;border-radius:18px;background:var(--chu);display:grid;place-items:center}
.tk-o-chinh svg{width:21px;height:21px;fill:none;stroke:#fff;stroke-width:2}
.tk-bo-loc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;margin-bottom:12px;padding:12px;border:1px solid var(--vien);border-radius:15px;background:#fff;box-sizing:border-box;min-width:0}
.tk-bo-loc label{display:grid;gap:5px;min-width:0;color:var(--mo);font-size:12px;font-weight:700}
/* Trạng thái chiếm trọn hàng để Từ ngày và Đến ngày luôn nằm cùng một hàng. */
.tk-bo-loc label:has(#locTrangThai){grid-column:1/-1}
.tk-bo-loc select,.tk-bo-loc input{min-width:0;width:100%;height:42px;padding:0 10px;border:1px solid var(--vien);border-radius:10px;background:#fff;color:var(--chu);font:inherit;font-size:14px;box-sizing:border-box}
.tk-bo-loc button{grid-column:1/-1;justify-self:start;border:0;background:transparent;color:var(--chu);font:inherit;font-size:13px;font-weight:800;padding:5px 2px;text-decoration:underline;text-underline-offset:3px}
.tk-tom-tat{min-height:20px;margin:0 2px 10px;color:var(--mo);font-size:13px;line-height:1.45}
.tk-ket-qua{display:grid;gap:8px;min-width:0}
.tk-ket-qua-dong{display:grid;grid-template-columns:minmax(0,1fr) auto 20px;gap:10px;align-items:center;min-width:0;padding:13px 13px 13px 15px;border:1px solid var(--vien);border-radius:15px;background:#fff;color:var(--chu);text-decoration:none;box-sizing:border-box}
.tk-kq-chinh,.tk-kq-phu{display:grid;gap:4px;min-width:0}
.tk-kq-chinh b{font-size:15px;overflow-wrap:anywhere}.tk-kq-chinh small{color:var(--mo);overflow-wrap:anywhere}
.tk-kq-phu{text-align:right;justify-items:end}.tk-kq-phu time{font-size:11.5px;color:var(--mo);white-space:nowrap}
.tk-kq-phu em{font-style:normal;font-size:11px;font-weight:800;padding:3px 7px;border-radius:999px;background:#f1f5f9;white-space:nowrap}
.tk-kq-phu em.chua_chi{background:#fff7ed;color:#9a3412}.tk-kq-phu em.da_chi{background:#ecfdf5;color:#166534}.tk-kq-phu em.huy{background:#fef2f2;color:#991b1b}
.tk-kq-mo{font-size:26px;color:#94a3b8;line-height:1}
@media (min-width:700px){.tk-bo-loc{grid-template-columns:1.2fr 1fr 1fr}.tk-bo-loc label:has(#locTrangThai){grid-column:auto}.tk-bo-loc button{grid-column:auto;align-self:end;height:42px}}

/* ---------- Dải báo đang xem ngày cũ ---------- */
.bangNgay{background:#fffbeb;border:1px solid #fcd34d;color:#92400e;border-radius:11px;
          padding:10px 13px;font-size:13px;font-weight:700;margin-bottom:11px;
          display:flex;justify-content:space-between;align-items:center;gap:8px}
.bangNgay button{background:#92400e;color:#fff;border:none;border-radius:8px;padding:6px 11px;
                 font-size:12px;font-weight:800;font-family:inherit}

.xemThem{width:100%;padding:13px;background:var(--the);border:1px solid var(--vien);
         border-radius:12px;font-size:14px;font-weight:700;color:var(--chinh);
         font-family:inherit;margin-top:2px}
.tomtat .o.cho b{color:var(--vang)}
.tomtat .o.huy b{color:var(--do)}

/* ---------- Màn chốt ---------- */
.dong{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;
      padding:9px 0;border-bottom:1px solid #f1f5f9}
.dong:last-child{border-bottom:none}
.dong .nhan{font-size:13px;color:var(--mo);flex:0 0 108px;font-weight:600}
.dong .gtri{font-size:15px;font-weight:700;text-align:right;flex:1;word-break:break-word}
.dong .gtri.trong{color:#cbd5e1;font-weight:500;font-style:italic}
.hang{display:flex;gap:10px}
.hang>div{flex:1;min-width:0}
input.o{width:100%;padding:12px;border:1.5px solid var(--vien);border-radius:11px;
        max-width:100%;min-width:0;font-size:16px;font-family:inherit;text-align:right;font-weight:700}
input.o:focus{outline:none;border-color:var(--chinh);box-shadow:0 0 0 3px var(--chinh-nhat)}
/* Tổng khách là kết quả tự tính, không phải ô nhập. Nhãn, trạng thái và số
   nằm chung một box mờ để không bị hiểu nhầm là trường có thể sửa tay. */
.oKhachTuTinh{min-height:70px;padding:10px 12px;border:1.5px solid #e2e8f0;
              border-radius:11px;background:#f1f5f9;color:#64748b;
              display:flex;align-items:center;justify-content:space-between;gap:10px}
.oKhachTuTinh span{min-width:0}
.oKhachTuTinh b{display:block;font-size:13px;color:#64748b}
.oKhachTuTinh small{display:block;margin-top:3px;font-size:10.5px;font-weight:700;
                    color:#94a3b8;text-transform:uppercase;letter-spacing:.35px}
.oKhachTuTinh output{font-size:22px;line-height:1;font-weight:800;color:#64748b;
                     font-variant-numeric:tabular-nums}
.ve{background:#f8fafc;border:1px solid var(--vien);border-radius:11px;padding:11px;margin-bottom:9px}
.ve .ttl{font-size:12.5px;font-weight:800;color:#334155;margin-bottom:8px;
         display:flex;justify-content:space-between;align-items:center;gap:8px}
.ve .ttl em{font-style:normal}
/* Nhãn nằm trong hàng flex thì margin đáy mặc định của <label> (nbkh.css) chỉ
   đội chiều cao hàng lên, làm tiêu đề cách ô nhập xa hơn nhịp chung. */
.ve .ttl .nhanVe{margin:0}
/* Giá vé bấm được — viền nét đứt để nhìn là biết chạm sửa được */
.nutGia{font-family:inherit;font-size:12px;font-weight:800;color:var(--chinh);
        background:#fff;border:1px dashed var(--chinh);border-radius:8px;padding:5px 9px;
        display:inline-flex;align-items:center;gap:5px;line-height:1}
.nutGia .ic{stroke:var(--chinh)}
/* Vé không tính hoa hồng: đổi hẳn sang màu cam để nhìn lướt cũng thấy,
   vì đây là thứ làm lệch tiền trả cho tài xế mà rất dễ quên */
.nutGia.khongHH{color:#9a3412;border-color:#fdba74;background:#fff7ed}
.nutGia.khongHH .ic{stroke:#9a3412}

/* Ô tích trong popup giá vé */
.oTich{display:flex;align-items:center;gap:12px;width:100%;margin-top:12px;
       padding:13px 14px;border:1.5px solid var(--vien);border-radius:12px;
       background:#fff;font-family:inherit;text-align:left}
.oTich .dau{width:24px;height:24px;border-radius:7px;border:1.5px solid var(--vien);
            background:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.oTich .dau .ic{width:15px;height:15px;stroke:#fff;stroke-width:3;opacity:0}
.oTich .chu{flex:1;min-width:0}
.oTich .chu b{display:block;font-size:14px;font-weight:700;color:var(--chu)}
.oTich .chu small{display:block;font-size:12px;color:var(--mo);margin-top:2px}
.oTich.on{border-color:var(--chinh);background:var(--chinh-nhat)}
.oTich.on .dau{background:var(--chinh);border-color:var(--chinh)}
.oTich.on .dau .ic{opacity:1}

/* Ảnh và trao đổi ở màn chốt lượt — thẻ trong thẻ nên bỏ đệm thừa */
.the.khongDem .luot .chat{padding:0}
.the.khongDem .luot .tinDs{max-height:230px}
.veCano{background:#f0fdfa;border:1px solid #99f6e4;color:#115e59;border-radius:9px;
        padding:10px 12px;font-size:13.5px;font-weight:700;text-align:right}
/* Biến thể sửa được của ô tiền vé (28/08/2026): cùng bảng màu, bố cục như ô
   chiết khấu để thu ngân nhận ra đây là chỗ nhập. */
.veCano.veCanoSua{text-align:left;padding:11px 12px;border-radius:11px}
.veCano.veCanoSua label{margin-bottom:7px;color:#065f46}
.veCano.veCanoSua input{background:#fff;border-color:#6ee7b7;color:#065f46}
.veCano.veCanoSua .goiYTien{margin-top:6px;color:#047857;font-size:11px;line-height:1.45;font-weight:600}
.chietKhauCano{margin-top:11px;padding:11px 12px;border:1px solid #99f6e4;border-radius:11px;background:#f0fdfa}
.chietKhauCano label{margin-bottom:7px;color:#065f46}
.chietKhauCano input{background:#fff;border-color:#6ee7b7;color:#065f46}
.chietKhauCano small{display:block;margin-top:6px;color:#047857;font-size:11px;line-height:1.45}
.goiYGia{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}
.goiYGia button{flex:1;min-width:74px;padding:11px 4px;border:1.5px solid var(--vien);
                background:#fff;border-radius:10px;font-family:inherit;font-size:13.5px;
                font-weight:800;color:var(--chinh)}
.boxHH{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:11px;overflow:hidden}
.tomTatHH{width:100%;border:0;background:transparent;padding:12px 13px;color:#047857;
          display:flex;align-items:center;justify-content:space-between;gap:12px;
          text-align:left;font-family:inherit}
.tomTatHH:focus-visible{outline:3px solid #0f766e;outline-offset:-3px}
.tomTatHH .soHH{min-width:0}
.tomTatHH .soHH small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.55px}
.tomTatHH .soHH b{display:block;margin-top:2px;font-size:20px;line-height:1.2;
                   font-variant-numeric:tabular-nums}
.tomTatHH .hanhDongHH{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;
                      font-size:11.5px;font-weight:800;color:#0f766e}
.tomTatHH .hanhDongHH .ic{width:16px;height:16px;transition:transform .18s ease}
.tomTatHH[aria-expanded="true"] .hanhDongHH .ic{transform:rotate(180deg)}
.chiTietHH{padding:10px 13px 12px;border-top:1px solid #a7f3d0}
.chiTietHH[hidden]{display:none}
.boxHH .d{display:flex;justify-content:space-between;align-items:center;gap:12px;
          font-size:13.5px;padding:4px 0;color:#065f46}
.boxHH .d span{min-width:0}
.boxHH .d b{flex:0 0 auto;font-variant-numeric:tabular-nums}
.boxHH .nhapHH{padding:8px 0 5px;margin-top:4px;border-top:1px dashed #a7f3d0}
.boxHH .nhapHH label{flex:1;min-width:0;margin:0;color:#065f46;font-size:13.5px}
.boxHH .nhapHH input{flex:0 1 180px;width:46%;min-width:110px;padding:9px 10px;
                     border-color:#6ee7b7;background:#fff;color:#065f46}
.boxHH .ghiChuHH{font-size:11px;line-height:1.45;color:#047857;margin-top:6px}
.boxHH .d.mo{margin-top:8px;padding-top:8px;border-top:1px solid #a7f3d0}
.chonTT button.on.cho_chot{background:#fef9c3;border-color:#fde047;color:#854d0e}
.chonTT button.on.chua_chi{background:#fff7ed;border-color:#fdba74;color:#c2410c}
.chonTT button.on.da_chi{background:#ecfdf5;border-color:#6ee7b7;color:#047857}
.chonTT button.on.huy{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}
.motaTT{font-size:11.5px;color:var(--mo);margin-top:9px;text-align:center}

.thanhDuoi{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--vien);
           width:100%;min-width:0;
           padding:11px calc(16px + env(safe-area-inset-right)) calc(11px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));display:flex;gap:9px;
           max-width:620px;margin:0 auto}
.thanhDuoi button{flex:1;padding:15px;border:none;border-radius:12px;font-size:15.5px;
                  font-weight:800;color:#fff;background:var(--chinh);font-family:inherit;
                  display:flex;align-items:center;justify-content:center;gap:8px}
.thanhDuoi button.phu{flex:0 0 104px;background:#fef2f2;color:var(--do);border:1px solid #fecaca}
.thanhDuoi button:disabled{background:#cbd5e1;color:#f8fafc;cursor:not-allowed;opacity:.82}

/* ---------- Chọn ngày ---------- */
.popup .ngay{width:100%;text-align:left;padding:14px 15px;margin-bottom:7px;border-radius:12px;
             font-family:inherit;font-size:15px;font-weight:700;display:flex;
             justify-content:space-between;align-items:center;
             border:1.5px solid var(--vien);background:#fff;color:var(--chu)}
.popup .ngay.on{border-color:var(--chinh);background:var(--chinh-nhat);color:var(--chinh)}
.popup .ngay .phu{font-size:12.5px;font-weight:600;color:var(--mo)}
.lichTN{min-width:0}.lichTN-dau{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:8px;margin-bottom:12px}
.lichTN-dau h3{margin:0;text-align:center;font-size:16px}.lichTN-dau button{height:40px;border:1px solid var(--vien);border-radius:11px;background:#fff;color:var(--chinh);font-size:24px}
.lichTN-thu,.lichTN-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.lichTN-thu{margin-bottom:5px}.lichTN-thu span{text-align:center;color:var(--mo);font-size:10px;font-weight:800}
.lichTN-grid{margin-bottom:14px}.lichTN-grid button,.lichTN-trong{aspect-ratio:1;border:0;border-radius:10px;background:#f8fafc;color:#334155;font:750 12px inherit;display:flex;align-items:center;justify-content:center}
.lichTN-grid button.hom-nay{box-shadow:inset 0 0 0 1.5px var(--chinh)}.lichTN-grid button.on{background:var(--chinh);color:#fff;box-shadow:none}


/* ---------- Xem ảnh to ----------
   Mở ngay trong app. Mở tab mới thì nhân viên phải tự đóng,
   và trên iPhone rất dễ lạc mất app đang làm dở. */
.lopAnh{position:fixed;inset:0;background:rgba(2,6,23,.94);z-index:200;
        display:none;flex-direction:column;
        padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.lopAnh.hien{display:flex}

.dauAnh{display:flex;align-items:center;justify-content:space-between;gap:10px;
        padding:14px 16px;color:#fff;font-size:15px;font-weight:700}
.dauAnh button{background:rgba(255,255,255,.16);border:none;color:#fff;width:38px;height:38px;
               border-radius:50%;display:flex;align-items:center;justify-content:center;
               font-family:inherit;padding:0;flex:0 0 auto}
.dauAnh .ic{width:20px;height:20px;stroke-width:2.4}

/* Khung ảnh và hai nút lật.
   Trước đây hai nút lật nằm dưới đáy, ghi rõ "Xe trước" / "Xe sau" và
   chen chỗ với nút Chụp lại — bốn nút một hàng, chữ bé lại, mà tay cầm
   điện thoại thì ngón cái ở giữa màn hình chứ không ở đáy. Giờ chỉ còn
   hai mũi tên nổi hai bên, đúng tầm ngón cái, và vuốt ngang cũng lật được. */
.khungAnh{position:relative;flex:1;min-height:0;display:flex;
          align-items:center;justify-content:center}
.khungAnh img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.latAnh{position:absolute;top:50%;transform:translateY(-50%);
        width:44px;height:44px;padding:0;border:none;border-radius:50%;
        background:rgba(15,23,42,.62);backdrop-filter:blur(6px);
        display:flex;align-items:center;justify-content:center;
        -webkit-tap-highlight-color:transparent}
.latAnh.trai{left:10px}
.latAnh.phai{right:10px}
.latAnh .ic{width:24px;height:24px;stroke:#fff;stroke-width:2.6}
.latAnh:active{background:rgba(15,23,42,.9)}

/* Dải ảnh nhỏ — thấy trước còn bao nhiêu ảnh, nhảy thẳng tới ảnh cần xem */
.dayThumb{display:flex;gap:7px;padding:10px 16px 0;overflow-x:auto;
          scrollbar-width:none;-webkit-overflow-scrolling:touch}
.dayThumb::-webkit-scrollbar{display:none}
.dayThumb button{flex:0 0 auto;width:52px;height:52px;padding:0;border-radius:9px;
                 border:2px solid transparent;overflow:hidden;background:#1e293b;
                 opacity:.55;transition:opacity .15s ease,border-color .15s ease}
.dayThumb button.dangXem{opacity:1;border-color:#fff}
.dayThumb img{width:100%;height:100%;object-fit:cover;display:block}

.duoiAnh{display:flex;gap:9px;padding:14px 16px}
.duoiAnh button{flex:1;padding:14px 10px;border:none;border-radius:12px;font-size:14px;
                font-weight:800;font-family:inherit;background:rgba(255,255,255,.16);color:#fff;
                display:flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}
.duoiAnh button:first-child{background:#fff;color:#0f172a}
.duoiAnh button:first-child .ic{stroke:#0f172a}
.duoiAnh .ic{width:18px;height:18px;stroke:#fff}
/* Xoá ảnh là việc không lấy lại được — cho nó màu riêng để tay không
   quen lỡ chạm. Vẫn nhạt hơn nút chính, vì đây không phải việc chính. */
.duoiAnh .nguyHiem{background:rgba(220,38,38,.22);color:#fecaca}
.duoiAnh .nguyHiem .ic{stroke:#fecaca}
.duoiAnh .nguyHiem:active{background:rgba(220,38,38,.42)}


/* ---------- Nhãn tên trên thanh đầu trang: giờ là nút ---------- */
header .nguoi{background:rgba(255,255,255,.22);border:none;color:#fff;border-radius:20px;
              padding:4px 10px 4px 4px;font-size:12px;font-weight:700;font-family:inherit;
              display:inline-flex;align-items:center;gap:6px;margin-top:6px;max-width:100%}
header .nguoi:active{background:rgba(255,255,255,.34)}
header .nguoi .avt{width:22px;height:22px;border-radius:50%;background:#fff;color:var(--chinh);
                   display:flex;align-items:center;justify-content:center;
                   font-size:11.5px;font-weight:800;flex:0 0 auto}
header .nguoi .mui{width:14px;height:14px;opacity:.8;flex:0 0 auto}

/* ---------- Trang cá nhân ---------- */
.lopCN{position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:150;
       display:none;align-items:flex-end}
.lopCN.hien{display:flex}
.theCN{background:var(--nen);width:100%;max-width:620px;margin:0 auto;
       border-radius:20px 20px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom));
       max-height:92dvh;overflow-y:auto}
.keo{width:38px;height:4px;border-radius:2px;background:#cbd5e1;margin:0 auto 16px}

.hoSo{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--vien);
      border-radius:14px;padding:16px;margin-bottom:12px}
.avtTo{width:54px;height:54px;border-radius:50%;background:var(--chinh);color:#fff;
       display:flex;align-items:center;justify-content:center;font-size:22px;
       font-weight:800;flex:0 0 auto}
.ttHoSo{min-width:0}
.tenTo{font-size:18px;font-weight:800;letter-spacing:-.2px}
.vaiTro{display:inline-block;margin-top:4px;background:var(--chinh-nhat);color:var(--chinh);
        font-size:11.5px;font-weight:800;padding:3px 10px;border-radius:20px}
.dangNhap{font-size:12px;color:var(--mo);margin-top:6px}
.dangNhap b{color:#334155}

.nhomCN{background:#fff;border:1px solid var(--vien);border-radius:14px;
        overflow:hidden;margin-bottom:12px}
.nhanCN{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--mo);
        font-weight:800;padding:13px 16px 8px}
.mucCN{display:flex;align-items:center;gap:13px;width:100%;padding:14px 16px;border:none;
       background:#fff;font-family:inherit;text-align:left;text-decoration:none;
       color:var(--chu);border-top:1px solid #f1f5f9}
.nhanCN + .mucCN{border-top:none}
.mucCN:active{background:#f8fafc}
.mucCN.dangDung{background:#f8fafc}
.oIcon{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;
       justify-content:center;flex:0 0 auto}
.oIcon .ic{width:20px;height:20px;stroke-width:2.1}
.oIcon.teal{background:var(--teal-nhat)} .oIcon.teal .ic{stroke:var(--teal)}
.oIcon.lam{background:var(--lam-nhat)}   .oIcon.lam .ic{stroke:var(--lam)}
.oIcon.do{background:#fee2e2}            .oIcon.do .ic{stroke:var(--do)}
.chuCN{flex:1;min-width:0}
.chuCN b{display:block;font-size:15px;font-weight:700}
.chuCN small{display:block;font-size:12px;color:var(--mo);margin-top:2px}
.mucCN .mui{width:18px;height:18px;stroke:#cbd5e1;flex:0 0 auto}
.mucCN.xau .chuCN b{color:var(--do)}
/* Máy không nhận được thông báo: làm mờ để biết là không bấm được,
   nhưng vẫn cho chạm để còn hiện ra lời giải thích vì sao */
.mucCN.mo{opacity:.5}

/* ---------- Thẻ nhắc bật thông báo ---------- */
.nhacTB{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
        background:var(--chinh-nhat);border:1px solid var(--chinh);
        border-radius:13px;padding:13px 14px;margin-bottom:12px}
.nhacTB .chu{flex:1;min-width:180px}
.nhacTB .chu b{display:block;font-size:14.5px;color:var(--chinh)}
.nhacTB .chu small{display:block;font-size:12px;color:#475569;margin-top:3px;line-height:1.5}
.nhacTB .nut{display:flex;gap:8px;flex:0 0 auto}
.nhacTB button{font-family:inherit;font-size:13.5px;font-weight:800;
               border-radius:10px;padding:10px 16px;border:1px solid var(--vien);
               background:#fff;color:var(--mo)}
.nhacTB button.chinh{background:var(--chinh);border-color:var(--chinh);color:#fff}
.nhacTB button:disabled{opacity:.6}
.dangO{font-size:11px;font-weight:800;color:var(--luc);background:#d1fae5;
       padding:4px 9px;border-radius:20px;white-space:nowrap;flex:0 0 auto}

/* Nút Danh sách bo tròn khớp các nút khác trong app */
header .nutQuay{border-radius:12px;padding:9px 14px;font-size:13.5px}

.nutLichSuLuot{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;
  border-radius:50%;background:#fff;color:var(--chinh);display:grid;place-items:center;
  font-family:inherit;box-shadow:0 9px 22px rgba(15,23,42,.08)}
.nutLichSuLuot .ic{width:22px;height:22px;stroke:currentColor;stroke-width:2.8;
  stroke-linecap:round;stroke-linejoin:round}
.nutLichSuLuot:disabled{opacity:.45;cursor:not-allowed}
.nutSuaTT{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:1px solid var(--vien);
  border-radius:50%;background:#fff;color:var(--chinh);display:grid;place-items:center;
  font-family:inherit;box-shadow:0 9px 22px rgba(15,23,42,.08)}
.nutSuaTT .ic{width:21px;height:21px;stroke:currentColor;stroke-width:2.5;
  stroke-linecap:round;stroke-linejoin:round}
.nutSuaTT.dangSua{background:var(--chinh);border-color:var(--chinh);color:#fff}
/* v3.0.242 (chủ dự án 07/11/2026: "Đồng bộ design 2 nút này… theo hình trên" — nút bút của thẻ Thông tin tài xế): nút sửa
   của thẻ Phương thức thanh toán và Công nợ đối tác dùng đúng hình nút .nutSuaTT (tròn trắng 44px, viền nhạt, bóng mờ). */
html #manCt :is(.khoiCongNoDoiTac .nutCnSua,.khoiCachTra .nutCtSua){width:44px;height:44px;min-width:44px;min-height:44px;padding:0;
  border:1px solid var(--vien);border-radius:50%;background:#fff;color:var(--chinh);display:grid;place-items:center;
  font-family:inherit;box-shadow:0 9px 22px rgba(15,23,42,.08)}
html #manCt :is(.khoiCongNoDoiTac .nutCnSua,.khoiCachTra .nutCtSua) .ic{width:21px;height:21px;stroke:currentColor;stroke-width:2.5;
  stroke-linecap:round;stroke-linejoin:round}
.cumHanhDongThongTin{display:flex;align-items:center;gap:10px;min-width:0}

/* Xoá lượt có dữ liệu luôn cần một hành động xác nhận riêng trong dialog. */
.moTaXacNhanXoa{margin:10px 0 14px;color:var(--mo);font-size:13.5px;line-height:1.55}
.tomTatXacNhanXoa{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;
  padding:14px;border-radius:14px;background:#f8fafc;color:#475569;font-size:13px}
.tomTatXacNhanXoa b{color:#111;text-align:right;overflow-wrap:anywhere}
.hangNutXacNhanXoa{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
/* v3.0.180 (chủ dự án 25/10/2026 "thiết kế theo đúng style app"): nút hộp xác nhận theo nút của app — bo
   --v2-radius-control, chữ đậm (dòng `font:800 14px/1.2 inherit` cũ không hợp lệ nên trình duyệt bỏ cả dòng, chữ về
   mảnh), nút phụ nền trắng đổ bóng thẻ, nút chính màu thương hiệu, nút huỷ/xoá đỏ. */
.hangNutXacNhanXoa button{min-height:52px;border-radius:var(--v2-radius-control,14px);font-family:inherit;
  font-weight:800;font-size:15px;line-height:1.2;padding:12px}
.nutGiuLai{border:0;background:#fff;color:#303846;box-shadow:var(--v2-shadow-card,0 1px 3px rgba(15,23,42,.12))}
.nutXoaXacNhan{border:0;background:#dc2626;color:#fff}
/* v3.0.180: nút xác nhận việc không phá huỷ (Đã về nhà bè). */
.nutXacNhanXanh{border:0;background:var(--v2-brand,var(--chinh));color:#fff}
.nutDaVeNhaBe{display:block;width:100%;min-height:52px;margin-top:14px;border-radius:var(--v2-radius-control,14px);
  font-family:inherit;font-weight:800;font-size:15px;line-height:1.2;padding:12px}
.nutDaVeNhaBe + .hangNutXacNhanXoa{margin-top:10px}
@media(max-width:360px){.hangNutXacNhanXoa{grid-template-columns:1fr}}
.an{display:none}
input.o.trai{text-align:left;font-weight:600}
input.o.giua{text-align:center}

/* ---------- Lịch sử giao dịch theo lượt ---------- */
.lopLichSuLuot{position:fixed;inset:0;z-index:1200;display:none;align-items:flex-end;
  justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 0
    max(12px,env(safe-area-inset-left));background:rgba(15,23,42,.52)}
.lopLichSuLuot.hien{display:flex}
.theLichSuLuot{width:min(100%,620px);max-height:min(82dvh,760px);min-width:0;max-width:100%;
  box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;background:#fff;
  border-radius:22px 22px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));
  box-shadow:0 -14px 40px rgba(15,23,42,.14)}
.dauLichSuLuot{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex:0 0 auto;margin-bottom:12px}
.dauLichSuLuot h2{margin:0;color:#111;font-size:20px;line-height:1.2}
.dauLichSuLuot p{margin:4px 0 0;color:var(--mo);font-size:12px;font-weight:650}
.dauLichSuLuot button{width:44px;height:44px;min-width:44px;padding:0;border:1px solid var(--vien);
  border-radius:50%;background:#fff;color:var(--chinh);display:grid;place-items:center}
.dauLichSuLuot button .ic{width:21px;height:21px;stroke:currentColor;stroke-width:2.2}
.dsLichSuLuot{min-width:0;max-width:100%;box-sizing:border-box;list-style:none;margin:0;
  padding:0 1px;overflow:auto;overscroll-behavior:contain}
.dongLichSuLuot{position:relative;display:grid;grid-template-columns:16px minmax(0,1fr);gap:10px;
  padding:0 0 18px;margin:0}
.dongLichSuLuot:not(:last-child)::after{content:"";position:absolute;left:7px;top:18px;bottom:0;
  width:2px;background:#e5e7eb}
.mocLichSuLuot{position:relative;z-index:1;width:14px;height:14px;margin-top:4px;border-radius:50%;
  border:3px solid #fff;background:#111;box-shadow:0 0 0 1px #cbd5e1}
.noiDungLichSuLuot{min-width:0;border:1px solid #e5e7eb;border-radius:15px;background:#fff;padding:12px 13px}
.dauDongLichSuLuot{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.dauDongLichSuLuot strong{min-width:0;color:#111;font-size:14px;line-height:1.35}
.dauDongLichSuLuot time{flex:0 0 auto;color:var(--mo);font-size:10.5px;line-height:1.45;white-space:nowrap}
.noiDungLichSuLuot p{margin:5px 0 0;color:#536075;font-size:12px;font-weight:650}
.noiDungLichSuLuot small{display:block;margin-top:7px;color:#536075;font-size:11px;line-height:1.45}
.lichSuLuotRong,.lichSuLuotLoi,.lichSuLuotDangTai{padding:28px 14px;text-align:center;color:var(--mo);
  font-size:13px;line-height:1.5}
.lichSuLuotLoi{color:#b91c1c}
.taiThemLichSuLuot{width:100%;min-height:44px;flex:0 0 auto;margin-top:4px;border:1px solid var(--vien);
  border-radius:13px;background:#f8fafc;color:var(--chinh);font-family:inherit;font-weight:800}
.taiThemLichSuLuot[hidden]{display:none}
.dauPopupCoLichSu{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dauPopupCoLichSu h3{min-width:0;margin:0}
.dauPopupCoLichSu .nutLichSuLuot{box-shadow:none;border:1px solid var(--vien)}

/* ---------- Ô tích trong màn cài đặt thông báo ---------- */
.oCT .dauCT{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--vien);
            background:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.oCT .dauCT .ic{width:16px;height:16px;stroke:#fff;stroke-width:3;opacity:0}
.oCT.on .dauCT{background:var(--chinh);border-color:var(--chinh)}
.oCT.on .dauCT .ic{opacity:1}
/* Tắt rồi thì làm nhạt chữ đi — nhìn lướt là biết nhóm nào đang im */
.oCT:not(.on) .chuCN b{color:var(--mo)}

/* ---------- Đoàn nhiều xe ---------- */
/* Hàng nút chụp: nút chính chiếm phần lớn, nút thêm xe nép bên cạnh —
   ngày thường chỉ có một xe, không để nút phụ tranh chỗ nút chính */
.hangChup{display:flex;gap:9px;margin-top:11px}
.hangChup .btnChup{flex:1;margin-top:0}
.btnThemXe{flex:0 0 auto;padding:16px 15px;border:1.5px solid var(--chinh);border-radius:12px;
           background:#fff;color:var(--chinh);font-size:13.5px;font-weight:800;
           font-family:inherit;display:flex;align-items:center;gap:7px;white-space:nowrap}
.btnThemXe.an{display:none}
.btnThemXe .ic{width:18px;height:18px;stroke:var(--chinh)}

/* Hộp xe đi kèm.
   Bản đầu có một hàng tiêu đề riêng ghi "XE 2" cộng nút "✕ Bỏ xe này" chữ
   to — hai dòng chữ chỉ để nói một việc, và trên màn hình điện thoại thì
   ba xe đẩy phần nhập tài xế xuống tận đáy. Giờ nhãn ô biển số làm luôn
   việc của tiêu đề, còn nút bỏ co lại thành dấu ✕ nép ở góc. */
.xeThem{position:relative;margin-top:10px;border:1px solid var(--vien);border-radius:12px;
        padding:10px;background:#f8fafc}
.xeThem .boXe{position:absolute;top:4px;right:4px;z-index:2;
              width:30px;height:30px;padding:0;background:none;border:none;
              display:flex;align-items:center;justify-content:center;
              border-radius:50%;-webkit-tap-highlight-color:transparent}
.xeThem .boXe:active{background:rgba(220,38,38,.12)}
.xeThem .boXe .ic{width:17px;height:17px;stroke:var(--do);stroke-width:2.4}
.xeThem .thanXe{display:flex;gap:10px}
.xeThem .thanXe img{width:84px;height:84px;object-fit:cover;border-radius:9px;flex:0 0 auto;
                    background:#e2e8f0}
.xeThem .oXe{flex:1;min-width:0;padding-right:26px}   /* chừa chỗ cho dấu ✕ */
.xeThem label{font-size:12px;margin-bottom:3px}
.xeThem .o{padding:10px 11px}

/* Trạng thái AI đọc biển số của xe đi kèm */
.aiNho{display:flex;align-items:center;gap:5px;margin-top:5px;
       font-size:11.5px;font-weight:700;line-height:1.3}
.aiNho .ic{width:13px;height:13px;flex:0 0 auto}
.aiNho.dang{color:var(--chinh)}
.aiNho.xong{color:#15803d}
.aiNho.xong .ic{stroke:#15803d;stroke-width:3}
.aiNho.truot{color:var(--mo)}
.aiNho .cham{width:8px;height:8px;border-radius:50%;background:var(--chinh);flex:0 0 auto;
             animation:nhipCham 1s ease-in-out infinite}
@keyframes nhipCham{0%,100%{opacity:.25;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}

.themTen{margin-top:6px;background:none;border:1px dashed var(--vien);border-radius:9px;
         padding:6px 10px;color:var(--mo);font-size:12px;font-weight:700;font-family:inherit;
         display:inline-flex;align-items:center;gap:5px}
.themTen .ic{width:13px;height:13px;stroke:var(--mo)}

/* Biển số xe đi kèm trên thẻ lượt — nhỏ và nhạt hơn biển số chính */
.luot .bien.phu{font-size:15px;font-weight:700;color:var(--mo);letter-spacing:.3px;margin-top:1px}

/* Số đếm ở góc ảnh: cho biết còn ảnh xe khác phía sau */
.oAnh .demAnh{position:absolute;right:6px;bottom:6px;background:rgba(15,23,42,.78);
              color:#fff;font-size:11px;font-weight:800;padding:3px 8px;border-radius:20px;
              letter-spacing:.3px}

/* Giá trị nhiều dòng trong khối xem thông tin (mấy biển số xếp trên dưới) */
.dong .gtri{white-space:pre-line}


/* ---------- Gợi ý số tiền ----------
   Hiện ngay dưới ô đang gõ. Chạm một cái là xong, khỏi đếm số 0 —
   nhầm một số 0 trong ô tiền là sai gấp mười. */
.goiYTien{display:none;gap:7px;margin-top:8px;flex-wrap:wrap}
.goiYTien.hien{display:flex}
.goiYTien button{flex:1 1 auto;min-width:82px;padding:9px 10px;border-radius:9px;
                 border:1px solid var(--chinh);background:var(--chinh-nhat);
                 color:var(--chinh);font-size:14px;font-weight:800;font-family:inherit}
.goiYTien button:active{background:var(--chinh);color:#fff}


/* ---------- "Ai đó đang thao tác" ----------
   Chỗ trống có chấm quay ở đầu danh sách. Cố ý để nó chiếm một khoảng
   đúng bằng một thẻ lượt: mắt nhận ra ngay là "sắp có một lượt ở đây",
   chứ không phải một dòng thông báo trôi qua rồi thôi. */
.oDangLam{display:flex;align-items:center;gap:12px;margin-bottom:10px;
          padding:15px 16px;border-radius:13px;background:var(--chinh-nhat);
          border:1.5px dashed var(--chinh)}
.oDangLam b{display:block;font-size:14.5px;color:var(--chinh);font-weight:800}
.oDangLam small{display:block;margin-top:2px;font-size:12.5px;color:var(--mo)}

.nhanDangSua{display:flex;align-items:center;gap:8px;margin:-2px 0 9px;
             padding:7px 11px;border-radius:9px;background:var(--chinh-nhat);
             color:var(--chinh);font-size:12.5px;font-weight:800}

.quay{flex:0 0 auto;width:17px;height:17px;border-radius:50%;
      border:2.5px solid var(--chinh);border-top-color:transparent;
      animation:quayTron .8s linear infinite}
.nhanDangSua .quay{width:13px;height:13px;border-width:2px}
@keyframes quayTron{to{transform:rotate(360deg)}}


/* Nút lấy ảnh từ thư viện — nhỏ, nép cạnh nút chụp.
   Máy ảnh vẫn là đường chính; đây là lối thoát khi tấm vừa chụp bị loá
   hoặc ảnh đã có sẵn trong máy. */
.btnThuVien{flex:0 0 auto;width:54px;padding:0;border:1.5px solid var(--vien);
            border-radius:12px;background:#fff;display:flex;align-items:center;
            justify-content:center;-webkit-tap-highlight-color:transparent}
.btnThuVien .ic{width:22px;height:22px;stroke:var(--mo)}
.btnThuVien:active{background:var(--chinh-nhat);border-color:var(--chinh)}
.btnThuVien:active .ic{stroke:var(--chinh)}

/* Dòng chi tiết kỹ thuật trong bảng AI — chỉ IT và chủ nhìn thấy */
.bangAI .ktLoi{display:block;margin-top:7px;padding-top:7px;
               border-top:1px dashed rgba(220,38,38,.35);
               font-size:11px;line-height:1.45;font-family:ui-monospace,monospace;
               word-break:break-word;opacity:.85}



/* Khối cano tách riêng khỏi bill ăn — hai luồng tiền khác nhau, có thể
   chi vào hai thời điểm khác nhau. */
.khoiCano{border-left:3px solid var(--chinh)}

/* Khoản cano đã chi được thể hiện như một phép trừ trong công thức; tổng
   phía trên luôn là số tiền thực tế còn phải đưa. */
.boxHH .d.daTru{opacity:.72;font-size:12.5px}
.boxHH .d.mo{opacity:.72;font-size:12.5px}

/* Ghi chú "đã chi cano" dưới số tiền trên thẻ lượt */
/* v3.0.224 (chủ dự án 05/11: "Đã chi và còn chi đang xuống hàng khó đọc, hãy tách làm 2 hàng"): "Đã chi …" và "Còn …" là hai
   span riêng, mỗi span một hàng, không tự ngắt giữa số tiền. */
.luot .ghiCano{display:block;font-size:10.5px;font-weight:700;color:var(--mo);
               margin-top:1px;letter-spacing:.2px;white-space:nowrap;line-height:1.35}
.luot .ghiCano + .ghiCano{margin-top:0}
/* v3.0.224: vỏ khối hoa hồng không đổi bố cục ngoài lưới hai cột (con là phần tử trực tiếp của .phai như trước). */
.luot .khoiHH{display:contents}
.luot .nhanHH{display:none}

/* ---------- Lịch sử thông báo ---------- */
.lopLSTB{z-index:200}
.theLSTB{background:#fff;border-radius:20px 20px 0 0;padding:12px 16px calc(20px + env(safe-area-inset-bottom));max-height:85dvh;display:flex;flex-direction:column}
.dauLSTB{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--vien)}
.tieuDeTB{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:800}
.badgeChuaDoc{background:#ef4444;color:#fff;font-size:11px;font-weight:800;padding:2px 8px;border-radius:12px}
.nutDongTB{border:0;background:#f1f5f9;color:#64748b;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.thanhThaoTacTB{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px dashed var(--vien)}
.btnDocTatCa,.btnXoaTB{border:0;background:none;font-size:12px;font-weight:700;padding:4px 0;cursor:pointer}
.btnDocTatCa{color:var(--chinh)}
.btnXoaTB{color:#ef4444}
.dsLSTB{overflow-y:auto;flex:1;padding-top:8px}
.mucLSTB{padding:12px;border-radius:12px;background:#f8fafc;border:1px solid var(--vien);margin-bottom:8px;cursor:pointer;transition:background .15s ease}
.mucLSTB.chuaDoc{background:#f0fdfa;border-color:#99f6e4;border-left:4px solid var(--teal)}
.mucLSTB:active{background:#e2e8f0}
.dauMucTB{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.badgeLoaiTB{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:6px;background:#e2e8f0;color:#334155}
.badgeLoaiTB.luotMoi{background:#dbeafe;color:#1e40af}
.badgeLoaiTB.capNhat{background:#fef3c7;color:#92400e}
.badgeLoaiTB.tinNhan{background:#d1fae5;color:#065f46}
.badgeLoaiTB.booking{background:#ccfbf1;color:#0f766e}
.tgTB{font-size:11px;color:var(--mo)}
.tieuDeMucTB{font-size:14px;font-weight:700;color:var(--chu)}
.noiDungMucTB{font-size:12.5px;color:var(--mo);margin-top:3px;line-height:1.4}
.thongBaoRong{padding:40px 20px;text-align:center;color:var(--mo);display:flex;flex-direction:column;align-items:center;gap:10px}
.thongBaoRong .ic{stroke:#cbd5e1;width:48px;height:48px}
/* 18/10/2026: chỉ báo tự tải thêm lượt cuối danh sách thu ngân. */
.xemThemTuDong{display:flex;align-items:center;justify-content:center;gap:9px;padding:14px;font-size:13px;color:var(--mo,#64748b)}
.xemThemTuDong .quay{width:16px;height:16px}

/* 20/10/2026 (db/100): check-in QR trên lượt — nút tròn trên thẻ Thu ngân, nút viên thuốc ở form. */
.anh2.coNutCheckin{position:relative}
.nutCheckinThe{position:absolute;right:10px;bottom:10px;z-index:2;width:52px;height:52px;border-radius:999px;border:0;
  display:grid;place-items:center;background:#111;color:#fff;box-shadow:0 6px 16px rgba(15,23,42,.28);cursor:pointer}
.nutCheckinThe .ic{width:24px;height:24px}
.nutCheckinThe.daCheckin,.nutCheckinThe:disabled{background:#cbd5e1;color:#f8fafc;box-shadow:none;cursor:default}
.hangCheckinGon{display:flex;justify-content:flex-end;padding:0 13px 11px}
.hangCheckinGon .nutCheckinThe{position:static;width:44px;height:44px}
.nutQuetCheckin{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:48px;padding:10px 16px;
  border:0;border-radius:999px;background:#111;color:#fff;font-size:15px;font-weight:800;cursor:pointer}
.nutQuetCheckin .ic{width:20px;height:20px;flex:none}
.nutQuetCheckin.daDoc{background:#ecfdf5;color:#047857}
.pDaCheckin{min-height:44px;display:flex;align-items:center;padding:10px 16px;border-radius:999px;background:#ecfdf5;
  color:#047857;font-size:14px;font-weight:700}
.dongCheckinQr .nutQuetCheckin{width:auto;min-height:40px;padding:8px 14px;font-size:14px}
.dongCheckinQr #ctBookingGan{font-weight:800;color:#047857}
.nutGoCheckin{margin-left:10px;min-height:32px;padding:4px 12px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;
  font-size:13px;font-weight:700;color:#b91c1c;cursor:pointer}
/* Dòng "Quét QR" trong chi tiết lượt Thu ngân: cùng bố cục Gửi xe — nhãn trái, nút đen viên thuốc phải. */
html #dongCheckinQr{align-items:center}
html #dongCheckinQr .nutQuetCheckin{justify-self:end;display:inline-flex;align-items:center;gap:10px;width:auto;min-height:48px;
  padding:10px 20px;border:0;border-radius:999px;background:#111;color:#fff;font-size:15px;font-weight:800;white-space:nowrap}
html #dongCheckinQr .nutQuetCheckin .ic{width:20px;height:20px;color:#fff}
/* 20/10/2026 (v3.0.132): nút quét QR trên thẻ nhỏ đi 30% (52→36px, icon 24→17px; xem gọn 44→31px). */
.nutCheckinThe{width:36px;height:36px;right:8px;bottom:8px;box-shadow:0 4px 10px rgba(15,23,42,.25)}
.nutCheckinThe .ic{width:17px;height:17px}
.hangCheckinGon .nutCheckinThe{width:31px;height:31px}
/* 20/10/2026: nút gỡ booking = icon sửa cùng hàng, bên phải tên booking (thay nút chữ "Gỡ" xuống dòng). */
html #dongCheckinQr .hangBookingGan{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
html #dongCheckinQr .hangBookingGan #ctBookingGan{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html #dongCheckinQr .nutGoCheckin{flex:none;margin:0;width:36px;height:36px;min-height:0;padding:0;display:grid;place-items:center;
  border-radius:999px;border:1px solid #e2e8f0;background:#fff;color:#0f172a}
html #dongCheckinQr .nutGoCheckin .ic{width:18px;height:18px}
/* 20/10/2026: thẻ Đi cano Thu ngân dạng gọn như form quyết toán Booking — một khung, ba hàng (nhãn + giá trái,
   bộ đếm phải, vạch ngăn). Đặc hiệu (1,4,1) để thắng luật theme v2/v3 cho .khoiCano .ve. */
html #manCt .the.khoiCano .khungVeGon{background:var(--tn-figma-row,#f8f8f9);border-radius:18px;padding:2px 14px;margin-bottom:12px}
html #manCt .the.khoiCano .khungVeGon .ve{min-height:0;margin:0;padding:10px 0;border:0;border-radius:0;background:transparent;
  display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"ttl dem";align-items:center;gap:10px}
html #manCt .the.khoiCano .khungVeGon .ve+.ve{border-top:1px solid #e5e7eb}
html #manCt .the.khoiCano .khungVeGon .ve .ttl{grid-area:ttl;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:0;min-width:0;margin:0}
html #manCt .the.khoiCano .khungVeGon .nhanVe{font-size:14px;font-weight:850;color:var(--tn-figma-text,#334155);line-height:1.25}
html #manCt .the.khoiCano .khungVeGon .ve .ttl>em{margin:0;font-style:normal;justify-self:start}
html #manCt .the.khoiCano .khungVeGon .nutGia{min-height:28px;padding:0;gap:4px;font-size:12px;font-weight:600;color:#64748b;
  text-decoration:underline dotted;text-underline-offset:3px;background:transparent;justify-content:flex-start}
html #manCt .the.khoiCano .khungVeGon .nutGia .iconChinhGia{width:14px;height:14px}
html #manCt .the.khoiCano .khungVeGon .giaMienPhi{display:inline-block;min-height:28px;line-height:28px;font-size:12px;font-weight:600;color:#64748b;
  text-decoration:underline dotted;text-underline-offset:3px}
html #manCt .the.khoiCano .khungVeGon .demVeThuNgan{grid-area:dem;width:auto;max-width:200px;justify-self:end}
html #manCt .the.khoiCano .khungVeGon .demVeThuNgan{max-width:164px}
html #manCt .the.khoiCano .khungVeGon .ve .ttl>em,html #manCt .the.khoiCano .khungVeGon .nutGia{max-width:none;white-space:nowrap;overflow:visible}
/* 20/10/2026 (v3.0.132): bộ đếm thẻ Đi cano gọn 136px như Booking; tên nhóm một hàng. */
html #manCt .the.khoiCano .khungVeGon .demVeThuNgan{width:136px;max-width:136px;gap:2px}
html #manCt .the.khoiCano .khungVeGon .demVeThuNgan input{min-width:0;width:40px;flex:1 1 40px;text-align:center}
html #manCt .the.khoiCano .khungVeGon .nhanVe{white-space:nowrap}
/* 20/10/2026 (v3.0.132): theme đặt .gtri{display:block} mạnh hơn ⇒ icon sửa rớt dưới tên booking. Hai #id để thắng. */
html #manCt #dongCheckinQr .gtri.hangBookingGan{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
html #manCt #dongCheckinQr .gtri.hangBookingGan #ctBookingGan{flex:1 1 auto;min-width:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* db/103 (v3.0.132): trạng thái duyệt Booking trên lượt + cờ đỏ hoa hồng đổi. */
.chipDuyet{font-size:10.5px;font-weight:800;padding:4px 9px;border-radius:20px;white-space:nowrap}
.chipDuyet.cho{background:#edf2f1;color:#30544e;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.chipDuyet.da{background:#d1fae5;color:#065f46}
.chipDuyet.coDo{background:#dc2626;color:#fff}
html #manCt .dongDuyetBooking .gtri{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;min-width:0}
.dongDuyetBooking .ghiDuyet{font-size:12px;color:#64748b}
html #manCt .dongCoHoaHong{background:#fef2f2;border-radius:12px}
html #manCt .dongCoHoaHong .nhan{color:#b91c1c;font-weight:800}
html #manCt .dongCoHoaHong .gtri{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.dongCoHoaHong .hhDoi{color:#b91c1c;white-space:nowrap}
.nutDuyetLaiHH{min-height:36px;padding:6px 14px;border-radius:999px;border:0;background:#dc2626;color:#fff;font-size:13px;font-weight:800}

/* 20/10/2026 (v3.0.132): hai nút lọc nhanh "Khách đặt" / "Khách ăn" bên phải hàng công cụ Thu ngân. */
html .hangTim .nhomLocKhach{margin-left:auto;display:flex;gap:8px;align-items:center}
html .hangTim .nhomLocKhach .nutLocKhach{min-height:48px;padding:0 16px;border-radius:999px;border:1px solid var(--vien,#e5e7eb);
  background:#fff;color:#0f172a;font:inherit;font-size:14px;font-weight:800;white-space:nowrap}
html .hangTim .nhomLocKhach .nutLocKhach.on{background:#0f172a;border-color:#0f172a;color:#fff}
html .hangTim .nhomLocKhach{gap:6px;flex:0 1 auto;min-width:0}
html .hangTim .nhomLocKhach .nutLocKhach{padding:0 11px;font-size:13px}
/* Nhãn duyệt booking nằm hàng riêng dưới trạng thái — chen vào hàng trạng thái làm biển số gãy dòng ở màn hẹp. */
.luot .hangDuyet{display:flex;justify-content:flex-end;gap:6px;margin-top:4px}
@media (max-width:380px){html .hangTim:has(.nhomLocKhach) .btnTim{flex:0 0 42px;width:42px;min-width:0}html .hangTim .nhomLocKhach .nutLocKhach{padding:0 9px;font-size:12.5px}}
/* v3.0.132: hai nút chữ cao bằng nút icon cùng hàng — co theo hàng, không đặt cứng chiều cao (chủ dự án 20/10/2026). */
html .hangTim .nhomLocKhach{align-self:stretch}
html .hangTim .nhomLocKhach .nutLocKhach{min-height:0;height:100%;box-sizing:border-box}
html .hangTim .nhomLocKhach .nutLocKhach{font-size:12.5px;font-weight:750}
@media (max-width:380px){html .hangTim .nhomLocKhach .nutLocKhach{font-size:12px}}
/* Hai màu riêng (chủ dự án 20/10/2026): Khách đặt xanh dương, Khách ăn cam. Tắt = chữ màu trên nền trắng; bật = nền màu đặc. */
html .hangTim .nhomLocKhach #btnLocKhachDat{color:#1d4ed8;border-color:#bfdbfe;background:#eff6ff}
html .hangTim .nhomLocKhach #btnLocKhachDat.on{color:#fff;border-color:#1d4ed8;background:#1d4ed8}
html .hangTim .nhomLocKhach #btnLocKhachAn{color:#c2410c;border-color:#fed7aa;background:#fff7ed}
html .hangTim .nhomLocKhach #btnLocKhachAn.on{color:#fff;border-color:#ea580c;background:#ea580c}
/* v3.0.132: màu theo chủ dự án — Khách đặt #30544e, Khách ăn #f1dda7. #f1dda7 sáng nên chữ khi bật dùng nâu đậm. */
html .hangTim .nhomLocKhach #btnLocKhachDat{color:#30544e;border-color:#c5d3d0;background:#edf2f1}
html .hangTim .nhomLocKhach #btnLocKhachDat.on{color:#fff;border-color:#30544e;background:#30544e}
html .hangTim .nhomLocKhach #btnLocKhachAn{color:#7a5f17;border-color:#f1dda7;background:#fbf6e9}
html .hangTim .nhomLocKhach #btnLocKhachAn.on{color:#4a3b12;border-color:#f1dda7;background:#f1dda7}

/* Khoảng giữa thẻ bộ đếm và "Tiền vé" = khoảng giữa các ô khác (14px, gap của lưới) — bỏ margin-bottom 12px cộng dồn (chủ dự án 20/10/2026). */
html #manCt .the.khoiCano>.khungVeGon{margin-bottom:0}
/* v3.0.132 (chủ dự án 20/10/2026): thẻ "Số lượng khách" — tiêu đề trái, viên thuốc "Cano ✓" phải (bao trọn chữ + dấu tích).
   Hàng tiêu đề đúng 35px, chữ 12px/850 như tiêu đề các thẻ khác (.the>h2) để khoảng cách đều; viên thuốc cao 35px,
   ô input phủ rộng thêm 5px trên/dưới cho vùng chạm 45px. Bỏ tích = đoàn chỉ ăn: ẩn giá, vé / tiền vé / HH cano = 0. */
html #manCt .khoiCano>.dauKhoiCano{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:35px;margin:0}
html #manCt .khoiCano>.dauKhoiCano>h2{margin:0;min-height:0;font-size:12px;font-weight:850;line-height:14.4px;letter-spacing:-.12px;color:#181818}
html #manCt .khoiCano .chonDiCano{position:relative;display:inline-flex;align-items:center;gap:7px;height:35px;margin:0;padding:0 6px 0 14px;border-radius:999px;
  border:1.5px solid #cbd5e1;background:#fff;color:#64748b;cursor:pointer;box-sizing:border-box;flex:none}
html #manCt .khoiCano .chonDiCano>input{position:absolute;inset:-5px 0;width:100%;height:calc(100% + 10px);opacity:0;margin:0;cursor:pointer}
html #manCt .khoiCano .chonDiCano>.chuDiCano{font-size:14px;font-weight:850;color:inherit}
html #manCt .khoiCano .chonDiCano>.hopChon{width:23px;height:23px;border-radius:999px;border:1.5px solid #cbd5e1;background:#fff;display:grid;place-items:center;box-sizing:border-box}
html #manCt .khoiCano .chonDiCano>.hopChon .ic{width:13px;height:13px;stroke:#111;stroke-width:3;opacity:0}
html #manCt .khoiCano .chonDiCano:has(>input:checked){background:#111;border-color:#111;color:#fff}
html #manCt .khoiCano .chonDiCano:has(>input:checked)>.hopChon{background:#fff;border-color:#fff}
html #manCt .khoiCano .chonDiCano>input:checked~.hopChon .ic{opacity:1}
html #manCt .khoiCano .chonDiCano:has(>input:focus-visible){outline:2px solid #111;outline-offset:2px}
html #manCt .khoiCano[data-di-cano="0"] .nutGia{display:none}
html #manCt .khoiCano[data-di-cano="0"] .ttl[data-ttl-gia]::after{content:"Không tính vé";font-size:12px;color:#94a3b8;font-weight:600}
/* v3.0.132 (chủ dự án 20/10/2026 "Chỉnh sửa lại shape này"): nhãn "… đang sửa lượt này" trên thẻ lượt là viên thuốc gọn
   nằm trong lề thẻ — trước đó tràn hết mép trên, bo 18px chồng bo thẻ thành hình méo. Giữ màu xanh nhạt của theme. */
html .luot>.nhanDangSua{display:inline-flex;width:auto;max-width:calc(100% - 28px);box-sizing:border-box;margin:12px 14px 0;padding:6px 12px 6px 10px;border-radius:999px;font-size:12px;line-height:1.3;gap:7px}
html .luot>.nhanDangSua .quay{width:12px;height:12px;border-width:2px}
/* Màu xanh logo #31554e (logo-nbkh.svg) trên nền nhạt cùng sắc; nằm ở đầu thẻ. */
html .luot>.nhanDangSua,html:not([data-nbkh-ui="v3"]) body .luot>.nhanDangSua{background:#eaf0ef;color:#31554e}
html .luot>.nhanDangSua .quay,html:not([data-nbkh-ui="v3"]) body .luot>.nhanDangSua .quay{border-color:#c5d3d0;border-top-color:#31554e}
/* Ô "… đang thêm lượt" cùng bộ màu xanh logo với nhãn đang sửa (chủ dự án 20/10/2026). */
html .oDangLam,html:not([data-nbkh-ui="v3"]) body .oDangLam{background:#eaf0ef;color:#31554e}
html .oDangLam b,html:not([data-nbkh-ui="v3"]) body .oDangLam b{color:#31554e}
html .oDangLam small,html:not([data-nbkh-ui="v3"]) body .oDangLam small{color:#4a6b64}
html .oDangLam .quay,html:not([data-nbkh-ui="v3"]) body .oDangLam .quay{border-color:#c5d3d0;border-top-color:#31554e}
/* Ô "đang thêm lượt" nằm trong lưới #dsLuot (gap 10px): bỏ margin-bottom 10px cộng dồn — trên 11px / dưới 10px như các thẻ. */
html #dsLuot>.oDangLam{margin:0}

/* db/117 (v3.0.145): ô Mã đoàn ở đầu khối Vé cano — dùng khung .chietKhauCano; lưu chữ hoa (chuanMaDoan). */
#manCt .khoiCano .hangMaDoan input{text-transform:uppercase;font-weight:800;letter-spacing:.3px}

/* db/117 (v3.0.145): chuông BÁO RƯỚC — nút tròn cùng cỡ nút quét QR, nằm ngay TRÊN nút đó (chủ dự án 24/10/2026).
   Chưa báo: nền trắng viền; đang báo: đỏ. Màn gọn: cùng hàng, đứng trước nút QR. */
.nutBaoRuocThe{position:absolute;right:8px;bottom:8px;z-index:2;width:36px;height:36px;border-radius:999px;
  border:1px solid #e2e8f0;display:grid;place-items:center;background:#fff;color:#0f172a;
  box-shadow:0 4px 10px rgba(15,23,42,.18);cursor:pointer}
.nutBaoRuocThe.trenQr{bottom:52px}
.nutBaoRuocThe .ic{width:17px;height:17px}
.nutBaoRuocThe.dangBao{background:#dc2626;border-color:#dc2626;color:#fff;box-shadow:0 4px 12px rgba(220,38,38,.4)}
.hangCheckinGon{gap:8px}
.hangCheckinGon .nutBaoRuocThe{position:static;width:31px;height:31px}
/* Chuông rung khi chạm (chủ dự án 24/10/2026). */
@keyframes chuongRung{0%,100%{transform:rotate(0)}15%{transform:rotate(-18deg)}30%{transform:rotate(16deg)}45%{transform:rotate(-12deg)}
  60%{transform:rotate(9deg)}75%{transform:rotate(-5deg)}90%{transform:rotate(2deg)}}
.nutBaoRuocThe.rung .ic{animation:chuongRung .7s ease-in-out 1;transform-origin:50% 15%}
@media (prefers-reduced-motion:reduce){.nutBaoRuocThe.rung .ic{animation:none}}
/* db/117: giờ lên tàu / đã về trên ảnh đi cano (chủ dự án 24/10/2026): góc DƯỚI-trái, HÀNG NGANG, nền đen trong suốt 50%,
   chữ + icon trắng; icon tàu = lên tàu, icon nhà = đã về. Chừa bên phải cho nút chuông / quét QR; chật quá thì xuống dòng. */
/* Đồng tâm với góc bo ảnh (18px): chip cao 18 (bán kính 9) cách cạnh trái + dưới 9px ⇒ khe ở góc bo cũng 9px (24/10/2026). */
.oAnh .chipMocAnh{position:absolute;left:9px;right:9px;bottom:9px;display:flex;flex-wrap:wrap;align-items:center;gap:3px;
  pointer-events:none;z-index:1}
.anh2.coNutCheckin .oAnh .chipMocAnh{right:30px}
.oAnh .chipMoc{display:inline-flex;align-items:center;gap:2px;height:18px;box-sizing:border-box;padding:0 5px 0 4px;border-radius:9px;font-size:10px;
  font-weight:800;line-height:1.3;white-space:nowrap;font-variant-numeric:tabular-nums;color:#fff;background:rgba(0,0,0,.5)}
.oAnh .chipMoc .ic{width:11px;height:11px;flex:none;stroke:none}
/* 24/10/2026 (chủ dự án): chưa lên tàu ⇒ chỗ chuông là nút XANH icon tàu, Thu ngân bấm "Đã lên tàu" thay tài công. */
.nutBaoRuocThe.nutLenTauThe{background:#047857;border-color:#047857;color:#fff;box-shadow:0 4px 12px rgba(4,120,87,.35)}
.nutBaoRuocThe.nutLenTauThe .ic{width:18px;height:18px}
/* db/121 (v3.0.153, chủ dự án 24/10/2026): nút ĐỎ "Báo cano về" + chuông, bên phải nút tìm kiếm trên thanh đầu Thu ngân.
   Cao bằng nút tìm kiếm cạnh nó; chạm thì chuông rung như chuông báo rước trên thẻ. */
/* v3.0.178: chỉ còn icon chuông — nút tròn 44px, icon 22px như nút Bản đồ, Tìm kiếm cạnh nó (chủ dự án: "cho icon bằng nhau"), nền đỏ. */
header .nutBaoCanoVe{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;
  height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:#dc2626;color:#fff;
  font:inherit;box-shadow:0 4px 12px rgba(220,38,38,.35);cursor:pointer}
header .nutBaoCanoVe .ic{width:22px;height:22px;flex:0 0 auto}
header .nutBaoCanoVe:disabled{opacity:.7}
header .nutBaoCanoVe.rung .ic{animation:chuongRung .7s ease-in-out 1;transform-origin:50% 15%}
@media (prefers-reduced-motion:reduce){header .nutBaoCanoVe.rung .ic{animation:none}}
/* v3.0.166: dải đỏ "Chạm để bật loa báo" của Thu ngân — cùng hình với .tcBatLoa (tai-cong.css). */
.tnBatLoa{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 12px;padding:12px 14px;box-sizing:border-box;border:0;
  border-radius:16px;background:#dc2626;color:#fff;font:inherit;text-align:left;cursor:pointer;box-shadow:0 6px 16px rgba(220,38,38,.35);
  animation:tnBatLoaNhip 1.6s ease-in-out infinite}
.tnBatLoa.an{display:none}
.tnBatLoa .ic{width:26px;height:26px;flex:0 0 auto}
.tnBatLoa span{display:grid;gap:2px;min-width:0}
.tnBatLoa b{font-size:16px;font-weight:850}
.tnBatLoa small{font-size:12px;font-weight:600;opacity:.92;line-height:1.35}
@keyframes tnBatLoaNhip{0%,100%{transform:scale(1)}50%{transform:scale(1.015)}}
@media (prefers-reduced-motion:reduce){.tnBatLoa{animation:none}}

/* v3.0.167: nút "Giữ màn hình sáng khi trực" (js/che-do-truc.js) — Tài công, Thu ngân.
   v3.0.178: một dòng công tắc gọn (cao 44px, trước ~78px); dòng phụ chỉ hiện khi máy không cho giữ sáng. Tắt: nền trắng,
   công tắc xám; bật: công tắc xanh; máy không cho: vàng. */
.cheDoTruc{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;margin:0 0 10px;padding:6px 12px;box-sizing:border-box;
  border:1px solid #e3e8ef;border-radius:14px;background:#fff;color:#374151;font:inherit;text-align:left;cursor:pointer}
.cheDoTruc.an{display:none}
.cheDoTruc svg{width:20px;height:20px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cheDoTruc span{display:grid;gap:1px;min-width:0;flex:1 1 auto}
.cheDoTruc b{font-size:14px;font-weight:700}
.cheDoTruc small{font-size:12px;font-weight:600;line-height:1.3}
.cheDoTruc small:empty{display:none}
.cheDoTrucCongTac{position:relative;flex:0 0 auto;width:40px;height:24px;border-radius:12px;background:#cbd5e1;transition:background .15s}
.cheDoTrucCongTac::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;
  box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.cheDoTruc[aria-pressed="true"] .cheDoTrucCongTac{background:#16a34a}
.cheDoTruc[aria-pressed="true"] .cheDoTrucCongTac::after{transform:translateX(16px)}
.cheDoTruc[data-trang-thai="dang_giu"],.cheDoTruc[data-trang-thai="cho"]{color:#166534;border-color:#bbf7d0}
.cheDoTruc[data-trang-thai="khong_ho_tro"],.cheDoTruc[data-trang-thai="bi_tu_choi"]{background:#fffbeb;border-color:#fcd34d;color:#92400e}
.cheDoTruc[data-trang-thai="khong_ho_tro"] .cheDoTrucCongTac,.cheDoTruc[data-trang-thai="bi_tu_choi"] .cheDoTrucCongTac{background:#d97706}
@media (prefers-reduced-motion:reduce){.cheDoTrucCongTac,.cheDoTrucCongTac::after{transition:none}}

/* v3.0.184: phần tử mới chèn khi nạp lại (tin nhắn, lượt mới) hiện dần thay vì bật ra — danh sách cũ đứng yên. */
@keyframes moiVao{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.luot.moiVao,.bong.moiVao{animation:moiVao .18s ease-out both}
@keyframes moiVaoNho{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
.chipMoc.moiVao,.nutBaoRuocThe.moiVao{animation:moiVaoNho .22s cubic-bezier(.22,1.3,.36,1) both}

/* v3.0.184 (chủ dự án 26/10/2026: "các nút khác cũng có animation"):
   - hộp hỏi / bảng chọn đáy màn trượt lên khi mở, trượt xuống khi đóng (lớp .dong do dongPopup gắn 180ms);
   - nút lún nhẹ khi bấm, đổi màu mượt khi đổi trạng thái (chọn trạng thái, chuông báo rước, nút lên tàu). */
@keyframes nenHien{from{opacity:0}to{opacity:1}}
@keyframes nenAn{from{opacity:1}to{opacity:0}}
@keyframes bangLen{from{transform:translateY(100%)}to{transform:none}}
@keyframes bangXuong{from{transform:none}to{transform:translateY(100%)}}
.lop.hien,.lopCN.hien,.lopLichSuLuot.hien{animation:nenHien .2s ease-out both}
.lop.hien>.popup,.lopCN.hien>*,.lopLichSuLuot.hien>*{animation:bangLen .28s cubic-bezier(.22,1,.36,1) both}
.lop.dong{display:flex;animation:nenAn .18s ease-in both;pointer-events:none}
.lop.dong>.popup{animation:bangXuong .18s ease-in both}
:where(.lop,.lopCN,.lopLichSuLuot,.luot,#manCt,#thanhDuoi,.hangTim) button:not(.latAnh):not(:disabled){
  transition:transform .12s ease,background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}
:where(.lop,.lopCN,.lopLichSuLuot,.luot,#manCt,#thanhDuoi,.hangTim) button:not(.latAnh):not(:disabled):active{transform:scale(.96)}
@media (prefers-reduced-motion:reduce){
  .luot.moiVao,.bong.moiVao,.chipMoc.moiVao,.nutBaoRuocThe.moiVao,
  .lop.hien,.lopCN.hien,.lopLichSuLuot.hien,.lop.hien>.popup,.lopCN.hien>*,.lopLichSuLuot.hien>*,.lop.dong,.lop.dong>.popup{animation:none}
  .lop.dong{display:none}
  :where(.lop,.lopCN,.lopLichSuLuot,.luot,#manCt,#thanhDuoi,.hangTim) button:active{transform:none}
}

/* v3.0.184 (chủ dự án 26/10/2026: "thẻ bến xe vừa thêm lượt, cho màu viền vàng nhạt chạy vòng quanh thẻ… màu nhẹ nhàng thôi"):
   lượt thu ngân chưa xử lý (daXuLyHoaHong = false, the-luot.js) có một vệt vàng nhạt chạy chậm quanh viền. Trình duyệt không có
   @property thì đứng yên thành viền vàng nhạt; giảm chuyển động thì cũng đứng yên. */
@property --goc-vien-moi{syntax:'<angle>';inherits:false;initial-value:0deg}
/* v3.0.185 (chủ dự án 26/10/2026: "thẻ đã chi cũng cho chạy light màu xanh nhẹ nhàng… thẻ huỷ cho mờ đi… chưa chi chạy light
   đỏ"): cùng một vệt viền chạy, màu theo trạng thái — vàng (Bến mới thêm), xanh (Đã chi), đỏ nhạt (Chưa chi). Thẻ Huỷ mờ đi,
   rê chuột hoặc chọn bằng phím thì rõ lại để vẫn đọc được. */
.luot.benMoiThem{--vienChay:rgba(252,211,77,.75);--vienNen:rgba(253,230,138,.12);--vienTinh:rgba(253,230,138,.55)}
.luot.tt-da_chi{--vienChay:rgba(52,211,153,.7);--vienNen:rgba(167,243,208,.12);--vienTinh:rgba(110,231,183,.5)}
.luot.tt-chua_chi{--vienChay:rgba(248,113,113,.7);--vienNen:rgba(254,202,202,.12);--vienTinh:rgba(252,165,165,.5)}
:is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi){position:relative;isolation:isolate}
:is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi)::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:2px;
  pointer-events:none;z-index:1;
  background:conic-gradient(from var(--goc-vien-moi),var(--vienNen) 0deg,var(--vienChay) 50deg,var(--vienNen) 110deg,var(--vienNen) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
  animation:vienMoiChay 4.5s linear infinite}
@keyframes vienMoiChay{to{--goc-vien-moi:360deg}}
/* v3.0.222: thẻ cuộn khuất (the-luot.js theoDoiVienChay gắn .vienNgoai) dừng viền chạy — @property xoay trên luồng chính mỗi
   khung hình cho từng thẻ, kể cả thẻ không thấy; dừng thì trình duyệt không phải tính lại. Thẻ đang thấy vẫn chạy như cũ. */
:is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi).vienNgoai::before{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){:is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi)::before{animation:none;background:var(--vienTinh)}}
/* v3.0.253 (chủ dự án 08/11/2026, ảnh iPhone "Đã có sự cố xảy ra liên tục với …/thungan" khi lướt nhanh mạnh liên tục):
   lớp viền chạy ở trên là ::before phủ kín thẻ, dùng mask-composite + conic-gradient. WebKit dựng một vùng đệm riêng cỡ cả
   thẻ cho mỗi lớp mask (kể cả khi đang dừng); Thu ngân có ~40 thẻ như vậy, lướt mạnh thì iOS hết bộ nhớ và giết tiến trình
   trang. Máy cảm ứng (điện thoại, iPad, APK): bỏ hẳn lớp mask, thay bằng viền tĩnh 2px cùng màu theo trạng thái (outline
   không tạo lớp đồ hoạ). Máy có chuột giữ viền chạy như cũ. */
@media (hover:none) and (pointer:coarse){
  :is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi){isolation:auto;outline:2px solid var(--vienTinh);outline-offset:-2px}
  :is(.luot.benMoiThem,.luot.tt-da_chi,.luot.tt-chua_chi)::before{content:none;animation:none;-webkit-mask:none;mask:none}
}
.luot.tt-huy{opacity:.5;transition:opacity .2s ease}
.luot.tt-huy:is(:hover,:focus-within){opacity:1}

/* db/149 — Công nợ đối tác trên lượt Thu ngân (01/11/2026). Thẻ là con trực tiếp của #manCt để theo luật thẻ V2. */
#khungCongNoDoiTac[hidden]{display:none!important}
.khoiCongNoDoiTac .cnGhi{margin:0;font-size:14px;line-height:1.5;color:var(--mo)}
.khoiCongNoDoiTac .cnGhi b{color:inherit;font-weight:800}
/* v3.0.193: nút theo lớp chuẩn .nutChinh/.nutXam (màu, bo góc của theme); ở đây chỉ kích thước. */
.khoiCongNoDoiTac .nutCnMo,.khoiCongNoDoiTac .nutCnLuu{width:100%;min-height:48px;padding:12px 16px;margin:0}
.khoiCongNoDoiTac .cnNguon{display:block;margin-top:2px;font-size:12px;font-weight:600;color:var(--mo)}
.khoiCongNoDoiTac .nhomCn{display:grid;gap:6px;min-width:0}
.khoiCongNoDoiTac .nhomCn label{font-size:13px;font-weight:700}
.khoiCongNoDoiTac .nhomCn input{width:100%;min-height:48px;font-size:16px}
.khoiCongNoDoiTac .cnTuyChon{font-weight:500;color:var(--mo)}
.khoiCongNoDoiTac .nutCnVeBang{display:inline;width:auto;min-height:0;margin-left:6px;padding:2px 8px;font-size:12px;border-radius:8px}
.khoiCongNoDoiTac .cnKetQua{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:12px 14px;border-radius:14px;background:#f1f5f9;color:#334155;font-size:14px;font-weight:700}
.khoiCongNoDoiTac .cnKetQua b{font-size:20px;font-weight:850}
.khoiCongNoDoiTac .cnKetQua-doiTacNo{background:#fef3c7;color:#92400e}
.khoiCongNoDoiTac .cnKetQua-nhaBeNo{background:#fee2e2;color:#991b1b}
.khoiCongNoDoiTac .cnKetQua-can{background:#dcfce7;color:#166534}
.khoiCongNoDoiTac .cnCanhBao{margin:0;padding:10px 12px;border-radius:12px;background:#fff7ed;color:#9a3412;font-size:13px;line-height:1.45}
.khoiCongNoDoiTac .cnDauVet{margin:0;font-size:12px;color:var(--mo)}
.khoiCongNoDoiTac .hangNutCn{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.khoiCongNoDoiTac .nutCnHuy{flex:none;min-height:48px;padding:0 18px}
.khoiCongNoDoiTac .nutCnBo{width:100%;min-height:44px;border-radius:12px;background:transparent;color:#b91c1c;border:1px solid #fecaca;font-weight:700}
/* db/151 — Khách trả thế nào (tiền mặt / chuyển khoản) trên lượt Thu ngân. */
#khungCachTra[hidden]{display:none!important}
.khoiCachTra .ctGhi{margin:0;font-size:14px;line-height:1.5;color:var(--mo)}
.khoiCachTra .ctNguon{display:block;margin-top:2px;font-size:12px;font-weight:600;color:var(--mo)}
.khoiCachTra .hangNutCt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.khoiCachTra .hangNutCt.motNut{grid-template-columns:1fr}
.khoiCachTra .ctChon{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.khoiCachTra .ctChon .oTich{margin:0;min-width:0}
/* .nutChinh gốc có margin-top:6px; thẻ là lưới có gap nên bỏ, để nút cách trên/dưới đều nhau (chủ dự án 01/11/2026). */
.khoiCachTra .nutCtLuu{width:100%;min-height:48px;padding:12px 16px;margin:0}
.khoiCachTra .nutCtHuy{flex:none;min-height:48px;padding:0 18px}
.khoiCachTra .nhomCt{display:grid;gap:6px;min-width:0}
.khoiCachTra .nhomCt label{font-size:13px;font-weight:700}
.khoiCachTra .nhomCt input{width:100%;min-height:48px;font-size:16px}
.khoiCachTra .ctTuyChon{font-weight:500;color:var(--mo)}
.khoiCachTra .ctKetQua{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:12px 14px;border-radius:14px;background:#f1f5f9;color:#334155;font-size:14px;font-weight:700}
.khoiCachTra .ctKetQua b{font-size:20px;font-weight:850}
.khoiCachTra .ctLoi{color:#b91c1c}
.khoiCachTra .ctCanhBao{margin:0;padding:10px 12px;border-radius:12px;background:#fff7ed;color:#9a3412;font-size:13px;line-height:1.45}
.khoiCachTra .ctDauVet{margin:0;font-size:12px;color:var(--mo)}
.khoiCachTra .ctNhan{margin:0;font-size:13px;font-weight:700}
/* v3.0.221 — TM / CK đã ghi trên thẻ lượt Thu ngân (chủ dự án 05/11/2026: đếm tiền mặt, chuyển khoản cuối ca).
   Viên nhỏ dưới dòng cano: xanh lá = tiền mặt, xanh dương = chuyển khoản - thẻ, vàng = chưa ghi, đỏ = tiền đổi sau lúc ghi. */
/* v3.0.221 (chủ dự án 05/11/2026 "Điều chỉnh lại thiết kế"): khung viền mảnh nền thẻ, nhãn TM/CK nhỏ có màu, số tiền màu
   chữ chính; nhãn và số cùng cỡ 12,5px với dòng meta ("Cho size số bằng nhau") — đọc như một dòng số liệu, không lẫn với nhãn trạng thái nền đặc (.badge "Đã chi", "Chưa chi"). */
.luot .dongTraThe{display:flex;flex-wrap:nowrap;gap:6px;margin-top:8px;min-width:0}
.luot .chipTra{display:inline-flex;align-items:baseline;gap:6px;padding:4px 9px;border:1px solid var(--vien);border-radius:8px;
  background:#fff;font-size:12.5px;line-height:1.25;white-space:nowrap;font-variant-numeric:tabular-nums}
.luot .chipTra i{font-style:normal;font-size:inherit;font-weight:800;letter-spacing:.2px}
.luot .chipTra b{font-weight:400;color:var(--chu);font-variant-numeric:tabular-nums}
.luot .chipTra.tm i{color:#15803d}
.luot .chipTra.ck i{color:#1d4ed8}
.luot .chipTra.chua,.luot .chipTra.lech{font-size:12px;font-weight:700}
.luot .chipTra.chua{border-style:dashed;border-color:#f59e0b;background:#fffbeb;color:#92400e}
.luot .chipTra.lech{border-color:#fca5a5;background:#fef2f2;color:#b91c1c}

/* v3.0.193 — Nút lọc "Đoàn cano": nút tròn cùng hàng với Sắp xếp / Hiển thị / Lịch, icon i-tau của kho (chủ dự án 01/11/2026). */
/* db/153 (v3.0.194): chip "tài công đã nhận chưa" nằm TRONG nút chuông (không nhận chạm — chạm vẫn là bỏ báo).
   Báo rước: bên trái chuông trên thẻ. Báo cano về: dưới chuông ở thanh trên. Xám = đang báo (< 30 giây), xanh = đã nhận,
   đỏ = quá 30 giây chưa ai nhận (thu ngân gọi điện). */
.chipDaNhan{position:absolute;right:calc(100% + 6px);top:50%;transform:translateY(-50%);white-space:nowrap;pointer-events:none;
  font-size:11px;font-weight:700;line-height:1;padding:5px 8px;border-radius:999px;border:1px solid #e2e8f0;
  background:#f8fafc;color:#334155;box-shadow:0 2px 6px rgba(15,23,42,.12)}
.chipDaNhan.da{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.chipDaNhan.chua{background:#dc2626;color:#fff;border-color:#dc2626}
/* 04/11/2026 (chủ dự án): thẻ "Chỉ thông tin" — chuông ngang hàng nút QR; bỏ bottom/right 8px của kiểu nổi trên ảnh (relative vẫn dời 8px). */
.hangCheckinGon .nutBaoRuocThe{position:relative;right:auto;bottom:auto}
header .nutBaoCanoVe{position:relative}
header .nutBaoCanoVe .chipDaNhan{right:auto;left:50%;top:calc(100% + 4px);transform:translateX(-50%);font-size:10px;padding:4px 7px}

/* v3.0.223 (chủ dự án 05/11/2026: "thêm tuỳ chọn ẩn ảnh từ bến xe, chỉ hiện ảnh cano"): Thu ngân chọn "Chỉ ảnh cano" trong
   bảng Cách hiển thị ⇒ thẻ danh sách bỏ ô ảnh xe (the-luot.js gắn .oAnhXe), ô ảnh cano chiếm cả hàng. Ảnh xe vẫn ở chi tiết lượt. */
#dsLuot.chiAnhCano .anh2 .oAnhXe{display:none}
#dsLuot.chiAnhCano .luot .anh2{grid-template-columns:minmax(0,1fr)}

/* v3.0.223 (chủ dự án 05/11/2026: "tối ưu giao diện trên điện thoại của Thu ngân … nhiều dữ liệu trên 1 màn hình nhiều nhất …
   2 cột trên mobile"): danh sách lượt hai cột khi màn hẹp và Thu ngân chọn "Hai cột" (mặc định, the-luot.js haiCotXem). Thẻ gọn
   lại: trạng thái + giờ + tổng lên đầu, biển số nhỏ hơn, lưới bàn/đoàn co theo bề rộng, ảnh và nút nhỏ hơn. Màn rộng không đổi.
   `#dsLuot#dsLuot` cố ý: theme v2 khai #dsLuot là lưới một cột với độ ưu tiên html:not([…]) #dsLuot. */
/* 06/11/2026 (chủ dự án: "Trên mobile bổ sung giao diện lúc xoay màn hình, thể hiện tối ưu nhiều lượt trên 1 màn hình nhất có thể"):
   thẻ gọn của hai cột dùng cả khi điện thoại xoay ngang (cao ≤540px, rộng ≥600px); số cột do the-luot.js tính theo bề rộng. */
@media (max-width:599px), (orientation:landscape) and (max-height:540px) and (min-width:600px){
  #dsLuot#dsLuot.haiCot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:start}
  /* v3.0.224: xếp tầng (the-luot.js xepTangHaiCot) — vị trí từng thẻ do JS đặt, khe 8px như lưới. JS chưa chạy thì vẫn là lưới. */
  #dsLuot#dsLuot.haiCot.xepTang{display:block;position:relative}
  #dsLuot.haiCot.xepTang > *{position:absolute;margin:0;box-sizing:border-box}
  #dsLuot.haiCot > :not(.luot){grid-column:1/-1}
  #dsLuot.haiCot .luot{margin:0;min-width:0;border-radius:12px}
  #dsLuot.haiCot .luot .dau{padding:9px 9px 7px}
  /* v3.0.224 (chủ dự án 05/11/2026: "đưa phần thông tin hoa hồng xuống dưới cùng, đánh dấu màu nền xám"): đầu thẻ là lưới —
     nhãn trạng thái + giờ trên cùng, thông tin xe/khách/TM-CK giữa, khối hoa hồng (.khoiHH) cuối cùng trên nền xám. */
  #dsLuot.haiCot .luot .d1{display:grid;grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:"tt gio" "duyet duyet" "trai trai" "hh hh";align-items:center;gap:3px 6px}
  #dsLuot.haiCot .luot .d1 > :first-child{grid-area:trai;min-width:0}
  #dsLuot.haiCot .luot .phai{display:contents}
  #dsLuot.haiCot .luot .ttHang{grid-area:tt;justify-content:flex-start;min-width:0}
  /* 06/11/2026 (chủ dự án: "Kiểm tra lại giao diện"): cột hẹp ~96px không đủ cho "1 tin nhắn" + nhãn dài ("Đã chi một phần")
     ⇒ nhãn tràn đè giờ. Thẻ có chỉ báo tin nhắn: hàng đầu là chỉ báo + giờ, nhãn trạng thái xuống hàng riêng. */
  #dsLuot.haiCot .luot .d1:has(.ttHang > .con){grid-template-areas:"con gio" "tt tt" "duyet duyet" "trai trai" "hh hh"}
  #dsLuot.haiCot .luot .d1:has(.ttHang > .con) .ttHang{display:contents}
  #dsLuot.haiCot .luot .ttHang > .con{grid-area:con;min-width:0;overflow:hidden;text-overflow:ellipsis}
  #dsLuot.haiCot .luot .d1:has(.ttHang > .con) .ttHang > .badge{grid-area:tt;justify-self:start;max-width:100%}
  #dsLuot.haiCot .luot .hangDuyet{grid-area:duyet}
  #dsLuot.haiCot .luot .gio{grid-area:gio;font-size:11.5px}
  #dsLuot.haiCot .luot .khoiHH{grid-area:hh;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;
    gap:1px 6px;margin-top:5px;padding:6px 8px;border-radius:8px;background:#f1f2f4}
  #dsLuot.haiCot .luot .nhanHH{display:block;font-size:10.5px;font-weight:700;color:var(--mo)}
  #dsLuot.haiCot .luot .hh{justify-self:end;font-size:14.5px;line-height:1.15}
  #dsLuot.haiCot .luot .khoiHH .ghiCano{grid-column:1/-1;margin:0}
  #dsLuot.haiCot .luot .badge{font-size:10.5px;padding:2px 7px}
  #dsLuot.haiCot .luot .bien{font-size:15.5px;letter-spacing:.2px;line-height:1.2;overflow-wrap:anywhere}
  #dsLuot.haiCot .luot .bien.phu{font-size:12.5px}
  #dsLuot.haiCot .luot .ten{font-size:12px;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #dsLuot.haiCot .luot .luoiMeta{grid-template-columns:max-content max-content minmax(0,1fr);column-gap:6px;row-gap:3px;width:100%}
  #dsLuot.haiCot .luot .luoiMeta.khongTien{grid-template-columns:max-content max-content}
  #dsLuot.haiCot .luot :is(.meta,.metaCano){font-size:11.5px;margin-top:5px}
  #dsLuot.haiCot .luot .luoiMeta .o3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #dsLuot.haiCot .luot :is(.meta,.metaCano) svg{width:11px;height:11px}
  #dsLuot.haiCot .luot .dongTraThe{flex-wrap:wrap;gap:4px;margin-top:6px}
  #dsLuot.haiCot .luot .chipTra{font-size:11px;padding:2px 6px;gap:4px;border-radius:6px}
  #dsLuot.haiCot .luot .anh2{gap:5px;padding:0 9px 9px}
  #dsLuot.haiCot .luot .oAnh{border-radius:8px}
  #dsLuot.haiCot .luot .oAnh .trong{font-size:10px;padding:0 4px;line-height:1.3}
  #dsLuot.haiCot .luot .oAnh .trong .ic{width:16px;height:16px}
  #dsLuot.haiCot .luot .oAnh .demAnh{right:3px;bottom:3px;font-size:9.5px;padding:1px 4px}
  #dsLuot.haiCot .luot .oAnh .chipMocAnh{left:3px;right:3px;bottom:3px;gap:2px}
  #dsLuot.haiCot .luot .anh2.coNutCheckin .oAnh .chipMocAnh{right:28px}
  #dsLuot.haiCot .luot .oAnh .chipMoc{height:15px;font-size:9px;padding:0 4px 0 3px}
  #dsLuot.haiCot .luot :is(.nutCheckinThe,.nutBaoRuocThe){width:28px;height:28px;right:12px;bottom:12px}
  #dsLuot.haiCot .luot :is(.nutCheckinThe,.nutBaoRuocThe) .ic{width:14px;height:14px}
  #dsLuot.haiCot .luot .nutBaoRuocThe.trenQr{bottom:44px}
  #dsLuot.haiCot .luot .chat{padding:7px 9px 9px}
  #dsLuot.haiCot .luot .bong .noi{font-size:11.5px;line-height:1.3;padding:5px 8px 4px;border-radius:11px}
  #dsLuot.haiCot .luot .bong .ai{font-size:10.5px;margin-bottom:1px}
  #dsLuot.haiCot .luot .bong .luc{font-size:9px}
  #dsLuot.haiCot .luot .goTin{gap:2px;padding:2px 4px}
  #dsLuot.haiCot .luot .goTin .nutTron{width:26px;height:26px;font-size:14px}
  #dsLuot.haiCot .luot .goTin input{padding:6px 2px;font-size:12.5px}
  /* iPhone Safari phóng to trang khi ô nhập dưới 16px ⇒ chỉ iOS giữ 16px; Android (máy Thu ngân) dùng 12,5px. */
  @supports (-webkit-touch-callout:none){#dsLuot.haiCot .luot .goTin input{font-size:16px}}
}
/* Bố cục hai cột chỉ có tác dụng ở màn hẹp ⇒ màn rộng không hiện nhóm chọn (tránh chọn mà không thấy gì đổi). */
@media (min-width:600px) and (min-height:541px), (min-width:600px) and (orientation:portrait){.nhomCN.nhomBoCuc{display:none}}
/* db/173: quyết toán với đối tác của Booking trong thẻ công nợ lượt. */
.khoiCongNoDoiTac .cnQtBooking{display:grid;gap:6px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--vien,#e2e8f0)}
.khoiCongNoDoiTac .cnQtBooking h3{margin:0;font-size:14px;font-weight:800}
.khoiCongNoDoiTac .cnQtBooking h3 small{display:block;margin-top:2px;font-size:12px;font-weight:500;color:var(--mo)}
/* v3.0.242: thẻ Công nợ đối tác chia vùng Vé cano / Bill ăn khi lượt có bill ăn */
.khoiCongNoDoiTac .cnVung{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--vien,#e2e8f0);border-radius:16px}
.khoiCongNoDoiTac .cnVung h3{margin:0 0 2px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--mo)}
.khoiCongNoDoiTac .cnVung .dong:last-of-type{border-bottom:0}
.khoiCongNoDoiTac .cnTong .gtri{font-weight:800}

/* ===== Điện thoại xoay ngang (06/11/2026, chủ dự án: "Trên mobile bổ sung giao diện lúc xoay màn hình, thể hiện tối ưu nhiều
   lượt trên 1 màn hình nhất có thể"). Chiều cao chỉ còn ~390px nên: thanh tab thành cột dọc bên trái (không chiếm đáy), header thấp
   lại, dải bật loa một dòng, trang bỏ bề rộng tối đa 620px, danh sách lượt nhiều cột xếp tầng (the-luot.js MQ_NGANG).
   Không áp cho trang màn rộng web. (body.mrThuNgan): ở đó máy cảm ứng ≥768px đã có bố cục riêng (man-rong.css). ===== */
@media (orientation:landscape) and (max-height:540px) and (min-width:600px){
  body.coTabApp:not(.mrThuNgan) main{padding-bottom:calc(16px + env(safe-area-inset-bottom));
    padding-left:calc(84px + env(safe-area-inset-left))}
  body:not(.mrThuNgan) main{padding-top:8px}
  body:not(.mrThuNgan) main:has(#dsLuot.haiCot){max-width:none}
  body:not(.mrThuNgan) .tabApp,body:not(.mrThuNgan) .tabApp.neoVV{left:calc(8px + env(safe-area-inset-left));top:50%;bottom:auto;transform:translateY(-50%);
    width:64px;max-width:none;height:auto;flex-direction:column;gap:8px}
  body:not(.mrThuNgan) .tabApp-cum{flex:0 0 auto;width:64px;height:auto;padding:6px;grid-auto-flow:row;grid-auto-rows:46px;grid-auto-columns:auto}
  body:not(.mrThuNgan) .tabApp-muc{height:46px}
  body:not(.mrThuNgan) .tabApp-them{flex:0 0 56px;width:56px;height:56px}
  body:not(.mrThuNgan) .tabApp-them svg{width:24px;height:24px}
  body:not(.mrThuNgan) header{padding-top:calc(6px + env(safe-area-inset-top));padding-bottom:6px;
    padding-left:calc(16px + env(safe-area-inset-left))}
  body:not(.mrThuNgan) header .thuongHieu img{width:34px;height:34px}
  body:not(.mrThuNgan) header .nutTron,body:not(.mrThuNgan) header .nutBaoCanoVe{width:38px;height:38px}
  body:not(.mrThuNgan) .tnBatLoa{padding:7px 12px;margin-bottom:8px}
  body:not(.mrThuNgan) .tnBatLoa small{display:none}
  body:not(.mrThuNgan) .tnBatLoa b{font-size:14px}
  /* Bộ lọc trạng thái và hàng nút lọc chung một dòng; số + nhãn nằm ngang cho thấp. */
  body:not(.mrThuNgan) #manDs:has(> #tomtat):has(> #hangTim){display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);column-gap:10px;align-items:center}
  body:not(.mrThuNgan) #manDs:has(> #tomtat):has(> #hangTim) > *{grid-column:1/-1;min-width:0}
  body:not(.mrThuNgan) #manDs:has(> #tomtat):has(> #hangTim) > #tomtat{grid-column:1;grid-row:2;margin:0 0 8px}
  body:not(.mrThuNgan) #manDs:has(> #tomtat):has(> #hangTim) > #hangTim{grid-column:2;grid-row:2;margin:0 0 8px;overflow-x:auto;scrollbar-width:none}
  body:not(.mrThuNgan) #manDs:has(> #tomtat):has(> #hangTim) > #hangTim .hangTim{justify-content:flex-end;flex-wrap:nowrap}
  html body:not(.mrThuNgan) #tomtat.tomtat .o{min-height:0;height:40px;padding:0 10px;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:5px}
  html body:not(.mrThuNgan) #tomtat.tomtat .o span{width:auto;font-size:11px;line-height:1}
  html body:not(.mrThuNgan) #tomtat.tomtat .o b{font-size:15px;line-height:1}
}

/* ===== Popup thông báo (06/11/2026, js/hop-thong-bao.js) =====
   Điện thoại: tấm trượt từ đáy; từ 768px: khung thả xuống góc phải trên. */
.popTB{position:fixed;inset:0;z-index:1100}
.popTB[hidden]{display:none}
.popTB-nen{position:absolute;inset:0;background:rgba(15,23,42,.38)}
.popTB-hop{position:absolute;left:0;right:0;bottom:0;max-height:min(80dvh,640px);display:flex;flex-direction:column;
  background:#fff;color:var(--chu);border-radius:18px 18px 0 0;box-shadow:0 -10px 32px rgba(15,23,42,.22);
  padding-bottom:env(safe-area-inset-bottom);outline:none;transform:translateY(16px);opacity:0;transition:transform .16s ease,opacity .16s ease}
.popTB.mo .popTB-hop{transform:none;opacity:1}
.popTB-dau{display:flex;align-items:center;gap:4px;padding:10px 8px 8px 16px;border-bottom:1px solid var(--vien)}
.popTB-dau h2{flex:1;margin:0;font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px}
.popTB-dem{min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#dc2626;color:#fff;font-size:12px;font-weight:800;display:inline-grid;place-items:center}
.popTB-dem[hidden]{display:none}
.popTB-nut{width:38px;height:38px;border:0;border-radius:10px;background:transparent;color:var(--mo);display:grid;place-items:center;cursor:pointer}
.popTB-nut:hover{background:#f1f5f9;color:var(--chu)}
.popTB-nut:disabled{opacity:.35;cursor:default;background:transparent}
.popTB-nut svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.popTB-ds{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 0}
.popTB-tin{display:block;width:100%;border:0;background:transparent;text-align:left;font:inherit;color:inherit;
  padding:9px 16px 9px 26px;position:relative;cursor:pointer;border-bottom:1px solid #f1f5f9}
.popTB-tin:hover,.popTB-tin:focus-visible{background:#f8fafc}
.popTB-tin.moi{background:#fff7ed}
.popTB-tin.moi::before{content:"";position:absolute;left:11px;top:15px;width:8px;height:8px;border-radius:50%;background:#ea580c}
.popTB-dong1{display:flex;align-items:baseline;gap:8px;min-width:0}
.popTB-dong1 b{flex:1;min-width:0;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.popTB-tin:not(.moi) .popTB-dong1 b{font-weight:600;color:var(--mo)}
.popTB-dong1 time{flex:0 0 auto;font-size:12px;color:var(--mo);font-variant-numeric:tabular-nums}
.popTB-dong2{display:block;margin-top:2px;font-size:13px;color:var(--mo);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.popTB-trong{margin:0;padding:28px 16px;text-align:center;color:var(--mo);font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.popTB-trong.loi,.popTB-loiNho{color:#b91c1c}
.popTB-loiNho{margin:0;padding:8px 16px;font-size:13px}
.popTB-thuLai{border:1px solid currentColor;background:#fff;color:inherit;border-radius:8px;padding:4px 10px;font:inherit;font-size:13px;cursor:pointer}
.popTB-tatCa{display:block;padding:12px 16px;text-align:center;font-size:14px;font-weight:700;color:var(--chinh);text-decoration:none;border-top:1px solid var(--vien)}
.popTB-tatCa:hover{background:#f8fafc}
body.coPopTB{overflow:hidden}
@media (min-width:768px){
  .popTB-nen{background:transparent}
  .popTB-hop{left:auto;bottom:auto;top:72px;right:16px;width:400px;max-height:min(72vh,620px);
    border-radius:14px;border:1px solid var(--vien);box-shadow:0 18px 44px rgba(15,23,42,.2);transform:translateY(-6px)}
  body.coPopTB{overflow:auto}
}
@media (prefers-reduced-motion:reduce){.popTB-hop{transition:none}}
/* db/176: lịch sử lượt chi tiết — mỗi thay đổi một dòng "cũ → mới" */
.chiTietLichSuLuot{margin:8px 0 0;padding:8px 10px;list-style:none;border-radius:10px;background:#f8fafc;
  display:grid;gap:3px;font-size:12px;line-height:1.45;color:#334155;font-variant-numeric:tabular-nums}
.chiTietLichSuLuot li{min-width:0;overflow-wrap:anywhere}
.chiTietLichSuLuot.laTien{background:#ecfdf5;color:#065f46;font-weight:650}

/* v3.0.244 (chủ dự án 07/11/2026): hàng lọc bill ăn Chưa / Đã thanh toán dưới hàng công cụ, chỉ hiện khi bật Khách ăn. */
html .hangLocTraAn{display:flex;gap:6px;margin:-4px 0 12px;overflow-x:auto;scrollbar-width:none}
html .hangLocTraAn::-webkit-scrollbar{display:none}
html .hangLocTraAn .nutTraAn{flex:1 1 auto;justify-content:center;display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 9px;border-radius:999px;
  border:1px solid #e5e7eb;background:#fff;color:#374151;font:inherit;font-size:12.5px;font-weight:750;white-space:nowrap}
html .hangLocTraAn .nutTraAn b{font-weight:850;color:#111827}
html .hangLocTraAn .nutTraAn.chua{color:#b45309;border-color:#fde68a;background:#fffbeb}
html .hangLocTraAn .nutTraAn.da{color:#047857;border-color:#a7f3d0;background:#ecfdf5}
html .hangLocTraAn .nutTraAn.on{color:#fff;background:#111827;border-color:#111827}
html .hangLocTraAn .nutTraAn.chua.on{background:#b45309;border-color:#b45309}
html .hangLocTraAn .nutTraAn.da.on{background:#047857;border-color:#047857}
html .hangLocTraAn .nutTraAn.on b{color:#fff}
@media (max-width:380px){html .hangLocTraAn .nutTraAn{font-size:12px;padding:0 8px}}
/* v3.0.245 (db/178): chia hoa hồng cho tài xế xe 2 + STK riêng — nằm trong phần "Xe thứ 2" của form tài xế. */
.chiaHhXe2{margin-top:14px;padding-top:12px;border-top:1px dashed var(--vien,#e2e2e2);display:grid;gap:inherit}
.chiaHhXe2.an,.taiKhoanXe2.an{display:none}
.dauChiaXe2{margin:0 2px 2px;font-size:14px;font-weight:800}
.ghiHhXe2{margin:-2px 4px 0;font-size:12.5px;line-height:1.45;color:var(--mo,#6b6b6b)}
.ghiHhXe2.loi{color:#c2410c;font-weight:600}
.taiKhoanXe2{display:grid;gap:inherit}
html #manCt .theThongTinTaiXe #suaTT .truongFigmaDropdownTrucTiep > label[for="fNganHang2"]{position:absolute;width:1px;height:1px;
  margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.nhomChiaXe2{display:contents}

/* v3.0.246 (db/179): ô tích xe trong màn xuất lô chuyển khoản hoa hồng, lô đã xuất trong ngày. */
.mucLo{cursor:pointer;position:relative}
.mucLo .anTich{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.mucLo .dauLo{width:24px;height:24px;border-radius:7px;border:1.5px solid var(--vien);background:#fff;
              display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mucLo .dauLo .ic{width:15px;height:15px;stroke:#fff;stroke-width:3;opacity:0}
.mucLo .anTich:checked + .dauLo{background:var(--chinh);border-color:var(--chinh)}
.mucLo .anTich:checked + .dauLo .ic{opacity:1}
.mucLo .anTich:focus-visible + .dauLo{outline:2px solid var(--chinh);outline-offset:2px}
.mucLo.tat > .chuCN, .mucLo.tat > b, .mucLoDaXuat.tat{opacity:.55}
.mucLo .ghiLoCho{color:var(--cam,#c2410c)}
.hangChonTatCa{gap:8px}
.mucLoDaXuat .hangNutLo,.mucLoDaXuat .hangHuyLo{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.mucLoDaXuat .hangHuyLo.an{display:none}
.mucLoDaXuat .hangHuyLo .o{flex:1;min-width:160px}
.nutNho{padding:7px 12px;font-size:13px;width:auto;white-space:nowrap}
button.mucCN[disabled]{opacity:.5;cursor:not-allowed}

/* db/182 v3.0.253 — khai báo tài xế qua QR tại bến. Chỉ Thu ngân: khung so sổ ↔ khai (tự khớp biển số). */
.khaiBaoThuNgan.an{display:none}
.khaiBaoTieuDe{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:14px}
.khaiBaoTieuDe>span{font-size:12px;color:var(--mo);font-variant-numeric:tabular-nums}
.khaiBaoThuNgan{margin-top:10px;padding:12px;border:1.5px solid var(--chinh);border-radius:12px;background:var(--chinh-nhat);color:var(--chu)}
.khaiBaoThuNgan.canhBao{border-color:var(--cam)}
.khaiBaoCanh{margin:0 0 8px;font-size:13px;color:#9a3412;font-weight:600}
.khaiBaoThuNgan dl{margin:0;display:grid;gap:4px}
.khaiBaoThuNgan dl>div{display:flex;justify-content:space-between;gap:10px;font-size:13.5px}
.khaiBaoThuNgan dt{color:var(--mo)}
.khaiBaoThuNgan dd{margin:0;text-align:right;word-break:break-all}
.khaiBaoThuNgan dd s{color:var(--mo)}
.khaiBaoThuNgan .khac dd b{color:var(--chinh)}
.khaiBaoHanhDong{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:10px}
.khaiBaoKhop{margin-right:auto;font-size:13px;color:var(--luc);font-weight:600}
