/*
 * Zozo eContract - Design System / UI Redesign (FT-027)
 * Nap SAU app.css. Chi them lop trinh bay, khong doi hanh vi/DOM nghiep vu.
 * Cach ly: bien tokens + component moi tien to .zx-*; chi ghi de Metronic o dung diem thuong hieu.
 */

:root {
    /* Thuong hieu Zozo */
    --zx-primary:        #2e6cf6;
    --zx-primary-600:    #245fe0;
    --zx-primary-700:    #1f52c4;
    --zx-primary-soft:   #e9f0fe;
    --zx-primary-soft-2: #f2f6ff;

    /* Trang thai (semantic) */
    --zx-success:        #16a34a;
    --zx-success-soft:   #e7f7ee;
    --zx-warning:        #d98916;
    --zx-warning-soft:   #fdf3e3;
    --zx-danger:         #e5484d;
    --zx-danger-soft:    #fdecec;
    --zx-info:           #0e9bd6;
    --zx-info-soft:      #e6f5fc;
    --zx-neutral:        #6b7280;
    --zx-neutral-soft:   #eef0f3;

    /* Nen gan nhu trang tinh - the/nut/CTA/checkbox tach nhau bang vien + shadow (khong dua vao do sau nen) */
    --zx-bg:             #f8f9fb;
    --zx-surface:        #ffffff;
    --zx-surface-2:      #f8fafc;
    --zx-border:         #e7eaf0;
    --zx-border-strong:  #d7dbe4;

    /* Chu */
    --zx-ink:            #1a2233;
    --zx-ink-2:          #48506b;
    --zx-muted:          #8a92a6;

    /* Hinh khoi */
    --zx-radius:         12px;
    --zx-radius-sm:      9px;
    --zx-radius-pill:    999px;
    --zx-shadow-sm:      0 1px 2px rgba(16,24,40,.05);
    --zx-shadow:         0 4px 16px rgba(16,24,40,.06);
    --zx-shadow-lg:      0 12px 32px rgba(16,24,40,.10);
}

/* ============================================================
 *  0b) GIAO DIEN TOI (item 5) — Metronic dat <html data-theme="dark">.
 *  Chi ghi de token; moi .zx-* dung token nen tu dong doi theo.
 *  "Light"/"trang" dung bang :root mac dinh o tren.
 * ============================================================ */
:root[data-theme="dark"] {
    /* Thuong hieu giu nguyen hue, lam mem lai nen soft cho nen toi */
    --zx-primary:        #4f86ff;
    --zx-primary-600:    #3d78f5;
    --zx-primary-700:    #6f9dff;
    --zx-primary-soft:   rgba(79,134,255,.16);
    --zx-primary-soft-2: rgba(79,134,255,.10);

    /* Trang thai (semantic) - nen soft dang trong suot tren nen toi */
    --zx-success:        #34c46b;
    --zx-success-soft:   rgba(52,196,107,.15);
    --zx-warning:        #e0a53a;
    --zx-warning-soft:   rgba(224,165,58,.15);
    --zx-danger:         #f06a6f;
    --zx-danger-soft:    rgba(240,106,111,.15);
    --zx-info:           #3bb6e6;
    --zx-info-soft:      rgba(59,182,230,.15);
    --zx-neutral:        #9aa3b7;
    --zx-neutral-soft:   rgba(154,163,183,.15);

    /* Nen toi */
    --zx-bg:             #0f1420;
    --zx-surface:        #1a2130;
    --zx-surface-2:      #232b3d;
    --zx-border:         #2b3446;
    --zx-border-strong:  #3a4459;

    /* Chu tren nen toi */
    --zx-ink:            #eef1f7;
    --zx-ink-2:          #c3cad8;
    --zx-muted:          #8791a6;

    /* Do bong dam hon cho nen toi */
    --zx-shadow-sm:      0 1px 2px rgba(0,0,0,.35);
    --zx-shadow:         0 4px 16px rgba(0,0,0,.40);
    --zx-shadow-lg:      0 12px 32px rgba(0,0,0,.50);
}

/* ============================================================
 *  1) NEN TRANG + TYPOGRAPHY CO BAN
 * ============================================================ */
body#kt_body {
    background: var(--zx-bg);
    color: var(--zx-ink-2);
}

/* Tieu de trang */
.page-title .text-dark.fw-bold.fs-1 {
    color: var(--zx-ink);
    letter-spacing: -0.01em;
}

/* ============================================================
 *  2) THUONG HIEU: PRIMARY (nut / link / progress)
 * ============================================================ */
.btn.btn-primary {
    background: var(--zx-primary);
    border-color: var(--zx-primary);
    box-shadow: 0 1px 2px rgba(46,108,246,.25);
    font-weight: 600;
}
.btn.btn-primary:hover,
.btn.btn-primary:focus,
.btn.btn-primary:active {
    background: var(--zx-primary-600) !important;
    border-color: var(--zx-primary-600) !important;
}
.btn.btn-light-primary {
    background: var(--zx-primary-soft);
    color: var(--zx-primary-700);
}
.btn.btn-light-primary:hover {
    background: #dfe9fd;
    color: var(--zx-primary-700);
}
a { color: var(--zx-primary); }
a:hover { color: var(--zx-primary-700); }

/* ============================================================
 *  3) HEADER (top nav)
 * ============================================================ */
#kt_header {
    background: var(--zx-surface);
    border-bottom: 1px solid var(--zx-border);
    box-shadow: var(--zx-shadow-sm);
}
#kt_header .menu-item .menu-link {
    color: var(--zx-ink-2);
    font-weight: 600;
    border-radius: var(--zx-radius-sm);
}
#kt_header .menu-item .menu-link:hover {
    color: var(--zx-primary);
    background: var(--zx-primary-soft-2);
}
#kt_header .menu-item.here > .menu-link,
#kt_header .menu-item .menu-link.active {
    color: var(--zx-primary) !important;
    background: var(--zx-primary-soft) !important;
}

/* ============================================================
 *  4) ASIDE / SIDEBAR TRAI
 * ============================================================ */
