/* Source Han Sans SC: shared web and mini-program typeface. */
@font-face {
  font-family: "Source Han Sans SC";
  src: url("../fonts/SourceHanSansSC-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: block;
}

/* ===== 快账核 Web 版 · 数据专业设计系统 =====
   冷灰底 + 白色卡片 + 靛蓝主色（数据科技感 / BI 审美）
   点缀：靛蓝 / 翠绿 / 琥珀（仅警示）—— 冷静、专业、可信 */
:root {
  --bg: #f1f5f9;
  --card: #ffffff;
  --ink: #0f172a;
  --ink-2: #475569;
  --ink-3: #94a3b8;
  --brand: #4f46e5;
  --brand-deep: #4338ca;
  --brand-soft: #e0e7ff;
  --brand-border: #c7d2fe;
  --brand-bg: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);
  --ok: #16a34a;
  --ok-soft: #dcfce7;
  --ok-deep: #15803d;
  --info: #3b82f6;
  --info-soft: #dbeafe;
  --violet: #8b5cf6;
  --violet-soft: #ede9fe;
  --amber: #d97706;
  --amber-soft: #fef3c7;
  --danger: #dc2626;
  --danger-soft: #fee2e2;
  --border: #e2e8f0;
  --border-light: #f1f5f9;
  --radius-xl: 20px;
  --radius-lg: 14px;
  --radius: 10px;
  --radius-sm: 8px;
  --shadow-sm: 0 1px 2px rgba(15,23,42,.04), 0 2px 8px rgba(15,23,42,.04);
  --shadow: 0 1px 3px rgba(15,23,42,.05), 0 8px 24px rgba(15,23,42,.06);
  --shadow-lg: 0 4px 12px rgba(15,23,42,.06), 0 20px 48px rgba(15,23,42,.10);
  --font: "Source Han Sans SC";
}
.auth-boot,.auth-boot body{background:#10152d}
.auth-boot #app{background:#10152d}
.auth-boot #app>.sidebar,.auth-boot #app>.main{visibility:hidden}
.auth-boot #app:before{content:'';position:fixed;inset:0;z-index:999;background:radial-gradient(circle at 15% 20%,rgba(99,102,241,.42),transparent 34%),radial-gradient(circle at 75% 80%,rgba(45,212,191,.16),transparent 32%),linear-gradient(135deg,#10152d 0%,#1d2551 54%,#11182f 100%);pointer-events:none}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; font-family:var(--font) !important; }
html, body { height:100%; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
button { font-family: var(--font); }

/* ===== Layout：悬浮式 ===== */
.layout {
  display: grid; grid-template-columns:236px minmax(0,1fr); grid-template-rows:74px minmax(0,1fr); gap:16px;
  height: 100vh; overflow: hidden;
  padding: 16px;
}

/* ===== Sidebar：白色圆角悬浮卡 ===== */
.sidebar {
  grid-column:1; grid-row:2; width:auto; min-width:0;
  background: var(--card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
  display: flex; flex-direction: column;
  padding: 12px;
}
.sidebar-logo {
  display: flex; align-items: center; gap: 11px;
  padding: 12px 10px 18px;
}
.logo-mark {
  width: 40px; height: 40px; border-radius: 13px;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-deep) 100%);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 18px rgba(79,70,229,.35);
}
.logo-mark img { width:100%; height:100%; object-fit:contain; display:block; border-radius:inherit; }
.logo-name { font-size: 16px; line-height:1.35; font-weight: 800; color: var(--ink); letter-spacing: .1px; }
.logo-sub { font-size: 11px; color: var(--ink-3); margin-top: 1px; }

.btn-new-recon {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  height: 46px; margin: 0 4px 16px;
  border: none; border-radius: 14px;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-deep) 100%);
  color: #fff;
  font-size: 14.5px; font-weight: 700; letter-spacing: .5px;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(79,70,229,.32);
  transition: all .18s;
}
.btn-new-recon:hover { transform: translateY(-1px); box-shadow: 0 14px 30px rgba(79,70,229,.42); }
.btn-new-recon:active { transform: translateY(0) scale(.98); }

