@charset "UTF-8";
/* ============================================
   NQ Design System
   ============================================ */

/* ---- Arco 色板 ---- */
:root {
  --arcoblue-1: 232,243,255; --arcoblue-2: 190,218,255; --arcoblue-3: 148,191,255;
  --arcoblue-4: 106,161,255; --arcoblue-5: 64,128,255; --arcoblue-6: 22,93,255;
  --arcoblue-7: 14,66,210; --arcoblue-8: 7,44,166; --arcoblue-9: 3,26,121; --arcoblue-10: 0,13,77;
  --green-1: 232,255,234; --green-2: 175,240,181; --green-3: 123,225,136;
  --green-4: 76,210,99; --green-5: 35,195,67; --green-6: 0,180,42;
  --red-1: 255,236,232; --red-2: 253,205,197; --red-3: 251,172,163;
  --red-4: 249,137,129; --red-5: 247,101,96; --red-6: 245,63,63;
  --orange-1: 255,247,232; --orange-2: 255,228,186; --orange-5: 255,154,46; --orange-6: 255,125,0;
  --gray-1: 247,248,250; --gray-2: 242,243,245; --gray-3: 229,230,235;
  --gray-4: 201,205,212; --gray-5: 169,174,184; --gray-6: 134,144,156;
  --gray-7: 107,119,133; --gray-8: 78,89,105; --gray-9: 55,65,81; --gray-10: 29,33,41;
}

/* ---- 语义化 Token ---- */
:root {
  --nq-primary: rgb(var(--arcoblue-6));
  --nq-primary-hover: rgb(var(--arcoblue-5));
  --nq-primary-active: rgb(var(--arcoblue-7));
  --nq-primary-light: rgba(var(--arcoblue-6), 0.1);
  --nq-success: rgb(var(--green-6));
  --nq-success-light: rgba(var(--green-6), 0.1);
  --nq-danger: rgb(var(--red-6));
  --nq-danger-light: rgba(var(--red-6), 0.1);
  --nq-warning: rgb(var(--orange-6));
  --nq-warning-light: rgba(var(--orange-6), 0.1);
  --nq-text-1: rgb(var(--gray-10));
  --nq-text-2: rgb(var(--gray-8));
  --nq-text-3: rgb(var(--gray-6));
  --nq-text-4: rgb(var(--gray-4));
  --nq-border-1: rgb(var(--gray-2));
  --nq-border-2: rgb(var(--gray-3));
  --nq-border-3: rgb(var(--gray-4));
  --nq-fill-1: rgb(var(--gray-1));
  --nq-fill-2: rgb(var(--gray-2));
  --nq-fill-3: rgb(var(--gray-3));
  --nq-fill-4: rgb(var(--gray-4));
  --nq-bg-1: #ffffff;
  --nq-bg-2: #fafafa;
  --nq-bg-3: #f5f5f5;
  --nq-radius: 0;
  --nq-shadow-1: 0 2px 5px rgba(0,0,0,0.05);
  --nq-shadow-2: 0 4px 10px rgba(0,0,0,0.08);
  --nq-shadow-3: 0 8px 20px rgba(0,0,0,0.12);
  --nq-transition: 0.2s ease;
  --nq-font-xs: 12px;
  --nq-font-sm: 13px;
  --nq-font-md: 14px;
  --nq-font-lg: 16px;
  --nq-font-xl: 18px;
}

/* ---- 全局基础 ---- */
body.nq { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; font-size: var(--nq-font-md); color: var(--nq-text-1); line-height: 1.5715; background: var(--nq-bg-2); -webkit-font-smoothing: antialiased; }
body.nq a { color: var(--nq-text-2); transition: color var(--nq-transition); }
body.nq a:hover { color: var(--nq-primary); text-decoration: none; }