#kt_aside {
    background: var(--zx-surface);
    border-right: 1px solid var(--zx-border);
}
#kt_aside .btn.btn-primary {
    border-radius: var(--zx-radius-sm);
    padding-top: .8rem;
    padding-bottom: .8rem;
    font-size: .95rem;
}
#kt_aside .menu-section {
    color: var(--zx-muted) !important;
    letter-spacing: .06em;
    font-size: .68rem !important;
}
#kt_aside .menu .menu-item .menu-link {
    border-radius: var(--zx-radius-sm);
    padding: .62rem .75rem;
    color: var(--zx-ink-2);
    font-weight: 500;
}
#kt_aside .menu .menu-item .menu-link .menu-icon,
#kt_aside .menu .menu-item .menu-link .menu-icon i {
    color: var(--zx-muted);
    font-size: 1.15rem;
}
#kt_aside .menu .menu-item .menu-link:hover {
    background: var(--zx-primary-soft-2);
    color: var(--zx-primary);
}
#kt_aside .menu .menu-item .menu-link:hover .menu-icon i {
    color: var(--zx-primary);
}
#kt_aside .menu .menu-item .menu-link.active {
    background: var(--zx-primary-soft);
    color: var(--zx-primary-700);
    font-weight: 600;
}
#kt_aside .menu .menu-item .menu-link.active .menu-icon i {
    color: var(--zx-primary);
}
#kt_aside .menu-badge {
    margin-left: auto;
    background: var(--zx-neutral-soft);
    color: var(--zx-ink-2);
    font-size: .72rem;
    font-weight: 700;
    min-width: 22px;
    height: 20px;
    padding: 0 7px;
    border-radius: var(--zx-radius-pill);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
#kt_aside .menu .menu-item .menu-link.active .menu-badge {
    background: var(--zx-primary);
    color: #fff;
}

/* The goi cuoc trong sidebar */
.zx-plan-card {
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    background: var(--zx-surface-2);
    padding: 16px;
    margin-top: 18px;
}
.zx-plan-card .zx-plan-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 6px;
}
.zx-plan-card .zx-plan-name { font-weight: 700; color: var(--zx-ink); font-size: .9rem; }
.zx-plan-card .zx-plan-used { font-size: .78rem; color: var(--zx-muted); }
.zx-plan-card .zx-plan-count { font-weight: 700; color: var(--zx-ink); font-size: .8rem; }
.zx-plan-card .zx-plan-bar {
    height: 7px; background: var(--zx-neutral-soft);
    border-radius: var(--zx-radius-pill); overflow: hidden; margin: 8px 0 6px;
}
.zx-plan-card .zx-plan-bar > span {
    display: block; height: 100%;
    background: linear-gradient(90deg, var(--zx-primary), #5b8bff);
    border-radius: inherit;
}
.zx-plan-card .zx-plan-pct { font-size: .76rem; color: var(--zx-muted); }
.zx-plan-card .zx-plan-link {
    display: inline-block; margin-top: 10px; font-size: .82rem; font-weight: 600;
}

/* ============================================================
 *  5) CARD
 * ============================================================ */
.card {
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    box-shadow: var(--zx-shadow-sm);
}
/* The bao danh sach HĐ: vien ro + nen trang + bo goc + tach khoi nen trang */
.card.listing-form {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border) !important;   /* ghi de border-0 cua Bootstrap */
    border-radius: var(--zx-radius);
    box-shadow: var(--zx-shadow);
    overflow: visible;                                /* cho phep tooltip node thoat khoi the */
}
/* Toolbar (search/reset/loc) khong dinh sat vien: them padding + duong ngan cach voi bang */
.card.listing-form > .card-header {
    padding: 16px 20px !important;                    /* ghi de p-0 */
    min-height: auto;
    background: var(--zx-surface);
    border-bottom: 1px solid var(--zx-border);
    border-radius: var(--zx-radius) var(--zx-radius) 0 0;
    gap: 12px;
}
/* Hang phan trang duoi bang: co padding, bo goc duoi */
.card.listing-form > .card-body > .row {
    padding: 14px 20px;
    margin: 0;
    border-top: 1px solid var(--zx-border);
    background: var(--zx-surface-2);
    border-radius: 0 0 var(--zx-radius) var(--zx-radius);
}

/* ============================================================
 *  6) TOOLBAR / BO LOC (trang danh sach)
 * ============================================================ */
.filter-box .form-control-solid,
.filter-box .form-select-solid,
.filter-box .input-group-solid {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-sm);
    color: var(--zx-ink-2);
}
.filter-box .form-control-solid:focus,
.filter-box .form-select-solid:focus {
    border-color: var(--zx-primary);
    box-shadow: 0 0 0 3px var(--zx-primary-soft);
}
.filter-box .input-group-text { background: transparent; border: none; color: var(--zx-muted); }
.btn.btn-reset {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-sm);
    color: var(--zx-ink-2);
}
.btn.btn-reset:hover { border-color: var(--zx-primary); color: var(--zx-primary); }

.zx-toolbar-btn {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-sm);
    color: var(--zx-ink-2);
    font-weight: 600;
    padding: .5rem .95rem;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.zx-toolbar-btn:hover { border-color: var(--zx-primary); color: var(--zx-primary); }

/* ============================================================
 *  7) BANG DANH SACH HOP DONG
 * ============================================================ */
.listing-form .table {
    --bs-table-bg: transparent;
    margin-bottom: 0;
}
.listing-form thead th {
    color: var(--zx-muted) !important;
    font-size: .68rem !important;
    font-weight: 700 !important;
    letter-spacing: .05em;
    padding-top: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--zx-border);
    background: var(--zx-surface-2);
}
.listing-form thead th:first-child { border-top-left-radius: 0; padding-left: 22px; }
.listing-form tbody td { padding-top: 14px; padding-bottom: 14px; vertical-align: middle; }
.listing-form tbody td:first-child { padding-left: 22px; }
.listing-form tbody tr {
    border-bottom: 1px solid var(--zx-border);
    transition: background .12s ease;
}
.listing-form tbody tr:hover { background: var(--zx-primary-soft-2); }