.sidebar-nav { flex: 1; overflow-y: auto; padding: 2px; }
.nav-group { margin-bottom: 6px; }
.nav-group-title {
  padding: 12px 12px 6px;
  font-size: 11px; color: var(--ink-3);
  letter-spacing: 1.2px; font-weight: 700;
}
.nav-item {
  display: flex; align-items: center; gap: 11px;
  padding: 10px 12px;
  margin: 2px 0;
  cursor: pointer;
  font-size: 13.5px; font-weight: 500;
  color: var(--ink-2);
  transition: all .15s;
  border-radius: 12px;
}
.nav-item:hover { background: #eef2ff; color: var(--ink); }
.nav-item.active {
  background: var(--brand-soft);
  color: var(--brand-deep);
  font-weight: 700;
}
.nav-item svg { flex-shrink: 0; }

.sidebar-footer {
  padding: 12px 10px 4px;
  border-top: 1px solid var(--border-light);
  margin-top: 6px;
}
.btn-logout { width:100%; margin-top:12px; padding:8px 10px; border:1px solid #e2e8f0; border-radius:9px; background:#fff; color:#64748b; font-size:12px; cursor:pointer; transition:.2s; }
.btn-logout:hover { color:#dc2626; border-color:#fecaca; background:#fff7f7; }
.user-mini { display: flex; align-items: center; gap: 10px; }
.user-avatar {
  width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%;
  object-fit: cover; display: block;
  border: 2px solid #e0e7ff;
  box-shadow: 0 4px 12px rgba(79,70,229,.18);
}
.user-name { font-size: 13px; font-weight: 700; color: var(--ink); }
.user-plan { font-size: 11px; color: var(--ink-3); margin-top: 1px; }

/* ===== Main ===== */
.main { grid-column:2; grid-row:2; display: flex; flex-direction: column; min-width:0; min-height:0; background:transparent; border:0; border-radius:var(--radius-lg); box-shadow:none; overflow:hidden; }
.topbar {
  grid-column:1 / -1; grid-row:1; height:74px; min-width:0;
  background: rgba(255,255,255,.85);
  backdrop-filter: blur(14px);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 24px;
  z-index: 10;
  margin:0;
}
.topbar-brand{display:flex;align-items:center;gap:12px;min-width:330px}.topbar-brand .logo-mark{width:46px;height:46px;flex:0 0 46px}.topbar-brand .logo-name{font-size:17px}.topbar-brand .logo-sub{font-size:11px}.topbar-left{margin-left:12px}.topbar-left h1{font-size:18px}
.topbar h1 { font-size: 17px; font-weight: 800; color: var(--ink); letter-spacing: .2px; }
.topbar-right { display: flex; gap: 10px; }
.topbar-right .btn.primary { display: inline-flex; gap: 6px; align-items: center; }
.topbar-account{display:flex;align-items:center;gap:8px;margin-left:4px;padding-left:12px;border-left:1px solid var(--border)}
.default-avatar{display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(145deg,#f1f5f9 0%,#cbd5e1 100%);color:#64748b;box-shadow:0 3px 10px rgba(71,85,105,.14)}
.default-avatar svg{width:62%;height:62%;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.default-avatar-top{width:30px;height:30px;flex:0 0 30px;border-radius:50%;border:2px solid #e2e8f0}
.account-center,.btn-logout-top{border:0;background:transparent;color:var(--ink-2);font-size:12px;cursor:pointer;white-space:nowrap}
.account-center:hover{color:var(--brand)}.btn-logout-top{color:var(--danger)}.btn-logout-top:hover{text-decoration:underline}
.account-name{font-size:12px;color:var(--ink);font-weight:700;white-space:nowrap}
.account-settings-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px;margin-bottom:20px}
.account-profile-head{display:flex;align-items:center;gap:12px;padding-bottom:18px;border-bottom:1px solid var(--border-light)}
.default-avatar-profile{width:48px;height:48px;flex:0 0 48px;border-radius:14px;border:2px solid #e2e8f0}
.account-profile-name{font-size:16px;font-weight:800;color:var(--ink)}
.account-profile-sub{font-size:12px;color:var(--ink-3);margin-top:4px;line-height:1.6;overflow-wrap:anywhere}
.account-field{margin-top:16px}.account-field label{display:block;font-size:12px;color:var(--ink-2);font-weight:700;margin-bottom:7px}
.account-field-row{display:flex;gap:8px}.account-field-row input{flex:1;min-width:0;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink);outline:none}.account-field-row input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.account-bind-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--border-light)}.account-bind-row:last-child{border-bottom:0;padding-bottom:0}.account-bind-row strong,.account-bind-row small{display:block}.account-bind-row strong{font-size:13px;color:var(--ink)}.account-bind-row small{font-size:11px;color:var(--ink-3);margin-top:4px}.account-bind-ok{font-size:12px;color:var(--ok-deep);background:var(--ok-soft);border-radius:999px;padding:5px 10px;white-space:nowrap}

/* ===== PRE-RELEASE-ACCOUNT-OPS：用户编号 / 绑定弹窗 / 注销冷静期 ===== */
.acct-code-row{display:flex;align-items:center;gap:16px;margin-top:16px;padding:0;background:none;border:0;border-radius:0}
.acct-code-label{font-size:14px;color:var(--ink-2);font-weight:400}
.acct-code-value{flex:1;min-width:0;font-size:14px;font-weight:400;letter-spacing:normal;color:var(--ink)}
.acct-code-note{margin-top:8px;font-size:11px;line-height:1.7;color:var(--ink-3)}
.acct-danger-note{margin-top:10px;font-size:11px;line-height:1.8;color:var(--ink-3);border-left:3px solid var(--danger-soft);padding-left:10px}
.acct-cancel-panel{border:1px solid #fecaca;background:linear-gradient(180deg,#fff7f7 0%,#ffffff 100%);margin-bottom:20px}
.acct-cancel-title{font-size:15px;font-weight:800;color:var(--danger);margin-bottom:14px}
.acct-cancel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.acct-cancel-grid>div{background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.acct-cancel-grid span{display:block;font-size:11px;color:var(--ink-3);margin-bottom:4px}
.acct-cancel-grid strong{font-size:13px;color:var(--ink)}
.acct-cancel-eta{color:var(--danger)!important}
.acct-cancel-note{margin-top:14px;font-size:12px;line-height:1.9;color:var(--ink-2)}
.acct-cancel-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.acct-dialog-body{font-size:13px;color:var(--ink-2);line-height:1.8}
.acct-dialog-field{margin-bottom:12px}
.acct-dialog-field label{display:block;font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.acct-dialog-field input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink);outline:none;font-size:13px}
.acct-dialog-field input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.acct-dialog-hint{font-size:12px;color:var(--ink-3)}
.acct-dialog-warn{font-size:12px;line-height:1.9;color:var(--ink-2);background:var(--amber-soft);border:1px solid #fde68a;border-radius:10px;padding:10px 12px}
.acct-dialog-err{min-height:16px;margin-top:8px;font-size:12px;color:var(--danger)}
.acct-test-box{margin-top:6px;border:1px dashed var(--amber);background:var(--amber-soft);border-radius:10px;padding:10px 12px}
.acct-test-head{font-size:12px;font-weight:800;color:var(--amber);margin-bottom:6px}
.acct-test-body{font-size:12px;line-height:1.8;color:#7c2d12}
.acct-test-body code{display:inline-block;margin-left:4px;padding:2px 8px;border-radius:6px;background:#fff;border:1px solid #fde68a;font-size:15px;font-weight:800;letter-spacing:.16em;color:#7c2d12}

.page-content {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 0 8px;
  border-radius:var(--radius-lg);
  clip-path: inset(0 round var(--radius-lg));
  scrollbar-width: none;
  animation: pageIn .28s ease both;
}
.page-content::-webkit-scrollbar { width: 0; height: 0; display: none; }
@keyframes pageIn {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ===== Cards ===== */
.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  margin-bottom: 16px;
  transition: box-shadow .2s;
}
.card:hover { box-shadow: var(--shadow); }
.card-pad { padding: 24px; }
.card-title {
  font-size: 15px; font-weight: 800; color: var(--ink);
  margin-bottom: 16px;
  display: flex; align-items: center; justify-content: space-between;
}

/* ===== Buttons ===== */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px; padding: 0 18px;
  border: 1px solid var(--border); border-radius: 12px;
  background: #fff; color: var(--ink-2);
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
}
.btn:hover { border-color: var(--brand); color: var(--brand-deep); transform: translateY(-1px); }
.btn:active { transform: scale(.97); }
.btn.primary {
  background: linear-gradient(135deg, var(--brand), var(--brand-deep));
  border-color: transparent; color: #fff;
  box-shadow: 0 6px 16px rgba(79,70,229,.28);
}
.btn.primary:hover { color: #fff; box-shadow: 0 10px 22px rgba(79,70,229,.4); }
.btn.light { background: var(--brand-soft); border-color: var(--brand-border); color: var(--brand-deep); }
.btn.danger { background: var(--danger-soft); border-color: #fecaca; color: var(--danger); }
.btn.block { width: 100%; }
.btn.mini { height: 30px; padding: 0 12px; font-size: 12px; border-radius: 9px; }
.btn.btn-icon { display: inline-flex; align-items: center; gap: 6px; }
.btn[disabled] { opacity: .5; cursor: default; }

/* ===== Badges ===== */
.badge {
  display: inline-flex; align-items: center; white-space: nowrap;
  padding: 4px 10px; border-radius: 999px;
  font-size: 11px; font-weight: 600;
  background: #f1f5f9; color: var(--ink-2);
}
.badge.ok { background: var(--ok-soft); color: var(--ok-deep); }
.badge.warn { background: var(--amber-soft); color: var(--amber); }
.badge.danger { background: var(--danger-soft); color: var(--danger); }
.badge.info { background: var(--info-soft); color: var(--info); }

/* ===== Forms ===== */
.field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.field label { font-size: 13px; color: var(--ink-2); font-weight: 600; }
.field small { color: var(--ink-3); font-size: 11px; line-height: 1.5; }
.field input, .field textarea, .field select {
  width: 100%; padding: 9px 13px;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: #fff; color: var(--ink);
  font-size: 14px; transition: all .15s;
}
.field input:focus, .field textarea:focus, .field select:focus {
  border-color: var(--brand); outline: none;
  background: #fff;
  box-shadow: 0 0 0 3.5px rgba(79,70,229,.14);
}

/* 全站表单控件：统一提高输入框的可见度和主次层级 */
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]),
select,
textarea {
  box-sizing: border-box;
  border: 1.5px solid #cbd5e1;
  background-color: #fff;
  color: var(--ink);
  padding: 8px 12px;
  border-radius: 9px;
  font-size: 13px;
  min-height: 38px;
  font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
select { appearance: none; -webkit-appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; }
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):hover,
select:hover,
textarea:hover {
  border-color: #94a3b8;
}
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):focus,
select:focus,
textarea:focus {
  border-color: var(--brand) !important;
  outline: none;
  box-shadow: 0 0 0 3px rgba(79,70,229,.14);
}
/* 数字输入框保留输入能力，但不显示浏览器上下微调箭头 */
input[type="number"] { -moz-appearance: textfield; }
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

/* 所有输入框占位提示文字统一为灰度 */
input::placeholder, textarea::placeholder {
  color: var(--ink-3);
  opacity: 1;
}
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
  color: var(--ink-3);
  opacity: 1;
}
input::-moz-placeholder, textarea::-moz-placeholder {
  color: var(--ink-3);
  opacity: 1;
}

/* ===== Rows ===== */
.row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 13px 0; border-top: 1px solid var(--border-light);
}
.row:first-child { border-top: none; }
.row .label { font-size: 13px; color: var(--ink-2); }
.row .value { font-size: 13px; font-weight: 700; }

/* ===== Seg Bar ===== */
.seg-bar { display: flex; gap: 8px; margin-bottom: 16px; }
.seg {
  border: 1px solid var(--border); background: #fff; color: var(--ink-2);
  border-radius: 999px; padding: 7px 16px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  transition: all .15s;
}
.seg:hover { border-color: var(--brand); color: var(--brand-deep); }
.seg.active { background: var(--brand); color: #fff; border-color: var(--brand); }

/* ===== Stats Row ===== */
.stats-row {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  margin-bottom: 20px;
}
.profit-stats-row { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.profit-locked-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.profit-locked-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.stat-card {
  background: var(--card);
  border-radius: var(--radius-lg);
  padding: 20px 22px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  transition: transform .18s, box-shadow .18s;
  position: relative;
  overflow: hidden;
}
.stat-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.stat-card::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 4px;
}
.stat-card:nth-child(1)::before { background: var(--brand); }
.stat-card:nth-child(2)::before { background: var(--info); }
.stat-card:nth-child(3)::before { background: var(--ok); }
.stat-card:nth-child(4)::before { background: var(--violet); }
.profit-stats-row .stat-card:nth-child(5)::before { background: var(--amber); }
.stat-card .stat-label { font-size: 12px; color: var(--ink-3); font-weight: 600; }
.stat-card .stat-value { font-size: 26px; font-weight: 800; margin: 5px 0; letter-spacing: -.5px; }
.stat-card .stat-extra { font-size: 11px; color: var(--ink-3); }
.stat-card .stat-value.warn { color: var(--amber); }
.stat-card .stat-value.ok { color: var(--ok-deep); }
.stat-card .merchant-amount-label { color: #16834b; font-weight: 800; }
.stat-card .merchant-amount-value { color: #16834b; }
.stat-card.merchant-amount-card { background: #e8f5e9; border-color: #b7e4c7; }
@media (max-width: 960px) { .profit-stats-row { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .profit-stats-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ===== Task Table ===== */
.task-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.task-table th {
  background: #f8fafc;
  padding: 13px 16px;
  text-align: left;
  font-size: 12px; font-weight: 700; color: var(--ink-2);
  border-bottom: 1px solid var(--border-light);
}
.task-table td {
  padding: 14px 16px;
  font-size: 13px;
  border-bottom: 1px solid var(--border-light);
}
.task-table tr:hover td { background: #f8fafc; }
.task-table tr:last-child td { border-bottom: none; }

/* 快递成本规则表：固定列宽，短文本列不换行，仅适用区域列允许换行 */
.rule-table { table-layout: fixed; }
.rule-table th, .rule-table td { vertical-align: top; }
.rule-table td:nth-child(2),
.rule-table td:nth-child(3),
.rule-table td:nth-child(5),
.rule-table td:nth-child(6),
.rule-table td:nth-child(7),
.rule-table td:nth-child(8) { white-space: nowrap; }
.rule-table td:nth-child(4) { overflow: hidden; text-overflow: ellipsis; }
.rule-table td:nth-child(9) { white-space: nowrap; }
.rule-table td:nth-child(9) .btn { margin-right: 4px; }

/* ===== 渐变主卡（工作台新建对账 / 利润） ===== */
.profit-hero, .hero-card {
  background: var(--brand-bg);
  border: 1px solid var(--brand-border);
  border-radius: var(--radius-lg);
  padding: 30px 34px;
  color: var(--ink);
  margin-bottom: 20px;
  position: relative;
  overflow: hidden;
}
.profit-hero::after, .hero-card::after {
  content: '';
  position: absolute; right: -90px; top: -90px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(79,70,229,.14) 0%, transparent 70%);
  pointer-events: none;
}
.profit-hero .pl { font-size: 13px; color: var(--ink-3); font-weight: 600; }
.profit-hero .pn { font-size: 38px; font-weight: 800; margin: 4px 0; letter-spacing: -.8px; color: var(--brand-deep); }
.profit-hero .pr { font-size: 14px; color: var(--ink-2); }
.profit-hero .pr.neg { color: var(--danger); }
.profit-hero .hero-side { text-align: right; position: relative; z-index: 1; }
.profit-hero .hero-side .pn { color: var(--ink); }

/* ===== 工作台新建对账主卡 ===== */
.hero-card { display: flex; flex-direction: column; }
.home-ad-mount:not(:empty) { display:grid; gap:12px; margin:16px 0; }
.web-ad-card { display:flex; align-items:center; gap:18px; min-height:96px; padding:14px 18px; overflow:hidden; border:1px solid #dbeafe; border-radius:16px; color:inherit; text-decoration:none; background:linear-gradient(115deg,#f4f8ff,#eaf2ff); box-shadow:0 8px 24px rgba(37,99,235,.06); }
.web-ad-card:hover { border-color:#93c5fd; box-shadow:0 10px 28px rgba(37,99,235,.11); }
.web-ad-image { display:block; width:180px; max-height:108px; flex:none; object-fit:cover; border-radius:10px; }
.web-ad-copy { display:flex; flex:1; min-width:0; flex-direction:column; gap:5px; }
.web-ad-copy strong { color:#173b70; font-size:16px; }
.web-ad-copy p { margin:0; color:#60738e; font-size:13px; line-height:1.55; }
.web-ad-button { display:inline-flex; align-items:center; gap:8px; align-self:flex-start; margin-top:3px; color:#2563eb; font-size:12.5px; font-weight:700; }
.web-ad-button b { font-size:20px; line-height:12px; }
.hero-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; position: relative; z-index: 1; }
.hero-label {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 700;
  color: var(--brand-deep);
  background: rgba(255,255,255,.65);
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid var(--brand-border);
}
.hero-title { font-size: 28px; font-weight: 800; margin: 14px 0 8px; letter-spacing: -.8px; color: var(--ink); }
.hero-desc { font-size: 13.5px; color: var(--ink-2); line-height: 1.8; }
.hero-desc-line { display: block; }
.hero-art {
  width: 116px; height: 116px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.7);
  border: 1px solid var(--brand-border);
  border-radius: 26px;
  box-shadow: var(--shadow-sm);
}
.hero-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  margin-top: 22px; padding: 0 28px; height: 48px; line-height: 1;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-deep) 100%);
  border-radius: 14px;
  color: #fff; font-size: 15px; font-weight: 700;
  cursor: pointer;
  box-shadow: 0 12px 26px rgba(79,70,229,.38);
  transition: all .18s;
  align-self: flex-start;
  position: relative; z-index: 1;
  border: none;
}
.hero-btn svg { display: block; flex-shrink: 0; }
.hero-btn:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(79,70,229,.48); }
.hero-btn:active { transform: translateY(0) scale(.98); }
.hero-meta { display: flex; gap: 22px; margin-top: 22px; position: relative; z-index: 1; }
.hero-meta-item { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-2); background: rgba(255,255,255,.6); padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border); }
.hero-decoration { position:absolute; left:58%; top:42%; right:auto; width:460px; height:128px; padding:15px 20px 12px; border:1px solid rgba(99,102,241,.15); border-radius:22px; background:linear-gradient(145deg, rgba(255,255,255,.46), rgba(224,231,255,.22)); box-shadow:0 18px 38px rgba(67,56,202,.08); opacity:.82; pointer-events:none; z-index:0; transform:translate(-50%,-50%) rotate(-1.5deg); }
.hero-deco-head,.hero-deco-foot { display:flex; align-items:center; gap:8px; color:rgba(67,56,202,.58); font-size:11px; }
.hero-deco-head em { margin-left:auto; font-style:normal; color:rgba(16,185,129,.72); }
.hero-deco-signal { width:7px; height:7px; border-radius:50%; background:#818cf8; box-shadow:0 0 0 4px rgba(129,140,248,.12); }
.hero-deco-report { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:10px 0 8px; }
.hero-deco-report div { min-width:0; padding:7px 12px; border-radius:10px; background:rgba(255,255,255,.35); border:1px solid rgba(99,102,241,.08); }
.hero-deco-report span,.hero-deco-report b { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hero-deco-report span { font-size:10px; color:rgba(71,85,105,.62); }
.hero-deco-report b { margin-top:3px; font-size:13px; color:rgba(67,56,202,.62); }
.hero-deco-report b.warn { color:rgba(217,119,6,.72); }
.hero-deco-report b.ok { color:rgba(16,185,129,.76); }
.hero-deco-foot strong { margin-left:auto; padding:3px 7px; border-radius:5px; font-size:9px; font-weight:700; color:rgba(67,56,202,.7); background:rgba(224,231,255,.66); }
.hero-flow{position:absolute;right:28px;bottom:16px;width:57%;display:flex;align-items:center;gap:8px;color:rgba(67,56,202,.5);font-size:10px;pointer-events:none;z-index:0}.hero-flow span{display:flex;flex-direction:column;gap:2px;white-space:nowrap}.hero-flow b{font-size:15px;color:rgba(67,56,202,.35)}.hero-flow i{height:1px;flex:1;min-width:10px;background:rgba(99,102,241,.32);position:relative}.hero-flow i:after{content:'›';position:absolute;right:-3px;top:-9px;font-size:16px;color:rgba(67,56,202,.45)}

/* ===== Upload Zone ===== */
.upload-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }
.upload-zone {
  border: 2px dashed var(--border); border-radius: var(--radius-lg);
  padding: 44px 20px; text-align: center;
  background: #fafafa; cursor: pointer;
  transition: all .2s;
}
.upload-zone:hover { border-color: var(--brand); background: #fff; transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.upload-zone.has-file { border-style: solid; border-color: var(--ok); background: var(--ok-soft); }
.upload-zone .uz-icon {
  width: 52px; height: 52px; margin: 0 auto 12px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 16px;
  font-size: 24px;
}
.uz-icon.blue { background: var(--info-soft); }
.uz-icon.green { background: var(--ok-soft); }
.upload-zone .uz-title { font-size: 15px; font-weight: 800; color: var(--ink); }
.upload-zone .uz-desc { font-size: 12px; color: var(--ink-3); margin-top: 4px; }

/* ===== Empty State ===== */
.empty-state {
  padding: 60px 40px; text-align: center;
  background: var(--card); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.empty-state .empty-icon { font-size: 48px; margin-bottom: 12px; opacity: .45; }
.empty-state .empty-title { font-size: 15px; font-weight: 800; color: var(--ink-2); }
.empty-state .empty-desc { font-size: 12px; color: var(--ink-3); margin-top: 6px; }
.empty-state .entitlement-lock-desc {
  box-sizing: border-box;
  width: min(100%, 560px);
  max-width: 560px;
  margin: 8px auto 0;
  font-size: 13px;
  text-align: center;
  line-height: 1.8;
}

/* ===== Locked reconciliation report overlay ===== */
.result-view-shell { position: relative; min-height: calc(100vh - 150px); }
.result-lock-mask {
  position: absolute;
  z-index: 30;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 28px;
  border-radius: var(--radius-lg);
  background: rgba(239, 244, 251, .76);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
}
.result-lock-dialog {
  box-sizing: border-box;
  width: min(100%, 560px);
  padding: 32px 36px 26px;
  border: 1px solid #c7d2fe;
  border-radius: 18px;
  background: rgba(255, 255, 255, .97);
  box-shadow: 0 20px 60px rgba(36, 52, 94, .2);
  text-align: center;
}
.result-lock-icon { margin-bottom: 10px; font-size: 42px; line-height: 1.2; }
.result-lock-title { color: var(--ink); font-size: 21px; font-weight: 800; }
.result-lock-copy { max-width: 460px; margin: 10px auto 0; color: var(--ink-2); font-size: 14px; line-height: 1.8; }
.result-lock-dialog .payment-gate { margin: 20px 0 0; padding: 0; border: 0; background: transparent; box-shadow: none; text-align: center; }
.result-lock-dialog .payment-gate-row { flex-direction: column; gap: 8px; margin-top: 0; }
.result-lock-dialog .payment-title { font-size: 15px; }
.result-lock-dialog .payment-desc { font-size: 13px; }
.result-lock-dialog .payment-gate-row strong { font-size: 30px; }
.result-lock-dialog .payment-gate-actions { justify-content: center; flex-wrap: wrap; margin-top: 16px; }
.result-lock-dialog .payment-gate-actions span { font-size: 12px; }
.result-lock-back { margin-top: 14px; }
@media (max-width: 640px) {
  .result-lock-mask { padding: 14px; }
  .result-lock-dialog { padding: 26px 20px 20px; }
  .result-lock-title { font-size: 19px; }
}

/* ===== Toast ===== */
.toast {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%);
  background: rgba(15,23,42,.92); color: #fff;
  padding: 11px 22px; border-radius: 999px;
  font-size: 13px; font-weight: 600; z-index: 999;
  opacity: 0; transition: opacity .25s;
  pointer-events: none;
  box-shadow: 0 10px 28px rgba(15,23,42,.3);
}
.toast.show { opacity: 1; }

/* ===== Modal ===== */
.modal-mask {
  position: fixed; inset: 0; background: rgba(15,23,42,.42); z-index: 4000;
  display: flex; align-items: center; justify-content: center;
  overflow-y: auto;
  padding: 16px;
  backdrop-filter: blur(3px);
}
.modal-shell {
  position: relative;
  max-width: 94%;
}
.modal-close {
  position: absolute;
  top: -10px;
  right: -38px;
  z-index: 5;
  width: 32px;
  height: 32px;
  border: 1px solid #e2e8f0;
  border-radius: 50%;
  background: #fff;
  color: transparent;
  font-size: 0;
  line-height: 0;
  font-weight: 500;
  cursor: pointer;
  box-shadow: 5px 3px 10px rgba(15,23,42,.1);
  transition: color .18s ease, background .18s ease, transform .18s ease;
}
.modal-close::before,
.modal-close::after {
  content: "";
  position: absolute;
  left: 9px;
  top: 15px;
  width: 13px;
  height: 1.5px;
  border-radius: 2px;
  background: #64748b;
  transition: background .18s ease;
}
.modal-close::before { transform: rotate(45deg); }
.modal-close::after { transform: rotate(-45deg); }
.modal-close:hover {
  background: #eef2f7;
  transform: translateX(2px);
}
.modal-close:hover::before,
.modal-close:hover::after { background: #334155; }
.modal-box {
  background: #fff; border-radius: var(--radius-lg); padding: 26px;
  width: 520px; max-width: 94%;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  box-shadow: var(--shadow-lg);
  animation: modalIn .2s ease both;
}
@keyframes modalIn {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.modal-box h3 { font-size: 16px; font-weight: 800; margin-bottom: 12px; }
.modal-box p { font-size: 13px; color: var(--ink-2); line-height: 1.7; }
.modal-box .modal-actions { display: flex; gap: 10px; margin-top: 22px; justify-content: flex-end; }

/* ===== 价格规则编辑器 ===== */
.rule-region-card {
  border: 1px solid #dbe4f0; border-radius: 14px; padding: 16px;
  margin-bottom: 14px; background: linear-gradient(180deg,#fbfdff 0%,#f7faff 100%);
  box-shadow: 0 3px 12px rgba(31,41,55,.04);
}
.rule-region-head { display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.rule-region-name { flex:1; min-width:0; height:40px; padding:0 12px; border:1px solid #dbe4f0; border-radius:9px; outline:none; background:#fff; color:#334155; font-size:14px; font-weight:600; transition:border-color .18s ease, box-shadow .18s ease; }
.rule-region-name::placeholder { color:#94a3b8; font-weight:500; }
.rule-region-name:focus { border-color:#818cf8; box-shadow:0 0 0 3px rgba(99,102,241,.12); }
.rule-region-meta { display:inline-flex; align-items:center; max-width:52%; padding:5px 10px; border-radius:999px; background:#eef2ff; color:#4338ca; font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rule-section-title { display:flex; align-items:center; gap:8px; margin:14px 0 8px; color:#334155; font-size:13px; font-weight:800; }
.rule-section-title::before { content:""; width:3px; height:15px; border-radius:3px; background:#6366f1; }
.rule-field-note { margin:0 0 8px; color:#94a3b8; font-size:12px; line-height:1.6; }
.sku-package-picker { position:relative; }
.sku-package-picker > .btn { width:100%; min-height:42px; text-align:left; }
.sku-package-options { position:absolute; z-index:20; top:calc(100% + 5px); left:0; right:0; max-height:220px; overflow:auto; padding:5px; background:#fff; border:1px solid var(--border); border-radius:9px; box-shadow:0 10px 26px rgba(15,23,42,.16); }
/* 弹窗内展开：改为文档流内铺开，避免被 .modal-box 的滚动容器裁掉 */
.sku-package-options.open { position:static; margin-top:6px; max-height:200px; box-shadow:0 4px 14px rgba(15,23,42,.08); }
.sku-package-option { display:flex; align-items:center; justify-content:space-between; width:100%; border:0; background:#fff; padding:9px 10px; border-radius:6px; text-align:left; color:var(--ink); cursor:pointer; }
.sku-package-option:hover { background:#f1f5ff; }
.sku-package-option span { color:var(--ink-3); font-size:12px; }
.pkg-linked-specs { margin:14px 0 4px; border:1px solid var(--border); border-radius:9px; padding:11px 13px; background:#f8fafc; font-size:13px; line-height:1.7; }
.pkg-linked-specs strong { display:block; margin-bottom:4px; color:var(--ink); }
.pkg-linked-specs #pkgLinkedSpecs { color:var(--ink-2); }
.rule-tier-table { border:1px solid #dbe4f0; border-radius:10px; overflow:hidden; background:#fff; }
.rule-tier-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 64px; gap:10px; align-items:center; min-height:52px; padding:8px 12px; border-top:1px solid #edf2f7; }
.rule-tier-row:first-child { border-top:0; }
.rule-tier-row.rule-tier-head { min-height:44px; background:#f1f5f9; color:#475569; font-size:12px; font-weight:800; padding-top:9px; padding-bottom:9px; }
.rule-tier-row.rule-tier-head span { min-width:0; line-height:1.35; }
.rule-tier-row input { width:100%; min-width:0; height:36px; padding:5px 10px; border:1px solid #cbd5e1; border-radius:8px; background:#fff; color:#0f172a; font-size:13px; }
.rule-tier-row input:focus, .rule-region-card input:focus { outline:0; border-color:#818cf8; box-shadow:0 0 0 3px rgba(99,102,241,.12); }
.rule-tier-row .btn { width:64px; height:36px; min-height:36px; padding:0; }
.rule-inline-field { display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid #e2e8f0; border-radius:9px; background:#fff; }
.rule-inline-field label { color:#64748b; font-size:12px; white-space:nowrap; }
.rule-add-tier-btn { min-height:36px; padding:0 14px; border:1px solid #a5b4fc; border-radius:9px; background:#eef2ff; color:#4338ca; font-size:12px; font-weight:800; }
.rule-add-tier-btn:hover { background:#e0e7ff; border-color:#818cf8; }
.rule-inline-field input { width:150px; height:32px; padding:5px 9px; border:1px solid #d6e0eb; border-radius:7px; }
.rule-province-box { border:1px solid #dbe4f0; border-radius:10px; background:#fff; padding:10px; }
.rule-province-input { width:100%; height:34px; padding:6px 10px; border:1px solid #d6e0eb; border-radius:7px; font-size:12px; margin-bottom:8px; }
.rule-province-list { display:flex; flex-wrap:wrap; gap:6px; max-height:92px; overflow-y:auto; padding:2px; }
.rule-province-chip { padding:5px 10px; border-radius:7px; font-size:12px; cursor:pointer; user-select:none; background:#f1f5f9; color:#475569; transition:.15s; }
.rule-province-chip:hover { background:#e2e8f0; }
.rule-province-chip.selected { background:#4f46e5; color:#fff; box-shadow:0 3px 8px rgba(79,70,229,.18); }
.rule-selected-summary { margin-top:8px; color:#64748b; font-size:12px; line-height:1.7; }
.rule-selected-summary strong { color:#475569; }
.template-download-btn { border-color:#c7d2fe; background:#eef2ff; color:#4338ca; }
.template-download-btn:hover { background:#e0e7ff; color:#3730a3; }
.template-download-box { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px; padding:11px 12px; border:1px solid #bfdbfe; border-radius:10px; background:linear-gradient(135deg,#eff6ff,#eef2ff); color:#3730a3; }
.template-download-box strong { display:block; font-size:12px; }
.template-download-box small { display:block; margin-top:3px; color:#64748b; font-size:11px; line-height:1.4; }
.template-download-box .btn { flex:none; min-height:34px; padding:0 12px; font-size:12px; font-weight:700; }
.template-download-box-compact { flex-direction:column; align-items:stretch; text-align:center; }
.template-download-box-compact .btn { width:100%; }
.smart-image-panel {
  padding: 14px 12px 12px;
  border: 1.5px solid #a5b4fc;
  border-radius: 12px;
  background: linear-gradient(145deg, #eef2ff 0%, #f8faff 100%);
  text-align: center;
  box-shadow: 0 5px 14px rgba(79,70,229,.10);
}
.company-step-guide { display:flex; align-items:center; gap:12px; min-height:76px; margin-top:2px; padding:14px 18px; border:1px solid #dbe4f0; border-radius:12px; background:linear-gradient(135deg,#fff 0%,#f7faff 100%); }
.company-step-number { display:flex; align-items:center; justify-content:center; flex:none; width:30px; height:30px; border-radius:50%; background:#e0e7ff; color:#4338ca; font-size:15px; font-weight:800; }
.company-step-guide strong { display:block; color:#334155; font-size:13px; }
.company-step-guide small { display:block; margin-top:5px; color:#94a3b8; font-size:11px; line-height:1.5; }
.required-company-label { display:block; margin-bottom:7px; color:#1e293b; font-size:15px; font-weight:800; }
.required-company-label span { color:#ef4444; font-size:18px; vertical-align:-1px; }
.smart-top-actions { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:10px; margin-bottom:12px; }
.smart-top-action { display:grid; grid-template-rows:auto minmax(30px,1fr) 36px 16px; min-width:0; padding:12px; border:1px solid #dbe4f0; border-radius:10px; background:#f8faff; text-align:center; }
.smart-image-action { border-color:#dbe4f0; background:#f8faff; }
.smart-recommended { border-color:#c7d2fe; background:linear-gradient(145deg,#eef2ff 0%,#f8faff 100%); }
.smart-action-title { color:#334155; font-size:13px; font-weight:800; }
.smart-action-title span { margin-left:3px; padding:2px 5px; border-radius:999px; background:#4f46e5; color:#fff; font-size:10px; }
.smart-action-desc { min-height:30px; margin:5px 0 8px; color:#64748b; font-size:12px; line-height:1.4; }
.smart-top-action .btn { width:100%; min-height:36px; margin-top:0; padding:0 8px; font-size:13px; font-weight:700; }
.smart-text-panel { padding:12px; border:1.5px solid var(--brand-soft); border-radius:10px; background:#f8faff; }
.smart-text-title { margin-bottom:6px; color:var(--brand); font-size:12px; font-weight:800; }
.smart-text-panel textarea { width:100%; padding:10px; border:1.5px solid #c7d2fe; border-radius:6px; font-size:12px; resize:vertical; background:#fff; }
.smart-image-title { color:#3730a3; font-size:13px; font-weight:800; }
.smart-image-title span { margin-left:4px; padding:2px 6px; border-radius:999px; background:#4f46e5; color:#fff; font-size:10px; }
.smart-image-desc { margin:7px 0 11px; color:#64748b; font-size:11px; line-height:1.5; }
.smart-image-upload-btn { width:100%; min-height:36px; border:1px solid #cbd5e1; border-radius:9px; background:#fff; color:#475569; font-size:13px; font-weight:700; cursor:pointer; box-shadow:none; }
.smart-image-upload-btn:hover { background:#f1f5f9; }
.smart-image-action .smart-image-upload-btn { margin-top:0; }
.smart-image-file-name { min-height:16px; margin-top:0; color:#4338ca; font-size:11px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.smart-file-secondary { width:100%; margin-top:0; color:#475569; }
.smart-recognition-progress { margin-top:10px; padding:10px 12px; border:1px solid #c7d2fe; border-radius:9px; background:#f8faff; }
.smart-recognition-progress[hidden] { display:none; }
.smart-recognition-progress-head { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#4338ca; font-size:12px; font-weight:700; }
.smart-recognition-progress-head strong { color:#4f46e5; font-size:13px; }
.smart-recognition-progress-track { height:11px; margin-top:7px; overflow:hidden; border-radius:999px; background:#e0e7ff; }
.smart-recognition-progress-bar { position:relative; width:0; height:100%; border-radius:inherit; background:linear-gradient(90deg,#6366f1,#4f46e5,#7c3aed); transition:width .3s ease; }
/* 进度条右端跟一辆小货车：让"还在跑"这件事一眼可见，避免用户以为卡死 */
.smart-recognition-progress-bar::after { content:'🚚'; position:absolute; right:1px; top:50%; transform:translateY(-50%); font-size:10px; line-height:1; }
.smart-recognition-progress.is-indeterminate .smart-recognition-progress-bar { animation: smartProgressLoop 1.15s ease-in-out infinite; }
.smart-recognition-progress.is-indeterminate .smart-recognition-progress-bar::after { content:''; }
@keyframes smartProgressLoop { 0% { transform:translateX(-115%); } 100% { transform:translateX(285%); } }
/* 已用时间 + 阶段清单（卡片式步骤提示，明确"现在在做什么"） */
.smart-progress-elapsed { margin-left:auto; margin-right:10px; color:#818cf8; font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; }
.smart-progress-steps { display:flex; flex-wrap:wrap; gap:5px 14px; margin-top:8px; color:#94a3b8; font-size:11px; font-weight:600; }
.smart-progress-steps span { display:inline-flex; align-items:center; gap:4px; transition:color .2s ease; }
.smart-progress-steps span.done { color:#4f46e5; }
.smart-progress-steps span.done::before { content:'✓'; font-weight:800; }
.smart-progress-steps span.active { color:#4338ca; }
.smart-progress-steps span.active::before { content:'◐'; display:inline-block; animation:smartProgressSpin .9s linear infinite; }
.smart-progress-steps span.todo::before { content:'○'; color:#cbd5e1; }
@keyframes smartProgressSpin { 0% { transform:rotate(0deg); } 100% { transform:rotate(360deg); } }
.rule-company-template-layout { display:grid; grid-template-columns:1.45fr 1fr 1fr 1fr; gap:10px; align-items:stretch; }
.rule-company-template-layout.rule-manual-layout { grid-template-columns:1fr 1fr; }
.rule-company-template-layout.rule-smart-layout { grid-template-columns:1.45fr 1fr 1fr 1fr; }
.rule-company-template-layout > .field { margin:0; align-self:start; }
.rule-company-template-layout > .field > label { box-sizing:border-box; height:24px; min-height:24px; margin:0 0 7px; display:flex; align-items:center; line-height:24px; }
.rule-company-template-layout > .field > div > select,
.rule-company-template-layout > .field > div > input,
.rule-company-template-layout > .field > #rulePlanName { height:47px; }
.rule-company-template-layout select,
#ruleDeliveryType,
#ruleBillingMethod {
  appearance:none;
  -webkit-appearance:none;
  padding-right:42px;
  background-color:#fff;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23334155' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  background-size:16px 16px;
  /* 下拉箭头固定在右侧，不参与输入框的过渡动画，避免选中后从左侧滑入。 */
  transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
  background-position:right 12px center !important;
  background-size:16px 16px !important;
}
.rule-pricing-mode-cards { display:grid; grid-template-columns:1.25fr 1fr; gap:10px; margin-top:10px; }
.rule-pricing-mode-card { min-height:72px; padding:12px 14px; border:1px solid #dbe4f0; border-radius:11px; background:#f8fafc; cursor:pointer; transition:.18s ease; }
.rule-pricing-mode-card.regional { border-color:#a5b4fc; background:#f5f7ff; }
.rule-pricing-mode-card strong { color:#334155; font-size:14px; }
.rule-pricing-mode-card span { margin-left:7px; padding:3px 7px; border-radius:999px; background:#e2e8f0; color:#64748b; font-size:11px; }
.rule-pricing-mode-card small { display:block; margin-top:6px; color:#94a3b8; font-size:11px; }
.rule-pricing-mode-card.active { border-color:#4f46e5; background:#eef2ff; box-shadow:0 4px 12px rgba(79,70,229,.12); }
.rule-pricing-mode-card.active strong { color:#4338ca; }
.rule-pricing-mode-card.active span { background:#4f46e5; color:#fff; }
.modal-tabs { display:flex; justify-content:center; gap:12px; margin:0 auto 20px; padding:0; border:0; background:transparent; }
.modal-tab { flex:0 1 210px; min-height:44px; padding:0 18px; border:1px solid #dbe4f0; border-radius:11px; background:#fff; color:#64748b; font-size:15px; font-weight:800; cursor:pointer; box-shadow:0 2px 7px rgba(15,23,42,.04); transition:color .18s ease, background .18s ease, box-shadow .18s ease, border-color .18s ease, transform .18s ease; }
.modal-tab:hover { border-color:#a5b4fc; background:#f8faff; color:#4338ca; transform:translateY(-1px); }
.modal-tab.active { border-color:#818cf8; background:#eef2ff; color:#4338ca; box-shadow:0 4px 12px rgba(79,70,229,.14), inset 0 0 0 1px rgba(99,102,241,.08); }
.rule-add-region-btn { min-height:36px; padding:0 14px; border-color:#a5b4fc; color:#4338ca; background:#eef2ff; font-weight:800; }
.rule-add-region-btn:hover { background:#e0e7ff; }
.rule-top-template { margin-top:0; min-height:78px; }
.rule-zone-details { min-width:220px; max-width:100%; }
.rule-zone-details summary { position:relative; display:flex; flex-direction:column; gap:3px; padding-right:24px; cursor:pointer; list-style:none; }
.rule-zone-details summary::-webkit-details-marker { display:none; }
.rule-zone-details summary::before { content:"＋"; position:absolute; right:0; top:1px; display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:50%; background:#eef2ff; color:#4f46e5; font-size:13px; font-weight:800; }
.rule-zone-details[open] summary::before { content:"−"; }
.rule-zone-summary-title { color:#334155; line-height:1.55; }
.rule-zone-summary-hint { color:#94a3b8; font-size:11px; }
.rule-zone-detail-list { margin-top:8px; padding:8px 10px; border:1px solid #e2e8f0; border-radius:8px; background:#f8fafc; max-height:180px; overflow-y:auto; }
.rule-zone-detail-row { display:grid; grid-template-columns:94px minmax(0,1fr); gap:8px; padding:5px 0; border-bottom:1px solid #e9eef5; font-size:12px; line-height:1.55; }
.rule-zone-detail-row:last-child { border-bottom:0; }
.rule-zone-detail-row strong { color:#475569; }
.rule-zone-detail-row span { color:#64748b; overflow-wrap:anywhere; }
.status-switch { display:inline-flex; align-items:center; gap:7px; cursor:pointer; user-select:none; white-space:nowrap; }
.status-switch input { position:absolute; opacity:0; pointer-events:none; }
.status-switch-track { position:relative; display:inline-flex; align-items:center; width:38px; height:22px; padding:2px; border-radius:999px; background:#cbd5e1; transition:.2s; }
.status-switch-thumb { width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(15,23,42,.25); transition:.2s; }
.status-switch input:checked + .status-switch-track { background:#22c55e; }
.status-switch input:checked + .status-switch-track .status-switch-thumb { transform:translateX(16px); }
.status-switch-text { color:#64748b; font-size:12px; }
.status-switch input:checked ~ .status-switch-text { color:#15803d; font-weight:700; }
@media (max-width: 720px) {
  .rule-company-template-layout { grid-template-columns:1fr 1fr; gap:10px; }
  .rule-top-template { margin-top:4px; }
  .rule-region-head { flex-wrap:wrap; }
  .rule-region-meta { max-width:100%; order:3; width:100%; }
  .rule-tier-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 48px; gap:6px; padding-left:7px; padding-right:7px; }
  .rule-tier-row .btn { width:48px; padding:0 4px; }
}

/* ===== Data Table ===== */
.data-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.data-table th { background: #f8fafc; padding: 11px 12px; text-align: left; font-weight: 700; color: var(--ink-2); border-bottom: 1px solid var(--border-light); }
.data-table td { padding: 11px 12px; border-bottom: 1px solid var(--border-light); }
.data-table tr:hover td { background: #f8fafc; }

/* ===== Utility ===== */
.mt-8 { margin-top: 8px; }
.mt-16 { margin-top: 16px; }
.mb-8 { margin-bottom: 8px; }
.mb-16 { margin-bottom: 16px; }
.text-muted { color: var(--ink-3); }
.text-small { font-size: 12px; }
.text-bold { font-weight: 700; }
.text-right { text-align: right; }
.flex { display: flex; }
.flex-1 { flex: 1; }
.gap-8 { gap: 8px; }
.gap-12 { gap: 12px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }

/* Profit input clarity and spacing */
.profit-income-card, .profit-cost-card { margin-top: 16px; }
.profit-cost-title { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.profit-cost-subtotal { display: flex; align-items: baseline; gap: 10px; color: var(--ink-3); font-size: 12px; }
.profit-cost-subtotal strong { color: var(--ink); font-size: 18px; font-variant-numeric: tabular-nums; }
.profit-income-card > .text-small, .profit-cost-card > .text-small { margin: -8px 0 18px; line-height: 1.65; }
.profit-income-grid { align-items: start; max-width: 980px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.profit-income-grid label { display: grid; gap: 8px; color: var(--ink-2); font-size: 13px; font-weight: 600; }
.profit-income-grid .input { width: 100%; min-height: 42px; }
.profit-cost-head, .profit-cost-row {
  display: grid; grid-template-columns: minmax(240px, 1fr) minmax(180px, 260px) 72px;
  max-width: 980px;
  gap: 12px; align-items: center;
}
.profit-cost-head { padding: 0 0 8px; color: var(--ink-3); font-size: 12px; }
.profit-cost-row { padding: 10px 0; border-top: 1px solid var(--border-light); }
.profit-cost-row .input { width: 100%; min-height: 40px; }
.profit-cost-row .btn { justify-self: end; }
.profit-cost-row .input::placeholder, .profit-income-grid .input::placeholder { color: #9aa6b7; }
.profit-empty { padding: 14px 0; color: var(--ink-3); font-size: 13px; }
@media (max-width: 640px) {
  .profit-income-grid { grid-template-columns: 1fr; }
  .profit-income-grid { max-width: none; }
  .profit-cost-head { display: none; }
  .profit-cost-row { grid-template-columns: minmax(0, 1fr) minmax(120px, .7fr); gap: 8px; }
  .profit-cost-row .btn { grid-column: 2; }
}

/* ===== Notice ===== */
.notice {
  padding: 13px 15px; border-radius: var(--radius-sm);
  background: var(--info-soft); color: #1e40af;
  font-size: 12px; line-height: 1.7; margin-bottom: 16px;
}
.notice.ok { background: var(--ok-soft); color: var(--ok-deep); }
.notice.warn { background: var(--amber-soft); color: #92400e; }

/* ===== Page Header ===== */
.page-header {
  display: flex; justify-content: space-between; align-items: flex-end;
  margin-bottom: 22px;
}
.page-header h2 { font-size: 21px; font-weight: 800; letter-spacing: -.4px; }
.page-header .desc { font-size: 13px; color: var(--ink-3); margin-top: 3px; }

/* ===== Quick Actions ===== */
.quick-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.quick-item {
  display: flex; flex-direction: column; align-items: center; gap: 9px;
  padding: 22px 0; cursor: pointer;
  border-radius: var(--radius);
  border: 1px solid transparent;
  transition: all .18s;
}
.quick-item:hover { background: #f8fafc; border-color: var(--border-light); transform: translateY(-2px); }
.quick-icon {
  width: 48px; height: 48px; border-radius: 15px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
}
.quick-icon.blue { background: var(--info-soft); }
.quick-icon.orange { background: var(--amber-soft); }
.quick-icon.green { background: var(--ok-soft); }
.quick-icon.purple { background: var(--violet-soft); }
.quick-name { font-size: 12px; color: var(--ink-2); font-weight: 600; }

/* ============================================================
   新建对账 · 4 步流程
   ============================================================ */
.recon-wrap { max-width: 880px; margin: 0 auto; }

/* 步骤条 */
.recon-steps {
  display: flex; align-items: center;
  background: var(--card);
  border-radius: var(--radius-lg);
  padding: 20px 28px;
  box-shadow: var(--shadow-sm);
  margin-bottom: 20px;
  border: 1px solid var(--border);
}
.rstep { display: flex; align-items: center; gap: 10px; }
.rstep-num {
  width: 30px; height: 30px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 800;
  background: #f1f5f9; color: var(--ink-3);
  transition: all .25s;
}
.rstep-label { font-size: 13px; font-weight: 600; color: var(--ink-3); transition: color .2s; }
.rstep.active .rstep-num { background: linear-gradient(135deg, var(--brand), var(--brand-deep)); color: #fff; box-shadow: 0 4px 12px rgba(79,70,229,.4); transform: scale(1.06); }
.rstep.active .rstep-label { color: var(--ink); font-weight: 800; }
.rstep.done .rstep-num { background: var(--ok-soft); color: var(--ok-deep); }
.rstep.done .rstep-label { color: var(--ok-deep); }
.rstep-line { flex: 1; height: 3px; background: #e2e8f0; margin: 0 16px; border-radius: 3px; position: relative; overflow: hidden; }
.rstep-line.done { background: var(--ok); opacity: .3; }
.rstep-line.done::after {
  content: ''; position: absolute; inset: 0;
  background: var(--ok); opacity: .55;
  border-radius: 3px;
  animation: fillLine .4s ease both;
}
@keyframes fillLine { from { width: 0; } to { width: 100%; } }

/* 表单卡片 */
.form-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 28px 30px;
  margin-bottom: 16px;
}
.form-card-title {
  font-size: 15px; font-weight: 800; color: var(--ink);
  margin-bottom: 22px;
  display: flex; align-items: center; gap: 10px;
}
.form-card-title .fc-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: linear-gradient(135deg, var(--brand), var(--brand-deep));
  box-shadow: 0 0 0 4px var(--brand-soft);
}
.form-label {
  font-size: 13px; font-weight: 700; color: var(--ink-2);
  margin-bottom: 8px;
  display: flex; align-items: center; gap: 2px;
}
.req, .form-label .req { color: var(--danger); margin-left: 2px; }
.form-input, .form-select {
  width: 100%; padding: 11px 15px;
  border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  background: #fff; color: var(--ink);
  font-size: 14px; transition: all .15s;
  font-family: var(--font);
}
.form-input:focus, .form-select:focus {
  border-color: var(--brand); outline: none;
  background: #fff;
  box-shadow: 0 0 0 4px rgba(79,70,229,.13);
}
.form-select { appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%2394a3b8' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 38px;
}
.form-select.placeholder { color: var(--ink-3); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 4px; }

/* 月份选择器：统一日历图标样式，和整体表单风格一致 */
.form-input[type="month"] {
  position: relative;
  padding-right: 38px;
}
.form-input[type="month"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
  opacity: 0.55;
  width: 18px; height: 18px;
  transition: opacity .15s;
}
.form-input[type="month"]:hover::-webkit-calendar-picker-indicator { opacity: 1; }
.form-help { font-size: 12px; color: var(--ink-3); margin-top: 6px; }

/* 计费方案自动匹配 */
.auto-match {
  display: flex; align-items: center; gap: 8px;
  margin-top: 14px;
  padding: 12px 15px;
  background: var(--ok-soft);
  border: 1px solid #bbf7d0;
  border-radius: var(--radius-sm);
  font-size: 13px; color: var(--ok-deep);
}
.auto-match .am-bold { font-weight: 800; }
.auto-match .am-btn {
  margin-left: auto;
  padding: 5px 13px;
  background: #fff; border: 1px solid #bbf7d0;
  border-radius: 999px;
  font-size: 12px; color: var(--ok-deep); font-weight: 700;
  cursor: pointer; transition: all .15s;
}
.auto-match .am-btn:hover { background: var(--ok); color: #fff; border-color: var(--ok); }

.no-plan-tip {
  display: flex; align-items: center; gap: 12px;
  margin-top: 14px;
  padding: 15px 16px;
  background: var(--amber-soft);
  border: 1px solid #fde68a;
  border-radius: var(--radius-sm);
}
.no-plan-title { font-size: 13px; font-weight: 800; color: #92400e; }
.no-plan-desc { font-size: 12px; color: #b45309; margin-top: 2px; }
.no-plan-btn {
  margin-left: auto;
  padding: 8px 15px;
  background: linear-gradient(135deg, var(--amber), #b45309);
  color: #fff;
  border-radius: 999px; font-size: 12px; font-weight: 700;
  cursor: pointer; white-space: nowrap;
  box-shadow: 0 4px 12px rgba(217,119,6,.35);
  transition: all .15s;
}
.no-plan-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(217,119,6,.45); }

/* 附加费用 */
.surcharge-title { font-size: 13px; font-weight: 800; color: var(--ink); margin-bottom: 12px; }
.surcharge-choice { display: flex; gap: 12px; margin-bottom: 12px; }
.surcharge-option {
  flex: 1;
  display: flex; align-items: center; gap: 9px;
  padding: 14px 16px;
  border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  cursor: pointer; transition: all .18s;
  font-size: 13px; color: var(--ink-2);
  background: #fff;
}
.surcharge-option:hover { border-color: var(--brand); }
.surcharge-option.selected { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-deep); font-weight: 700; box-shadow: 0 0 0 3.5px rgba(79,70,229,.1); }
.so-radio { font-size: 15px; color: #cbd5e1; }
.surcharge-option.selected .so-radio { color: var(--brand); }
.surcharge-state {
  display: flex; align-items: center; gap: 8px;
  padding: 13px 15px;
  background: #f8fafc; border-radius: var(--radius-sm);
  font-size: 13px; color: var(--ink-3);
}
/* 【D5 已缓存设备】另一端已改选 + 本端有未提交编辑 → 冲突提示（保留本端草稿） */
.surcharge-conflict-hint {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 11px 14px; margin-bottom: 10px;
  background: #fff7ed; border: 1px solid #fed7aa; border-radius: var(--radius-sm);
  font-size: 13px; line-height: 1.6; color: #9a3412;
}
.surcharge-conflict-hint svg { flex: none; margin-top: 2px; }
.surcharge-conflict-hint .sch-btn {
  flex: none; margin-left: auto;
  padding: 5px 10px; font-size: 12px;
  background: #fff; color: #9a3412; border: 1px solid #fdba74; border-radius: 6px;
  cursor: pointer; white-space: nowrap;
}
/* 附加费用：未关联空状态引导（对齐小程序） */
.surcharge-empty {
  margin-top: 4px;
  padding: 18px 16px 16px;
  background: linear-gradient(180deg, #f5f7ff 0%, #eef2ff 100%);
  border: 1.5px dashed #c7d2fe;
  border-radius: var(--radius-sm);
  text-align: center;
}
.surcharge-empty .se-title { font-size: 14px; font-weight: 800; color: var(--brand-deep); }
.surcharge-empty .se-desc { font-size: 12px; color: var(--ink-3); margin-top: 4px; }
.surcharge-empty .se-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 14px;
  padding: 9px 22px;
  background: linear-gradient(135deg, var(--brand), #6d64ef);
  color: #fff;
  border-radius: 999px; font-size: 13px; font-weight: 700;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(79,70,229,.35);
  transition: all .15s;
}
.surcharge-empty .se-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(79,70,229,.45); }
.surcharge-empty .se-plus { font-size: 16px; line-height: 1; }
.surcharge-empty .se-step {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin-top: 16px;
  font-size: 12px; color: var(--ink-3);
}
.surcharge-empty .step-item { display: flex; align-items: center; gap: 5px; }
.surcharge-empty .step-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%;
  background: #fff; border: 1.5px solid var(--brand);
  color: var(--brand); font-size: 11px; font-weight: 800;
}
.surcharge-empty .step-arrow { color: #b6c0f5; }

/* 附加费用：已关联规则勾选列表 */
.surcharge-desc { font-size: 12px; color: var(--ink-3); margin: 2px 0 10px; }
.surcharge-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px;
  border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  background: #fff; margin-bottom: 8px;
  cursor: pointer; transition: all .15s;
}
.surcharge-item:hover { border-color: var(--brand); }
.surcharge-item.checked { border-color: var(--brand); background: var(--brand-soft); }
.surcharge-item .si-check {
  flex: 0 0 auto;
  width: 20px; height: 20px; border-radius: 6px;
  border: 1.5px solid #cbd5e1; background: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; color: #fff; font-weight: 800;
}
.surcharge-item.checked .si-check { background: var(--brand); border-color: var(--brand); }
.surcharge-item .si-info { flex: 1; min-width: 0; }
.surcharge-item .si-name { font-size: 13px; font-weight: 700; color: var(--ink); }
.surcharge-item .si-meta { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
/* 附加费创建弹窗 */
.sc-scroll { max-height: 58vh; overflow-y: auto; padding-right: 4px; }
.sc-req { color: #d64545; }
.sc-disabled { background: #f1f5f9; color: var(--ink-3); cursor: not-allowed; }
.sc-hint { font-size: 11px; color: var(--ink-3); margin-top: 5px; line-height: 1.5; }

/* 有效期分段 */
.sc-seg-group { display: flex; gap: 8px; margin-bottom: 8px; }
.sc-seg-item {
  flex: 1; text-align: center; padding: 8px 12px;
  border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  font-size: 13px; color: var(--ink-2); cursor: pointer; transition: all .15s;
  background: #fff;
}
.sc-seg-item.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-deep); font-weight: 700; }
.sc-date-row { display: flex; gap: 10px; }
.sc-date-item { flex: 1; }
.sc-date-label { display: block; font-size: 12px; color: var(--ink-3); margin-bottom: 4px; }
.sc-date-item input { width: 100%; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }

/* 计费方式卡片 */
.sc-charge-group { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-bottom: 10px; }
.sc-charge-card {
  padding: 10px 8px; border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  text-align: center; cursor: pointer; transition: all .15s; background: #fff;
}
.sc-charge-card.active { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 0 0 3px rgba(79,70,229,.08); }
.sc-charge-card .scc-name { font-size: 13px; font-weight: 700; color: var(--ink); }
.sc-charge-card.active .scc-name { color: var(--brand-deep); }
.sc-charge-card .scc-desc { font-size: 11px; color: var(--ink-3); margin-top: 2px; }

/* 金额输入行 */
.sc-amount-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.sc-amount-row input { flex: 1; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
/* 紧凑：首重+续重三列 */
.sc-amount-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.sc-amount-grid-3 { grid-template-columns: 1fr 1fr 1.3fr; }
.sc-input-narrow { width: 52px !important; min-width: 0; }
.sc-input-flex { flex: 1; min-width: 0; }
.sc-unit-prefix { font-size: 12px; color: var(--text-secondary, #6b7280); white-space: nowrap; }
.sc-amount-item { display: flex; flex-direction: column; gap: 3px; }
.sc-amount-label { font-size: 11px; color: var(--text-secondary, #6b7280); font-weight: 500; }
.sc-amount-input-wrap { display: flex; align-items: center; gap: 5px; }
.sc-amount-input-wrap input { flex: 1; padding: 7px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; min-width: 0; }
/* 表单整体紧凑化 */
.sc-scroll .field { margin-bottom: 10px; }
.sc-scroll .field > label { margin-bottom: 4px; font-size: 13px; }
.sc-scroll input, .sc-scroll select { padding: 7px 10px; font-size: 13px; }
.sc-hint { margin-top: 3px; font-size: 11px; }
/* 识别结果提示弹窗 */
.sc-tip-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9999; display: flex; align-items: center; justify-content: center; }
.sc-tip-box { background: #fff; border-radius: 12px; width: 420px; max-width: 90vw; max-height: 80vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,0.2); }
.sc-tip-title { padding: 16px 20px; font-size: 16px; font-weight: 600; color: #92400e; border-bottom: 1px solid #fef3c7; background: #fffbeb; border-radius: 12px 12px 0 0; }
.sc-tip-body { padding: 16px 20px; font-size: 13px; line-height: 1.7; color: #374151; }
.sc-tip-body ul { margin: 8px 0; padding-left: 20px; }
.sc-tip-body li { margin: 2px 0; }
.sc-tip-foot { padding: 12px 20px 16px; text-align: right; border-top: 1px solid #f3f4f6; }
.sc-tip-foot .btn { padding: 8px 24px; }

/* 识别结果卡片紧凑化 */
.sc-rc-card { margin-bottom: 8px; }
.sc-rc-head { padding: 8px 12px; }
.sc-rc-body { padding: 6px 12px; }
.sc-rc-field { padding: 2px 0; }
.sc-unit { font-size: 12px; color: var(--ink-3); white-space: nowrap; }

/* 适用地区 */
.sc-region-quick { display: flex; gap: 8px; margin-bottom: 8px; }
.sc-region-btn {
  padding: 7px 14px; border: 1.5px solid var(--brand); border-radius: 999px;
  background: #fff; color: var(--brand); font-size: 12px; font-weight: 600;
  cursor: pointer; transition: all .15s;
}
.sc-region-btn:hover { background: var(--brand-soft); }
.sc-province-panel {
  max-height: 130px; overflow-y: auto;
  border: 1px solid var(--border); border-radius: 8px; padding: 10px;
  margin-bottom: 8px; background: #fafbff;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px 8px;
}
.sc-province-item { font-size: 12px; color: var(--ink-2); cursor: pointer; display: flex; align-items: center; gap: 4px; }
.sc-province-item input { cursor: pointer; }
.sc-selected-regions { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; min-height: 24px; }
.sc-regions-empty { font-size: 12px; color: var(--ink-3); font-style: italic; }
.sc-region-tag {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 10px; background: var(--brand-soft); color: var(--brand-deep);
  border-radius: 999px; font-size: 12px; font-weight: 600;
}
.sc-region-remove { cursor: pointer; font-size: 14px; line-height: 1; opacity: .7; }
.sc-region-remove:hover { opacity: 1; }
/* 三级地区选择面板 */
.sc-region-panel {
  border: 1px solid var(--border); border-radius: 8px;
  margin-bottom: 8px; background: #fafbff; overflow: hidden;
}
.sc-rp-head {
  padding: 8px 12px; font-size: 12px; color: var(--ink-3);
  background: #f0f3ff; border-bottom: 1px solid var(--border);
}
.sc-rp-crumb {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 12px; font-size: 12px;
  background: #f0f3ff; border-bottom: 1px solid var(--border);
}
.sc-rp-crumb span:first-child { cursor: pointer; color: var(--brand); font-weight: 600; }
.sc-rp-crumb .sc-rp-cur { color: var(--ink); font-weight: 700; }
.sc-rp-list { max-height: 200px; overflow-y: auto; padding: 4px 0; }
.sc-rp-row {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 12px; cursor: pointer; transition: background .12s;
}
.sc-rp-row:hover { background: var(--brand-soft); }
.sc-rp-name { flex: 1; font-size: 13px; color: var(--ink); }
.sc-rp-count { font-size: 11px; color: var(--brand); font-weight: 600; }
.sc-rp-add {
  padding: 3px 10px; font-size: 11px; border: 1px solid var(--brand);
  border-radius: 999px; background: #fff; color: var(--brand);
  cursor: pointer; font-weight: 600; transition: all .12s;
}
.sc-rp-add:hover { background: var(--brand); color: #fff; }
.sc-rp-add.primary { background: var(--brand); color: #fff; }
.sc-dist-actions {
  display: flex; gap: 6px; padding: 8px 12px;
  border-bottom: 1px solid var(--border); background: #f0f3ff;
}
.sc-dist-list {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px 8px;
  max-height: 180px; overflow-y: auto; padding: 8px 12px;
}
.sc-dist-item {
  font-size: 12px; color: var(--ink-2); cursor: pointer;
  display: flex; align-items: center; gap: 4px; padding: 3px 4px;
  border-radius: 4px; transition: background .12s;
}
.sc-dist-item:hover { background: var(--brand-soft); }
.sc-dist-item.checked { color: var(--brand-deep); font-weight: 600; }
.sc-dist-item input { cursor: pointer; }
/* 智能识别结果卡片 */
.sc-rc-card {
  border: 1px solid var(--border); border-radius: 10px;
  background: #fff; margin-bottom: 10px; overflow: hidden;
  transition: box-shadow .15s;
}
.sc-rc-card:hover { box-shadow: 0 2px 12px rgba(79,70,229,.1); }
.sc-rc-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px; background: linear-gradient(135deg, #f5f7ff, #eef2ff);
  border-bottom: 1px solid var(--border);
}
.sc-rc-name { font-size: 14px; font-weight: 800; color: var(--ink); }
.sc-rc-type {
  font-size: 11px; font-weight: 700; color: var(--brand-deep);
  background: #fff; border: 1px solid var(--brand); border-radius: 999px;
  padding: 2px 10px;
}
.sc-rc-body { padding: 8px 14px; }
.sc-rc-field {
  display: flex; gap: 10px; padding: 4px 0;
  font-size: 12px; line-height: 1.5;
}
.sc-rc-label {
  flex: 0 0 64px; color: var(--ink-3); font-weight: 600;
}
.sc-rc-value { flex: 1; color: var(--ink); word-break: break-all; }
.sc-rc-foot {
  padding: 8px 14px 12px; text-align: right;
  border-top: 1px dashed var(--border);
}
.btn-sm { padding: 4px 12px; font-size: 12px; border-radius: 6px; }

/* 数据来源 */
.source-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.source-item {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 32px 20px;
  border: 2px dashed var(--border); border-radius: var(--radius-lg);
  background: #fafafa;
  cursor: pointer; transition: all .2s;
}
.source-item:hover { border-color: var(--brand); background: #fff; transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.source-item.has-file { border-style: solid; border-color: var(--ok); background: var(--ok-soft); }
.source-item .si-icon {
  width: 56px; height: 56px; border-radius: 18px;
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
}
.source-item.blue .si-icon { background: var(--info-soft); }
.source-item.green .si-icon { background: var(--ok-soft); }
.source-item .si-name { font-size: 15px; font-weight: 800; color: var(--ink); }
.source-item .si-desc { font-size: 12px; color: var(--ink-3); }
.source-item .si-file { font-size: 12px; color: var(--ok-deep); font-weight: 700; margin-top: 2px; }
.source-tip { font-size: 12px; color: var(--ink-3); margin-top: 14px; text-align: center; }

/* 字段确认 */
.map-note { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--ok-deep); font-weight: 700; }

/* 底部操作栏 */
.recon-actions {
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px; margin-top: 22px;
}
.recon-actions .ra-left { display: flex; gap: 10px; }
.recon-actions .ra-right { display: flex; gap: 10px; }
.recon-actions .btn-main {
  height: 44px; padding: 0 28px;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-deep) 100%);
  border: none; color: #fff;
  font-size: 14.5px; font-weight: 700;
  border-radius: 14px; cursor: pointer;
  box-shadow: 0 8px 20px rgba(79,70,229,.32);
  transition: all .18s;
  display: inline-flex; align-items: center; gap: 8px;
}
.recon-actions .btn-main:hover { transform: translateY(-1px); box-shadow: 0 12px 26px rgba(79,70,229,.44); }
.recon-actions .btn-main:active { transform: scale(.98); }
.recon-actions .btn-main:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }

/* 完成页 */
.done-card { text-align: center; padding: 60px 40px; }
.done-icon {
  width: 80px; height: 80px; margin: 0 auto 20px;
  border-radius: 50%;
  background: var(--ok-soft);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 0 10px rgba(22,163,74,.08);
  animation: popIn .35s ease both;
}
@keyframes popIn {
  from { transform: scale(.6); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
.done-title { font-size: 21px; font-weight: 800; color: var(--ink); }
.done-desc { font-size: 13px; color: var(--ink-3); margin-top: 8px; }

/* ===== Section（工作台分区） ===== */
.section { margin-bottom: 24px; }
.section-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.section-title { display: flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 800; color: var(--ink); }
.section-title-dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: linear-gradient(135deg, var(--brand), var(--brand-deep));
  box-shadow: 0 0 0 4px var(--brand-soft);
}
.section-more { font-size: 12px; color: var(--brand-deep); cursor: pointer; font-weight: 700; }
.section-more:hover { text-decoration: underline; }

/* 最近对账列表 */
.recon-list { background: var(--card); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border: 1px solid var(--border); overflow: hidden; }
.recon-row {
  display: flex; align-items: center; gap: 15px;
  padding: 17px 20px;
  border-bottom: 1px solid var(--border-light);
  cursor: pointer; transition: background .15s;
}
.recon-row:last-child { border-bottom: none; }
.recon-row:hover { background: #f8fafc; }
.recon-icon {
  width: 42px; height: 42px; border-radius: 13px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: #fff; font-weight: 800; font-size: 14px;
  box-shadow: 0 6px 14px rgba(15,23,42,.18);
}
.recon-icon.yt { background: linear-gradient(135deg, var(--brand), var(--brand-deep)); }
.recon-icon.zt { background: linear-gradient(135deg, var(--amber), #b45309); }
.recon-icon.sf { background: linear-gradient(135deg, var(--info), #1d4ed8); }
.recon-icon.df { background: linear-gradient(135deg, var(--violet), #6d28d9); }
.recon-main { flex: 1; min-width: 0; }
.recon-title { font-size: 14px; font-weight: 800; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recon-meta { display: flex; align-items: center; gap: 18px; margin-top: 4px; font-size: 12px; color: var(--ink-3); }
.recon-meta-item { display: flex; align-items: center; gap: 4px; }
.recon-right { text-align: right; flex-shrink: 0; }
.recon-amount { font-size: 12px; font-weight: 800; }
.recon-amount.green { color: var(--ok-deep); }
.recon-amount.orange { color: var(--amber); }
.recon-time { font-size: 11px; color: var(--ink-3); margin-top: 3px; }

/* 滚动条美化 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
::-webkit-scrollbar-track { background: transparent; }

/* ===== 登录宣传页：满屏工作台背景 + 右侧悬浮登录卡 ===== */
.login-screen { position:fixed; inset:0; z-index:1000; width:100vw; height:100vh; min-height:100vh; margin:0; background:#10152d; overflow:hidden; }
.auth-mode .sidebar,.auth-mode .topbar { display:none; }
.auth-mode.layout { display:block; padding:0; gap:0; }
.auth-mode .main { margin-left:0; border:0; border-radius:0; box-shadow:none; background:transparent; }
.auth-mode .page-content { padding:0; overflow:visible; border-radius:0; clip-path:none; animation:none; transform:none !important; }
.auth-mode .login-screen { margin:0; }
.login-backdrop { min-height: 100vh; position: relative; display: flex; align-items: center; padding: 56px 7vw; box-sizing: border-box; color: #fff; background: radial-gradient(circle at 15% 20%, rgba(99,102,241,.42), transparent 34%), radial-gradient(circle at 75% 80%, rgba(45,212,191,.16), transparent 32%), linear-gradient(135deg, #10152d 0%, #1d2551 54%, #11182f 100%); }
.login-backdrop:after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(12,18,42,.08), rgba(12,18,42,.24)); pointer-events: none; }
.login-content { position: relative; z-index: 2; width: min(650px, 52vw); margin-left: 3vw; }
.login-brand { display:flex; align-items:center; gap:16px; margin-bottom:40px; }
.login-brand-copy { min-width:0; text-align:left; }
.login-brand-name { color:#fff; font-size:24px; line-height:1.4; font-weight:700; letter-spacing:0; }
.login-brand-mark { display:inline-flex; width:56px; height:56px; flex:0 0 56px; align-items:center; justify-content:center; border-radius:8px; overflow:hidden; background:transparent; box-shadow:none; }
.login-brand-mark img { width:100%; height:100%; object-fit:contain; display:block; border-radius:inherit; }
.login-card-head .login-card-icon { width:52px; height:52px; flex:0 0 52px; border-radius:10px; overflow:hidden; background:#2468f2; }
.login-card-icon img { width:100%; height:100%; object-fit:contain; display:block; }
.login-brand .login-kicker { margin:6px 0 0; color:#b5bfdb; font-size:14px; line-height:1.6; letter-spacing:0; font-weight:400; }
.login-content h1 { margin: 12px 0 16px; font-size: clamp(38px, 4.6vw, 64px); line-height: 1.12; letter-spacing: -.05em; }
.login-content h1 span { color: #a5b4fc; }
.login-lead { max-width: none; width: max-content; color: #c7d2fe; font-size: 16px; line-height: 1.8; white-space: nowrap; }
.login-features { display: flex; gap: 26px; margin-top: 34px; }
.login-features > div { display: flex; gap: 9px; align-items: flex-start; }
.login-features b { color: #818cf8; font-size: 11px; letter-spacing: .08em; }
.login-features strong,.login-features small { display: block; }
.login-features strong { font-size: 13px; }
.login-features small { margin-top: 5px; color: #94a3b8; font-size: 11px; }
.login-preview { width: min(590px, 48vw); height: 145px; margin-top: 40px; padding: 14px 16px; box-sizing: border-box; border: 1px solid rgba(255,255,255,.13); border-radius: 18px; background: rgba(255,255,255,.09); box-shadow: 0 24px 70px rgba(2,6,23,.28); transform: perspective(900px) rotateY(5deg) rotateX(2deg); }
.preview-top { display:flex; gap: 5px; align-items:center; color:#c7d2fe; font-size: 10px; }
.preview-top span { width: 6px; height:6px; border-radius:50%; background:#818cf8; opacity:.8; }.preview-top span:nth-child(2){background:#67e8f9}.preview-top span:nth-child(3){background:#86efac}.preview-top em { margin-left: 10px; font-style: normal; opacity: .75; }
.preview-grid { display:flex; gap: 10px; margin-top: 15px; }.preview-grid i { height: 28px; flex: 1; border-radius: 7px; background: rgba(255,255,255,.12); }.preview-grid i:first-child{background:rgba(129,140,248,.34)}
.preview-chart { display:flex; align-items:flex-end; gap:8px; height: 44px; margin-top: 13px; }.preview-chart span { flex:1; border-radius:4px 4px 0 0; background:linear-gradient(#a5b4fc,#6366f1); opacity:.8; }.preview-chart span:nth-child(1){height:35%}.preview-chart span:nth-child(2){height:58%}.preview-chart span:nth-child(3){height:42%}.preview-chart span:nth-child(4){height:75%}.preview-chart span:nth-child(5){height:62%}.preview-chart span:nth-child(6){height:92%}
.login-card { position: relative; z-index: 2; width: 380px; flex-shrink: 0; margin-left: auto; padding: 30px; border: 1px solid rgba(255,255,255,.3); border-radius: 24px; color: #0f172a; background: rgba(255,255,255,.88); box-shadow: 0 28px 90px rgba(2,6,23,.35); backdrop-filter: blur(22px); }
.login-card-head { display:flex; gap:12px; align-items:center; }.login-card-icon { width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:13px;color:#fff;font-weight:800;background:linear-gradient(135deg,#6366f1,#4338ca); }.login-card h2 { margin:0;font-size:20px; }.login-card-head p { margin:5px 0 0;color:#64748b;font-size:12px; }
.wechat-login-box { display:flex; gap:12px; align-items:center; margin:26px 0 20px; padding:14px; border-radius:14px; border:1px solid #dbeafe; background:#f8fbff; }.wechat-code { width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#16a34a;background:#dcfce7; }.wechat-code svg{width:27px;height:27px;display:block}.wechat-login-box strong,.wechat-login-box small{display:block}.wechat-login-box strong{font-size:13px}.wechat-login-box small{margin-top:4px;color:#64748b;font-size:11px}
.wechat-scan-panel{margin:18px auto 18px;text-align:center}.wechat-qr{width:132px;height:132px;margin:0 auto 10px;border:10px solid #fff;border-radius:12px;background:repeating-conic-gradient(#0f172a 0 25%,#fff 0 50%) 0/18px 18px;box-shadow:0 8px 22px rgba(15,23,42,.12)}.wechat-scan-panel p{margin:0;color:#334155;font-size:13px;font-weight:700}.wechat-scan-panel small{display:block;margin-top:5px;color:#94a3b8;font-size:11px}
.login-card label { display:block; margin:14px 0 7px; color:#334155; font-size:12px; font-weight:700; }.login-card input { width:100%; box-sizing:border-box; padding:12px 13px; border:1px solid #dbe2ee; border-radius:10px; outline:none; font-size:14px; background:#fff; }.login-card input:focus { border-color:#6366f1; box-shadow:0 0 0 3px rgba(99,102,241,.12); }
.login-submit { width:100%; margin-top:22px; padding:12px 15px; border:0; border-radius:11px; color:#fff; background:linear-gradient(135deg,#6366f1,#4338ca); font-size:14px; font-weight:800; cursor:pointer; box-shadow:0 10px 20px rgba(79,70,229,.25); }.login-submit span{float:right;font-size:18px;line-height:14px}.login-submit:disabled{opacity:.55;cursor:wait}
.login-note { margin:16px 0 0; color:#94a3b8; font-size:11px; line-height:1.6; text-align:center; }.server-settings { margin-top:22px; color:#94a3b8; font-size:11px; }.server-settings summary{cursor:pointer;text-align:center}.server-settings div{display:flex;gap:6px;margin-top:8px}.server-settings input{padding:8px;font-size:11px}.server-settings button{border:0;border-radius:7px;background:#e2e8f0;color:#475569;padding:0 10px;cursor:pointer}
.login-orb { position:absolute; border-radius:50%; filter:blur(2px); opacity:.32; pointer-events:none; }.orb-a{width:330px;height:330px;left:-110px;bottom:-120px;background:#6366f1}.orb-b{width:240px;height:240px;right:30%;top:-120px;background:#22d3ee}
.login-workbench-bg { position:absolute; z-index:0; left:3%; right:3%; top:12%; bottom:9%; opacity:.42; transform:perspective(1200px) rotateY(3deg) rotateX(2deg); filter:blur(.3px); pointer-events:none; }
.login-workbench-bg:after { content:''; position:absolute; inset:0; border-radius:30px; background:linear-gradient(115deg,rgba(129,140,248,.18),rgba(15,23,42,.42) 58%,rgba(34,211,238,.10)); box-shadow:inset 0 0 100px rgba(2,6,23,.35),0 30px 90px rgba(2,6,23,.24); }
.wb-sidebar { position:absolute; left:0; top:0; bottom:0; width:14%; padding:24px 16px; border:1px solid rgba(255,255,255,.12); border-radius:20px 0 0 20px; background:rgba(255,255,255,.08); }
.wb-logo { width:30px; height:30px; margin-bottom:32px; border-radius:10px; background:linear-gradient(135deg,#a5b4fc,#6366f1); }.wb-sidebar i { display:block; width:70%; height:8px; margin:19px 0; border-radius:6px; background:rgba(255,255,255,.16); }.wb-sidebar i:first-of-type{background:rgba(165,180,252,.66)}
.wb-main { position:absolute; left:14%; right:0; top:0; bottom:0; padding:20px 22px; border:1px solid rgba(255,255,255,.12); border-left:0; border-radius:0 20px 20px 0; background:rgba(255,255,255,.055); }.wb-toolbar { height:28px; display:flex; align-items:center; gap:7px; color:rgba(255,255,255,.62); font-size:10px; }.wb-toolbar span { width:7px;height:7px;border-radius:50%;background:#818cf8; }.wb-toolbar span:nth-child(2){background:#67e8f9}.wb-toolbar b { margin-left:10px; font-weight:500; }.wb-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:18px; }.wb-metrics i { height:67px; border-radius:12px; border:1px solid rgba(255,255,255,.1); background:linear-gradient(135deg,rgba(255,255,255,.15),rgba(255,255,255,.04)); }.wb-metrics i:first-child{background:linear-gradient(135deg,rgba(129,140,248,.5),rgba(99,102,241,.15))}.wb-columns { display:grid; grid-template-columns:1.35fr .8fr; gap:14px; margin-top:16px; height:calc(100% - 135px); }.wb-panel { padding:16px; border-radius:14px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.08); }.wb-panel em { display:block; width:30%; height:8px; margin-bottom:20px; border-radius:6px; background:rgba(255,255,255,.28); }.wb-chart-panel { position:relative; }.wb-chart { position:absolute; left:20px; right:20px; bottom:20px; height:60%; display:flex; align-items:flex-end; gap:10px; }.wb-chart i { flex:1; border-radius:5px 5px 0 0; background:linear-gradient(#a5b4fc,#6366f1); opacity:.72; }.wb-chart i:nth-child(1){height:34%}.wb-chart i:nth-child(2){height:48%}.wb-chart i:nth-child(3){height:39%}.wb-chart i:nth-child(4){height:65%}.wb-chart i:nth-child(5){height:55%}.wb-chart i:nth-child(6){height:76%}.wb-chart i:nth-child(7){height:68%}.wb-chart i:nth-child(8){height:90%}.wb-list-panel i { display:block; height:18px; margin:18px 0; border-radius:5px; background:rgba(255,255,255,.14); }.wb-list-panel i:nth-of-type(1){background:rgba(110,231,183,.45)}
.payment-gate { margin-top: 18px; border-color: #c7d2fe; background: linear-gradient(135deg,#f8faff,#eef2ff); }.payment-gate-row { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-top:14px; }.payment-title { font-weight:800; color:var(--ink); }.payment-desc { margin-top:5px; color:var(--ink-3); font-size:12px; }.payment-gate-row strong { color:var(--brand-deep); font-size:24px; white-space:nowrap; }.payment-gate-actions { display:flex; align-items:center; gap:12px; margin-top:18px; }.payment-gate-actions span { color:var(--ink-3); font-size:11px; }.payment-ok { color:#15803d; font-size:13px; font-weight:700; }
@media (max-width: 960px) { .login-backdrop{padding:34px 28px}.login-content{width:52%;margin-left:0}.login-card{width:340px;padding:24px}.login-features{gap:12px;flex-wrap:wrap}.login-preview{width:100%} }
@media (max-width: 720px) { .login-screen,.login-backdrop{min-height:100vh}.login-backdrop{display:block;padding:30px 18px;background:linear-gradient(145deg,#131a38,#252d63)}.login-content{width:auto;text-align:center}.login-kicker{margin-top:28px}.login-content h1{font-size:38px}.login-lead{width:auto;margin:0 auto;font-size:13px;white-space:normal}.login-features,.login-preview,.promo-mosaic{display:none}.login-card{width:auto;max-width:400px;margin:28px auto 0;text-align:left} }

/* 登录宣传背景：多个带真实中文内容的产品页面缩略层 */
.promo-mosaic { left:2%; right:2%; top:8%; bottom:6%; z-index:1; opacity:.5; filter:blur(.45px); transform:none; }
.promo-mosaic:after { content:''; position:absolute; inset:-2%; pointer-events:none; border-radius:36px; background:linear-gradient(90deg,rgba(12,18,42,.68) 0%,rgba(12,18,42,.58) 35%,rgba(12,18,42,.2) 53%,rgba(12,18,42,.24) 100%); }
.login-content .login-preview { display:none; }
.promo-window { position:absolute; overflow:hidden; color:rgba(226,232,240,.8); border:1px solid rgba(255,255,255,.15); border-radius:15px; background:linear-gradient(145deg,rgba(255,255,255,.14),rgba(255,255,255,.045)); box-shadow:0 22px 55px rgba(2,6,23,.24),inset 0 1px rgba(255,255,255,.08); }
.promo-window-head { display:flex; align-items:center; gap:9px; padding:14px 16px 11px; border-bottom:1px solid rgba(255,255,255,.1); font-size:10px; }.promo-window-head b{color:#fff;font-size:13px}.promo-window-head span{color:#a5b4fc}.promo-window-head i{margin-left:auto;color:#93c5fd;font-style:normal;font-size:9px}.promo-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}.promo-stat-row div{padding:10px;border-radius:9px;background:rgba(15,23,42,.2)}.promo-stat-row small,.promo-stat-row strong,.promo-stat-row em{display:block}.promo-stat-row small{color:#94a3b8;font-size:8px}.promo-stat-row strong{margin-top:4px;color:#fff;font-size:18px}.promo-stat-row em{margin-top:3px;color:#86efac;font-size:8px;font-style:normal}.promo-stat-row .orange{color:#fbbf24}.promo-home-body{display:grid;grid-template-columns:1.2fr .8fr;gap:12px;padding:4px 12px 14px}.promo-home h5{margin:0 0 10px;color:#cbd5e1;font-size:9px;font-weight:500}.promo-line-chart{height:88px;display:flex;align-items:flex-end;gap:7px;padding:0 8px;border-bottom:1px solid rgba(255,255,255,.16);background:repeating-linear-gradient(to bottom,transparent 0 28px,rgba(255,255,255,.06) 29px 30px)}.promo-line-chart i{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(#a5b4fc,#6366f1);opacity:.8}.promo-line-chart i:nth-child(1){height:35%}.promo-line-chart i:nth-child(2){height:48%}.promo-line-chart i:nth-child(3){height:42%}.promo-line-chart i:nth-child(4){height:62%}.promo-line-chart i:nth-child(5){height:55%}.promo-line-chart i:nth-child(6){height:75%}.promo-line-chart i:nth-child(7){height:91%}.promo-mini-list p{display:flex;justify-content:space-between;gap:8px;margin:0;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:8px}.promo-mini-list p b{font-weight:500;color:#cbd5e1;white-space:nowrap}.promo-mini-list p span{color:#86efac;white-space:nowrap}.promo-mini-list p .warn{color:#fbbf24}
.promo-home{left:31%;top:2%;width:38%;height:25%;transform:rotate(.2deg);opacity:.66}.promo-recon{left:25%;bottom:2%;width:23%;height:23%;transform:rotate(-.25deg);opacity:.56}.promo-result{left:48%;bottom:2%;width:23%;height:23%;transform:rotate(.2deg);opacity:.52}.promo-issues{left:71%;bottom:2%;width:20%;height:23%;transform:rotate(.35deg);opacity:.44}
.promo-bottom-row{position:absolute;left:50%;bottom:2%;width:56%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch;transform:translateX(-50%);z-index:1}
.promo-bottom-row .promo-window{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:auto;height:180px}
.promo-bottom-row .promo-recon{transform:rotate(-.25deg);opacity:.56}.promo-bottom-row .promo-result{transform:rotate(.2deg);opacity:.52}.promo-bottom-row .promo-issues{transform:rotate(.35deg);opacity:.44}
.login-backdrop{display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden}
.login-backdrop:after{z-index:0}
.login-stage{position:relative;z-index:1;width:min(1440px,calc(100vw - 64px));height:min(1100px,calc(100vh - 72px));margin:0 auto}
.login-content{position:absolute;left:0;top:50%;width:650px;max-width:52%;margin:0;transform:translateY(-50%)}
.login-card{position:absolute;right:0;top:50%;margin:0;transform:translateY(-50%)}
.promo-mosaic{left:0;right:0;top:0;bottom:0}
.promo-home{left:50%;top:5%;width:min(42%,820px);transform:translateX(-50%) rotate(.2deg)}
.promo-bottom-row{bottom:4%;width:min(68%,1180px);grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:center}
.promo-bottom-row .promo-window{height:220px;margin:0;transform-origin:center bottom}
.promo-bottom-row .promo-recon{height:220px;transform:translate(-6px,10px) rotate(-4deg) scale(1.04);opacity:.62;z-index:3;box-shadow:0 28px 68px rgba(2,6,23,.32),inset 0 1px rgba(255,255,255,.1)}
.promo-bottom-row .promo-result{height:220px;transform:translate(0,0) rotate(.6deg) scale(1);opacity:.55;z-index:2}
.promo-bottom-row .promo-issues{height:220px;transform:translate(6px,-8px) rotate(4deg) scale(.94);opacity:.46;z-index:1}
.orb-a{z-index:0}
@media (max-width:720px){.login-backdrop{display:block}.login-stage{width:auto;height:auto;min-height:100vh;margin:0}.login-content{position:relative;left:auto;top:auto;width:auto;max-width:none;transform:none}.login-card{position:relative;right:auto;top:auto;transform:none}.promo-mosaic{left:0;right:0;top:0;bottom:0}}
@media (max-width:720px){.login-brand{justify-content:center;gap:12px;margin-bottom:28px}.login-brand-name{font-size:20px}.login-brand-mark{width:48px;height:48px;flex-basis:48px}.login-brand .login-kicker{font-size:12px;text-align:left}}
.login-screen .login-backdrop{width:100%;height:100%;min-height:100%;}
.orb-b { right:6%; top:-150px; opacity:.16; }
.orb-a { z-index:4; opacity:.32; }
.promo-table-head,.promo-recon p{display:grid;grid-template-columns:1.5fr .8fr .8fr .55fr;gap:8px;align-items:center;padding:8px 14px;font-size:8px}.promo-table-head{color:#94a3b8}.promo-recon p{margin:0;border-top:1px solid rgba(255,255,255,.08)}.promo-recon p b{font-weight:500;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.promo-recon p span{color:#cbd5e1}.promo-recon p strong{color:#fbbf24;font-weight:500}.promo-recon p em{color:#86efac;font-style:normal}.promo-recon p .warn{color:#fbbf24}.promo-page{padding:8px 14px;color:#94a3b8;font-size:8px;text-align:right}.promo-result-title{display:flex;align-items:end;gap:10px;padding:14px}.promo-result-title strong{color:#fff;font-size:25px}.promo-result-title span{color:#94a3b8;font-size:9px}.promo-result-title b{margin-left:auto;color:#86efac;font-size:10px}.promo-result-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 14px 12px}.promo-result-cards div{padding:9px;border-radius:8px;background:rgba(15,23,42,.22)}.promo-result-cards small,.promo-result-cards strong{display:block}.promo-result-cards small{color:#94a3b8;font-size:8px}.promo-result-cards strong{margin-top:4px;color:#e2e8f0;font-size:13px}.promo-result-cards .red{color:#fca5a5}.promo-result-cards .green{color:#86efac}.promo-result-row{display:grid;grid-template-columns:1.3fr .8fr .8fr .6fr;gap:8px;padding:8px 14px;border-top:1px solid rgba(255,255,255,.08);font-size:8px;color:#cbd5e1}.promo-result-row b{color:#fbbf24}.promo-issue-summary{display:flex;align-items:center;gap:12px;padding:12px 15px}.promo-issue-summary strong{color:#fbbf24;font-size:27px}.promo-issue-summary span{color:#cbd5e1;font-size:10px}.promo-issue-summary small{color:#94a3b8;font-size:8px}.promo-issues p{display:grid;grid-template-columns:.8fr 1.45fr 1.2fr;gap:8px;align-items:center;margin:0;padding:8px 14px;border-top:1px solid rgba(255,255,255,.08);font-size:8px}.promo-issues p em{color:#fca5a5;font-style:normal}.promo-issues p .purple{color:#c4b5fd}.promo-issues p .orange{color:#fbbf24}.promo-issues p b{color:#e2e8f0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.promo-issues p span{color:#94a3b8}

/* ===== 对账结果页 rv-* 样式 ===== */
.rv-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 12px; }
.rv-sum-cell { background: #f8f9fa; border-radius: 8px; padding: 14px 16px; text-align: center; }
.rv-sum-cell .lbl { font-size: 12px; color: #666; margin-bottom: 6px; }
.rv-sum-cell .val { font-size: 22px; font-weight: 700; color: #1a1a1a; }
.rv-sum-cell .cov { font-size: 11px; color: #999; margin-top: 4px; }
.rv-sum-cell.merchant-amount { background: #e8f5e9; border: 1px solid #b7e4c7; }
.rv-sum-cell.merchant-amount .lbl { color: #16834b; font-weight: 800; }
.rv-sum-cell.merchant-amount .val { color: #16834b; }

.rv-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 14px 16px; margin-bottom: 10px; cursor: pointer; transition: box-shadow .15s; }
.rv-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,.08); border-color: #d0d0d0; }
.rv-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.rv-wb { font-size: 15px; font-weight: 600; color: #1a1a1a; }
.rv-badge { font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 500; }
.rv-sku { font-size: 12px; color: #555; margin-bottom: 4px; }
.rv-meta { font-size: 11px; color: #999; margin-bottom: 8px; }
.rv-amounts { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.rv-am { font-size: 13px; color: #444; }
.rv-am b { color: #1a1a1a; font-weight: 600; }
.rv-diff { font-size: 14px; font-weight: 700; margin-left: auto; }

.rv-bar { position: sticky; bottom: 0; background: #fff; border-top: 1px solid #e8e8e8; padding: 12px 16px; display: flex; gap: 10px; justify-content: center; margin-top: 20px; }

.rv-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1000; display: flex; align-items: center; justify-content: center; }
.rv-shell { background: #fff; border-radius: 12px; width: 90%; max-width: 680px; max-height: 85vh; overflow-y: auto; padding: 20px 24px; position: relative; }
.rv-close { position: absolute; top: 12px; right: 16px; background: none; border: none; font-size: 20px; cursor: pointer; color: #999; line-height: 1; }
.rv-close:hover { color: #333; }
.rv-sub { font-size: 13px; color: #666; margin-bottom: 16px; }
.rv-cols { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.rv-col { background: #f8f9fa; border-radius: 8px; padding: 12px; }
.rv-col h4 { font-size: 13px; margin: 0 0 8px 0; color: #333; border-bottom: 1px solid #eee; padding-bottom: 6px; }
.rv-line { display: flex; justify-content: space-between; font-size: 12px; padding: 3px 0; color: #555; }
.rv-line b { color: #1a1a1a; }

.rv-issue-row { border: 1px solid #eee; border-radius: 8px; padding: 12px; margin-bottom: 8px; }
.rv-issue-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.rv-issue-top .rv-issue-type { font-weight: 600; font-size: 13px; color: #333; }
.rv-issue-desc { font-size: 12px; color: #666; margin-bottom: 8px; line-height: 1.5; }
.rv-issue-vals { display: flex; gap: 16px; font-size: 12px; color: #555; margin-bottom: 8px; }
.rv-issue-actions { display: flex; gap: 8px; }
.rv-issue-actions .btn.mini { padding: 4px 12px; font-size: 12px; }

.rv-field { margin-bottom: 12px; }
.rv-field label { display: block; font-size: 12px; color: #666; margin-bottom: 4px; }
.rv-field input, .rv-field select { width: 100%; padding: 8px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; box-sizing: border-box; }
.rv-wide { width: 100%; }

.rv-pkg-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.rv-pkg-opt { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border: 1px solid #ddd; border-radius: 6px; cursor: pointer; font-size: 13px; }
.rv-pkg-opt:hover { border-color: #4a90d9; background: #f0f7ff; }
.rv-pkg-opt.selected { border-color: #4a90d9; background: #e8f2ff; }

.rv-style { margin-bottom: 12px; font-size: 13px; color: #444; line-height: 1.6; }

/* ===== SKU排序表头 ===== */
.task-table th.sortable { cursor: pointer; user-select: none; transition: background .15s; }
.task-table th.sortable:hover { background: #eef2ff; color: var(--primary); }
.task-table th.sortable.active { color: var(--primary); background: #eef2ff; }

/* ===== 导出面板（2026-09-28 阶段四） ===== */
.export-panel { margin-top: 16px; }
.export-hint { font-size: 13px; color: #6b7280; margin: 6px 0 12px; line-height: 1.6; }
.export-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.export-opt { min-width: 120px; }
.export-status { margin-top: 12px; font-size: 13px; color: var(--primary); min-height: 18px; }

/* Shared-account web login code */
.wechat-scan-login { display: flex; flex-direction: column; align-items: center; text-align: center; }
.wechat-scan-login h3 { margin: 18px 0 10px; color: #172b4d; font-size: 16px; font-weight: 700; }
.wechat-login-qr-slot { position: relative; display: grid; place-items: center; width: 168px; height: 168px; padding: 8px; border: 1px solid #dbe5f2; border-radius: 14px; background: #f8fbff; }
.wechat-login-qr { display: block; width: 100%; height: 100%; border: 0; border-radius: 8px; background: #fff; object-fit: contain; }
.wechat-login-qr[hidden] { display: none; }
.wechat-login-qr-placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; border-radius: inherit; color: #71819a; background: linear-gradient(145deg,#f8fbff,#edf4ff); font-size: 12px; }
.wechat-login-qr-placeholder[hidden] { display: none; }
.wechat-login-qr-mark { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid #cbdcf6; border-radius: 12px; color: #397ce5; background: #fff; font-size: 20px; font-weight: 700; }
.wechat-login-qr-status { min-height: 18px; margin: 8px 0 0; color: #7b8798; font-size: 12px; line-height: 1.5; }
.login-method-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; width: 100%; margin: 18px 0 4px; padding: 4px; border-radius: 12px; background: #f1f5fb; }
.login-method-tab { min-height: 38px; border: 0; border-radius: 9px; color: #68778d; background: transparent; font: inherit; font-size: 13px; font-weight: 650; cursor: pointer; }
.login-method-tab.is-active { color: #245fc7; background: #fff; box-shadow: 0 1px 4px rgba(30,55,90,.12); }
.login-method-panel[hidden] { display: none !important; }
.login-account-note { margin:16px 0 0; color:#7b8798; font-size:12px; line-height:1.7; text-align:center; }
.account-bind-row[hidden] { display:none; }
.web-code-login-form { display: flex; flex-direction: column; align-items: center; margin-top: 16px; text-align: center; }
.web-code-label { display: block; width: 100%; margin-bottom: 9px; color: #334155; font-size: 14px; font-weight: 650; text-align: center; }
.login-card .web-code-label { margin: 2px 0 8px; text-align: center; }
.web-login-input-wrap { position: relative; width: 100%; max-width: 240px; height: 50px; margin: 0 auto; }
.login-card .web-login-input { display: block; width: 100%; max-width: none; height: 50px; box-sizing: border-box; margin: 0; padding: 0 14px; border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; color: #172b4d; font-size: 29px; font-weight: 700; line-height: 48px; letter-spacing: 2px; text-align: center !important; font-variant-numeric: tabular-nums; }
.login-card .web-login-input::placeholder { color: transparent; font-size: 16px; font-weight: 400; line-height: 48px; letter-spacing: 1px; text-align: center; opacity: 1; -webkit-text-fill-color: transparent; }
.login-card .web-login-input::-webkit-input-placeholder { color: transparent; opacity: 1; -webkit-text-fill-color: transparent; }
.login-card .web-login-input::-moz-placeholder { color: transparent; opacity: 1; }
.web-login-input-placeholder { position: absolute; inset: 1px; display: flex; align-items: center; justify-content: center; overflow: hidden; color: #a0a8b4; font-size: 16px; font-weight: 400; letter-spacing: 1px; line-height: 1.2; text-align: center; pointer-events: none; user-select: none; }
.login-card .web-login-input:not(:placeholder-shown) + .web-login-input-placeholder { display: none; }
.web-login-input:focus { border-color: #397ce5; outline: 3px solid rgba(57,124,229,.14); }
.web-login-status { width: 100%; min-height: 18px; margin: 8px 0 10px; color: #64748b; font-size: 12px; line-height: 1.55; text-align: center; }
.web-code-login-form .login-submit { width: min(100%, 280px); align-self: center; margin-top: 2px; }
.email-code-login-form { width: 100%; }
.email-login-input { box-sizing: border-box; width: 100%; max-width: 320px; height: 46px; padding: 0 14px; border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; color: #172b4d; font: inherit; font-size: 15px; text-align: center; }
.email-login-input::placeholder { color: #a0a8b4; }
.email-login-input:focus { border-color: #397ce5; outline: 3px solid rgba(57,124,229,.14); }
.email-code-entry { width: 100%; margin-top: 14px; }
.email-code-row { display: flex; justify-content: center; gap: 8px; width: 100%; }
.email-code-input { max-width: 188px; letter-spacing: 3px; font-variant-numeric: tabular-nums; }
.email-code-send { min-width: 124px; height: 46px; padding: 0 12px; border: 1px solid #cbdcf6; border-radius: 10px; color: #2866cc; background: #f2f7ff; font: inherit; font-size: 13px; font-weight: 650; cursor: pointer; }
.email-code-send:disabled { color: #8c9bb1; cursor: default; }
.email-code-login-form .web-login-status { max-width: 360px; }
.email-code-login-form .login-submit { margin-top: 2px; }
@media (max-width: 720px) {
  .login-screen { overflow-x: hidden; overflow-y: auto; scrollbar-width: none; }
  .login-screen::-webkit-scrollbar { display: none; }
  .login-screen .login-backdrop { height: auto; min-height: 100vh; overflow: visible; }
  .login-stage { display: flex; flex-direction: column; justify-content: center; }
  .login-content { display: none; }
  .login-card { box-sizing: border-box; width: min(100%, 400px); max-width: 400px; margin: 0 auto; padding: 28px 24px; }
  .wechat-scan-login h3 { margin: 20px 0 12px; }
  .web-code-login-form { margin-top: 18px; }
  .web-login-status { min-height: 24px; margin: 10px 0 14px; }
  .web-code-login-form .login-submit { margin-top: 4px; }
  .login-method-tabs { margin-top: 18px; }
  .email-code-row { gap: 6px; }
  .email-code-input { max-width: none; min-width: 0; flex: 1; }
  .email-code-send { min-width: 116px; }
  .orb-a { z-index: 0; opacity: .12; }
}

.account-bind-row > div { min-width: 0; flex: 1; }
#acctEmailDesc { overflow-wrap: anywhere; line-height: 1.6; }
#acctWechatDesc { line-height: 1.6; }
.account-bind-row > button { flex-shrink: 0; }
.account-bind-ok.account-login-unset { color: var(--ink-3); background: var(--surface-alt, #f1f5f9); }
.account-login-guide { margin-top:16px; padding-top:14px; border-top:1px solid var(--border-light); font-size:13px; line-height:1.8; color:var(--ink-2); }
.account-login-guide[hidden] { display:none; }
.account-login-guide summary { cursor:pointer; color:var(--brand-deep); }
.account-login-guide ol { padding-left:20px; margin:10px 0; }
.account-login-guide p { margin:8px 0 0; color:var(--ink-3); }
.account-contact-note { display:block; margin-top:6px; color:var(--ink-3); font-size:12px; line-height:1.6; }
.account-settings-grid .account-bind-row { padding:16px 0; }
.account-settings-grid .account-bind-row strong { font-size:14px; }
.account-settings-grid .account-bind-row small { font-size:13px; line-height:1.6; }
.account-settings-grid .card-title { margin-bottom:14px; }
.account-settings-grid > .card { margin-bottom:0; }
.account-field-row { align-items:center; }
.account-field-row .btn { flex-shrink:0; }
[data-account-action]:disabled, #profileNameInput:disabled { opacity:.55; cursor:default; }
.account-load-error { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; padding:16px 20px; border:1px solid #fed7aa; border-radius:12px; background:#fff7ed; color:#9a3412; }
.account-load-error[hidden] { display:none; }
.account-load-error strong, .account-load-error span { display:block; }
.account-load-error strong { font-size:14px; }
.account-load-error span { margin-top:4px; font-size:12px; line-height:1.6; }
.account-load-error .btn { flex-shrink:0; background:#fff; }
.account-access-card { margin-bottom:20px; border-color:#dbe7fa; background:linear-gradient(135deg,#f6faff 0%,#fff 75%); }
.account-access-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
.account-access-head > div { min-width:0; }
.account-access-head .card-title { margin-bottom:6px; }
.account-access-head p { color:var(--ink-3); font-size:13px; line-height:1.7; }
.account-access-head > span { flex-shrink:0; }
.account-access-desc { margin:18px 0; color:var(--ink-2); font-size:13px; line-height:1.8; }
.account-access-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; list-style:none; }
.account-access-steps li { display:flex; align-items:flex-start; gap:12px; padding:18px; border:1px solid #e2eaf5; border-radius:12px; background:#fff; }
.account-access-steps li > span { display:grid; place-items:center; flex:0 0 28px; height:28px; border-radius:50%; background:#edf3ff; color:#315fa8; font-size:13px; font-weight:700; }
.account-access-steps strong { display:block; font-size:14px; color:var(--ink); line-height:1.8; }
.account-access-steps p { margin-top:6px; font-size:12px; line-height:1.8; color:var(--ink-3); }
.account-access-foot { display:flex; flex-wrap:wrap; gap:8px 24px; margin-top:16px; color:var(--ink-3); font-size:12px; line-height:1.8; }
.account-wechat-card { margin-bottom:24px; }
.account-optional { display:inline-block; margin-left:6px; padding:2px 7px; border-radius:5px; color:var(--ink-3); background:#f1f5f9; font-size:11px; font-weight:400; vertical-align:middle; }
.account-identity-status { color:var(--ink-3); font-size:12px; line-height:1.8; white-space:nowrap; }
.feedback-form { display:flex; flex-direction:column; gap:16px; }
.feedback-form > label, .feedback-contact label { display:flex; flex-direction:column; gap:7px; color:var(--ink-2); font-size:14px; font-weight:700; }
.feedback-form input, .feedback-form select, .feedback-form textarea { width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--border); border-radius:9px; font:inherit; font-size:14px; font-weight:400; }
.feedback-form textarea { min-height:190px; resize:vertical; line-height:1.65; }
.feedback-contact-title { display:flex; align-items:center; gap:7px; color:var(--ink-2); font-size:14px; font-weight:700; }
.feedback-contact-title .muted { font-size:12px; font-weight:400; }
.feedback-contact .grid { margin-top:8px; gap:14px; }
.feedback-inbox { max-width:820px; margin-top:20px; }
.feedback-inbox-link { max-width:820px; margin-top:14px; padding:14px 16px; display:flex; align-items:center; justify-content:space-between; gap:14px; border:1px solid var(--border); border-radius:10px; background:#fff; color:var(--ink-2); }
.site-message-item { padding:16px 0; border-bottom:1px solid var(--border); }
.site-message-item:last-child { border-bottom:0; }
.site-message-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.site-message-head strong { color:var(--ink); font-size:15px; }
.site-message-title { padding:0; border:0; background:transparent; color:var(--ink); font:inherit; font-size:15px; font-weight:700; text-align:left; cursor:pointer; }
.site-message-title:hover { color:var(--primary,#4f46e5); text-decoration:underline; }
.site-message-title::after { content:'展开详情⌄'; display:inline-block; margin-left:9px; color:#64748b; font-size:12px; font-weight:500; }
.site-message-title[aria-expanded="true"]::after { content:'收起详情⌃'; }
.site-message-content { margin:10px 0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.75; color:var(--ink-2); }
.site-message-content[hidden] { display:none; }
.nav-unread-badge { display:inline-flex; min-width:19px; height:19px; padding:0 5px; align-items:center; justify-content:center; border-radius:999px; background:#ef4444; color:#fff; font-size:11px; font-weight:700; line-height:19px; }
.nav-unread-badge[hidden] { display:none !important; }
.public-announcement-bar { display:flex; align-items:center; gap:12px; margin:0 0 14px; padding:11px 16px; border:1px solid #f3d27a; border-radius:12px; background:#fff9e8; color:#6c4b00; overflow:hidden; cursor:pointer; }
.public-announcement-bar[hidden] { display:none !important; }
.public-announcement-bar strong { flex:0 0 auto; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#9a6700; }
.public-announcement-bar span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.public-announcement-bar .public-announcement-more { margin-left:auto; color:#5b4ae6; flex:0 0 auto; }
.public-announcement-bar[aria-expanded="true"] { flex-wrap:wrap; align-items:flex-start; }
.public-announcement-bar[aria-expanded="true"] #publicAnnouncementContent { flex:1 0 100%; order:3; white-space:pre-wrap; overflow-wrap:anywhere; }
.public-announcement-bar[aria-expanded="true"] .public-announcement-more { margin-left:auto; }
.feedback-ticket-title { padding:0; border:0; background:transparent; color:var(--ink); font:inherit; font-weight:700; text-align:left; cursor:pointer; }
.feedback-ticket-title:hover { color:var(--primary,#4f46e5); text-decoration:underline; }
.feedback-inbox-head,.feedback-ticket-head,.feedback-ticket-actions,.feedback-reply-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.feedback-inbox-head { margin-bottom:12px; }
.feedback-inbox-head h3 { margin:0; }
.feedback-inbox-empty { padding:18px 0; color:var(--ink-2); }
.feedback-ticket { margin-top:10px; padding:14px; border:1px solid var(--border); border-radius:10px; }
.feedback-ticket-head strong { overflow-wrap:anywhere; }
.feedback-ticket-head .muted { margin-top:5px; font-size:12px; }
.feedback-ticket-actions { flex-shrink:0; }
.feedback-thread { margin-top:14px; padding-top:12px; border-top:1px solid var(--border); }
.feedback-message { margin:9px 0; padding:10px 12px; border-radius:9px; background:#f5f7fa; }
.feedback-message.from-admin { background:#eef3ff; }
.feedback-message-meta { margin-bottom:5px; color:var(--ink-2); font-size:12px; }
.feedback-message-body { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.65; }
.feedback-reply-label { display:block; margin-top:12px; color:var(--ink-2); font-size:13px; }
.feedback-reply-label textarea { display:block; width:100%; box-sizing:border-box; margin-top:6px; padding:9px; border:1px solid var(--border); border-radius:8px; resize:vertical; }
.feedback-reply-actions { justify-content:flex-end; margin-top:8px; }
@media (max-width:900px) {
  .account-settings-grid { grid-template-columns:minmax(0,1fr); gap:16px; }
  .account-access-steps { grid-template-columns:minmax(0,1fr); gap:10px; }
}
@media (max-width:480px) {
  .account-access-head { flex-wrap:wrap; gap:10px; }
  .account-load-error { align-items:flex-start; padding:14px; }
  .account-access-steps li { padding:14px; }
  .feedback-contact .grid { grid-template-columns:minmax(0,1fr); }
}

/* ===== 利润模块 V2（2026-10-07）：状态标签/记录/详情/分析/首页月利润卡 ===== */
.p2-tag { display:inline-block; padding:2px 8px; border-radius:999px; font-size:11px; font-weight:600; background:#eef1f6; color:var(--ink-2); vertical-align:middle; }
.p2-tag.green { background:#e5f5ec; color:#16834b; }
.p2-tag.orange { background:#fdf0e3; color:#b45309; }
.p2-warn { margin-top:12px; padding:10px 14px; border-radius:10px; background:#fdf6ec; border:1px solid #f3ddb8; color:#8a5a1b; font-size:13px; line-height:1.6; display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.p2-warn.soft { background:#f6f8fb; border-color:var(--border-light); color:var(--ink-2); }
.p2-warn.danger { background:#fdf0ef; border-color:#f5c6c2; color:#a93226; }
.p2-check { display:flex; align-items:center; gap:8px; margin:10px 0; font-size:13px; color:var(--ink-2); }
.p2-save-status { color:var(--ink-3); font-size:12px; }
.p2-save-row { display:flex; gap:10px; margin-top:16px; flex-wrap:wrap; }
.p2-confirm-panel { margin-top:12px; padding:12px 14px; border:1px dashed var(--border); border-radius:10px; background:#fbfcfe; display:grid; gap:8px; }
.p2-confirm-panel label { font-size:13px; color:var(--ink-2); display:grid; gap:6px; }
.p2-completeness { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:10px; padding-top:10px; border-top:1px dashed var(--border-light); }
.p2-filter-bar { display:flex; flex-wrap:wrap; gap:14px; align-items:end; }
.p2-filter-bar label { display:grid; gap:6px; font-size:13px; color:var(--ink-2); font-weight:600; }
.p2-filter-bar .input { min-height:40px; }
.p2-pager { display:flex; gap:10px; margin-top:12px; }
.p2-row-actions { display:flex; gap:8px; flex-wrap:wrap; }
.p2-current-row { background:#f4f7ff; }
.p2-oplog { margin-top:12px; border-top:1px solid var(--border-light); padding-top:8px; display:grid; gap:4px; }
.p2-oplog .row { justify-content:space-between; color:var(--ink-2); }
.p2-header-actions { display:flex; gap:10px; flex-wrap:wrap; }
.neg { color:#d64545; }
tr.p2-current-row td { background:#f4f7ff; }
/* 【F15】锁定态五项成本摘要行（取 current_report 冻结字段，null 显示"未知"） */
.p2-cost-summary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-top:12px; }
.p2-cost-cell { padding:10px 12px; border:1px solid var(--border-light); border-radius:10px; background:#fbfcfe; display:grid; gap:4px; }
.p2-cost-cell span { font-size:11px; color:var(--ink-3); }
.p2-cost-cell strong { font-size:14px; font-weight:700; font-variant-numeric:tabular-nums; }
@media (max-width:960px) { .p2-cost-summary { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:640px) { .p2-cost-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }
/* 首页月利润卡 */
.home-profit-mount { margin-top:18px; }
.home-profit-card { background:#fff; border-radius:18px; padding:20px 22px; box-shadow:0 8px 28px rgba(31,45,80,.07); border:1px solid var(--border-light); display:flex; flex-direction:column; gap:14px; }
.home-profit-head { display:flex; justify-content:space-between; align-items:center; }
.home-profit-title { font-weight:700; font-size:15px; color:var(--ink); }
.home-profit-main { display:flex; flex-direction:column; gap:4px; }
.home-profit-net { font-size:32px; font-weight:800; letter-spacing:-.6px; color:var(--brand-deep); font-variant-numeric:tabular-nums; }
.home-profit-net.neg { color:#d64545; }
.home-profit-meta { color:var(--ink-2); font-size:13px; }
.home-profit-side { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.home-profit-state { font-size:12px; font-weight:700; color:var(--ink-2); background:#eef1f6; border-radius:999px; padding:4px 12px; }
.home-profit-state.green { background:#e5f5ec; color:#16834b; }
.home-profit-state.orange { background:#fdf0e3; color:#b45309; }
.home-profit-actions { display:flex; gap:8px; }
/* 收入输入：数值水平/垂直居中（覆盖全局 .field input 等选择器优先级） */
.profit-income-grid .input.p2-money, .profit-cost-row .input[type="number"] { text-align:center; text-align-last:center; }
.profit-income-grid .input.p2-money { display:flex; align-items:center; }
.profit-income-grid .input.p2-money::-webkit-outer-spin-button, .profit-income-grid .input.p2-money::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.profit-income-grid .input.p2-money[type=number] { -moz-appearance:textfield; appearance:textfield; }

/* ===== A02 响应式布局：窄屏折叠侧栏 ===== */
.sidebar-toggle{display:none;}
@media (max-width:1023px){
  .layout{grid-template-columns:1fr;gap:12px;padding:12px;}
  .main{grid-column:1 / -1;}
  .sidebar{position:fixed;top:86px;left:12px;bottom:12px;width:240px;
    transform:translateX(calc(-100% - 24px));transition:transform .25s ease;z-index:300;
    box-shadow:0 20px 48px rgba(15,23,42,.22);}
  #app.sidebar-open .sidebar{transform:translateX(0);}
  #app.sidebar-open::after{content:'';position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:250;}
  .topbar{padding:0 14px;gap:8px;}
  .topbar-brand{min-width:0;gap:8px;}
  .topbar-brand .logo-mark{width:36px;height:36px;flex-basis:36px;}
  .logo-sub{display:none;}
  .topbar-left{margin-left:4px;flex:1;min-width:0;}
  .topbar-left h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .account-center,.btn-logout-top{display:none;}
  .sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
    flex:0 0 38px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer;
    font-size:18px;color:var(--ink-2);}
}

/* ===== RUX01/RUX02 利润记录与经营分析（2026-10-08） ===== */
.p2r-header { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:16px; }
.p2r-header h2 { margin:0; }
.p2r-header-actions { display:flex; gap:8px; align-items:center; position:relative; }
.p2r-export-wrap { position:relative; }
.p2r-export-menu { position:absolute; right:0; top:calc(100% + 6px); background:#fff; border:1px solid var(--border);
  border-radius:10px; box-shadow:0 8px 24px rgba(15,23,42,.12); min-width:180px; z-index:50; overflow:hidden; }
.p2r-export-menu div { padding:10px 14px; font-size:13px; cursor:pointer; color:var(--ink-2); }
.p2r-export-menu div:hover { background:var(--brand-soft); color:var(--brand-deep); }
.p2r-toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:12px 16px; margin-bottom:16px; }
.p2r-toolbar .p2r-search { flex:1; min-width:200px; }
.p2r-toolbar select { min-width:130px; }
.p2r-count { font-size:13px; color:var(--ink-3); margin-left:auto; }
.p2r-table { width:100%; border-collapse:collapse; font-size:13px; }
.p2r-table th { background:#f8fafc; padding:11px 12px; text-align:left; font-weight:700; color:var(--ink-2); border-bottom:1px solid var(--border-light); white-space:nowrap; }
.p2r-table td { padding:11px 12px; border-bottom:1px solid var(--border-light); vertical-align:top; }
.p2r-table tr:hover td { background:#f8fafc; }
.p2r-table th.num, .p2r-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.p2r-row-sub { font-size:11px; color:var(--ink-3); margin-top:3px; }
.p2r-empty { text-align:center; padding:40px 20px; }
.p2r-empty-title { font-size:16px; font-weight:700; color:var(--ink); }
.p2r-empty-sub { font-size:13px; color:var(--ink-3); margin-top:6px; }
.p2r-batch-bar { display:flex; gap:10px; align-items:center; justify-content:flex-end; padding:12px 16px;
  background:#fff; border:1px solid var(--border); border-radius:10px; margin-top:12px; position:sticky; bottom:12px; }
.p2r-export-msg { padding:10px 16px; margin-bottom:12px; font-size:13px; }
.caret { font-size:10px; }
/* 分析页 */
.a-toolbar { display:flex; gap:16px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.a-quick-row { display:flex; gap:6px; flex-wrap:wrap; }
.a-custom-row { display:flex; gap:10px; align-items:end; }
.a-custom-row label { display:grid; gap:4px; font-size:12px; color:var(--ink-2); font-weight:600; }
.a-trend-row { gap:12px; align-items:center; margin-top:10px; }
.a-trend-label { min-width:90px; font-size:13px; }
.a-trend-bar { height:8px; flex:1; background:#edf1f7; border-radius:99px; overflow:hidden; }
.a-trend-bar i { display:block; height:100%; border-radius:99px; }
.a-trend-val { min-width:110px; text-align:right; font-size:13px; font-variant-numeric:tabular-nums; }
.a-trend-rate { min-width:60px; text-align:right; font-size:12px; color:var(--ink-3); }
.a-missing { margin-top:12px; }
.a-missing-list { margin-top:8px; padding:8px 12px; background:#f8fafc; border-radius:8px; }
