/* ========== 设计变量 ========== */
:root {
  --nhb-bg: #f6f7f9;
  --nhb-surface: #ffffff;
  --nhb-subtle: #f9fafb;
  --nhb-border: #e7e9ee;
  --nhb-border-strong: #d6dae1;
  --nhb-text: #0f172a;
  --nhb-text-2: #334155;
  --nhb-muted: #6b7280;
  --nhb-primary: #2563eb;
  --nhb-primary-hover: #1d4ed8;
  --nhb-primary-soft: #eef3fe;
  --nhb-ink: #0f1e46;
  --nhb-ink-hover: #1c2f63;
  --nhb-success: #15803d;
  --nhb-success-soft: #ecfdf3;
  --nhb-warning: #b45309;
  --nhb-warning-soft: #fff7ed;
  --nhb-warning-border: #f5d0a9;
  --nhb-danger: #dc2626;
  --nhb-danger-soft: #fef2f2;
  --nhb-radius: 12px;
  --nhb-radius-sm: 8px;
  --nhb-font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --nhb-mono: "SF Mono", SFMono-Regular, ui-monospace, Menlo, Consolas, "Liberation Mono", monospace;
  --nhb-sidebar-w: 240px;
}

/* ========== 基础 ========== */
body.nhb {
  background: var(--nhb-bg) !important;
  color: var(--nhb-text);
  font-family: var(--nhb-font);
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
}
body.nhb h1, body.nhb h2, body.nhb h3, body.nhb h4, body.nhb h5, body.nhb h6,
body.nhb .btn, body.nhb input, body.nhb select, body.nhb textarea, body.nhb .tooltip, body.nhb .popover {
  font-family: var(--nhb-font);
}
body.nhb h1, body.nhb h2, body.nhb h3, body.nhb h4, body.nhb h5, body.nhb h6 { color: var(--nhb-text); font-weight: 600; }
body.nhb a { color: var(--nhb-primary); }
body.nhb a:hover { color: var(--nhb-primary-hover); }
body.nhb .text-muted { color: var(--nhb-muted) !important; }
body.nhb code, body.nhb pre, .nhb-mono { font-family: var(--nhb-mono); }
.nhb-mono { font-size: 13px; letter-spacing: .01em; font-variant-numeric: tabular-nums; }

/* ========== 卡片 ========== */
body.nhb .card {
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  box-shadow: none;
  background: var(--nhb-surface);
}
body.nhb .card-header {
  background: transparent;
  border-bottom: 1px solid var(--nhb-border);
  padding: 14px 20px;
}
body.nhb .card-header .card-title, body.nhb .card-title { font-size: 15px; font-weight: 600; color: var(--nhb-text); }
body.nhb .card-body { padding: 20px; }
body.nhb .card-footer { background: var(--nhb-subtle); border-top: 1px solid var(--nhb-border); }
body.nhb .card-footer:empty { display: none; }
body.nhb .card[class*="card-accent-"] { border-top: 1px solid var(--nhb-border); }