/* Cot ten hop dong */
.zx-doc-cell { display: flex; align-items: flex-start; gap: 12px; }
.zx-doc-thumb {
    flex: 0 0 40px; width: 40px; height: 40px;
    border-radius: 10px;
    background: var(--zx-primary-soft);
    color: var(--zx-primary);
    display: flex; align-items: center; justify-content: center;
}
.zx-doc-thumb i { font-size: 1.25rem; }
.zx-doc-main { min-width: 0; }
.zx-doc-code { font-size: .74rem; color: var(--zx-muted); font-weight: 600; }
.zx-doc-name {
    display: block; color: var(--zx-ink); font-weight: 600; font-size: .95rem;
    margin: 1px 0 4px; line-height: 1.3;
}
a.zx-doc-name:hover { color: var(--zx-primary); }
.zx-doc-tag {
    display: inline-flex; align-items: center;
    background: var(--zx-neutral-soft); color: var(--zx-ink-2);
    font-size: .7rem; font-weight: 600;
    padding: 2px 9px; border-radius: 6px;
}

/* Cot cac ben / nguoi ky (avatar) */
.zx-parties { display: flex; flex-direction: column; gap: 6px; }
.zx-party { display: flex; align-items: center; gap: 8px; }
.zx-avatar {
    flex: 0 0 26px; width: 26px; height: 26px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .68rem; font-weight: 700; color: #fff;
    background: var(--zx-primary);
}
.zx-avatar.zx-av-2 { background: #7c5cff; }
.zx-avatar.zx-more {
    background: var(--zx-neutral-soft); color: var(--zx-ink-2);
    font-size: .66rem;
}
/* Task 2: icon dai dien loai ben (Ca nhan / Doanh nghiep) thay chu cai dau */
.zx-avatar i { font-size: .9rem; line-height: 1; }
.zx-avatar--person { background: var(--zx-primary); }        /* Ca nhan */
.zx-avatar--org    { background: #7c5cff; }                  /* Doanh nghiep */
.zx-party-name { font-size: .86rem; color: var(--zx-ink-2); font-weight: 500; }

/* Cot tien trinh ky */
.zx-progress-cell { min-width: 150px; }
.zx-progress-top {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 5px;
}
.zx-progress-count { font-size: .82rem; font-weight: 700; color: var(--zx-ink); }
.zx-progress-pct { font-size: .78rem; font-weight: 600; color: var(--zx-muted); }
.zx-progress-bar {
    height: 6px; background: var(--zx-neutral-soft);
    border-radius: var(--zx-radius-pill); overflow: hidden;
}
.zx-progress-bar > span {
    display: block; height: 100%; border-radius: inherit;
    background: var(--zx-primary);
}
.zx-progress-bar.is-done > span { background: var(--zx-success); }
.zx-progress-note { font-size: .76rem; color: var(--zx-muted); margin-top: 5px; }
.zx-progress-note.is-danger { color: var(--zx-danger); }

/* FT-027: node cham tien trinh ky tung nguoi (hover xem chi tiet)
   Thanh tien trinh CO DINH DO DAI: nhieu node -> mat do day hon, khong dai hon.
   Node phan bo deu tren track; duong noi mau xanh la (da ky) / xanh Zozo (da xem/duyet). */
.zx-nodes {
    position: relative;
    width: 100%; max-width: 220px; min-width: 96px;
    height: 22px; margin: 6px 0 2px;
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 8px;                     /* chua ban kinh node o 2 dau */
}
.zx-nodes.is-single { justify-content: center; }
/* duong nen xam noi tam node dau -> tam node cuoi (inset = padding 8 + ban kinh 10) */
.zx-track {
    position: absolute; top: 50%; left: 18px; right: 18px;
    height: 2px; transform: translateY(-50%);
    background: var(--zx-border-strong); border-radius: 2px; z-index: 0;
}
/* duong tien trinh mau (gradient do inline style dat theo % da ky/da xem) */
.zx-track-fill {
    position: absolute; top: 50%; left: 18px; right: 18px;
    height: 2px; transform: translateY(-50%);
    border-radius: 2px; z-index: 1;
}
.zx-node {
    position: relative; z-index: 2;
    width: 20px; height: 20px; border-radius: 50%;
    background: var(--zx-neutral-soft);
    border: 2px solid var(--zx-surface);
    box-shadow: 0 0 0 1.5px var(--zx-border-strong);
    display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; outline: none;
    flex: 0 0 auto;
    transition: transform .12s ease;
}
.zx-node:hover, .zx-node:focus { transform: scale(1.2); z-index: 5; }
/* Task 2: icon su kien trong node (trang, tren nen mau theo trang thai) */
.zx-node-ico { font-size: 11px; line-height: 1; color: #fff; }
.zx-node--pending .zx-node-ico { color: var(--zx-muted); }

/* mau theo trang thai (da xem/da duyet = xanh Zozo; da ky = xanh la) */
.zx-node--pending  { box-shadow: 0 0 0 1.5px var(--zx-border-strong); background: var(--zx-neutral-soft); }
.zx-node--sent     { background: var(--zx-warning); box-shadow: 0 0 0 1.5px var(--zx-warning); }
.zx-node--opened   { background: var(--zx-primary); box-shadow: 0 0 0 1.5px var(--zx-primary); }
.zx-node--approved { background: var(--zx-primary); box-shadow: 0 0 0 1.5px var(--zx-primary); }
.zx-node--signed   { background: var(--zx-success); box-shadow: 0 0 0 1.5px var(--zx-success); }
.zx-node--rejected { background: var(--zx-danger);  box-shadow: 0 0 0 1.5px var(--zx-danger); }

/* dot nho trong tooltip */
.zx-node-dot {
    display: inline-block; width: 8px; height: 8px; border-radius: 50%;
    margin-right: 6px; vertical-align: middle; background: var(--zx-neutral-soft);
}
.zx-node-dot.zx-node--pending  { background: var(--zx-neutral); box-shadow: none; }
.zx-node-dot.zx-node--sent     { background: var(--zx-warning); }
.zx-node-dot.zx-node--opened   { background: var(--zx-primary); }
.zx-node-dot.zx-node--approved { background: var(--zx-primary); }
.zx-node-dot.zx-node--signed   { background: var(--zx-success); }
.zx-node-dot.zx-node--rejected { background: var(--zx-danger); }

/* tooltip card (CSS-only, hien khi hover/focus node) */
.zx-node-tip {
    position: absolute; bottom: calc(100% + 10px); left: 50%; transform: translateX(-50%) translateY(4px);
    min-width: 180px; max-width: 260px;
    background: var(--zx-ink); color: #fff;
    border-radius: var(--zx-radius-sm); padding: 9px 11px;
    box-shadow: var(--zx-shadow-lg);
    opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity .12s ease, transform .12s ease;
    z-index: 20; text-align: left; white-space: normal;
}
.zx-node-tip::after {
    content: ""; position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
    border: 6px solid transparent; border-top-color: var(--zx-ink);
}
.zx-node:hover .zx-node-tip, .zx-node:focus .zx-node-tip {
    opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0);
}
.zx-node-tip-name  { display: block; font-weight: 700; font-size: .82rem; line-height: 1.3; }
.zx-node-tip-email { display: block; font-size: .74rem; opacity: .8; margin-top: 1px; word-break: break-all; }
.zx-node-tip-state { display: block; font-size: .74rem; margin-top: 5px; }
.zx-node-tip-time  { display: block; font-size: .72rem; opacity: .7; margin-top: 3px; }

/* Cot ngay / han */
.zx-date-main { font-weight: 600; color: var(--zx-ink); font-size: .86rem; }
.zx-date-sub  { font-size: .78rem; color: var(--zx-muted); }
.zx-date-sub.is-warning { color: var(--zx-warning); }
.zx-date-sub.is-danger  { color: var(--zx-danger); }

/* Chip trang thai (icon + mau + chu) */
.zx-chip {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: .78rem; font-weight: 600;
    padding: 5px 11px; border-radius: var(--zx-radius-pill);
    background: var(--zx-neutral-soft); color: var(--zx-neutral);
    white-space: nowrap;
}
.zx-chip i { font-size: .95rem; line-height: 1; }
.zx-chip--processing { background: var(--zx-primary-soft); color: var(--zx-primary-700); }
.zx-chip--completed  { background: var(--zx-success-soft); color: var(--zx-success); }
.zx-chip--draft      { background: var(--zx-neutral-soft); color: var(--zx-neutral); }
.zx-chip--overdue,
.zx-chip--rejected,
.zx-chip--voided     { background: var(--zx-danger-soft); color: var(--zx-danger); }
.zx-chip--cancelled  { background: var(--zx-neutral-soft); color: var(--zx-neutral); }
.zx-chip--related    { background: var(--zx-info-soft); color: var(--zx-info); }
.zx-chip--waiting    { background: var(--zx-warning-soft); color: var(--zx-warning); }
/* Trang thai chung (Tổ chức/Thành viên/Nhóm quyền: active/suspend/pending) */
.zx-chip--active     { background: var(--zx-success-soft); color: var(--zx-success); }
.zx-chip--suspend,
.zx-chip--blocked    { background: var(--zx-danger-soft); color: var(--zx-danger); }
.zx-chip--pending    { background: var(--zx-warning-soft); color: var(--zx-warning); }
/* FT-030: tone chung (audit log hanh dong) */
.zx-chip--success    { background: var(--zx-success-soft); color: var(--zx-success); }
.zx-chip--danger     { background: var(--zx-danger-soft); color: var(--zx-danger); }
.zx-chip--warning    { background: var(--zx-warning-soft); color: var(--zx-warning); }
.zx-chip--primary    { background: var(--zx-primary-soft); color: var(--zx-primary-700); }
.zx-chip--neutral    { background: var(--zx-neutral-soft); color: var(--zx-neutral); }

/* Nut hanh dong dong ... */
.listing-form .btn.btn-icon {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-sm);
    color: var(--zx-muted);
}
.listing-form .btn.btn-icon:hover { border-color: var(--zx-primary); color: var(--zx-primary); }

/* Pagination */
.pagination .page-link {
    border-radius: var(--zx-radius-sm) !important;
    border: 1px solid var(--zx-border);
    color: var(--zx-ink-2);
    margin: 0 3px;
    min-width: 36px; height: 36px;
    display: inline-flex; align-items: center; justify-content: center;
}
.pagination .page-item.active .page-link {
    background: var(--zx-primary);
    border-color: var(--zx-primary);
    color: #fff;
}

/* Empty state */
.empty-list .material-symbols-rounded {
    display: inline-flex !important;
    font-size: 46px; color: var(--zx-primary);
    background: var(--zx-primary-soft);
    width: 84px; height: 84px; border-radius: 50%;
    align-items: center; justify-content: center; margin-bottom: 12px;
}
.empty-list .line-1 { display: block; color: var(--zx-ink-2); font-weight: 600; }
.empty-list .line-2 { display: block; color: var(--zx-muted); font-size: .86rem; margin-top: 4px; }

/* FT-027: login - input khong bi chim vao nen (item 1) */
body.app-blank .form-control.zx-login-input {
    background-color: var(--zx-surface);
    border: 1px solid var(--zx-border-strong);
    color: var(--zx-ink);
}
body.app-blank .form-control.zx-login-input:focus {
    border-color: var(--zx-primary);
    box-shadow: 0 0 0 3px rgba(46, 108, 246, .12);
}

/* ============================================================
 *  8) DASHBOARD (chuan bi cho buoc ke tiep)
 * ============================================================ */
.zx-hello-title { font-size: 1.9rem; font-weight: 800; color: var(--zx-ink); letter-spacing: -.02em; }
.zx-hello-sub { color: var(--zx-muted); font-size: .98rem; }

.zx-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; }
.zx-stat {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    padding: 18px 18px 16px;
    box-shadow: var(--zx-shadow-sm);
    display: flex; flex-direction: column; gap: 4px;
    position: relative; overflow: hidden;
    transition: transform .12s ease, box-shadow .12s ease;
}
.zx-stat:hover { transform: translateY(-2px); box-shadow: var(--zx-shadow); }
.zx-stat .zx-stat-label { font-size: .82rem; font-weight: 600; color: var(--zx-ink-2); }
.zx-stat .zx-stat-value { font-size: 2rem; font-weight: 800; color: var(--zx-ink); line-height: 1.1; }
.zx-stat .zx-stat-hint { font-size: .76rem; color: var(--zx-muted); }
.zx-stat .zx-stat-ico {
    position: absolute; right: 14px; top: 14px;
    width: 38px; height: 38px; border-radius: 10px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 1.2rem;
}
.zx-stat--primary  { border-top: 3px solid var(--zx-primary); }
.zx-stat--primary  .zx-stat-ico { background: var(--zx-primary-soft); color: var(--zx-primary); }
.zx-stat--warning  { border-top: 3px solid var(--zx-warning); }
.zx-stat--warning  .zx-stat-ico { background: var(--zx-warning-soft); color: var(--zx-warning); }
.zx-stat--danger   { border-top: 3px solid var(--zx-danger); }
.zx-stat--danger   .zx-stat-ico { background: var(--zx-danger-soft); color: var(--zx-danger); }
.zx-stat--success  { border-top: 3px solid var(--zx-success); }
.zx-stat--success  .zx-stat-ico { background: var(--zx-success-soft); color: var(--zx-success); }
.zx-stat--info     { border-top: 3px solid var(--zx-info); }
.zx-stat--info     .zx-stat-ico { background: var(--zx-info-soft); color: var(--zx-info); }
.zx-stat--neutral  { border-top: 3px solid var(--zx-border-strong); }
.zx-stat--neutral  .zx-stat-ico { background: var(--zx-neutral-soft); color: var(--zx-ink-2); }