/* ---- 按钮 ---- */
body.nq .btn { border-radius: var(--nq-radius); padding: 5px 16px; transition: all var(--nq-transition); border: 1px solid transparent; }
body.nq .btn-sm { padding: 4px 12px; font-size: var(--nq-font-xs); line-height: 20px; }
body.nq .btn:focus,
body.nq .btn.focus { box-shadow: 0 0 0 2px rgba(var(--arcoblue-6), 0.15); }
/* Primary = Arco primary（实色主色按钮） */
body.nq .btn-primary { background-color: rgb(var(--arcoblue-6)); color: #fff; border: 1px solid transparent; }
body.nq .btn-primary:hover,
body.nq .btn-primary:focus { background-color: rgb(var(--arcoblue-5)); color: #fff; border-color: transparent; }
body.nq .btn-primary:active,
body.nq .btn-primary:not(:disabled):not(.disabled):active { background-color: rgb(var(--arcoblue-7)); border-color: transparent; }
body.nq .btn:disabled,
body.nq .btn.disabled { opacity: 1; cursor: not-allowed; }
body.nq .btn-primary:disabled,
body.nq .btn-primary.disabled { background-color: rgba(var(--arcoblue-6), 0.5); color: #fff; border-color: transparent; }
/* btn-group-toggle */
body.nq .btn-group-toggle { display: inline-flex !important; flex-wrap: wrap; gap: 6px; width: auto !important; }
body.nq .btn-group-toggle > .btn-primary,
body.nq .btn-group-toggle > .btn-primary:focus { flex: 0 0 auto; background-color: var(--nq-fill-2); color: var(--nq-text-1); border-color: transparent; border-radius: var(--nq-radius) !important; margin-left: 0 !important; margin-bottom: 0 !important; }
body.nq .btn-group-toggle > .btn-primary:hover:not(.active):not(:disabled),
body.nq .btn-group-toggle > .btn-primary:focus:not(.active) { background-color: var(--nq-fill-3); color: var(--nq-text-1); border-color: transparent; }
body.nq .btn-group-toggle > .btn-primary.active,
body.nq .btn-group-toggle > .btn-primary.active:hover { background-color: var(--nq-primary-light); color: var(--nq-primary); border-color: var(--nq-primary); }
/* Success = Arco primary 变体（绿色） */
body.nq .btn-success { background-color: rgb(var(--green-6)); color: #fff; border: 1px solid transparent; }
body.nq .btn-success:hover { background-color: rgb(var(--green-5)); border-color: transparent; }
body.nq .btn-success:active { background-color: rgb(var(--green-6)); border-color: transparent; }
body.nq .btn-success:disabled,
body.nq .btn-success.disabled { background-color: rgba(var(--green-6), 0.5); color: #fff; border-color: transparent; }
/* Danger = Arco primary 变体（红色） */
body.nq .btn-danger { background-color: rgb(var(--red-6)); color: #fff; border: 1px solid transparent; }
body.nq .btn-danger:hover { background-color: rgb(var(--red-5)); border-color: transparent; }
body.nq .btn-danger:active { background-color: rgb(var(--red-6)); border-color: transparent; }
body.nq .btn-danger:disabled,
body.nq .btn-danger.disabled { background-color: rgba(var(--red-6), 0.5); color: #fff; border-color: transparent; }
/* Warning = Arco primary 变体（橙色） */
body.nq .btn-warning { background-color: rgb(var(--orange-6)); color: #fff; border: 1px solid transparent; }
body.nq .btn-warning:hover { background-color: rgb(var(--orange-5)); border-color: transparent; }
body.nq .btn-warning:active { background-color: rgb(var(--orange-6)); border-color: transparent; }
body.nq .btn-warning:disabled,
body.nq .btn-warning.disabled { background-color: rgba(var(--orange-6), 0.5); color: #fff; border-color: transparent; }
/* Info = Arco primary 变体（蓝色，与 Primary 统一） */
body.nq .btn-info { background-color: rgb(var(--arcoblue-6)); color: #fff; border: 1px solid transparent; }
body.nq .btn-info:hover { background-color: rgb(var(--arcoblue-5)); color: #fff; border-color: transparent; }
body.nq .btn-info:active { background-color: rgb(var(--arcoblue-7)); border-color: transparent; }
body.nq .btn-info:disabled,
body.nq .btn-info.disabled { background-color: rgba(var(--arcoblue-6), 0.5); color: #fff; border-color: transparent; }
/* Secondary = Arco secondary（灰色填充按钮） */
body.nq .btn-secondary { background-color: var(--nq-border-1); color: var(--nq-text-2) !important; border: none !important; }
body.nq .btn-secondary:hover { background-color: var(--nq-border-2); color: var(--nq-text-2) !important; border: none !important; }
body.nq .btn-secondary:active { background-color: var(--nq-border-3); color: var(--nq-text-2) !important; border: none !important; }
body.nq .btn-secondary:not(:disabled):not(.disabled).active,
body.nq .btn-secondary:not(:disabled):not(.disabled):active,
body.nq .show > .btn-secondary.dropdown-toggle { background-color: var(--nq-border-3); color: var(--nq-text-2) !important; border: none !important; }
/* Outline Primary = Arco outline（线框主色按钮） */
body.nq .btn-outline-primary { background-color: transparent; color: rgb(var(--arcoblue-6)); border: 1px solid rgb(var(--arcoblue-6)); }
body.nq .btn-outline-primary:hover { color: rgb(var(--arcoblue-5)); border-color: rgb(var(--arcoblue-5)); background-color: transparent; }
body.nq .btn-outline-primary:active { color: rgb(var(--arcoblue-7)); border-color: rgb(var(--arcoblue-7)); background-color: transparent; }
body.nq .btn-outline-primary:not(:disabled):not(.disabled).active,
body.nq .btn-outline-primary:not(:disabled):not(.disabled):active,
body.nq .show > .btn-outline-primary.dropdown-toggle { color: rgb(var(--arcoblue-7)); background-color: transparent; border-color: rgb(var(--arcoblue-7)); }
/* Outline Light = Arco secondary 变体（灰色线框） */
body.nq .btn-outline-light { background-color: transparent; color: var(--nq-text-2); border: 1px solid var(--nq-border-2); }
body.nq .btn-outline-light:hover { color: var(--nq-text-1); border-color: var(--nq-border-3); background-color: transparent; }
body.nq .btn-outline-light:active { color: var(--nq-text-1); border-color: rgb(var(--gray-5)); background-color: transparent; }
body.nq .btn-outline-light:disabled,
body.nq .btn-outline-light.disabled { color: var(--nq-text-4); border-color: var(--nq-fill-3); cursor: not-allowed; }
/* Light = Arco secondary（用于 header 按钮等） */
body.nq .btn-light { background-color: var(--nq-border-1); color: var(--nq-text-2); border: 1px solid transparent; }
body.nq .btn-light:hover { background-color: var(--nq-border-2); border-color: transparent; }
body.nq .btn-light:not(:disabled):not(.disabled).active,
body.nq .btn-light:not(:disabled):not(.disabled):active,
body.nq .show > .btn-light.dropdown-toggle { background-color: var(--nq-border-3); border-color: transparent; }

/* ---- 表单 ---- */
/* 5a. 表单布局（Arco form-item / form-label-item） */
body.nq .form-group label { font-size: var(--nq-font-md); color: var(--nq-text-1); }
body.nq .col-form-label { font-size: var(--nq-font-md); color: var(--nq-text-1); padding-top: 0; padding-bottom: 0; line-height: 32px; }
@media (max-width: 575.98px) {
  body.nq .col-form-label.text-right { text-align: left !important; margin-bottom: 4px; }
}
body.nq .form-group .form-text { font-size: var(--nq-font-xs); color: var(--nq-text-3); margin-top: 4px; }
body.nq .invalid-feedback { font-size: var(--nq-font-xs); color: var(--nq-danger); min-height: 20px; line-height: 20px; }
body.nq .valid-feedback { font-size: var(--nq-font-xs); color: var(--nq-success); min-height: 20px; line-height: 20px; }
body.nq .form-control.is-valid,
body.nq .was-validated .form-control:valid { border-color: transparent; background-image: none !important; padding-right: 0.75rem !important; }
body.nq .form-control.is-valid:focus,
body.nq .was-validated .form-control:valid:focus { border-color: var(--nq-primary); box-shadow: 0 0 0 0 var(--nq-primary-light); }
body.nq .form-group .required,
body.nq .form-group .arco-form-item-symbol { color: var(--nq-danger); font-size: var(--nq-font-xs); line-height: 1; }
/* 5b. 输入框（Arco input-inner-wrapper） */
body.nq .form-control { box-sizing: border-box; height: 32px; font-size: var(--nq-font-xs); color: var(--nq-text-1); background-color: var(--nq-fill-2); border: 1px solid var(--nq-fill-2); border-radius: var(--nq-radius); transition: color .1s cubic-bezier(0,0,1,1), border-color .1s cubic-bezier(0,0,1,1), background-color .1s cubic-bezier(0,0,1,1); }
body.nq .form-control:hover { background-color: var(--nq-fill-3); border-color: transparent; }
body.nq .form-control:focus { background-color: var(--nq-bg-1); border-color: var(--nq-primary); box-shadow: 0 0 0 0 var(--nq-primary-light); outline: none; }
body.nq .form-control::placeholder { color: var(--nq-text-3); }
body.nq .form-control::-webkit-input-placeholder { color: var(--nq-text-3); }
body.nq .form-control::-moz-placeholder { color: var(--nq-text-3); }
body.nq .form-control.is-invalid { background-color: rgba(var(--red-6), 0.1); border-color: transparent; background-image: none !important; padding-right: 0.75rem !important; }
body.nq .form-control.is-invalid:hover { background-color: rgba(var(--red-6), 0.15); border-color: transparent; }
body.nq .form-control.is-invalid:focus { background-color: var(--nq-bg-2); border-color: var(--nq-danger); box-shadow: 0 0 0 0 rgba(var(--red-6), 0.15); }
/* warning 状态（Arco input-inner-wrapper-warning） */
body.nq .form-control.is-warning { background-color: rgba(var(--orange-6), 0.1); border-color: transparent; background-image: none !important; }
body.nq .form-control.is-warning:hover { background-color: rgba(var(--orange-6), 0.15); border-color: transparent; }
body.nq .form-control.is-warning:focus { background-color: var(--nq-bg-2); border-color: var(--nq-warning); box-shadow: 0 0 0 0 rgba(var(--orange-6), 0.15); }
/* disabled / readonly（Arco input-disabled） */
body.nq .form-control:disabled,
body.nq .form-control[readonly] { background-color: var(--nq-fill-2); color: var(--nq-text-4); -webkit-text-fill-color: var(--nq-text-4); border-color: transparent; cursor: not-allowed; }
body.nq .form-control:disabled:hover,
body.nq .form-control[readonly]:hover { background-color: var(--nq-fill-2); border-color: transparent; }
body.nq .form-control:disabled::placeholder,
body.nq .form-control[readonly]::placeholder { color: var(--nq-text-4); }
body.nq textarea.form-control { height: auto; min-height: 64px; padding: 4px 12px !important; line-height: 1.5715; }
body.nq .input-group-append,
body.nq .input-group-prepend { height: 32px; }
body.nq .input-group-text { height: 32px; font-size: var(--nq-font-md); color: var(--nq-text-1); background-color: var(--nq-fill-2); border: 1px solid transparent; border-radius: var(--nq-radius); padding: 0 12px; display: flex; align-items: center; white-space: nowrap; }
body.nq .input-group-prepend .input-group-text { border-radius: var(--nq-radius) 0 0 var(--nq-radius); border-right: 1px solid var(--nq-fill-3); }
body.nq .input-group-append .input-group-text { border-radius: 0 var(--nq-radius) var(--nq-radius) 0; border-left: 1px solid var(--nq-fill-3); }
body.nq .input-group-prepend .btn { border-radius: var(--nq-radius) 0 0 var(--nq-radius); height: 32px; }
body.nq .input-group-append .btn { border-radius: 0 var(--nq-radius) var(--nq-radius) 0; padding: 0 12px; }
body.nq .input-group > .form-control { border-radius: var(--nq-radius); }
body.nq .input-group > .input-group-prepend ~ .form-control { border-radius: 0 var(--nq-radius) var(--nq-radius) 0; }
body.nq .input-group > .form-control:not(:last-child) { border-radius: var(--nq-radius) 0 0 var(--nq-radius); }
body.nq .input-group > .form-control:focus { z-index: 3; }
body.nq .input-group > .form-control:focus ~ .input-group-append .btn { border-color: var(--nq-primary); }
body.nq label { font-size: var(--nq-font-md); color: var(--nq-text-2); font-weight: 400; margin-bottom: 0; }

/* ---- 卡片 ---- */
body.nq .card { border: 1px solid var(--nq-fill-2); border-radius: var(--nq-radius); box-shadow: none; background: var(--nq-bg-1); transition: box-shadow .2s cubic-bezier(0,0,1,1); overflow: visible; }
body.nq .card-header { background: var(--nq-bg-1); border-bottom: 1px solid var(--nq-fill-2); font-weight: 500; color: var(--nq-text-1); font-size: var(--nq-font-lg); height: 46px; display: flex; align-items: center; padding: 0 16px; }
body.nq .card-body { padding: 16px; color: var(--nq-text-2); }
body.nq .card-title { font-size: 15px; font-weight: normal; color: var(--nq-text-1); margin-top: 0; margin-bottom: 0; line-height: 1.5; }
body.nq .card-title a { color: var(--nq-text-1); }
body.nq .card-title a:hover { color: var(--nq-primary); }
body.nq .card-footer { background-color: var(--nq-bg-1); border-top: 1px solid var(--nq-fill-3); padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; color: var(--nq-text-3); font-size: var(--nq-font-md); }

/* ---- 表格 ---- */
body.nq .table { color: rgb(var(--gray-10)); font-size: var(--nq-font-md); }
body.nq .table thead th { background: var(--nq-fill-2); color: rgb(var(--gray-10)); font-weight: 500; font-size: var(--nq-font-md); border-bottom: none; padding: 9px 16px; white-space: nowrap; line-height: 1.5715; }
body.nq .table td,
body.nq .table th { padding: 9px 16px; border-bottom: 1px solid var(--nq-fill-3); vertical-align: middle; line-height: 1.5715; font-size: var(--nq-font-sm); }
body.nq .table tbody tr:hover td { background: transparent; }
/* 表头 checkbox 对齐 */
body.nq .table th .custom-control,
body.nq .table td .custom-control { min-height: auto; margin-bottom: 0 !important; padding-left: 1.5rem; line-height: 1; }
body.nq .table .custom-control-label::before,
body.nq .table .custom-control-label::after { top: 50%; transform: translateY(-50%); }
/* 排序图标（Arco table-sorter 风格） */
body.nq .table th.pointer { cursor: pointer; user-select: none; }
body.nq .table th.pointer:hover { background: var(--nq-fill-2); }
body.nq .table th .offset-3 { margin-left: 4px !important; display: inline-flex; vertical-align: middle; }
body.nq .table th .offset-3 i { font-size: 12px; color: rgb(var(--gray-5)); line-height: 1; transition: color .1s cubic-bezier(0,0,1,1); }
body.nq .table th .offset-3 i.active { color: rgb(var(--arcoblue-6)); }

/* ---- 徽标/状态 ---- */
body.nq .badge { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border: 1px solid transparent; border-radius: 0; font-size: var(--nq-font-xs); font-weight: 500; line-height: 22px; }
body.nq .badge-primary,
body.nq .badge-info { background: rgb(var(--arcoblue-1)); color: rgb(var(--arcoblue-6)); }
body.nq .badge-success,
body.nq .badge-soft-success { background: rgb(var(--green-1)); color: rgb(var(--green-6)); }
body.nq .badge-danger { background: rgb(var(--red-1)); color: rgb(var(--red-6)); }
body.nq .badge-warning { background: rgb(var(--orange-1)); color: rgb(var(--orange-6)); }
body.nq .badge-light { background: rgb(var(--gray-2)); color: rgb(var(--gray-6)); }
body.nq .badge-secondary { background: var(--nq-fill-3); color: var(--nq-text-2); }
body.nq .badge-dark { background: rgb(var(--gray-8)); color: #fff; }
body.nq .badge-pill { border-radius: 20px; }
body.nq .badge-danger.badge-pill { height: 14px; min-width: 14px; line-height: 14px; padding: 0 4px; font-size: 8px; font-weight: 500; color: #fff; background-color: rgb(var(--red-6)); box-shadow: 0 0 0 2px var(--nq-bg-1); }
/* 通知图标上的徽标定位（Arco badge translate(50%,-50%) 右上角外溢） */
body.nq .noti-icon .badge { position: absolute; top: 16px; right: 0; transform: translate(50%, -50%); transform-origin: 100% 0; }
body.nq .status { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border: 1px solid transparent; border-radius: 0; font-size: var(--nq-font-xs); font-weight: 500; line-height: 22px; color: #fff; }
body.nq .status:before { display: none; }
body.nq .status-active,
body.nq .status-paid,
body.nq .status-success { background-color: rgb(var(--green-1)); border-color: transparent; color: rgb(var(--green-6)); }
body.nq .status-suspended { background-color: rgb(var(--red-1)); border-color: transparent; color: rgb(var(--red-6)); }
body.nq .status-unpaid,
body.nq .status-pending { background-color: rgb(var(--orange-1)); border-color: transparent; color: rgb(var(--orange-6)); }
body.nq .status-cancelled,
body.nq .status-refunded { background-color: rgb(var(--gray-2)); border-color: transparent; color: rgb(var(--gray-6)); }
body.nq .status-deleted { background-color: rgb(var(--gray-2)); border-color: transparent; color: rgb(var(--gray-8)); }
body.nq .status-verifiy_active { background-color: rgb(var(--orange-1)); border-color: transparent; color: rgb(var(--orange-6)); }
body.nq .status-overdue_active { background-color: rgb(var(--arcoblue-1)); border-color: transparent; color: rgb(var(--arcoblue-6)); }
body.nq .status-issue_active { background-color: rgb(var(--green-1)); border-color: transparent; color: rgb(var(--green-6)); }

/* ---- 导航 Tab ---- */
body.nq .nav-pills > li > a, body.nq .nav-tabs > li > a { font-weight: normal; }
body.nq .nav-tabs { position: relative; border-bottom: 1px solid var(--nq-fill-2); }
body.nq .nav-tabs .nav-link { position: relative; color: var(--nq-text-2); font-size: var(--nq-font-md); margin: 0 16px; padding: 8px 0; border: none; border-bottom: 2px solid transparent; border-radius: var(--nq-radius); background: transparent; transition: color .2s cubic-bezier(0,0,1,1); line-height: 1.5715; }
body.nq .nav-tabs .nav-item:first-child .nav-link { margin-left: 16px; }
body.nq .nav-tabs .nav-link:hover { color: rgb(var(--arcoblue-5)); background: transparent; border-bottom-color: transparent; }
body.nq .nav-tabs .nav-link.active { color: rgb(var(--arcoblue-6)); border-bottom-color: transparent; background: transparent; }
body.nq .nav-tabs .nav-link.disabled { color: var(--nq-text-4); cursor: not-allowed; }
body.nq .nav-tabs .nav-link:focus { box-shadow: none; outline: none; }
body.nq .nav-tabs .nq-tabs-ink { position: absolute; bottom: 0; height: 2px; background-color: rgb(var(--arcoblue-6)); transition: left .2s cubic-bezier(.34,.69,.1,1), width .2s cubic-bezier(.34,.69,.1,1); z-index: 1; pointer-events: none; }
body.nq .nav-pills .nav-link { color: var(--nq-text-2); font-size: var(--nq-font-md); padding: 4px 16px; border-radius: 20px; background: transparent; transition: all .2s cubic-bezier(0,0,1,1); line-height: 1.5715; }
body.nq .nav-pills .nav-link:hover { color: var(--nq-text-1); background: var(--nq-fill-2); }
body.nq .nav-pills .nav-link.active { color: rgb(var(--arcoblue-6)); background: rgba(var(--arcoblue-6), 0.1); }
body.nq .nav-pills .nav-link.disabled { color: var(--nq-text-4); cursor: not-allowed; background: transparent; }
body.nq .nav-pills .nav-link:focus { box-shadow: none; outline: none; }

/* ---- 模态框 ---- */
body.nq .modal-backdrop { background-color: rgba(29, 33, 41, 0.6); }
body.nq .modal-backdrop.fade { opacity: 0; transition: opacity .15s ease-out; }
body.nq .modal-backdrop.show { opacity: 1; }
body.nq .modal.fade .modal-dialog { opacity: 0; transform: scale(.5); transition: none; }
body.nq .modal.show .modal-dialog { opacity: 1; transform: scale(1); transition: opacity .25s cubic-bezier(.3,1.3,.3,1), transform .25s cubic-bezier(.3,1.3,.3,1); }
body.nq .modal-content { border: 0 solid var(--nq-fill-3); border-radius: var(--nq-radius); box-shadow: none; background-color: #fff; line-height: 1.5715; position: relative; }
body.nq .modal-header { position: relative; border-bottom: 1px solid var(--nq-fill-3); padding: 0 20px; height: 48px; display: flex; align-items: center; }
body.nq .modal-header .modal-title { flex: 1; text-align: center; }
body.nq .modal-title { font-size: var(--nq-font-lg); font-weight: 500; color: var(--nq-text-1); }
body.nq .modal-body { padding: 24px 20px; color: var(--nq-text-1); font-size: var(--nq-font-md); }
body.nq .modal-footer { border-top: 1px solid var(--nq-fill-3); padding: 16px 20px; text-align: right; }
body.nq .modal-footer .btn + .btn { margin-left: 12px; }
body.nq .modal-header .close { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 28px; height: 28px; padding: 0; margin: 0; z-index: 1; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 400; color: var(--nq-text-2); opacity: 1; text-shadow: none; border: none; background: transparent; border-radius: 50%; cursor: pointer; transition: color .1s cubic-bezier(0,0,1,1), background-color .1s cubic-bezier(0,0,1,1); }
body.nq .modal-header .close:hover { color: var(--nq-text-1); background-color: var(--nq-fill-2); opacity: 1; }
body.nq .modal-header .close:active { background-color: var(--nq-fill-3); }
body.nq .modal-header .close span { line-height: 1; }

/* ---- 提示框 ---- */
body.nq .alert { border-radius: var(--nq-radius); border: 1px solid transparent; font-size: var(--nq-font-md); padding: 8px 15px; display: flex; align-items: center; line-height: 1.5715; color: var(--nq-text-1); }
body.nq .alert-primary { background: rgb(var(--arcoblue-1)); border-color: transparent; color: var(--nq-text-1); }
body.nq .alert-success { background: rgb(var(--green-1)); border-color: transparent; color: var(--nq-text-1); }
body.nq .alert-danger { background: rgb(var(--red-1)); border-color: transparent; color: var(--nq-text-1); }
body.nq .alert-warning { background: rgb(var(--orange-1)); border-color: transparent; color: var(--nq-text-1); }

/* ---- 分页 ---- */
body.nq .pagination .page-link,
body.nq .pagination-sm .page-link { color: var(--nq-text-2); border: 0 solid transparent; border-radius: var(--nq-radius) !important; margin: 0 2px; padding: 0; font-size: var(--nq-font-xs); min-width: 26px; height: 26px; line-height: 26px; text-align: center; background: transparent; transition: color .2s cubic-bezier(0,0,1,1), background-color .2s cubic-bezier(0,0,1,1); }
body.nq .pagination .page-link:hover { color: var(--nq-text-1); border-color: transparent; background: var(--nq-fill-3); }
body.nq .pagination .page-link:focus { box-shadow: none; outline: none; }
body.nq .pagination .page-item.active .page-link { background: rgba(var(--arcoblue-6), 0.1); border-color: transparent; color: rgb(var(--arcoblue-6)); box-shadow: none; font-weight: 500; }
body.nq .pagination .page-item.active .page-link:hover { background: rgba(var(--arcoblue-6), 0.15); color: rgb(var(--arcoblue-6)); }
body.nq .pagination .page-item.disabled .page-link { color: var(--nq-text-4); background: transparent; border-color: transparent; cursor: not-allowed; }
body.nq .pagination .page-item:first-child .page-link:hover,
body.nq .pagination .page-item:last-child .page-link:hover { color: rgb(var(--arcoblue-6)); background: var(--nq-fill-3); }

/* ---- 下拉菜单（Arco dropdown-menu） ---- */
body.nq .dropdown-menu { box-sizing: border-box; max-height: 200px; padding: 4px 0; border: 1px solid var(--nq-fill-3); border-radius: var(--nq-radius); background-color: var(--nq-bg-1); box-shadow: 0 4px 10px rgba(0,0,0,.1); overflow: auto; min-width: 100% !important; margin-top: 4px; }
body.nq .dropdown-item { position: relative; box-sizing: border-box; width: 100%; height: 36px; padding: 0 12px; font-size: var(--nq-font-md); line-height: 36px; text-align: left; cursor: pointer; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--nq-text-1); background-color: transparent; border-radius: var(--nq-radius); transition: all .1s cubic-bezier(0,0,1,1); }
body.nq .dropdown-item:hover { color: var(--nq-text-1); background-color: var(--nq-fill-2); }
body.nq .dropdown-item.active { color: var(--nq-primary); background-color: var(--nq-fill-2); font-weight: 500; }
body.nq .dropdown-item:active { color: var(--nq-text-1); background-color: var(--nq-fill-2); }
body.nq .dropdown-item.active:hover { color: var(--nq-primary); background-color: var(--nq-fill-2); }
body.nq .dropdown-item:active:hover { background-color: var(--nq-fill-2); }
body.nq .dropdown-item.disabled,
body.nq .dropdown-item:disabled { color: var(--nq-text-4); background-color: transparent; cursor: not-allowed; }
body.nq .dropdown-item a,
body.nq .dropdown-item a:hover,
body.nq .dropdown-item a:focus,
body.nq .dropdown-item a:active { color: inherit; cursor: inherit; text-decoration: none; }
body.nq .dropdown-header { padding: 0 12px; line-height: 20px; font-size: var(--nq-font-xs); color: var(--nq-text-3); margin-top: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.nq .dropdown-divider { border-color: var(--nq-fill-3); margin: 4px 0; }

/* ---- Tooltip ---- */
body.nq .tooltip-inner { background-color: rgb(var(--gray-10)); color: #fff; border-radius: var(--nq-radius); font-size: var(--nq-font-xs); padding: 4px 8px; word-wrap: break-word; text-align: start; max-width: 250px; }
body.nq .tooltip.bs-tooltip-top .arrow::before { border-top-color: rgb(var(--gray-10)); }
body.nq .tooltip.bs-tooltip-bottom .arrow::before { border-bottom-color: rgb(var(--gray-10)); }
body.nq .tooltip.bs-tooltip-left .arrow::before { border-left-color: rgb(var(--gray-10)); }
body.nq .tooltip.bs-tooltip-right .arrow::before { border-right-color: rgb(var(--gray-10)); }

/* ---- Popover 气泡卡片（Arco popover / popconfirm） ---- */
body.nq .popover { background-color: var(--nq-bg-1); border: 1px solid var(--nq-fill-3); border-radius: var(--nq-radius); box-shadow: 0 4px 10px rgba(0,0,0,.1); font-size: var(--nq-font-md); color: var(--nq-text-2); word-wrap: break-word; }
body.nq .popover-header { font-size: var(--nq-font-lg); font-weight: 500; color: var(--nq-text-1); background-color: var(--nq-bg-1); border-bottom: 1px solid var(--nq-fill-3); padding: 12px 16px; margin: 0; line-height: 1.5; }
body.nq .popover-body { padding: 12px 16px; color: var(--nq-text-2); }
body.nq .bs-popover-top > .arrow::after { border-top-color: var(--nq-bg-1); }
body.nq .bs-popover-bottom > .arrow::after { border-bottom-color: var(--nq-bg-1); }
body.nq .bs-popover-left > .arrow::after { border-left-color: var(--nq-bg-1); }
body.nq .bs-popover-right > .arrow::after { border-right-color: var(--nq-bg-1); }
body.nq .bs-popover-top > .arrow::before { border-top-color: var(--nq-fill-3); }
body.nq .bs-popover-bottom > .arrow::before { border-bottom-color: var(--nq-fill-3); }
body.nq .bs-popover-left > .arrow::before { border-left-color: var(--nq-fill-3); }
body.nq .bs-popover-right > .arrow::before { border-right-color: var(--nq-fill-3); }

/* ---- Collapse 折叠面板（Arco collapse） ---- */
body.nq .accordion .card { border: 1px solid var(--nq-fill-3); border-radius: var(--nq-radius); margin-bottom: 0; overflow: hidden; }
body.nq .accordion .card:first-child { border-radius: var(--nq-radius) var(--nq-radius) 0 0; }
body.nq .accordion .card:last-child { border-radius: 0 0 var(--nq-radius) var(--nq-radius); }
body.nq .accordion .card + .card { border-top: none; }
body.nq .accordion .card-header { display: flex; align-items: center; justify-content: space-between; position: relative; padding: 8px 13px; background-color: var(--nq-bg-2); border-bottom: 1px solid transparent; color: var(--nq-text-1); cursor: pointer; font-size: var(--nq-font-md); line-height: 24px; height: auto; transition: border-color 0s ease .19s; }
body.nq .accordion .card-header:hover { background-color: var(--nq-bg-2); }
body.nq .accordion .card-header[aria-expanded="true"] { background-color: var(--nq-bg-2); border-color: var(--nq-fill-3); font-weight: 500; transition: border-color 0s ease 0s; }
body.nq .accordion .card-header .arco-collapse-item-header-icon,
body.nq .accordion .card-header .collapse-icon { color: rgb(var(--gray-7)); font-size: 14px; transition: transform .2s cubic-bezier(.34,.69,.1,1); }
body.nq .accordion .card-header[aria-expanded="true"] .collapse-icon { transform: rotate(90deg); }
body.nq .accordion .card-body { padding: 8px 13px 8px 34px; color: var(--nq-text-1); }
body.nq .accordion .card-header.disabled { cursor: not-allowed; color: var(--nq-text-4); background-color: var(--nq-bg-2); }

/* ---- 进度条 ---- */
body.nq .progress { height: 8px; border-radius: 100px; background-color: var(--nq-fill-3); overflow: hidden; }
body.nq .progress-bar { background-color: var(--nq-primary); border-radius: 100px; transition: width .6s cubic-bezier(0,0,1,1); animation: nq-progress-grow .8s cubic-bezier(0,0,1,1); }
@keyframes nq-progress-grow { from { max-width: 0; } to { max-width: 100%; } }
body.nq .progress-bar.bg-success { background-color: var(--nq-success) !important; }
body.nq .progress-bar.bg-danger { background-color: var(--nq-danger) !important; }
body.nq .progress-bar.bg-warning { background-color: var(--nq-warning) !important; }
body.nq .progress-bar.bg-info { background-color: var(--nq-primary) !important; }

/* ---- 复选框/单选框 ---- */
body.nq .custom-control-label::before { width: 14px; height: 14px; border: 2px solid var(--nq-fill-3); background-color: var(--nq-bg-2); border-radius: var(--nq-radius); top: .2em; transition: border-color .1s cubic-bezier(0,0,1,1), background-color .1s cubic-bezier(0,0,1,1), transform .3s cubic-bezier(.3,1.3,.3,1); }
body.nq .custom-control-label::after { width: 14px; height: 14px; top: .2em; transition: transform .3s cubic-bezier(.3,1.3,.3,1); }
body.nq .custom-checkbox:hover .custom-control-label::before { border-color: var(--nq-fill-4); }
body.nq .custom-control-input:checked ~ .custom-control-label::before { background-color: rgb(var(--arcoblue-6)); border-color: transparent; }
body.nq .custom-control-input:focus ~ .custom-control-label::before { box-shadow: none; }
body.nq .custom-control-input:disabled ~ .custom-control-label::before { background-color: var(--nq-fill-2); border-color: var(--nq-fill-3); cursor: not-allowed; }
body.nq .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgb(var(--arcoblue-3)); border-color: transparent; }
body.nq .custom-radio .custom-control-label::before { border-radius: 50%; border-color: rgb(var(--gray-3)); }
body.nq .custom-radio:hover .custom-control-label::before { border-color: rgb(var(--gray-3)); }
body.nq .custom-radio .custom-control-input:checked ~ .custom-control-label::before { background-color: rgb(var(--arcoblue-6)); border-color: rgb(var(--arcoblue-6)); }
body.nq .custom-radio .custom-control-input:checked:hover ~ .custom-control-label::before { border-color: rgb(var(--arcoblue-6)); }
body.nq .custom-radio .custom-control-label::after { transition: transform .3s cubic-bezier(.3,1.3,.3,1); }
body.nq .custom-radio .custom-control-input:checked ~ .custom-control-label::after { background-image: none; background-color: var(--nq-bg-2); border-radius: 50%; transform: scale(0.4); transform-origin: center; }
body.nq .custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::after { background-color: var(--nq-fill-2); }

/* ---- Toastr ---- */
body.nq #toast-container { width: 100% !important; left: 0 !important; right: auto !important; top: 40px !important; text-align: center !important; pointer-events: none !important; padding: 0 10px !important; box-sizing: border-box !important; }
body.nq #toast-container div.toast { max-width: none; flex-basis: auto; opacity: 1; }
body.nq #toast-container .toast-success,
body.nq #toast-container .toast-error,
body.nq #toast-container .toast-info,
body.nq #toast-container .toast-warning { border: 1px solid var(--nq-fill-3) !important; background-color: var(--nq-bg-1) !important; }
body.nq #toast-container > div { position: relative; display: block; width: fit-content; margin: 0 auto 16px; padding: 10px 16px 10px 40px; line-height: 1; border-radius: var(--nq-radius); border: 1px solid var(--nq-fill-3); background-color: var(--nq-bg-1); text-align: center; box-shadow: 0 4px 10px rgba(0,0,0,.1); overflow: hidden; pointer-events: auto; font-size: var(--nq-font-md); color: var(--nq-text-1); background-image: none !important; background-position: unset !important; animation: nq-msg-fade .4s cubic-bezier(.3,1.3,.3,1); }
body.nq #toast-container > div::before { content: ''; position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; background-size: 20px 20px; background-repeat: no-repeat; animation: nq-msg-fade .4s cubic-bezier(.3,1.3,.3,1); }
body.nq #toast-container > .toast-success::before { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none'%3e%3cpath fill='%2300b42a' fill-rule='evenodd' d='M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20Zm10.207-24.379a1 1 0 0 0 0-1.414l-1.414-1.414a1 1 0 0 0-1.414 0L22 26.172l-4.878-4.88a1 1 0 0 0-1.415 0l-1.414 1.415a1 1 0 0 0 0 1.414l7 7a1 1 0 0 0 1.414 0l11.5-11.5Z' clip-rule='evenodd'/%3e%3c/svg%3e"); }
body.nq #toast-container > .toast-error::before { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none'%3e%3cpath fill='%23f53f3f' fill-rule='evenodd' d='M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20Zm4.955-27.771-4.95 4.95-4.95-4.95a1 1 0 0 0-1.414 0l-1.414 1.414a1 1 0 0 0 0 1.414l4.95 4.95-4.95 4.95a1 1 0 0 0 0 1.414l1.414 1.414a1 1 0 0 0 1.414 0l4.95-4.95 4.95 4.95a1 1 0 0 0 1.414 0l1.414-1.414a1 1 0 0 0 0-1.414l-4.95-4.95 4.95-4.95a1 1 0 0 0 0-1.414l-1.414-1.414a1 1 0 0 0-1.414 0Z' clip-rule='evenodd'/%3e%3c/svg%3e"); }
body.nq #toast-container > .toast-info::before { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none'%3e%3cpath fill='%23165dff' fill-rule='evenodd' d='M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20Zm2-30a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2Zm0 17h1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1v-8a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v11Z' clip-rule='evenodd'/%3e%3c/svg%3e"); }
body.nq #toast-container > .toast-warning::before { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none'%3e%3cpath fill='%23ff7d00' fill-rule='evenodd' d='M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20Zm-2-11a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v2Zm4-18a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V15Z' clip-rule='evenodd'/%3e%3c/svg%3e"); }
body.nq #toast-container .toast-message { vertical-align: middle; color: var(--nq-text-1); font-size: var(--nq-font-md); }
body.nq #toast-container .toast-close-button { display: none !important; }
@keyframes nq-msg-fade { from { opacity: 0; } to { opacity: 1; } }

/* ---- 全宽按钮 ---- */
body.nq .btn-block { width: 100%; display: flex; align-items: center; justify-content: center; }

/* ---- 面包屑 ---- */
body.nq .breadcrumb { display: inline-flex; background: transparent; padding: 8px 0; margin-bottom: 0px; font-size: var(--nq-font-md); color: var(--nq-text-2); }
body.nq .breadcrumb-item { display: inline-flex; align-items: center; padding: 0 4px; }
body.nq .breadcrumb-item a { color: var(--nq-text-3); padding: 0 4px; transition: color .1s cubic-bezier(0,0,1,1), background-color .1s cubic-bezier(0,0,1,1); }
body.nq .breadcrumb-item a:hover { color: var(--nq-primary); }
body.nq .breadcrumb-item.active { color: var(--nq-text-1); font-weight: 500; }
body.nq .breadcrumb-item + .breadcrumb-item::before { color: var(--nq-text-4); margin: 0 4px; }

/* ---- 条纹表格 ---- */
body.nq .table-striped tbody tr:nth-of-type(even) { background-color: rgb(var(--gray-1)); }

/* ---- 列表组 ---- */
body.nq .list-group-item { display: flex; justify-content: space-between; align-items: center; border-color: var(--nq-fill-3); color: var(--nq-text-1); padding: 13px 20px; font-size: var(--nq-font-md); box-sizing: border-box; transition: background-color .1s cubic-bezier(0,0,1,1); }
body.nq .list-group-item:not(:last-child) { border-bottom: 1px solid var(--nq-fill-3); }
body.nq .list-group-item:hover { background-color: var(--nq-fill-1); }
body.nq .list-group-item.active { background-color: var(--nq-primary); border-color: var(--nq-primary); color: #fff; }
body.nq .list-group-item .list-group-item-title { font-weight: 500; color: var(--nq-text-1); }
body.nq .list-group-item .list-group-item-desc { color: var(--nq-text-2); font-size: var(--nq-font-xs); margin-top: 2px; }
body.nq .list-group-item .list-group-item-action { display: flex; flex-wrap: nowrap; align-self: center; }
body.nq .list-group .list-group-header { font-size: var(--nq-font-lg); font-weight: 500; line-height: 1.5; padding: 12px 20px; border-bottom: 1px solid var(--nq-fill-3); }
body.nq .list-inline-item { font-size: var(--nq-font-md); }

/* ---- 加载动画 Spinner ---- */
/* Spinner */
body.nq .spinner-border { color: rgb(var(--arcoblue-6)); width: 20px; height: 20px; min-width: 20px; flex-shrink: 0; border-width: 2px; animation: nq-loading-circle 1s infinite cubic-bezier(0,0,1,1); }
body.nq .spinner-border-sm { width: 16px; height: 16px; min-width: 16px; flex-shrink: 0; border-width: 2px; }
body.nq .spinner-border-lg { width: 32px; height: 32px; min-width: 32px; flex-shrink: 0; border-width: 3px; }
body.nq .spinner-grow { color: rgb(var(--arcoblue-6)); width: 20px; height: 20px; min-width: 20px; flex-shrink: 0; animation: spinner-grow 1s cubic-bezier(0,0,1,1) infinite; }
body.nq .spinner-grow-sm { width: 16px; height: 16px; min-width: 16px; flex-shrink: 0; }
/* 5点3D椭圆轨道加载动画 */
body.nq .nq-spin-dots { display: inline-block; transform-style: preserve-3d; perspective: 200px; width: 56px; position: relative; height: 8px; flex-shrink: 0; }
body.nq .nq-spin-dot { position: absolute; top: 0; left: 50%; transform: translateX(-50%) scale(0); width: 8px; height: 8px; background-color: rgb(var(--arcoblue-6)); border-radius: 50%; animation: nq-dot-loading 2s cubic-bezier(0,0,1,1) infinite forwards; }
body.nq .nq-spin-dot:nth-child(2) { background-color: rgb(var(--arcoblue-5)); animation-delay: .4s; }
body.nq .nq-spin-dot:nth-child(3) { background-color: rgb(var(--arcoblue-4)); animation-delay: .8s; }
body.nq .nq-spin-dot:nth-child(4) { background-color: rgb(var(--arcoblue-4)); animation-delay: 1.2s; }
body.nq .nq-spin-dot:nth-child(5) { background-color: rgb(var(--arcoblue-2)); animation-delay: 1.6s; }
@keyframes nq-dot-loading {
  0% { transform: translate3D(-48.621%,0,-.985px) scale(.511); }
  2.778% { transform: translate3D(-95.766%,0,-.94px) scale(.545); }
  5.556% { transform: translate3D(-140%,0,-.866px) scale(.6); }
  8.333% { transform: translate3D(-179.981%,0,-.766px) scale(.675); }
  11.111% { transform: translate3D(-214.492%,0,-.643px) scale(.768); }
  13.889% { transform: translate3D(-242.487%,0,-.5px) scale(.875); }
  16.667% { transform: translate3D(-263.114%,0,-.342px) scale(.993); }
  19.444% { transform: translate3D(-275.746%,0,-.174px) scale(1.12); }
  22.222% { transform: translate3D(-280%,0,0) scale(1.25); }
  25% { transform: translate3D(-275.746%,0,.174px) scale(1.38); }
  27.778% { transform: translate3D(-263.114%,0,.342px) scale(1.507); }
  30.556% { transform: translate3D(-242.487%,0,.5px) scale(1.625); }
  33.333% { transform: translate3D(-214.492%,0,.643px) scale(1.732); }
  36.111% { transform: translate3D(-179.981%,0,.766px) scale(1.825); }
  38.889% { transform: translate3D(-140%,0,.866px) scale(1.9); }
  41.667% { transform: translate3D(-95.766%,0,.94px) scale(1.955); }
  44.444% { transform: translate3D(-48.621%,0,.985px) scale(1.989); }
  47.222% { transform: translate3D(0,0,1px) scale(2); }
  50% { transform: translate3D(48.621%,0,.985px) scale(1.989); }
  52.778% { transform: translate3D(95.766%,0,.94px) scale(1.955); }
  55.556% { transform: translate3D(140%,0,.866px) scale(1.9); }
  58.333% { transform: translate3D(179.981%,0,.766px) scale(1.825); }
  61.111% { transform: translate3D(214.492%,0,.643px) scale(1.732); }
  63.889% { transform: translate3D(242.487%,0,.5px) scale(1.625); }
  66.667% { transform: translate3D(263.114%,0,.342px) scale(1.507); }
  69.444% { transform: translate3D(275.746%,0,.174px) scale(1.38); }
  72.222% { transform: translate3D(280%,0,0) scale(1.25); }
  75% { transform: translate3D(275.746%,0,-.174px) scale(1.12); }
  77.778% { transform: translate3D(263.114%,0,-.342px) scale(.993); }
  80.556% { transform: translate3D(242.487%,0,-.5px) scale(.875); }
  83.333% { transform: translate3D(214.492%,0,-.643px) scale(.768); }
  86.111% { transform: translate3D(179.981%,0,-.766px) scale(.675); }
  88.889% { transform: translate3D(140%,0,-.866px) scale(.6); }
  91.667% { transform: translate3D(95.766%,0,-.94px) scale(.545); }
  94.444% { transform: translate3D(48.621%,0,-.985px) scale(.511); }
  97.222% { transform: translate3D(0,0,-1px) scale(.5); }
}
@keyframes nq-loading-circle { 100% { transform: rotate(360deg); } }
/* 加载提示文字 */
body.nq .spinner-text,
body.nq .loading-text { margin-top: 6px; font-size: var(--nq-font-md); font-weight: 500; color: rgb(var(--arcoblue-6)); }
/* 加载遮罩层 */
body.nq .loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255,255,255,.7); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 1; transition: opacity .1s cubic-bezier(0,0,1,1); }
/* 颜色变体 */
body.nq .spinner-border.text-success { color: var(--nq-success); }
body.nq .spinner-border.text-danger { color: var(--nq-danger); }
body.nq .spinner-border.text-warning { color: var(--nq-warning); }
body.nq .spinner-border.text-light { color: var(--nq-text-4); }

/* ---- 复选框/单选框容器 ---- */
body.nq .custom-control { display: flex; align-items: center; min-height: calc(1.5em + 0.94rem + 2px); }
body.nq .custom-control-label { font-size: var(--nq-font-md); color: var(--nq-text-1); cursor: pointer; }
body.nq .custom-control-input:disabled ~ .custom-control-label { color: var(--nq-text-4); cursor: not-allowed; }

/* ---- form-check ---- */
body.nq .form-check { display: flex; align-items: center; padding-left: 0; min-height: 32px; }
body.nq .form-check-input { width: 14px; height: 14px; margin-top: 0; margin-right: 8px; margin-left: 0; position: relative; appearance: none; -webkit-appearance: none; border: 2px solid var(--nq-fill-3); background-color: var(--nq-bg-2); cursor: pointer; transition: border-color .1s cubic-bezier(0,0,1,1), background-color .1s cubic-bezier(0,0,1,1); }
body.nq .form-check-input[type="radio"] { border-radius: 50%; }
body.nq .form-check-input[type="checkbox"] { border-radius: var(--nq-radius); }
body.nq .form-check-input:hover { border-color: var(--nq-fill-4); }
body.nq .form-check-input:checked { background-color: rgb(var(--arcoblue-6)); border-color: transparent; }
body.nq .form-check-input:checked[type="radio"]::after { content: ''; position: absolute; top: 50%; left: 50%; width: 6px; height: 6px; border-radius: 50%; background-color: #fff; transform: translate(-50%, -50%); }
body.nq .form-check-input:checked[type="checkbox"]::after { content: ''; position: absolute; top: 1px; left: 4px; width: 4px; height: 7px; border: solid #fff; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
body.nq .form-check-input:focus { box-shadow: none; outline: none; }
body.nq .form-check-input:disabled { background-color: var(--nq-fill-2); border-color: var(--nq-fill-3); cursor: not-allowed; }
body.nq .form-check-input:disabled:checked { background-color: rgb(var(--arcoblue-3)); }
body.nq .form-check-label { font-size: var(--nq-font-md); color: var(--nq-text-1); cursor: pointer; margin-bottom: 0; }

/* ---- Select 下拉 ---- */
body.nq select.form-control { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23868e9c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 10px center; background-size: 12px; padding-right: 30px; }


/* ---- 无数据占位 ---- */
body.nq .no-data { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; min-height: 150px; padding: 10px 0; box-sizing: border-box; text-align: center; color: rgb(var(--gray-5)); font-size: var(--nq-font-md); }
body.nq .no-data i,
body.nq .no-data .icon { font-size: 48px; line-height: 1; margin-bottom: 4px; color: rgb(var(--gray-4)); }
body.nq .no-data img { height: 80px; margin-bottom: 4px; }

/* ---- 表格容器 ---- */
body.nq .table-container { position: relative; }
body.nq .table-responsive { background: var(--nq-bg-1); margin-bottom: 1rem; overflow-x: auto; }
body.nq .table-responsive .table { margin-bottom: 0; }
body.nq .table-header { margin-bottom: 1rem; }
body.nq .table-header,
body.nq .table-footer { display: flex; align-items: center; justify-content: space-between; font-size: var(--nq-font-xs); }
body.nq .table-header > * { flex: 1; }
body.nq .table-footer .text-muted { color: var(--nq-text-1) !important; font-size: var(--nq-font-xs); line-height: 26px; }
body.nq .table-filter { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
body.nq .table-search { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
/* 搜索框 */
body.nq .search-box .form-control { border-radius: var(--nq-radius); padding-left: 36px; height: 32px; line-height: 30px; }
body.nq .search-box .search-icon { font-size: 16px; position: absolute; left: 12px; top: 50%; transform: translateY(-50%); line-height: 1; color: var(--nq-text-3); transition: color .1s cubic-bezier(0,0,1,1); z-index: 2; }
body.nq .search-box .form-control:focus ~ .search-icon,
body.nq .search-box .position-relative:focus-within .search-icon { color: var(--nq-primary); }
body.nq .table-tools { display: flex; align-items: center; gap: 8px; justify-content: flex-start; padding: 8px 0; }
body.nq .table-bordered { border: 1px solid var(--nq-fill-3); }
body.nq .table-bordered td,
body.nq .table-bordered th { border-color: var(--nq-fill-3); }
body.nq .table-hover tbody tr:hover td { background: rgb(var(--gray-1)); }
body.nq .table-centered td,
body.nq .table-centered th { vertical-align: middle; text-align: center; }
body.nq .table-nowrap td,
body.nq .table-nowrap th { white-space: nowrap; }
body.nq .table-light,
body.nq .table-light td,
body.nq .table-light th { background-color: var(--nq-fill-2); }
body.nq .tablelist { width: 100%; }
body.nq .noborr,
body.nq .noborr td,
body.nq .noborr th { border: none; }
body.nq .main-table,
body.nq .main_table { width: 100%; }
body.nq .main-table td,
body.nq .main_table td { padding: 9px 16px; border-bottom: 1px solid var(--nq-fill-3); vertical-align: middle; font-size: var(--nq-font-md); color: rgb(var(--gray-10)); line-height: 1.5715; }
body.nq .table-footer-left { display: flex; align-items: center; color: var(--nq-text-1); font-size: var(--nq-font-xs); white-space: nowrap; }
body.nq .table-footer-right { display: flex; align-items: center; gap: 12px; }
body.nq .table-footer-right .pagination { margin-bottom: 0; }
body.nq .table-pageinfo { display: flex; align-items: center; color: var(--nq-text-1); font-size: var(--nq-font-xs); line-height: 26px; white-space: nowrap; }
body.nq .table-pageinfo .bootstrap-select { margin: 0 4px; }
body.nq .table-pageinfo .bootstrap-select.form-control { height: 26px; }
body.nq .table-pageinfo .bootstrap-select > .dropdown-toggle.btn-default { font-size: var(--nq-font-xs); padding: 0 8px; height: 26px; line-height: 24px; }
body.nq .table-pageinfo .bootstrap-select > .dropdown-toggle .filter-option-inner-inner { line-height: 24px; }

/* ---- 关闭按钮（全局） ---- */
body.nq .close { color: var(--nq-text-2); opacity: 1; text-shadow: none; font-weight: 400; font-size: 14px; transition: color .1s, background-color .1s; }
body.nq .close:hover { color: var(--nq-text-1); opacity: 1; }
body.nq .close:focus { outline: none; box-shadow: none; }

/* ---- Media / Comment 媒体对象 ---- */
body.nq .media { display: flex; flex-wrap: nowrap; line-height: 1.5715; }
body.nq .media + .media { margin-top: 20px; }
body.nq .media-body { flex: 1; overflow: hidden; }
body.nq .media-avatar { flex-shrink: 0; margin-right: 12px; cursor: pointer; }
body.nq .media-avatar img { width: 32px; height: 32px; border-radius: 50%; }
body.nq .media-author { color: var(--nq-text-2); font-size: var(--nq-font-md); margin-right: 8px; }
body.nq .media-datetime { color: var(--nq-text-3); font-size: var(--nq-font-xs); }
body.nq .media-body .media-content { font-size: var(--nq-font-md); color: var(--nq-text-1); }
body.nq .media-actions { margin-top: 8px; color: var(--nq-text-2); font-size: var(--nq-font-md); }
body.nq .media-actions > *:not(:last-child) { margin-right: 8px; }

/* ---- Bootstrap Select 插件覆盖 ---- */
body.nq .bootstrap-select.form-control { height: 32px; padding: 0 !important; line-height: normal; border: none; background: transparent; box-shadow: none; position: relative; }
body.nq .bootstrap-select.form-control:focus { border: none; box-shadow: none; }
body.nq .bootstrap-select > .dropdown-toggle,
body.nq .bootstrap-select > .dropdown-toggle.btn-default,
body.nq .bootstrap-select > .dropdown-toggle.btn-light { box-sizing: border-box; height: 32px; color: var(--nq-text-2); background-color: var(--nq-border-1); border: 1px solid var(--nq-border-1); border-radius: var(--nq-radius); transition: color .1s, background-color .1s, border-color .1s; outline: none; box-shadow: none; line-height: 22px; }
body.nq .bootstrap-select > .dropdown-toggle:hover,
body.nq .bootstrap-select > .dropdown-toggle.btn-default:hover { background-color: var(--nq-border-2); color: var(--nq-text-2); border-color: var(--nq-border-2); }
body.nq .bootstrap-select > .dropdown-toggle:focus,
body.nq .bootstrap-select.show > .dropdown-toggle,
body.nq .bootstrap-select > .dropdown-toggle.btn-default:focus { background-color: var(--nq-border-1); color: var(--nq-text-2); border: 1px solid var(--nq-border-1); box-shadow: none; outline: none; }
body.nq .bootstrap-select > .dropdown-toggle:active,
body.nq .bootstrap-select > .dropdown-toggle.btn-default:active { background-color: var(--nq-border-3); color: var(--nq-text-2); border: 1px solid var(--nq-border-3); box-shadow: none; outline: none; }
body.nq .bootstrap-select > .dropdown-toggle .filter-option-inner-inner { line-height: 22px; }
body.nq .bootstrap-select > .dropdown-toggle::after { border: none; width: 0; height: 0; }
body.nq .bootstrap-select::after { content: ''; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--nq-text-3); position: absolute; right: 12px; top: 50%; transform: translateY(-50%); pointer-events: none; }
body.nq .bootstrap-select .dropdown-menu { border-radius: var(--nq-radius); box-shadow: var(--nq-shadow-2); transform: none !important; will-change: auto !important; }
body.nq .bootstrap-select:not(.dropup) .dropdown-menu { top: 100% !important; bottom: auto !important; }
body.nq .bootstrap-select.dropup .dropdown-menu { bottom: 100% !important; top: auto !important; margin-bottom: 4px; }
body.nq .bootstrap-select .dropdown-menu li a { height: 36px; line-height: 36px; padding: 0 12px; font-size: var(--nq-font-md); color: var(--nq-text-1); background-color: var(--nq-bg-1); border-radius: var(--nq-radius); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; transition: all .1s cubic-bezier(0,0,1,1); }
body.nq .bootstrap-select .dropdown-menu li a:hover { color: var(--nq-text-1); background-color: var(--nq-fill-2); }
body.nq .bootstrap-select .dropdown-menu li a.selected { color: var(--nq-primary); background-color: var(--nq-fill-2); }
body.nq .bootstrap-select .dropdown-menu li a.selected:hover { color: var(--nq-primary); background-color: var(--nq-fill-2); }
body.nq .bootstrap-select .dropdown-menu li.disabled a { color: var(--nq-text-4); background-color: var(--nq-bg-1); cursor: not-allowed; }
body.nq .bootstrap-select .bs-ok-default:after { border-width: 0 2px 2px 0; color: var(--nq-primary); }
body.nq .bootstrap-select .dropdown-menu > div.inner { display: block; }
body.nq .bootstrap-select .no-results { font-size: var(--nq-font-sm); color: var(--nq-text-3); padding: 8px 12px; }
body.nq .bootstrap-select .bs-searchbox .form-control { height: 28px; font-size: var(--nq-font-sm); border-radius: var(--nq-radius); }
/* select-disabled */
body.nq .bootstrap-select.disabled > .dropdown-toggle,
body.nq .bootstrap-select > .dropdown-toggle.disabled,
body.nq .bootstrap-select > .dropdown-toggle:disabled { color: var(--nq-text-4) !important; background-color: var(--nq-fill-2) !important; border-color: transparent !important; cursor: not-allowed; opacity: 1; }
body.nq .bootstrap-select.disabled::after { color: var(--nq-text-4); }

/* ---- 工具类 ---- */
body.nq .text-primary { color: var(--nq-primary) !important; }
body.nq .text-success { color: var(--nq-success) !important; }
body.nq .text-danger { color: var(--nq-danger) !important; }
body.nq .text-warning { color: var(--nq-warning) !important; }
body.nq .text-muted { color: var(--nq-text-3) !important; }
body.nq .text-dark { color: var(--nq-text-1) !important; }
body.nq .text-black-50 { color: var(--nq-text-3) !important; }
body.nq .bg-primary { background-color: var(--nq-primary) !important; }
body.nq .bg-light { background-color: var(--nq-fill-1) !important; }
body.nq .border-primary { border-color: var(--nq-primary) !important; }
body.nq .pointer { cursor: pointer; }

/* ---- 滚动条 ---- */
/* Webkit — body 自身滚动条 */
body.nq::-webkit-scrollbar { width: 6px; height: 6px; }
body.nq::-webkit-scrollbar-track { background: transparent; }
body.nq::-webkit-scrollbar-thumb { background: rgb(var(--gray-4)); border-radius: var(--nq-radius); }
body.nq::-webkit-scrollbar-thumb:hover { background: rgb(var(--gray-5)); }
body.nq::-webkit-scrollbar-corner { background: transparent; }
/* Webkit — body 内部所有可滚动元素 */
body.nq *::-webkit-scrollbar { width: 6px; height: 6px; }
body.nq *::-webkit-scrollbar-track { background: transparent; }
body.nq *::-webkit-scrollbar-thumb { background: rgb(var(--gray-4)); border-radius: var(--nq-radius); }
body.nq *::-webkit-scrollbar-thumb:hover { background: rgb(var(--gray-5)); }
body.nq *::-webkit-scrollbar-corner { background: transparent; }
/* Firefox */
body.nq { scrollbar-width: thin; scrollbar-color: rgb(var(--gray-4)) transparent; }
body.nq * { scrollbar-width: thin; scrollbar-color: rgb(var(--gray-4)) transparent; }

/* ---- 配置项表单 ---- */
body.nq .configureproduct { align-items: center; margin: 0; padding: 10px 0; border-bottom: 1px solid var(--nq-border-1); }
body.nq .configureproduct:last-of-type { border-bottom: none; }
body.nq .configureproduct .col-form-label { font-size: var(--nq-font-sm); color: var(--nq-text-3); }

/* 滑块 - Arco 风格 */
body.nq .configoption_range { -webkit-appearance: none; appearance: none; height: 2px; border-radius: 2px; background: linear-gradient(var(--nq-primary), var(--nq-primary)) 0/var(--nq-range-progress, 0%) 100% no-repeat var(--nq-fill-3) !important; outline: none; cursor: pointer; }
body.nq .configoption_range::-webkit-slider-runnable-track { height: 2px; border-radius: 2px; background: transparent; }
body.nq .configoption_range::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; margin-top: -5px; border-radius: 50%; background: var(--nq-bg-1); border: 2px solid var(--nq-primary); box-sizing: border-box; cursor: pointer; transition: transform .3s cubic-bezier(.3,1.3,.3,1), box-shadow .3s; }
body.nq .configoption_range::-webkit-slider-thumb:hover { transform: scale(1.17); box-shadow: 0 2px 5px rgba(0,0,0,.1); }
body.nq .configoption_range::-moz-range-track { height: 2px; border-radius: 2px; background: var(--nq-fill-3); border: none; }
body.nq .configoption_range::-moz-range-progress { height: 2px; border-radius: 2px; background: var(--nq-primary); }
body.nq .configoption_range::-moz-range-thumb { width: 8px; height: 8px; border-radius: 50%; background: var(--nq-bg-1); border: 2px solid var(--nq-primary); box-sizing: border-box; cursor: pointer; }
body.nq .configoption_range_val { width: 56px !important; text-align: center; font-size: var(--nq-font-sm); height: 28px; padding: 0 6px; }