/* ========== 按钮 ========== */
body.nhb .btn { border-radius: var(--nhb-radius-sm); font-weight: 500; font-size: 14px; box-shadow: none !important; }
body.nhb .btn-sm, body.nhb .btn-xs { font-size: 12.5px; }
body.nhb .btn-lg { font-size: 15px; }
body.nhb .btn-primary, body.nhb .btn-success, body.nhb .btn-info:not(.btn-xs) {
  background: var(--nhb-ink);
  border-color: var(--nhb-ink);
  color: #fff;
}
body.nhb .btn-primary:hover, body.nhb .btn-primary:focus, body.nhb .btn-success:hover, body.nhb .btn-success:focus,
body.nhb .btn-info:not(.btn-xs):hover {
  background: var(--nhb-ink-hover);
  border-color: var(--nhb-ink-hover);
  color: #fff;
}
body.nhb .btn-default, body.nhb .btn-secondary, body.nhb .btn-light, body.nhb .btn-outline-secondary {
  background: #fff;
  border: 1px solid var(--nhb-border-strong);
  color: var(--nhb-text);
}
body.nhb .btn-default:hover, body.nhb .btn-secondary:hover, body.nhb .btn-light:hover, body.nhb .btn-outline-secondary:hover {
  background: var(--nhb-subtle);
  border-color: #c3c8d2;
  color: var(--nhb-text);
}
body.nhb .btn-danger { background: #fff; border: 1px solid #fecaca; color: var(--nhb-danger); }
body.nhb .btn-danger:hover { background: var(--nhb-danger-soft); color: var(--nhb-danger); border-color: #fca5a5; }
body.nhb .btn-link { color: var(--nhb-primary); }
.nhb-btn-ink, body.nhb .btn.nhb-btn-ink {
  background: var(--nhb-ink);
  border: 1px solid var(--nhb-ink);
  color: #fff !important;
  border-radius: 999px;
  padding: 7px 18px;
}
body.nhb .btn.nhb-btn-ink:hover { background: var(--nhb-ink-hover); border-color: var(--nhb-ink-hover); }
body.nhb .btn.nhb-btn-soft {
  background: var(--nhb-subtle);
  border: 1px solid var(--nhb-border);
  color: var(--nhb-text);
  border-radius: 999px;
  padding: 5px 14px;
  font-size: 13px;
}
body.nhb .btn.nhb-btn-soft:hover { background: #eef0f3; }
body.nhb .btn.nhb-btn-warn {
  background: var(--nhb-warning-soft);
  border: 1px solid var(--nhb-warning-border);
  color: var(--nhb-warning);
  border-radius: 999px;
  padding: 5px 14px;
  font-size: 13px;
}

/* ========== 表单 ========== */
body.nhb .form-control, body.nhb .custom-select {
  border: 1px solid var(--nhb-border-strong);
  border-radius: var(--nhb-radius-sm);
  font-size: 14px;
  color: var(--nhb-text);
  box-shadow: none;
}
body.nhb .form-control:focus, body.nhb .custom-select:focus {
  border-color: var(--nhb-primary);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}
body.nhb label, body.nhb .col-form-label { color: var(--nhb-text-2); font-weight: 500; }
body.nhb .input-group-text { background: var(--nhb-subtle); border-color: var(--nhb-border-strong); }

/* ========== 表格 ========== */
body.nhb .table { color: var(--nhb-text); }
body.nhb .table thead th, body.nhb .table-list > thead > tr > th {
  background: var(--nhb-subtle);
  color: var(--nhb-muted);
  font-size: 12.5px;
  font-weight: 500;
  border-top: 0;
  border-bottom: 1px solid var(--nhb-border);
  padding: 10px 16px;
}
body.nhb .table td { border-top: 1px solid var(--nhb-border); padding: 14px 16px; vertical-align: middle; }
body.nhb .table-list > tbody > tr > td { background: #fff; border-color: var(--nhb-border); }
body.nhb .table-list > tbody > tr:hover > td { background: var(--nhb-subtle); }
body.nhb .table-container { border: 1px solid var(--nhb-border); border-radius: var(--nhb-radius); overflow: hidden; background: #fff; }
body.nhb .dataTables_wrapper .dataTables_info, body.nhb .dataTables_wrapper .dataTables_length { color: var(--nhb-muted); }

/* ========== 状态标签 ========== */
body.nhb .label.status, .nhb-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  border: 0;
  background: #f1f5f9;
  color: var(--nhb-muted);
  white-space: nowrap;
}
body.nhb .label.status::before, .nhb-pill::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
body.nhb .status-active, body.nhb .status-paid, body.nhb .status-open, body.nhb .status-accepted, .nhb-pill.is-active { background: var(--nhb-success-soft) !important; color: var(--nhb-success) !important; }
body.nhb .status-suspended, body.nhb .status-unpaid, body.nhb .status-answered, body.nhb .status-customer-reply, .nhb-pill.is-suspended { background: var(--nhb-warning-soft) !important; color: var(--nhb-warning) !important; }
body.nhb .status-pending, body.nhb .status-in-progress, .nhb-pill.is-pending { background: var(--nhb-primary-soft) !important; color: var(--nhb-primary) !important; }
body.nhb .status-terminated, body.nhb .status-cancelled, body.nhb .status-closed, body.nhb .status-refunded, .nhb-pill.is-terminated, .nhb-pill.is-cancelled, .nhb-pill.is-completed { background: #f1f5f9 !important; color: #64748b !important; }
body.nhb .status-fraud, body.nhb .status-overdue, body.nhb .status-collections, .nhb-pill.is-fraud { background: var(--nhb-danger-soft) !important; color: var(--nhb-danger) !important; }

.nhb-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--nhb-primary-soft);
  color: var(--nhb-primary);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.6;
}

/* ========== 提示与杂项 ========== */
body.nhb .alert { border-radius: var(--nhb-radius); border-width: 1px; font-size: 14px; }
body.nhb .alert-info { background: var(--nhb-primary-soft); border-color: #c7d7fb; color: #1e3a8a; }
body.nhb .alert-warning { background: var(--nhb-warning-soft); border-color: var(--nhb-warning-border); color: #7c2d12; }
body.nhb .alert-danger { background: var(--nhb-danger-soft); border-color: #fecaca; color: #991b1b; }
body.nhb .alert-success { background: var(--nhb-success-soft); border-color: #bbf7d0; color: #14532d; }
body.nhb .badge { border-radius: 999px; font-weight: 500; }
body.nhb .modal-content { border: 0; border-radius: var(--nhb-radius); }
body.nhb .list-group-item { border-color: var(--nhb-border); color: var(--nhb-text-2); }
body.nhb .list-group-item.active, body.nhb .list-group-item.active:hover {
  background: var(--nhb-primary-soft);
  border-color: var(--nhb-border);
  color: var(--nhb-primary);
  font-weight: 600;
}
body.nhb .nav-tabs .nav-link.active { color: var(--nhb-primary); border-color: var(--nhb-border) var(--nhb-border) #fff; }
body.nhb .page-item.active .page-link { background: var(--nhb-ink); border-color: var(--nhb-ink); }
body.nhb .page-link { color: var(--nhb-text-2); }
body.nhb .sidebar .card { margin-bottom: 16px; }
body.nhb .sidebar .card-header { padding: 12px 16px; }
body.nhb .sidebar .card-title { font-size: 14px; }
body.nhb .sidebar .list-group-item { border-left: 0; border-right: 0; padding: 9px 16px; font-size: 13.5px; }
body.nhb .primary-content > .card:first-child, body.nhb .primary-content .card { margin-bottom: 20px; }
body.nhb .master-breadcrumb { display: none; }
body.nhb #main-body { background: transparent; padding: 0; min-height: 0; }

/* ========== 控制台外壳（登录后） ========== */
.nhb-sidebar {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: var(--nhb-sidebar-w);
  background: var(--nhb-surface);
  border-right: 1px solid var(--nhb-border);
  display: flex;
  flex-direction: column;
  z-index: 1035;
  transition: transform .2s ease;
}
.nhb-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 20px 20px 14px;
  font-size: 17px;
  font-weight: 700;
  color: var(--nhb-text) !important;
  text-decoration: none !important;
}
.nhb-logo {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}
.nhb-nav { flex: 1; overflow-y: auto; padding: 4px 12px 16px; }
.nhb-nav-group { font-size: 12px; color: #9ca3af; padding: 16px 10px 6px; letter-spacing: .02em; }
.nhb-nav-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  margin-bottom: 2px;
  border-radius: var(--nhb-radius-sm);
  color: var(--nhb-text-2) !important;
  font-size: 14px;
  text-decoration: none !important;
}
.nhb-nav-link i { width: 18px; text-align: center; color: #8a94a6; font-size: 14px; }
.nhb-nav-link:hover { background: #f3f4f6; color: var(--nhb-text) !important; }
.nhb-nav-link.active { background: var(--nhb-primary-soft); color: var(--nhb-primary) !important; font-weight: 600; }
.nhb-nav-link.active i { color: var(--nhb-primary); }
.nhb-nav-link .badge { margin-left: auto; background: var(--nhb-primary); color: #fff; font-size: 11px; }
.nhb-user { border-top: 1px solid var(--nhb-border); padding: 14px 16px 16px; }
.nhb-user-row { display: flex; align-items: center; gap: 10px; }
.nhb-avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #f1f5f9;
  border: 1px solid var(--nhb-border);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--nhb-text-2);
  flex-shrink: 0;
}
.nhb-user-name { font-weight: 600; font-size: 14px; line-height: 1.3; color: var(--nhb-text); }
.nhb-user-mail { font-size: 12px; color: var(--nhb-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 150px; }
.nhb-user-links { display: flex; gap: 16px; margin-top: 10px; font-size: 13px; }
.nhb-user-links a { color: var(--nhb-muted) !important; }
.nhb-user-links a:hover { color: var(--nhb-text) !important; }

.nhb-main { margin-left: var(--nhb-sidebar-w); min-height: 100vh; display: flex; flex-direction: column; }
.nhb-topbar {
  position: sticky;
  top: 0;
  z-index: 1020;
  height: 56px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 32px;
  background: rgba(246, 247, 249, .88);
  backdrop-filter: saturate(180%) blur(8px);
  border-bottom: 1px solid var(--nhb-border);
}
.nhb-topbar .breadcrumb { background: none; padding: 0; margin: 0; font-size: 13px; }
.nhb-topbar .breadcrumb-item, .nhb-topbar .breadcrumb-item a { color: var(--nhb-muted); }
.nhb-topbar .breadcrumb-item.active { color: var(--nhb-text-2); }
.nhb-topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.nhb-icon-btn {
  position: relative;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--nhb-border);
  background: #fff;
  color: var(--nhb-text-2) !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.nhb-icon-btn:hover { background: var(--nhb-subtle); }
.nhb-icon-btn .nhb-dot-count {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--nhb-primary);
  color: #fff;
  font-size: 11px;
  line-height: 18px;
  text-align: center;
}
.nhb-icon-btn .nhb-dot-count:empty, .nhb-icon-btn .nhb-dot-count.is-zero { display: none; }
.nhb-menu-toggle { display: none; }
.nhb-container { width: 100%; max-width: 1240px; margin: 0 auto; padding: 8px 32px 40px; }
.nhb-app-footer { padding: 18px 32px; color: #9ca3af; font-size: 12.5px; text-align: center; }
.nhb-app-footer a { color: #9ca3af !important; margin: 0 6px; }
.nhb-backdrop { display: none; }

@media (max-width: 991.98px) {
  .nhb-sidebar { transform: translateX(-100%); box-shadow: 0 10px 40px rgba(15, 23, 42, .18); }
  body.nhb-sidebar-open .nhb-sidebar { transform: none; }
  body.nhb-sidebar-open .nhb-backdrop { display: block; position: fixed; inset: 0; background: rgba(15, 23, 42, .35); z-index: 1030; }
  .nhb-main { margin-left: 0; }
  .nhb-menu-toggle { display: inline-flex; }
  .nhb-topbar { padding: 0 16px; }
  .nhb-topbar .breadcrumb { display: none; }
  .nhb-container { padding: 8px 16px 32px; }
}

/* ========== 页面标题 ========== */
.nhb-page-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin: 20px 0 20px;
}
.nhb-page-head h1 { font-size: 24px; font-weight: 700; margin: 0; letter-spacing: -.01em; }
.nhb-page-head p { margin: 6px 0 0; color: var(--nhb-muted); }
.nhb-page-head .nhb-actions { display: flex; gap: 10px; align-items: center; }

/* ========== 控制台组件 ========== */
.nhb-alert-warn {
  background: var(--nhb-warning-soft);
  border: 1px solid var(--nhb-warning-border);
  border-radius: var(--nhb-radius);
  padding: 14px 18px;
  margin-bottom: 20px;
  color: #7c2d12;
}
.nhb-alert-warn .nhb-alert-title { font-weight: 600; display: flex; align-items: center; gap: 8px; }
.nhb-alert-warn .nhb-alert-title::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #ea580c; }
.nhb-alert-warn .nhb-alert-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 6px; padding-left: 15px; flex-wrap: wrap; }
.nhb-alert-warn a { color: #7c2d12 !important; font-weight: 600; }

.nhb-stat {
  display: block;
  height: 100%;
  background: var(--nhb-surface);
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  padding: 18px 20px;
  color: inherit !important;
  text-decoration: none !important;
  transition: border-color .15s, box-shadow .15s;
}
.nhb-stat:hover { border-color: #cfd6e3; box-shadow: 0 4px 14px rgba(15, 23, 42, .05); }
.nhb-stat-label { color: var(--nhb-muted); font-size: 13px; }
.nhb-stat-value { font-size: 30px; font-weight: 700; line-height: 1.2; margin: 8px 0 6px; color: var(--nhb-primary); font-variant-numeric: tabular-nums; }
.nhb-stat-value.is-warn { color: var(--nhb-warning); }
.nhb-stat-value.is-danger { color: var(--nhb-danger); }
.nhb-stat-sub { font-size: 12.5px; color: var(--nhb-muted); }
.nhb-stat-sub.is-ok { color: var(--nhb-success); }
.nhb-stat-sub.is-warn { color: var(--nhb-warning); }
.nhb-stat-sub.is-link { color: var(--nhb-primary); }

.nhb-card {
  background: var(--nhb-surface);
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  margin-bottom: 20px;
  overflow: hidden;
}
.nhb-card-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--nhb-border); }
.nhb-card-head h2 { font-size: 15px; font-weight: 600; margin: 0; }
.nhb-card-head a { font-size: 13px; color: var(--nhb-muted) !important; }
.nhb-card-head a:hover { color: var(--nhb-text) !important; }
.nhb-card-body { padding: 16px 20px; }

.nhb-table { width: 100%; margin: 0; border-collapse: collapse; }
.nhb-table th {
  background: var(--nhb-subtle);
  color: var(--nhb-muted);
  font-size: 12.5px;
  font-weight: 500;
  padding: 10px 20px;
  border-bottom: 1px solid var(--nhb-border);
  white-space: nowrap;
}
.nhb-table td { padding: 14px 20px; border-bottom: 1px solid var(--nhb-border); vertical-align: middle; }
.nhb-table tr:last-child td { border-bottom: 0; }
.nhb-table tbody tr { transition: background .1s; }
.nhb-table tbody tr.is-link { cursor: pointer; }
.nhb-table tbody tr.is-link:hover { background: var(--nhb-subtle); }
.nhb-table .nhb-title { font-weight: 600; color: var(--nhb-text); }
.nhb-table .nhb-sub { font-size: 12.5px; color: var(--nhb-muted); margin-top: 2px; }
.nhb-table .nhb-due-soon { color: var(--nhb-warning); font-weight: 600; }
.nhb-copy { border: 0; background: none; color: #9ca3af; padding: 0 0 0 6px; cursor: pointer; }
.nhb-copy:hover { color: var(--nhb-primary); }

.nhb-toolbar { display: flex; gap: 10px; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--nhb-border); flex-wrap: wrap; }
.nhb-toolbar .form-control, .nhb-toolbar .custom-select { background: var(--nhb-subtle); border-color: var(--nhb-border); height: 38px; border-radius: 999px; }
.nhb-toolbar .nhb-search { flex: 1; min-width: 200px; max-width: 320px; }
.nhb-toolbar .nhb-status-select { width: auto; min-width: 130px; }
.nhb-table-foot { padding: 12px 20px; color: var(--nhb-muted); font-size: 13px; border-top: 1px solid var(--nhb-border); }

.nhb-quick { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nhb-quick a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--nhb-border);
  border-radius: 10px;
  color: var(--nhb-text-2) !important;
  font-size: 13.5px;
  text-decoration: none !important;
}
.nhb-quick a:hover { border-color: #c7d2fe; background: var(--nhb-primary-soft); color: var(--nhb-primary) !important; }
.nhb-quick i { color: var(--nhb-primary); width: 18px; text-align: center; }

.nhb-news { list-style: none; margin: 0; padding: 0; }
.nhb-news li { padding: 12px 0; border-bottom: 1px solid var(--nhb-border); }
.nhb-news li:first-child { padding-top: 0; }
.nhb-news li:last-child { border-bottom: 0; padding-bottom: 0; }
.nhb-news a { color: var(--nhb-text) !important; font-weight: 500; }
.nhb-news a:hover { color: var(--nhb-primary) !important; }
.nhb-news p { margin: 4px 0 0; font-size: 12.5px; color: var(--nhb-muted); }

.nhb-empty { text-align: center; padding: 48px 20px; color: var(--nhb-muted); }
.nhb-empty i { font-size: 28px; color: #c0c7d4; margin-bottom: 12px; display: block; }
.nhb-empty .btn { margin: 14px 4px 0; }

/* ========== 未登录页面：顶部导航 ========== */
.nhb-topnav { background: rgba(255, 255, 255, .92); backdrop-filter: blur(8px); border-bottom: 1px solid var(--nhb-border); position: sticky; top: 0; z-index: 1020; }
.nhb-topnav-inner { display: flex; align-items: center; height: 66px; gap: 24px; }
.nhb-topnav .nhb-brand { padding: 0; }
.nhb-topnav-links { display: flex; gap: 6px; margin: 0 auto; }
.nhb-topnav-links a { color: var(--nhb-text-2) !important; padding: 8px 12px; border-radius: 8px; font-size: 14.5px; text-decoration: none !important; }
.nhb-topnav-links a:hover, .nhb-topnav-links a.active { color: var(--nhb-text) !important; background: #f3f4f6; }
.nhb-topnav-right { display: flex; align-items: center; gap: 10px; }
.nhb-topnav-right .nhb-link { color: var(--nhb-text-2) !important; font-size: 14px; }
.nhb-site-main { padding: 24px 0 48px; }
.nhb-site-footer { border-top: 1px solid var(--nhb-border); background: #fff; padding: 28px 0; color: var(--nhb-muted); font-size: 13px; }
.nhb-site-footer .container { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.nhb-site-footer a { color: var(--nhb-muted) !important; margin-left: 18px; }
.nhb-site-footer a:hover { color: var(--nhb-text) !important; }
@media (max-width: 767.98px) {
  .nhb-topnav-links { display: none; }
  .nhb-topnav-inner { justify-content: space-between; }
}

/* ========== 首页 ========== */
.nhb-hero { display: grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items: center; padding: 48px 0 72px; }
.nhb-badge-line {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 14px;
  border: 1px solid #c7d7fb;
  border-radius: 999px;
  font-size: 13px;
  color: var(--nhb-text-2);
  background: #fff;
}
.nhb-badge-line::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #22c55e; }
.nhb-hero h1 { font-size: 52px; line-height: 1.15; font-weight: 800; letter-spacing: -.02em; margin: 22px 0 18px; }
.nhb-hero h1 em {
  font-style: normal;
  background: linear-gradient(90deg, #2563eb, #3b82f6 60%, #0ea5e9);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.nhb-hero .nhb-lead { font-size: 17px; line-height: 1.75; color: var(--nhb-text-2); max-width: 540px; }
.nhb-hero .nhb-lead strong { color: var(--nhb-text); }
.nhb-hero-cta { display: flex; align-items: center; gap: 22px; margin: 30px 0 40px; }
.nhb-hero-cta .nhb-btn-ink { padding: 12px 26px; font-size: 15px; }
.nhb-hero-cta .nhb-link-arrow { color: var(--nhb-text-2) !important; font-size: 15px; }
.nhb-hero-stats { display: flex; gap: 56px; }
.nhb-hero-stats .k { font-size: 13px; color: var(--nhb-muted); }
.nhb-hero-stats .v { font-size: 30px; font-weight: 700; margin-top: 4px; font-variant-numeric: tabular-nums; }
.nhb-hero-stats .v small { font-size: 14px; color: var(--nhb-muted); font-weight: 500; margin-left: 2px; }

.nhb-demo { background: #fff; border: 1px solid var(--nhb-border); border-radius: 16px; box-shadow: 0 24px 60px -24px rgba(37, 99, 235, .28); overflow: hidden; }
.nhb-demo-tabs { display: flex; background: var(--nhb-subtle); border-bottom: 1px solid var(--nhb-border); padding: 6px; gap: 4px; }
.nhb-demo-tabs span { flex: 1; text-align: center; padding: 9px 0; border-radius: 10px; font-size: 13.5px; color: var(--nhb-muted); }
.nhb-demo-tabs span.on { background: #fff; color: var(--nhb-primary); font-weight: 600; box-shadow: 0 1px 2px rgba(15, 23, 42, .06); }
.nhb-demo-body { padding: 22px 26px; }
.nhb-demo-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.nhb-demo-title b { font-family: var(--nhb-mono); font-size: 15px; }
.nhb-demo-sample { font-size: 11px; color: var(--nhb-warning); background: var(--nhb-warning-soft); border-radius: 4px; padding: 1px 6px; margin-left: 8px; }
.nhb-demo-row { display: flex; padding: 8px 0; font-size: 14px; }
.nhb-demo-row .k { width: 110px; color: var(--nhb-muted); }
.nhb-demo-row .v { font-weight: 500; }

.nhb-section { padding: 56px 0; }
.nhb-section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; margin-bottom: 32px; flex-wrap: wrap; }
.nhb-section-head h2 { font-size: 34px; font-weight: 800; line-height: 1.25; margin: 0; letter-spacing: -.01em; }
.nhb-section-head p { max-width: 520px; color: var(--nhb-text-2); line-height: 1.8; margin: 0; font-size: 15px; }

.nhb-plan {
  background: #fff;
  border: 1px solid var(--nhb-border);
  border-radius: 16px;
  padding: 26px 28px;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.nhb-plan.is-featured { border-color: #bcd0fb; box-shadow: 0 16px 40px -24px rgba(37, 99, 235, .35); }
.nhb-plan-name { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; font-size: 16px; font-weight: 600; }
.nhb-plan-price { margin: 14px 0 4px; font-size: 40px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.nhb-plan-price small { font-size: 14px; color: var(--nhb-muted); font-weight: 500; }
.nhb-plan-state { font-size: 13px; color: var(--nhb-success); display: flex; align-items: center; gap: 6px; }
.nhb-plan-state::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.nhb-plan-state.is-out { color: var(--nhb-danger); }
.nhb-plan-specs { margin: 18px 0; padding-top: 16px; border-top: 1px solid var(--nhb-border); }
.nhb-plan-specs div { display: flex; justify-content: space-between; padding: 7px 0; font-size: 14px; }
.nhb-plan-specs span { color: var(--nhb-muted); }
.nhb-plan-specs b { font-family: var(--nhb-mono); font-weight: 500; font-size: 13.5px; }
.nhb-plan-note { background: var(--nhb-subtle); border-radius: 10px; padding: 12px 14px; font-size: 13px; color: var(--nhb-text-2); line-height: 1.7; margin-bottom: 18px; }
.nhb-plan-cta { margin-top: auto; display: flex; gap: 10px; }
.nhb-plan-cta .btn { flex: 1; border-radius: 999px; padding: 10px 0; }

.nhb-feature { background: #fff; border: 1px solid var(--nhb-border); border-radius: 14px; padding: 24px; height: 100%; }
.nhb-feature i { width: 40px; height: 40px; border-radius: 10px; background: var(--nhb-primary-soft); color: var(--nhb-primary); display: inline-flex; align-items: center; justify-content: center; font-size: 17px; margin-bottom: 16px; }
.nhb-feature h3 { font-size: 16px; font-weight: 600; margin-bottom: 8px; }
.nhb-feature p { color: var(--nhb-muted); margin: 0; line-height: 1.7; font-size: 14px; }

.nhb-help a { display: flex; align-items: center; gap: 14px; background: #fff; border: 1px solid var(--nhb-border); border-radius: 14px; padding: 18px 20px; color: var(--nhb-text) !important; text-decoration: none !important; height: 100%; }
.nhb-help a:hover { border-color: #bcd0fb; }
.nhb-help i { color: var(--nhb-primary); font-size: 18px; width: 22px; text-align: center; }
.nhb-help b { display: block; font-weight: 600; }
.nhb-help span { font-size: 12.5px; color: var(--nhb-muted); }

@media (max-width: 991.98px) {
  .nhb-hero { grid-template-columns: 1fr; gap: 36px; padding: 24px 0 40px; }
  .nhb-hero h1 { font-size: 38px; }
  .nhb-hero-stats { gap: 32px; }
  .nhb-section-head h2 { font-size: 28px; }
}

/* ========== 实例详情 ========== */
.nhb-console-ready {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  background: var(--nhb-success-soft);
  border: 1px solid #bbf7d0;
  border-radius: var(--nhb-radius);
  padding: 14px 18px;
  margin-bottom: 20px;
}
.nhb-console-ready b { display: block; color: #14532d; }
.nhb-console-ready span { font-size: 13px; color: #3f6212; }
.nhb-power-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 16px; }
.nhb-power-label { font-size: 13px; color: var(--nhb-muted); margin-right: 6px; }
body.nhb .btn.nhb-btn-soft i { margin-right: 4px; font-size: 12px; }
body.nhb .btn.nhb-btn-soft.is-danger { color: var(--nhb-danger); }
body.nhb .btn.nhb-btn-soft.is-danger:hover { background: var(--nhb-danger-soft); border-color: #fecaca; }
.nhb-kv { padding: 6px 20px 10px; }
.nhb-kv > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px dashed var(--nhb-border); font-size: 14px; }
.nhb-kv > div:last-child { border-bottom: 0; }
.nhb-kv span { color: var(--nhb-muted); flex-shrink: 0; }
.nhb-kv b { font-weight: 500; text-align: right; word-break: break-all; }
.nhb-kv-2 { display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; }
.nhb-kv-2 > div:nth-last-child(2):nth-child(odd) { border-bottom: 0; }
.nhb-card-foot { border-top: 1px solid var(--nhb-border); padding: 12px 20px; text-align: right; }
.nhb-link-danger { color: var(--nhb-danger) !important; font-size: 13px; }
.nhb-link-danger.disabled { color: var(--nhb-muted) !important; pointer-events: none; }
.nhb-vm-status { display: flex; align-items: center; gap: 32px; flex-wrap: wrap; }
.nhb-vm-power { display: flex; align-items: center; gap: 12px; min-width: 200px; }
.nhb-vm-power b { display: block; font-size: 18px; }
.nhb-vm-power span { font-size: 12.5px; color: var(--nhb-muted); }
.nhb-vm-dot { width: 12px; height: 12px; border-radius: 50%; background: #94a3b8; box-shadow: 0 0 0 4px #f1f5f9; flex-shrink: 0; }
.nhb-vm-power.is-running .nhb-vm-dot { background: #22c55e; box-shadow: 0 0 0 4px #dcfce7; }
.nhb-vm-power.is-running b { color: var(--nhb-success); }
.nhb-meters { flex: 1; display: grid; grid-template-columns: repeat(4, minmax(110px, 1fr)); gap: 18px; min-width: 280px; }
.nhb-meter-top { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 6px; }
.nhb-meter-top span { color: var(--nhb-muted); }
.nhb-meter-top b { font-family: var(--nhb-mono); font-weight: 600; }
.nhb-meter-bar { height: 6px; background: #eef0f4; border-radius: 999px; overflow: hidden; }
.nhb-meter-bar i { display: block; height: 100%; background: var(--nhb-primary); border-radius: 999px; min-width: 2px; }
.nhb-meter-bar i.is-high { background: #f97316; }
.nhb-graphs { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.nhb-graphs figure { margin: 0; border: 1px solid var(--nhb-border); border-radius: 10px; padding: 12px; }
.nhb-graphs figcaption { font-size: 13px; color: var(--nhb-muted); margin-bottom: 8px; }
.nhb-graphs img { width: 100%; }
body.nhb .nhb-tabs { border-bottom: 1px solid var(--nhb-border); }
body.nhb .nhb-tabs .nav-link { border: 0; border-bottom: 2px solid transparent; color: var(--nhb-muted); padding: 8px 14px; background: none; }
body.nhb .nhb-tabs .nav-link.active { color: var(--nhb-primary); border-bottom-color: var(--nhb-primary); font-weight: 600; }
body.nhb .module-client-area { text-align: left; }
@media (max-width: 767.98px) {
  .nhb-kv-2, .nhb-graphs { grid-template-columns: 1fr; }
  .nhb-kv-2 > div:nth-last-child(2):nth-child(odd) { border-bottom: 1px dashed var(--nhb-border); }
  .nhb-meters { grid-template-columns: 1fr 1fr; }
}

/* ========== 购物车与结算 ========== */
body.nhb #order-standard_cart { font-size: 14px; }
body.nhb #order-standard_cart .cart-sidebar { display: none; }
body.nhb #order-standard_cart .cart-body { width: 100% !important; float: none; padding: 0 15px; }
body.nhb #order-standard_cart .header-lined { border: 0; margin: 4px 0 20px; padding: 0; }
body.nhb #order-standard_cart .header-lined h1, body.nhb #order-standard_cart .font-size-36 { font-size: 26px !important; font-weight: 700; margin: 0 0 6px; }
body.nhb #order-standard_cart .header-lined p { color: var(--nhb-muted); margin: 0; }
body.nhb #order-standard_cart .sub-heading, body.nhb #order-standard_cart .sub-heading-borderless {
  border: 0;
  margin: 28px 0 14px;
  height: auto;
  text-align: left;
}
body.nhb #order-standard_cart .sub-heading span, body.nhb #order-standard_cart .sub-heading-borderless span {
  position: static;
  display: inline-block;
  padding: 0;
  background: transparent !important;
  color: var(--nhb-text) !important;
  font-size: 15px;
  font-weight: 600;
}
body.nhb #order-standard_cart .sub-heading span::before {
  content: "";
  display: inline-block;
  width: 3px;
  height: 14px;
  border-radius: 2px;
  background: var(--nhb-primary);
  margin-right: 8px;
  vertical-align: -1px;
}
body.nhb #order-standard_cart .product-info {
  background: #fff;
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  padding: 16px 20px;
  margin-bottom: 20px;
}
body.nhb #order-standard_cart .product-info .product-title { font-size: 17px; font-weight: 600; color: var(--nhb-text); margin-bottom: 6px; }
body.nhb #order-standard_cart .product-info p { color: var(--nhb-text-2); margin: 0; line-height: 1.7; }
body.nhb #order-standard_cart .field-container {
  background: #fff;
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  padding: 16px 20px 4px;
}
body.nhb #order-standard_cart .form-group:has(#inputNs1prefix), body.nhb #order-standard_cart .form-group:has(#inputNs2prefix),
body.nhb #order-standard_cart .col-sm-6:has(> .form-group #inputNs1prefix), body.nhb #order-standard_cart .col-sm-6:has(> .form-group #inputNs2prefix) { display: none; }
body.nhb #order-standard_cart .order-summary {
  background: #fff;
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  overflow: hidden;
}
body.nhb #order-standard_cart .order-summary h2 {
  background: transparent;
  color: var(--nhb-text);
  font-size: 15px;
  font-weight: 600;
  text-align: left;
  padding: 16px 20px 12px;
  margin: 0;
  border-bottom: 1px solid var(--nhb-border);
}
body.nhb #order-standard_cart .summary-container { background: #fff; padding: 16px 20px; color: var(--nhb-text-2); font-size: 13.5px; }
body.nhb #order-standard_cart .order-summary .product-name { font-size: 15px; font-weight: 600; color: var(--nhb-text); }
body.nhb #order-standard_cart .order-summary .product-group { color: var(--nhb-muted); font-size: 12.5px; }
body.nhb #order-standard_cart .order-summary .summary-totals { border-top: 1px dashed var(--nhb-border); border-bottom: 0; padding: 10px 0; }
body.nhb #order-standard_cart .order-summary .total-due-today { padding-top: 10px; border-top: 1px solid var(--nhb-border); text-align: right; }
body.nhb #order-standard_cart .order-summary .total-due-today .amt { font-size: 28px; font-weight: 700; color: var(--nhb-primary); font-variant-numeric: tabular-nums; }
body.nhb #order-standard_cart .order-summary .total-due-today span:not(.amt) { color: var(--nhb-muted); font-size: 12.5px; }
body.nhb #order-standard_cart .btn-checkout, body.nhb #order-standard_cart #btnCompleteProductConfig {
  width: 100%;
  border-radius: 999px;
  padding: 12px 20px;
  font-size: 15px;
  background: var(--nhb-ink);
  border-color: var(--nhb-ink);
  margin-top: 12px;
}
body.nhb #order-standard_cart .secondary-cart-sidebar .text-center:has(#btnCompleteProductConfig) { padding: 0; }
body.nhb #order-standard_cart .view-cart-items-header {
  background: var(--nhb-subtle);
  color: var(--nhb-muted);
  border: 1px solid var(--nhb-border);
  border-bottom: 0;
  border-radius: var(--nhb-radius) var(--nhb-radius) 0 0;
  font-size: 12.5px;
  font-weight: 500;
  padding: 10px 16px;
}
body.nhb #order-standard_cart .view-cart-items { border: 1px solid var(--nhb-border); border-radius: 0 0 var(--nhb-radius) var(--nhb-radius); background: #fff; overflow: hidden; }
body.nhb #order-standard_cart .view-cart-items .item, body.nhb #order-standard_cart .view-cart-items .item:nth-child(even) { background: #fff; border-bottom: 1px solid var(--nhb-border); padding: 14px 16px; }
body.nhb #order-standard_cart .view-cart-items .item:last-child { border-bottom: 0; }
body.nhb #order-standard_cart .view-cart-items .item-title { font-weight: 600; color: var(--nhb-text); font-size: 14.5px; }
body.nhb #order-standard_cart .view-cart-items .item-group { color: var(--nhb-muted); }
body.nhb #order-standard_cart .view-cart-items .item-price span { font-weight: 600; }
body.nhb #order-standard_cart .empty-cart { margin-top: 12px; }
body.nhb #order-standard_cart .empty-cart .btn { background: #fff; color: var(--nhb-muted); border: 1px solid var(--nhb-border); border-radius: 999px; padding: 4px 12px; font-size: 12.5px; }
body.nhb #order-standard_cart .checkout-security-msg { background: var(--nhb-subtle); border: 1px solid var(--nhb-border); border-radius: var(--nhb-radius); color: var(--nhb-muted); }
body.nhb #order-standard_cart .checkout-security-msg i { color: var(--nhb-success); }
body.nhb #order-standard_cart .already-registered { background: var(--nhb-subtle); border: 1px solid var(--nhb-border); border-radius: var(--nhb-radius); padding: 14px 18px; }
body.nhb #order-standard_cart .account-select-container div { border-radius: 10px; }
body.nhb #order-standard_cart .prepend-icon .field-icon { color: #9ca3af; }
body.nhb #order-standard_cart .order-summary .loader { color: var(--nhb-primary); }
body.nhb #order-standard_cart .promo-code, body.nhb #order-standard_cart .view-cart-tabs .tab-content { border-radius: var(--nhb-radius); }

/* 套餐选择页（nhb_cart） */
.nhb-cart-groups { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.nhb-cart-groups a { padding: 6px 14px; border-radius: 999px; border: 1px solid var(--nhb-border); background: #fff; color: var(--nhb-text-2) !important; font-size: 13.5px; text-decoration: none !important; }
.nhb-cart-groups a.active { background: var(--nhb-ink); border-color: var(--nhb-ink); color: #fff !important; }

body.nhb .module-client-area { padding: 0; margin: 0; text-align: left; }

/* 配置页（nhb_cart） */
.nhb-conf-step {
  background: #fff;
  border: 1px solid var(--nhb-border);
  border-radius: var(--nhb-radius);
  padding: 18px 20px 20px;
  margin-bottom: 16px;
}
.nhb-conf-title { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 600; margin-bottom: 14px; }
.nhb-conf-title em {
  font-style: normal;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--nhb-primary-soft);
  color: var(--nhb-primary);
  font-size: 12.5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.nhb-conf-note { color: var(--nhb-text-2); background: var(--nhb-subtle); border-radius: 10px; padding: 12px 14px; }
.nhb-conf-hint { margin-top: 10px; font-size: 12.5px; color: var(--nhb-muted); line-height: 1.8; }
.nhb-conf-hint code { background: var(--nhb-subtle); border: 1px solid var(--nhb-border); border-radius: 4px; padding: 0 5px; color: var(--nhb-text); font-size: 12px; }
.nhb-choices { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.nhb-choice {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--nhb-border-strong);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  text-align: left;
  font-weight: 400 !important;
  transition: border-color .15s, box-shadow .15s;
}
.nhb-choice:hover { border-color: #9db5f5; }
.nhb-choice input { position: absolute; opacity: 0; pointer-events: none; }
.nhb-choice b { font-size: 14px; font-weight: 600; color: var(--nhb-text); }
.nhb-choice span { font-size: 12.5px; color: var(--nhb-muted); }
.nhb-choice.is-on { border-color: var(--nhb-primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); background: #f8faff; }
.nhb-choice.is-on::after {
  content: "\f00c";
  font-family: "Font Awesome 5 Pro", "Font Awesome 5 Free";
  font-weight: 900;
  position: absolute;
  top: 10px;
  right: 12px;
  font-size: 11px;
  color: var(--nhb-primary);
}
.nhb-os-choice { flex-direction: row; align-items: center; gap: 10px; }
.nhb-os-choice i { font-size: 20px; color: #64748b; width: 22px; text-align: center; }
.nhb-os-choice.is-on i { color: var(--nhb-primary); }
.nhb-os-choice .fa-ubuntu { color: #e95420; }
.nhb-password-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.nhb-password-row .input-group { flex: 1; min-width: 240px; max-width: 420px; }
.nhb-password-row .form-control { font-family: var(--nhb-mono); }
body.nhb #order-standard_cart .nhb-conf-product { padding: 14px 18px; }
body.nhb #order-standard_cart .nhb-customfield { margin-bottom: 0; }
.nhb-choice .iradio_square-blue, .nhb-choice .iCheck-helper { position: absolute !important; opacity: 0 !important; width: 0 !important; height: 0 !important; }
.nhb-password-row .form-control.nhb-masked { -webkit-text-security: disc; }
.nhb-choice.is-on::after {
  content: "✓";
  font-family: var(--nhb-font);
  font-weight: 700;
  width: 18px;
  height: 18px;
  line-height: 18px;
  text-align: center;
  border-radius: 50%;
  background: var(--nhb-primary);
  color: #fff;
  top: 8px;
  right: 8px;
}

/* ========== 手机端 ========== */
@media (max-width: 991.98px) {
  .nhb-sidebar { box-shadow: none; }
  body.nhb-sidebar-open .nhb-sidebar { box-shadow: 0 10px 40px rgba(15, 23, 42, .18); }
}
@media (max-width: 767.98px) {
  .nhb-page-head h1 { font-size: 21px; }
  .nhb-stat { padding: 14px 16px; }
  .nhb-stat-value { font-size: 24px; }
  .nhb-table-stack thead { display: none; }
  .nhb-table-stack, .nhb-table-stack tbody, .nhb-table-stack tr, .nhb-table-stack td { display: block; width: 100%; }
  .nhb-table-stack tr { padding: 12px 16px; border-bottom: 1px solid var(--nhb-border); }
  .nhb-table-stack tr:last-child { border-bottom: 0; }
  .nhb-table-stack td { padding: 5px 0; border: 0; text-align: right; overflow: hidden; }
  .nhb-table-stack td::before { content: attr(data-label); float: left; color: var(--nhb-muted); font-size: 12.5px; font-family: var(--nhb-font); margin-right: 12px; }
  .nhb-table-stack td[data-label=""]::before { content: none; }
  .nhb-table-stack td:first-child { display: block; text-align: left; padding-bottom: 8px; }
  .nhb-table-stack td:first-child::before { content: none; }
  .nhb-table-stack td.text-right { padding-top: 8px; }
  .nhb-toolbar .nhb-search { max-width: none; }
  .nhb-toolbar .ml-auto { margin-left: 0 !important; width: 100%; }
  .nhb-power-bar .nhb-power-label { width: 100%; }
  .nhb-hero h1 { font-size: 32px; }
  .nhb-hero-stats { gap: 24px; }
  .nhb-hero-stats .v { font-size: 24px; }
  .nhb-demo { display: none; }
}
body.nhb #order-standard_cart .sidebar-collapsed { display: none; }
.nhb-site-main { min-height: calc(100vh - 150px); }