.zx-panel {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    box-shadow: var(--zx-shadow-sm);
    padding: 20px;
}
.zx-panel-head {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 16px;
}
.zx-panel-title { font-size: 1.05rem; font-weight: 700; color: var(--zx-ink); }

/* ============================================================
 *  9) LUONG TAO HD — Stepper 5 buoc (S3) + Form thong tin (S4)
 * ============================================================ */
/* FT-031: man /build (layout blank) LUON nen trang -> ghim bang light palette
   (khong theo token dark cua Metronic, tranh chu trang tren nen trang).
   Ghi de TRUC TIEP bien Metronic --kt-stepper-* de moi buoc (current/completed/todo)
   deu render mau toi du OS/theme dark. */
.zx-stepper-rail {
    background: #ffffff;
    border-right: 1px solid #e6e9ef;
    --kt-stepper-label-title-color: #48506b;
    --kt-stepper-label-title-color-current: #1a2233;
    --kt-stepper-label-title-color-completed: #48506b;
    --kt-stepper-label-desc-color: #8a92a6;
    --kt-stepper-label-title-opacity: 1;
    --kt-stepper-label-title-opacity-current: 1;
    --kt-stepper-label-title-opacity-completed: 1;
}
.zx-stepper-rail > div { background: #ffffff; }
.zx-stepper-brand { padding: 28px 32px 8px; }
/* FT-031: khoa kich thuoc logo (truoc day tran/cat khi utility h-32px khong ap dung) */
.zx-stepper-brand > a { display: inline-block; }
.zx-stepper-brand img { height: 34px !important; width: auto !important; max-width: 190px; display: block; }
.zx-stepper-brand .zx-stepper-heading {
    font-size: 1.25rem; font-weight: 800; color: #1a2233; margin-top: 18px;
}
.zx-stepper-brand .zx-stepper-sub { font-size: .85rem; color: #48506b; margin-top: 2px; }

.zx-stepper-rail .stepper-nav { flex-direction: column; }
.zx-stepper-rail .stepper-item { padding: 0; }
.zx-stepper-rail .stepper-wrapper { display: flex; align-items: center; }
.zx-stepper-rail .stepper-icon {
    width: 44px; height: 44px;
    border: 1.5px solid var(--zx-border);
    background: var(--zx-surface);
    display: flex; align-items: center; justify-content: center;
    transition: all .15s ease;
}
.zx-stepper-rail .stepper-icon { background: #ffffff; }
.zx-stepper-rail .stepper-icon .stepper-number { color: #8a92a6; font-weight: 700; }
.zx-stepper-rail .stepper-icon .stepper-check { color: #fff; }
/* FT-031: ep nhan buoc luon hien + mau co dinh (rail luon nen trang du OS dark) */
.zx-stepper-rail .stepper-label { display: flex !important; flex-direction: column; margin-left: 14px; opacity: 1 !important; visibility: visible !important; }
.zx-stepper-rail .stepper-title { display: block !important; color: #2b3446 !important; opacity: 1 !important; font-size: .95rem; font-weight: 600; margin: 0; }
.zx-stepper-rail .stepper-desc { display: block !important; color: #5a6379 !important; opacity: 1 !important; font-size: .78rem; margin-top: 3px; }
/* current */
.zx-stepper-rail .stepper-item.current .stepper-icon {
    border-color: var(--zx-primary);
    background: var(--zx-primary-soft);
    box-shadow: 0 0 0 4px var(--zx-primary-soft-2);
}
.zx-stepper-rail .stepper-item.current .stepper-icon .stepper-number { color: var(--zx-primary); }
.zx-stepper-rail .stepper-item.current .stepper-title { color: #1a2233 !important; font-weight: 700; }
/* completed */
.zx-stepper-rail .stepper-item.completed .stepper-icon {
    border-color: var(--zx-primary);
    background: var(--zx-primary);
}
.zx-stepper-rail .stepper-item.completed .stepper-title { color: #48506b !important; }
/* line noi — FT-032 T1: ve bang background (khong border-left) + specificity .stepper-nav + !important
   de khong bi CSS goc Metronic de mat; mau border-strong du dam hien tren nen trang */
.zx-stepper-rail .stepper-nav .stepper-line {
    display: block !important;
    width: 2px !important;
    height: 32px !important;
    min-height: 32px;
    margin: 3px 0 3px 21px !important;
    border: 0 !important;
    background: #b9c1d0 !important;
    border-radius: 2px;
}
.zx-stepper-rail .stepper-nav .stepper-item.completed .stepper-line { background: var(--zx-primary) !important; }

/* FT-032 T1 (v3): buoc CHUA TOI (2,3,4,5) bi "trang tinh" — Metronic an SO & hien CHECK trang (vo hinh
   tren nen trang) + vien --zx-border qua nhat. CHI dong toi buoc CHUA completed: hien SO + an CHECK, vien ro.
   Buoc COMPLETED GIU NGUYEN Metronic (dau check xanh) — KHONG dung inline-flex vao <i> Font Awesome (lam mat glyph). */
.zx-stepper-rail .stepper-icon { border-color: #c2c9d6; }
.zx-stepper-rail .stepper-item:not(.completed) .stepper-icon .stepper-number { display: inline-block !important; opacity: 1 !important; visibility: visible !important; }
.zx-stepper-rail .stepper-item:not(.completed) .stepper-icon .stepper-check { display: none !important; }

/* Form thong tin (S4) */
.zx-form-card {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    box-shadow: var(--zx-shadow-sm);
    padding: 24px;
}
.zx-form-card.zx-form-option { background: var(--zx-surface-2); }
.zx-form .form-label { font-weight: 600; color: var(--zx-ink-2); }
.zx-form .form-control-solid {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-sm);
}
.zx-form .form-control-solid:focus {
    border-color: var(--zx-primary);
    box-shadow: 0 0 0 3px var(--zx-primary-soft);
    background: var(--zx-surface);
}

/* ============================================================
 *  10) TAI TAI LIEU (S5) — dropzone + danh sach tep
 * ============================================================ */
#kt_files_upload.dropzone {
    border: 2px dashed var(--zx-border-strong);
    border-radius: var(--zx-radius);
    background: var(--zx-surface-2);
    padding: 40px 24px;
    transition: border-color .15s ease, background .15s ease;
}
#kt_files_upload.dropzone:hover,
#kt_files_upload.dropzone.dz-drag-hover {
    border-color: var(--zx-primary);
    background: var(--zx-primary-soft-2);
}
#kt_files_upload .dz-message { align-items: center; justify-content: center; }
#kt_files_upload .dz-message h3 { color: var(--zx-ink); }

/* Danh sach tep da tai (markup do create.js sinh — chi to CSS theo cau truc san) */
#documents .d-flex.flex-stack {
    background: var(--zx-surface);
    border: 1px solid var(--zx-border) !important;
    border-radius: var(--zx-radius-sm);
    padding: 12px 16px !important;
    margin-bottom: 10px;
    transition: border-color .12s ease, box-shadow .12s ease;
}
#documents .d-flex.flex-stack:hover {
    border-color: var(--zx-primary) !important;
    box-shadow: var(--zx-shadow-sm);
}
#documents .symbol-35px { width: 40px; height: 40px; }
#documents a { color: var(--zx-ink); }
#documents a:hover { color: var(--zx-primary); }
#documents .btn.btn-danger {
    background: var(--zx-danger-soft);
    color: var(--zx-danger);
    border: none;
    border-radius: var(--zx-radius-sm);
    font-weight: 600;
}
#documents .btn.btn-danger:hover { background: #f9d9da; }

/* ============================================================
 *  11) THIET LAP NGUOI KY (S6) — timeline ben ky + card nguoi ky
 * ============================================================ */
.repeater-signer-list .timeline-item { padding-bottom: 6px; }
.repeater-signer-list .timeline-icon .symbol-label {
    background: var(--zx-primary-soft) !important;
    color: var(--zx-primary);
    font-weight: 800;
    font-size: 1.05rem;
}
.repeater-signer-list .timeline-line { border-left: 2px solid var(--zx-border); }

/* Khoi 1 bo (main-signer) va cac ben tiep (step-signer) = card ro rang */
.repeater-signer-list .main-signer,
.repeater-signer-list .step-signer {
    background: var(--zx-surface) !important;
    border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius);
    box-shadow: var(--zx-shadow-sm);
    padding: 20px !important;
}
.repeater-signer-list .main-signer { border-left: 3px solid var(--zx-primary); }
.repeater-signer-list .step-signer { border-left: 3px solid #7c5cff; }

/* Input trong khoi nguoi ky */
.repeater-signer-list .form-control-solid,
.repeater-signer-list .form-select-solid,
.repeater-signer-list .input-group-solid {
    background: var(--zx-surface-2);
    border: 1px solid var(--zx-border);
}
.repeater-signer-list .form-control:focus { border-color: var(--zx-primary); }
.repeater-signer-list .draggable-handle { color: var(--zx-muted); cursor: grab; }
.repeater-signer-list .draggable-handle:hover { color: var(--zx-primary); }

/* FT-031: hien ro mui ten xo xuong cho select Vai tro (select2 + native fallback) */
.repeater-signer-list .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 100%; top: 0; right: 6px; width: 22px;
    display: flex; align-items: center; justify-content: center;
}
.repeater-signer-list .select2-container--default .select2-selection--single .select2-selection__arrow b {
    position: static; margin: 0; border: 0 !important;
    width: 14px; height: 14px;
    background: no-repeat center / 14px 14px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a92a6' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
}
/* fallback neu la native select (chua kip select2) */
.repeater-signer-list select.form-select-solid {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a92a6' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; background-size: 14px;
    padding-right: 34px;
}

/* Nut them nguoi ky / them toi / them ben ky */
.repeater-signer-list .signer-actions {
    display: flex; gap: 10px; flex-wrap: wrap;
    margin-top: 6px; padding-top: 12px;
    border-top: 1px dashed var(--zx-border);
}
.repeater-signer-list .signer-actions .btn,
.repeater-signer-list .signer-action .btn {
    background: var(--zx-primary-soft);
    color: var(--zx-primary-700);
    border-radius: var(--zx-radius-sm);
    font-weight: 600;
    display: inline-flex; align-items: center; gap: 6px;
}
.repeater-signer-list .signer-actions .btn:hover,
.repeater-signer-list .signer-action .btn:hover { background: #dfe9fd; }
.repeater-signer-list .signer-action {
    border: 1px dashed var(--zx-border-strong);
    border-radius: var(--zx-radius);
    background: var(--zx-surface-2) !important;
    padding: 14px; text-align: center; margin-top: 4px;
}
/* Radio chon loai ben ky (badge-like) */
.repeater-signer-list .form-check-label { font-weight: 500; color: var(--zx-ink-2); }
.repeater-signer-list .badge-light-primary {
    background: var(--zx-primary-soft); color: var(--zx-primary-700);
}

/* ============================================================
 *  12) CHON DOANH NGHIEP / GOI (choose_merchant) — item 2
 * ============================================================ */
.zx-merchant-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px;
}
.zx-merchant-card {
    position: relative; display: flex; align-items: center; gap: 14px;
    padding: 16px 18px; cursor: pointer;
    background: var(--zx-surface); border: 1.5px solid var(--zx-border);
    border-radius: var(--zx-radius); transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
    margin: 0;
}
.zx-merchant-card:hover { border-color: var(--zx-primary); box-shadow: var(--zx-shadow-sm); }
.zx-merchant-radio { position: absolute; opacity: 0; pointer-events: none; }
.zx-merchant-avatar {
    flex: 0 0 auto; width: 46px; height: 46px; border-radius: 12px;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 1.1rem; color: var(--zx-primary);
    background: var(--zx-primary-soft);
}
.zx-merchant-body { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.zx-merchant-name { font-weight: 700; color: var(--zx-ink); line-height: 1.25; }
.zx-merchant-domain { font-size: .8rem; color: var(--zx-muted); margin-top: 1px; word-break: break-all; }
.zx-merchant-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.zx-merchant-plan {
    font-size: .72rem; font-weight: 700; letter-spacing: .02em;
    padding: 2px 9px; border-radius: 20px;
    background: var(--zx-neutral-soft); color: var(--zx-ink-2);
}
.zx-merchant-check {
    position: absolute; top: 12px; right: 14px; font-size: 1.25rem;
    color: var(--zx-primary); opacity: 0; transition: opacity .15s ease;
}
.zx-merchant-card:has(.zx-merchant-radio:checked) {
    border-color: var(--zx-primary); background: var(--zx-primary-soft);
    box-shadow: 0 0 0 3px rgba(46, 108, 246, .12);
}
.zx-merchant-card:has(.zx-merchant-radio:checked) .zx-merchant-check { opacity: 1; }
/* Fallback trinh duyet khong ho tro :has (dung class do JS them neu can) */
.zx-merchant-card.is-checked {
    border-color: var(--zx-primary); background: var(--zx-primary-soft);
    box-shadow: 0 0 0 3px rgba(46, 108, 246, .12);
}
.zx-merchant-card.is-checked .zx-merchant-check { opacity: 1; }

/* ============================================================
 *  13) FOOTER + PHIEN BAN (Task 1) — can le trai + badge version
 * ============================================================ */
/* Footer can bang voi le noi dung (bo lech trai) */
.zx-footer { padding-left: 0; padding-right: 0; }
.zx-footer .menu-item .menu-link { padding-top: 0; padding-bottom: 0; }
/* Badge phien ban hien duoi footer */
.zx-app-version {
    display: inline-flex; align-items: center;
    font-size: .72rem; font-weight: 700; letter-spacing: .01em;
    padding: 1px 8px; border-radius: 20px;
    background: var(--zx-primary-soft); color: var(--zx-primary);
    white-space: nowrap;
}

/* ============================================================
 *  14) THONG KE DASHBOARD (Task 3) — bo loc ky + 3 KPI so sanh
 * ============================================================ */
.zx-period-btn {
    display: inline-flex; align-items: center; gap: 6px;
    background: var(--zx-surface); border: 1.5px solid var(--zx-border);
    border-radius: 8px; padding: 6px 12px;
    font-size: .82rem; font-weight: 600; color: var(--zx-ink-2);
    cursor: pointer; transition: border-color .15s ease, color .15s ease;
}
.zx-period-btn:hover { border-color: var(--zx-primary); color: var(--zx-primary); }
.zx-period-btn i:first-child { font-size: 1rem; }
.zx-period-btn .ri-arrow-down-s-line { font-size: 1.05rem; opacity: .7; }

/* Nhan tong hop inline (khong boxed card, tranh chong lap section donut ben duoi) */
.zx-stat-inline { display: inline-flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.zx-stat-inline-item {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: .82rem; font-weight: 600; color: var(--zx-ink-2); white-space: nowrap;
}
.zx-stat-inline-item b { font-weight: 800; color: var(--zx-ink); }
.zx-stat-inline-item.is-highlight b { color: #16a34a; }
.zx-stat-inline-dot { width: 9px; height: 9px; border-radius: 3px; display: inline-block; }
/* Trang thai dang nap AJAX */
#zx_stats_panel.is-loading { opacity: .55; transition: opacity .15s ease; pointer-events: none; }

/* ============================================================
 *  15) THANH SU DUNG GOI CUOC (Task 4) — bar + canh bao mau
 * ============================================================ */
.zx-plan-bar {
    height: 8px; background: var(--zx-neutral-soft);
    border-radius: var(--zx-radius-pill); overflow: hidden;
}
.zx-plan-bar > span {
    display: block; height: 100%; border-radius: inherit;
    background: linear-gradient(90deg, var(--zx-primary), #5b8bff);
    transition: width .4s ease;
}
.zx-plan-bar.is-warning > span { background: linear-gradient(90deg, #d98916, #f0ad4e); }
.zx-plan-bar.is-danger  > span { background: linear-gradient(90deg, #e5484d, #ff6b6b); }
.zx-plan-bar.is-neutral > span { background: linear-gradient(90deg, #c7ccd6, #dfe3ea); }

/* ============================================================
 *  17) META HOP DONG (Task 7) — nguoi tao + luot xem/tai duoi ten
 * ============================================================ */
.zx-doc-meta {
    display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
    margin-top: 3px;
}
.zx-doc-meta-item {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: .82rem; font-weight: 500; color: var(--zx-muted);
    max-width: 210px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.zx-doc-meta-item i { font-size: .92rem; opacity: .85; }

/* ============================================================
 *  18) NHAT KY THAO TAC / AUDIT LOG (FT-030 Wave C)
 * ============================================================ */
.zx-audit-table thead th {
    color: var(--zx-muted); font-size: .68rem; font-weight: 700; letter-spacing: .05em;
    border-bottom: 1px solid var(--zx-border);
}
.zx-audit-row { cursor: pointer; border-bottom: 1px solid var(--zx-border); transition: background .12s ease; }
.zx-audit-row:hover { background: var(--zx-bg); }
.zx-audit-expand { width: 28px; height: 28px; }
.zx-audit-detail > td { background: var(--zx-bg); padding: 0 !important; }
.zx-audit-detail-box { padding: 14px 18px; border-bottom: 1px solid var(--zx-border); }
.zx-audit-meta {
    display: flex; flex-wrap: wrap; gap: 16px; align-items: center;
    font-size: .8rem; color: var(--zx-ink-2); margin-bottom: 10px;
}
.zx-audit-meta i { opacity: .7; margin-right: 3px; }
.zx-audit-ua { max-width: 100%; word-break: break-all; }
.zx-audit-subtitle {
    font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
    color: var(--zx-muted); margin: 8px 0 6px;
}
.zx-audit-change {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    font-size: .82rem; padding: 3px 0;
}
.zx-audit-field { font-weight: 700; color: var(--zx-ink); min-width: 120px; }
.zx-audit-from {
    background: var(--zx-danger-soft); color: var(--zx-danger);
    padding: 1px 8px; border-radius: 5px; text-decoration: line-through; opacity: .85;
}
.zx-audit-to { background: var(--zx-success-soft); color: var(--zx-success); padding: 1px 8px; border-radius: 5px; }
.zx-audit-change i { color: var(--zx-muted); }
.zx-audit-raw pre {
    background: var(--zx-surface); border: 1px solid var(--zx-border); border-radius: 8px;
    padding: 10px 12px; font-size: .78rem; color: var(--zx-ink-2); margin: 0;
    max-height: 240px; overflow: auto; white-space: pre-wrap; word-break: break-word;
}
/* Thiet bi / hdh / trinh duyet (FT-030 nghien cuu thiet bi) */
.zx-device { display: flex; align-items: center; gap: 8px; min-width: 0; }
.zx-device-ico {
    flex: 0 0 28px; width: 28px; height: 28px; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--zx-neutral-soft); color: var(--zx-ink-2); font-size: 1rem;
}
.zx-device-ico.zx-device--desktop { background: var(--zx-primary-soft); color: var(--zx-primary); }
.zx-device-ico.zx-device--mobile  { background: var(--zx-success-soft); color: var(--zx-success); }
.zx-device-ico.zx-device--tablet  { background: var(--zx-warning-soft); color: var(--zx-warning); }
.zx-device-ico.zx-device--bot     { background: var(--zx-danger-soft); color: var(--zx-danger); }
.zx-audit-device { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.zx-device-chip {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: .8rem; font-weight: 600; color: var(--zx-ink-2);
    background: var(--zx-bg); border: 1px solid var(--zx-border);
    padding: 4px 10px; border-radius: var(--zx-radius-pill);
}
.zx-device-chip i { font-size: .95rem; opacity: .8; }
.zx-audit-ua-raw {
    font-size: .74rem; color: var(--zx-muted); word-break: break-all;
    background: var(--zx-surface); border: 1px solid var(--zx-border);
    border-radius: 6px; padding: 6px 10px; margin-top: 4px;
}
.zx-audit-ua-label { font-weight: 700; color: var(--zx-ink-2); }

/* ============================================================
 *  19) THIET LAP NGUOI KY (S3 /build) — FT-031
 * ============================================================ */
/* Nhan phu tren tung o (Ho ten / Email / Chuc danh / Vai tro) */
.zx-mini-label {
    display: inline-block; font-size: .72rem; font-weight: 700;
    color: var(--zx-muted); text-transform: uppercase; letter-spacing: .02em;
    margin-bottom: 5px;
}
.zx-signer-head .zx-mini-label { margin-bottom: 0; }
.zx-col-action { width: 56px; min-width: 56px; }

/* Radio chon loai ben ky (Ca nhan / To chuc cua toi / To chuc) */
.zx-party-types { row-gap: 8px; }
.zx-type-radio {
    cursor: pointer; padding: 6px 12px; border: 1px solid var(--zx-border);
    border-radius: var(--zx-radius-pill); background: var(--zx-surface);
    transition: border-color .15s ease, background .15s ease; margin-bottom: 0;
}
.zx-type-radio:hover { border-color: var(--zx-primary); }
.zx-type-radio .form-check-input { margin-right: 8px; cursor: pointer; }
.zx-type-radio .form-check-label { cursor: pointer; font-weight: 600; color: var(--zx-ink-2); }
.zx-type-radio .form-check-input:checked ~ .form-check-label { color: var(--zx-primary); }

/* Combobox Chuc danh: input + datalist + nut xo caret */
.zx-combo { position: relative; }
.zx-combo > .form-control { padding-right: 34px; }
.zx-combo::-webkit-calendar-picker-indicator { display: none; }
.zx-combo-caret {
    position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
    color: var(--zx-muted); font-size: 1.1rem; pointer-events: none;
}
/* an mui ten mac dinh cua trinh duyet cho input[list] de dung caret cua ta */
input[list]::-webkit-calendar-picker-indicator { opacity: 0; }

/* Draggable handle dong bo A/B + trash icon-only */
.repeater-signer-list .draggable-handle { color: var(--zx-muted); cursor: grab; }
.repeater-signer-list .draggable-handle:hover { color: var(--zx-primary); }
.repeater-signer-list .zx-col-action .btn-icon { width: 40px; height: 40px; }

/* Responsive: mobile go grid */
@media (max-width: 767px) {
    .zx-doc-cell { gap: 9px; }
    .listing-form thead { display: none; }
    .zx-stepper-rail, .zx-stepper-rail > div { position: static !important; width: 100% !important; }
    .repeater-signer-list .signer-fields .row > .col { flex: 0 0 100%; max-width: 100%; margin-bottom: 8px; }
    .zx-merchant-grid { grid-template-columns: 1fr; }
}
