/* ============================================================
   充值账本 · 设计 token（单一主色 + 中性灰阶 + 状态色）
   ============================================================ */
:root{
  --bg:#0a0c10;             /* 页面背景 */
  --panel:#12151c;          /* 卡片 */
  --panel2:#191d26;         /* 次级面 / 输入框 */
  --line:#242a36;           /* 边框（中性，去灰蓝） */
  --text:#f1f4f9;
  --muted:#8a93a5;
  --mint:#34d399;           /* 主强调色（emerald）· 收入 */
  --mint-ink:#052e22;       /* 主色上的深色文字 */
  --blue:#5b8def;           /* 链接 / 聚焦 · 可用/支付宝 */
  --amber:#f5a524;          /* 待确认警示 · CDK 金 */
  --red:#ef6b7b;            /* 负值 / 删除 · 支出 */
  --purple:#a78bfa;         /* 买币 / 紫 */
  --cyan:#22d3ee;           /* 非CDK充值 / 青 */
  --pink:#f472b6;           /* 小红书 / 粉 */
  --radius-sm:10px;
  --radius:12px;
  --radius-lg:16px;
  --shadow-sm:0 1px 2px rgba(0,0,0,.32);
  --shadow-md:0 10px 30px rgba(0,0,0,.36);
}

/* ============================================================
   基础
   ============================================================ */
*{box-sizing:border-box}
html,body{background:var(--bg)}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  line-height:1.45;
  font-variant-numeric:tabular-nums;      /* 金额等宽数字，不跳动 */
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:focus,input:focus,select:focus,textarea:focus{outline:none;-webkit-tap-highlight-color:transparent}
*{-webkit-tap-highlight-color:transparent}

/* 图标（Lucide SVG，stroke 继承 currentColor） */
.icon{display:inline-flex;width:20px;height:20px;flex:none;align-items:center;justify-content:center}
.icon svg{width:100%;height:100%;display:block}

/* ============================================================
   应用外壳
   ============================================================ */
.app-shell{width:min(100%,680px);margin:0 auto;min-height:100vh;padding:12px 18px 100px;padding-top:calc(12px + env(safe-area-inset-top,0px))}
.topbar{margin-bottom:14px}
.topbar h1{font-size:22px;margin:0;letter-spacing:-.3px;font-weight:750}
.eyebrow{margin:0 0 4px;color:var(--muted);font-size:11px;letter-spacing:1.3px;font-weight:700}
.close-btn{border:1px solid var(--line);background:var(--panel);color:var(--muted);width:38px;height:38px;border-radius:var(--radius-sm);font-size:21px;display:inline-flex;align-items:center;justify-content:center}
.close-btn:active{background:var(--panel2);color:var(--text)}

/* ============================================================
   Hero 卡片（总览主卡）
   ============================================================ */
.hero-card{
  display:flex;justify-content:space-between;align-items:stretch;padding:22px;
  border:1px solid var(--line);border-radius:var(--radius-lg);
  background:linear-gradient(160deg,rgba(52,211,153,.09),rgba(52,211,153,0) 42%),var(--panel);
  box-shadow:var(--shadow-md);margin-bottom:14px;
  gap:16px;
}
.hero-left{flex:1;min-width:0;display:flex;flex-direction:column}
.hero-right{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;flex:none}
.today-cdk{text-align:right}
.today-cdk strong{display:block;font-size:30px;font-weight:800;letter-spacing:-.6px;color:var(--amber);line-height:1.1;font-variant-numeric:tabular-nums}
.today-cdk small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.muted{color:var(--muted);font-size:12px;margin:0}
#heroPending{margin-top:8px;font-size:13px;color:var(--muted)}
#heroPending .hp-num{font-size:18px;font-weight:800;color:var(--amber);letter-spacing:-.3px;font-variant-numeric:tabular-nums}
#heroPending .hp-num.positive{color:var(--amber)}
#heroPending .hp-num.profit{color:var(--purple)}
#heroPending b{font-weight:800}
.muted .icon{width:12px;height:12px;vertical-align:-2px}
.hero-number{display:block;font-size:34px;margin-top:4px;letter-spacing:-.8px}
.hero-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:2px}
.hero-top .muted{margin:0;font-size:11px}
.status-dot{font-size:11px;color:var(--mint);display:flex;align-items:center;gap:6px}
.status-dot i{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px rgba(52,211,153,.8)}

/* ============================================================
   统计卡片
   ============================================================ */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:24px}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;position:relative;overflow:hidden;min-height:72px;display:flex;flex-direction:column;justify-content:center}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--line)}
.stat-card span,.stat-card small{display:block;color:var(--muted);font-size:10px}
.stat-card strong{display:block;font-size:17px;margin:3px 0 1px}
.stat-card.c-income::before{background:var(--mint)}
.stat-card.c-income strong{color:var(--mint)}
.stat-card.c-expense::before{background:var(--red)}
.stat-card.c-expense strong{color:var(--red)}
.stat-card.c-cdk::before{background:var(--blue)}
.stat-card.c-cdk strong{color:var(--blue)}
.stat-card.c-pending::before{background:var(--amber)}
.stat-card.c-pending strong{color:var(--amber)}

/* ============================================================
   区块标题 / 页头
   ============================================================ */
.section-head{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px}
.section-head h2{font-size:16px;margin:0}
.page-head{margin:10px 0 20px}

/* ============================================================
   文字按钮 / 筛选按钮
   ============================================================ */
.text-btn,.filter-btn{border:0;background:none;color:var(--mint);font-size:12px;padding:0}
.filter-btn{border:1px solid var(--line);padding:7px 11px;border-radius:var(--radius-sm);background:var(--panel);color:var(--text)}
.inventory-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:min(100%,220px)}
.inventory-actions>.filter-btn{width:100%;white-space:nowrap}
.inventory-platform-btn{border-color:rgba(91,141,239,.58);color:var(--blue)}
.inventory-upstream-btn{border-color:rgba(52,211,153,.5);color:var(--mint)}
.inventory-info-btn{color:var(--muted);border:1px solid var(--line);background:var(--panel2)}
.inventory-info-btn:hover{color:var(--blue);background:rgba(91,141,239,.08)}
.sync-16688-title{display:flex;align-items:center;gap:7px}
.sync-16688-help-btn{flex:0 0 26px;width:26px;height:26px;border-radius:50%;padding:0}

/* ============================================================
   快速记录（三个主操作）
   ============================================================ */
.quick-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:28px}
.quick-btn{
  min-height:72px;text-align:left;border:1px solid var(--line);border-radius:var(--radius);
  padding:10px 12px;background:var(--panel);color:var(--text);
  display:flex;flex-direction:column;justify-content:center;gap:3px;
  transition:border-color .15s ease,background .15s ease;
}
.quick-btn:hover,.quick-btn:active{border-color:var(--mint);background:var(--panel2)}
.quick-icon{width:18px;height:18px;color:var(--mint)}
.quick-icon svg{width:100%;height:100%;display:block}
.qi-income{color:var(--mint)}
.qi-noncdk{color:var(--cyan)}
.qi-coin{color:var(--purple)}
.qi-cdk{color:var(--amber)}
.quick-btn b{font-size:12px}
.quick-btn small{color:var(--muted);font-size:10px;line-height:1.2}

/* ============================================================
   记录列表 / 记录项
   ============================================================ */
.record-list{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.record-item{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:13px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:0;
}
.record-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.rec-actions{display:flex;gap:4px}
.icon-mini{border:1px solid var(--line);background:var(--panel2);color:var(--muted);width:30px;height:30px;border-radius:9px;font-size:14px;display:inline-flex;align-items:center;justify-content:center}
.icon-mini .icon{width:15px;height:15px}
.icon-mini:active{background:var(--line);color:var(--text)}
.record-main{min-width:0}
.record-title{font-size:13px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.record-sub{font-size:11px;color:var(--muted);margin-top:3px}
.record-amount{text-align:right;white-space:nowrap;font-weight:700;font-size:14px}
.positive{color:var(--mint)}
.negative{color:var(--red)}
.profit{color:var(--purple)}
.profit-bg{color:var(--purple)}
#heroProfit{color:var(--purple)}

/* ============================================================
   标签（tag）
   ============================================================ */
.tag{display:inline-flex;align-items:center;gap:3px;padding:3px 7px;border-radius:6px;font-size:10px;margin-left:5px;background:var(--panel2);color:var(--muted);vertical-align:1px}
.tag .icon{width:11px;height:11px}
.tag.pending{color:var(--amber);background:rgba(245,165,36,.14);font-weight:700}
.tag.available{color:var(--mint);background:rgba(52,211,153,.13)}
.tag.used{color:var(--muted)}
.tag.p-wechat{color:var(--mint);background:rgba(52,211,153,.12)}
.tag.p-alipay{color:var(--blue);background:rgba(91,141,239,.13)}
.tag.p-xhs{color:var(--pink);background:rgba(244,114,182,.12)}

/* ============================================================
   库存汇总 / 每日汇总
   ============================================================ */
.inventory-summary,.daily-summary{display:grid;gap:8px;margin-bottom:15px}
.inventory-summary{grid-template-columns:repeat(3,1fr)}
.daily-summary{grid-template-columns:repeat(3,1fr)}
.inventory-summary div,.daily-summary div{padding:13px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm)}
.inventory-summary span,.daily-summary span{display:block;color:var(--muted);font-size:11px}
.inventory-summary strong{display:block;font-size:19px;margin-top:3px}
.inventory-summary small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.inventory-summary .inv-avail strong{color:var(--mint)}
.inventory-summary .inv-used strong{color:var(--muted)}
.inventory-summary .inv-usdt strong{color:var(--blue)}
.daily-summary strong{display:block;font-size:19px;margin-top:3px}
.daily-summary small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.amber-txt{color:var(--amber)}
.mint-txt{color:var(--mint)}

/* ============================================================
   设置
   ============================================================ */
.settings-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:12px}
.settings-card h3{font-size:14px;margin:0 0 12px}
.rule-row{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0;border-top:1px solid var(--line)}
.rule-row:first-of-type{border-top:0}
.rule-row b{font-size:13px}
.rule-row small{grid-column:1/-1;color:var(--muted);font-size:11px}
.outline-btn,.danger-btn{width:100%;border:1px solid var(--line);background:transparent;color:var(--text);padding:11px;border-radius:var(--radius-sm);margin-top:10px}
.danger-btn{color:var(--red);border-color:rgba(239,107,123,.4)}

/* ============================================================
   底部导航
   ============================================================ */
.bottom-nav{
  position:fixed;z-index:5;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);
  width:min(calc(100% - 30px),640px);display:grid;grid-template-columns:repeat(5,1fr);
  padding:7px;background:rgba(18,21,28,.92);backdrop-filter:blur(18px);
  border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow-md);
}
.nav-item{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0;border-radius:var(--radius-sm)}
.nav-item .icon{width:20px;height:20px}
.nav-item small{font-size:10px}
.nav-item.active{color:var(--mint-ink);background:var(--mint)}
.nav-item.active small{color:var(--mint-ink)}

/* ============================================================
   视图切换
   ============================================================ */
.view{display:none}
.active-view{display:block}

/* ============================================================
   弹窗
   ============================================================ */
.modal-backdrop{position:fixed;inset:0;z-index:10;background:rgba(3,5,9,.72);display:none;align-items:flex-end;padding:14px}
.modal-backdrop.open{display:flex}
.modal{width:min(100%,640px);margin:0 auto;background:#151a23;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow-md);max-height:90vh;overflow:auto}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}
.modal h2{margin:0;font-size:20px}
.close-btn{border:0;background:var(--panel2);font-size:24px}
.close-btn .icon{width:18px;height:18px}
.modal label{display:block;color:var(--muted);font-size:12px;margin:13px 0}
.optional{float:right;color:#657185;font-size:10px}
.modal input,.modal select,.modal textarea{display:block;width:100%;margin-top:7px;border:1px solid var(--line);background:#0f131c;color:var(--text);border-radius:var(--radius-sm);padding:12px;outline:0}
.modal textarea{resize:vertical;line-height:1.5}
.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:var(--mint)}
.form-hint{color:var(--muted);font-size:11px;background:#10141d;border-radius:9px;padding:10px;margin:14px 0}
.primary-btn{width:100%;border:0;border-radius:var(--radius-sm);padding:13px;background:var(--mint);color:var(--mint-ink);font-weight:750;margin-top:8px}
.primary-btn:active{filter:brightness(1.08)}
.segmented-switch{display:flex;width:100%;gap:3px;padding:3px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel2)}
.segment-btn{flex:1;min-width:0;min-height:38px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:13px}
.segment-btn.active{background:var(--mint);color:var(--mint-ink);font-weight:700}

/* 16688 is always previewed before the explicit apply action. */
.sync-16688-preview{margin:14px 0}
.sync-16688-stock{margin-bottom:10px;border:1px solid rgba(91,141,239,.42);border-radius:var(--radius-sm);background:rgba(91,141,239,.07)}
.sync-16688-stock-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;align-items:center;padding:10px 11px;font-size:12px}
.sync-16688-stock-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.sync-16688-stock-row strong{font-size:12px;color:var(--blue);white-space:nowrap}
.sync-16688-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.sync-16688-summary > div{min-width:0;padding:10px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);text-align:center}
.sync-16688-summary span{display:block;color:var(--muted);font-size:10px}
.sync-16688-summary strong{display:block;margin-top:4px;font-size:17px}
.sync-16688-upload strong{color:var(--mint)}
.sync-16688-invalidate strong{color:var(--red)}
.sync-16688-sale strong{color:var(--blue)}
.sync-16688-attention strong{color:var(--amber)}
.sync-16688-baseline{margin:12px 0;padding:10px 12px;border:1px solid rgba(245,165,36,.42);border-radius:var(--radius-sm);background:rgba(245,165,36,.08);color:var(--amber);font-size:12px;line-height:1.55}
.sync-16688-list{margin-top:12px;border-top:1px solid var(--line)}
.sync-16688-list h3{margin:12px 0 7px;font-size:13px;color:var(--text)}
.sync-16688-list ul{margin:0;padding:0;list-style:none}
.sync-16688-list li{padding:8px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.sync-16688-list li:first-child{border-top:0}
.sync-16688-list .sync-16688-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--mint)}
.sync-16688-list.attention li{color:var(--amber)}
.sync-16688-manual-stock{margin-top:12px;padding:10px 11px;border:1px solid rgba(245,165,36,.42);border-radius:var(--radius-sm);background:rgba(245,165,36,.06)}
.sync-16688-manual-stock h3{margin:0 0 4px;font-size:13px;color:var(--text)}
.sync-16688-manual-stock p{margin:0 0 8px;color:var(--muted);font-size:12px;line-height:1.45}
.sync-16688-manual-stock-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:12px;cursor:pointer}
.sync-16688-manual-stock-row input{width:auto;margin:0}
.sync-16688-manual-stock-row .sync-16688-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--mint)}
.sync-16688-manual-invalidate-btn{margin-bottom:8px;border-color:rgba(239,107,123,.55);color:var(--red)}
.sync-16688-relist-stock{border-color:rgba(91,141,239,.48);background:rgba(91,141,239,.06)}
.sync-16688-manual-relist-btn{margin-bottom:8px;border-color:rgba(91,141,239,.58);color:var(--blue)}
.sync-16688-orders{margin-top:12px;border-top:1px solid var(--line)}
.sync-16688-orders h3{margin:12px 0 7px;font-size:13px;color:var(--text)}
.sync-16688-order-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.sync-16688-order-row:first-of-type{border-top:0}
.sync-16688-order-row div{display:grid;gap:4px;min-width:0;font-size:12px;overflow-wrap:anywhere}
.sync-16688-order-row .sync-16688-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--amber)}
.sync-16688-release-btn{flex:0 0 auto;border-color:rgba(239,107,123,.55);color:var(--red);font-size:12px;padding:7px 9px}
.sync-16688-apply-btn{background:var(--blue);color:#fff}
.sync-16688-config-rows{display:grid;gap:10px}
.sync-16688-config-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}
.sync-16688-config-row label{margin:0}
.sync-16688-config-row input{margin-top:5px;padding:9px}
.sync-16688-config-row .sync-16688-config-enabled{display:flex;align-items:center;gap:7px;color:var(--text);font-size:12px}
.sync-16688-config-row .sync-16688-config-enabled input{width:auto;margin:0}
.sync-16688-config-remove{width:100%;border:1px solid rgba(239,107,123,.48);border-radius:var(--radius-sm);background:rgba(239,107,123,.09);color:var(--red);padding:8px;font-size:12px}
.info-list{margin:14px 0 0;padding:0 0 0 19px;color:var(--muted);font-size:13px;line-height:1.7}
.info-list li{padding:5px 0}
@media (max-width:420px){.inventory-actions{gap:5px}.inventory-actions .filter-btn{padding:6px 8px}.sync-16688-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:420px){.sync-16688-stock-row{grid-template-columns:1fr 1fr}.sync-16688-stock-row span{grid-column:1/-1}}
@media (max-width:420px){.sync-16688-order-row{align-items:flex-start;flex-direction:column}.sync-16688-release-btn{width:100%}}

/* ============================================================
   CDK 详情
   ============================================================ */
.cdk-row{cursor:pointer}
.cdk-row:active{background:var(--panel2)}
.cdk-code-box{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#0f131c;margin-top:6px}
.cdk-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:15px;line-height:1.6;color:var(--mint);word-break:break-all;user-select:all}
.copy-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px}
.cdk-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:16px}
.cdk-meta > div{padding:11px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm)}
.cdk-meta span{display:block;color:var(--muted);font-size:11px}
.cdk-meta strong{display:block;font-size:14px;margin-top:3px}
.cdk-status-result{display:none;margin-top:10px;padding:11px 12px;border-radius:var(--radius-sm);font-size:13px}
.cdk-status-result.ok{display:block;color:var(--mint);background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.35)}
.cdk-status-result.err{display:block;color:var(--red);background:rgba(239,107,123,.12);border:1px solid rgba(239,107,123,.35)}
.cdk-status-result:empty{display:none}

/* ============================================================
   记录详情
   ============================================================ */
.record-detail-ref{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;
  border:1px solid var(--line);border-radius:var(--radius-sm);background:#0f131c}
.record-detail-ref > div{min-width:0;display:flex;flex-direction:column;gap:3px}
.record-detail-ref span,.record-detail-field span{color:var(--muted);font-size:11px}
.record-detail-ref code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--mint);font-size:14px;overflow-wrap:anywhere}
.record-detail-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:18px;margin:14px 0 2px;border-top:1px solid var(--line)}
.record-detail-field{min-width:0;padding:11px 0;border-bottom:1px solid var(--line)}
.record-detail-field strong{display:block;margin-top:4px;font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.record-detail-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.record-detail-actions .outline-btn,.record-detail-actions .danger-btn{margin-top:10px}
.detail-action{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.detail-action .icon{width:15px;height:15px}
#recordDetailReceipt{color:var(--amber);border-color:rgba(245,165,36,.52);background:rgba(245,165,36,.12)}
#recordDetailReceipt:hover{border-color:rgba(245,165,36,.8);background:rgba(245,165,36,.2)}
#recordDetailDelete{color:var(--red);border-color:rgba(239,107,123,.62);background:rgba(239,107,123,.12)}
#recordDetailDelete:hover{border-color:rgba(239,107,123,.9);background:rgba(239,107,123,.2)}
@media (max-width:360px){.record-detail-fields{grid-template-columns:1fr}.record-detail-actions{grid-template-columns:1fr}}

/* ============================================================
   Toast / 空状态 / 内嵌网页
   ============================================================ */
.toast{
  position:fixed;z-index:20;left:50%;bottom:90px;transform:translate(-50%,15px);
  background:var(--panel2);color:var(--text);border:1px solid var(--line);
  padding:10px 14px;border-radius:var(--radius-sm);font-size:12px;
  box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:.2s;
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.sync-conflict{position:fixed;inset:0;z-index:25;background:rgba(3,5,9,.78);display:flex;align-items:flex-end;padding:14px}
.sync-conflict[hidden]{display:none}
.sync-conflict-panel{width:min(100%,640px);margin:0 auto;background:#151a23;border:1px solid rgba(245,165,36,.55);border-radius:16px;padding:18px;box-shadow:var(--shadow-md)}
.sync-conflict-head{display:flex;align-items:center;gap:9px;color:var(--amber)}
.sync-conflict-head .icon{width:22px;height:22px;flex:0 0 auto}
.sync-conflict-head h2{margin:0;color:var(--text);font-size:19px}
.sync-conflict-panel p{margin:12px 0;color:var(--muted);font-size:13px;line-height:1.6}
.sync-conflict-actions{display:grid;gap:8px}
.sync-conflict-actions .primary-btn{margin-top:0}
.secondary-btn,.text-btn{width:100%;border-radius:var(--radius-sm);padding:12px;font-size:13px}
.secondary-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text)}
.text-btn{border:0;background:transparent;color:var(--muted)}
.secondary-btn:active,.text-btn:active{background:var(--panel2);color:var(--text)}
.empty{padding:28px 14px;text-align:center;color:var(--muted);font-size:12px;background:var(--panel);border:1px dashed var(--line);border-radius:var(--radius)}
.webview-overlay{position:fixed;inset:0;z-index:30;background:var(--bg);display:none}
.webview-overlay.open{display:block}
.webview-frame{position:absolute;inset:0;border:0;width:100%;height:100%}
.webview-back{position:absolute;right:16px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:31;width:60px;height:60px;border-radius:50%;border:1px solid var(--line);background:rgba(18,21,28,.94);color:var(--text);box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center}
.webview-back .icon{width:26px;height:26px}
.webview-back:active{background:var(--panel2)}
.webview-warn{position:absolute;top:0;left:0;right:0;z-index:32;padding:10px 14px 10px 52px;background:rgba(245,165,36,.16);border-bottom:1px solid rgba(245,165,36,.4);color:var(--amber);font-size:12px;line-height:1.5}
.webview-external{position:absolute;left:16px;bottom:calc(34px + env(safe-area-inset-bottom));z-index:31;padding:12px 16px;border-radius:12px;border:1px solid var(--line);background:rgba(18,21,28,.94);color:var(--text);font-size:13px;box-shadow:var(--shadow-md)}
.webview-external:active{background:var(--panel2)}
.daily-nav{display:flex;gap:8px;align-items:center;margin-bottom:14px}
.daily-range{display:flex;gap:8px;margin-bottom:12px}
.range-btn{flex:1;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:var(--radius-sm);padding:8px 0;font-size:13px}
.range-btn.active{color:var(--mint);border-color:var(--mint);background:rgba(52,211,153,.08);font-weight:700}
.daily-nav .filter-btn{flex:0 0 auto;padding:7px 9px}
.daily-date-box{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-width:0;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);overflow:hidden;cursor:pointer;padding:0 6px}
.daily-date-label{font-size:13px;color:var(--text);white-space:nowrap;pointer-events:none}
.daily-date{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;background:transparent}
.daily-report{display:grid;gap:8px}
.daily-report .report-card{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}
.daily-report .report-card span{font-size:12px;color:var(--muted)}
.daily-report .report-card strong{font-size:16px}
.daily-report .report-note{font-size:11px;color:var(--muted);padding:2px 2px 0}

/* ============================================================
   周期切换 / 待确认 / 分组
   ============================================================ */
.period-switch{display:flex;background:rgba(0,0,0,.28);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px;gap:2px}
.period-btn{border:0;background:transparent;color:var(--muted);font-size:12px;font-weight:700;padding:4px 10px;border-radius:8px}
.period-btn.active{background:var(--mint);color:var(--mint-ink)}

.confirm-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  border:1px solid rgba(245,165,36,.5);background:rgba(245,165,36,.1);
  color:var(--amber);font-size:12px;font-weight:700;padding:7px 10px;border-radius:var(--radius-sm);
}
.confirm-btn .icon{width:13px;height:13px}
.confirm-btn:active{filter:brightness(1.15)}

.record-item.pending{
  border-left:4px solid var(--amber);border-color:var(--amber);
  background:linear-gradient(90deg,rgba(245,165,36,.12),rgba(245,165,36,.02) 75%,transparent);
  box-shadow:inset 0 0 0 1px rgba(245,165,36,.14);
}

.record-amount.pending-amt{color:var(--amber);font-size:13px}

.group-label{font-size:12px;color:var(--muted);margin:16px 2px 8px;font-weight:700;letter-spacing:.3px;display:flex;align-items:center;gap:5px}
.group-label .icon{width:13px;height:13px}
.group-label:first-child{margin-top:0}
.group-label.warn{color:var(--amber)}
.group-block{display:grid;gap:8px}
.batch-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.batch-meta div{padding:11px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm)}
.batch-meta span{display:block;color:var(--muted);font-size:10px}
.batch-meta strong{display:block;font-size:15px;margin-top:2px}
.batch-edit{margin-bottom:6px}
.batch-card-row{cursor:pointer}
.dup-list{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.dup-item{font-size:11px;color:var(--amber);background:rgba(245,165,36,.08);border:1px solid rgba(245,165,36,.3);border-radius:6px;padding:4px 8px;font-variant-numeric:tabular-nums}
.dup-item.muted{color:var(--muted);background:transparent;border-color:var(--line)}
.sync-status{font-size:12px;color:var(--mint);margin:0 0 10px;padding:9px 11px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm)}
.plat-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px;margin-bottom:8px}
.plat-head{display:flex;align-items:center;gap:7px;font-size:13px}
.plat-dot{width:8px;height:8px;border-radius:50%;flex:none}
.plat-count{margin-left:auto;color:var(--muted);font-size:11px}
.plat-bar{height:8px;background:var(--panel2);border-radius:5px;margin:8px 0 5px;overflow:hidden}
.plat-fill{height:100%;border-radius:5px;transition:width .3s ease}
.plat-nums{display:flex;justify-content:space-between;font-size:13px}
.plat-profit{color:var(--purple);font-size:11px}
.device-name-form{margin-bottom:10px}
.device-name-form label{display:block;margin-bottom:6px}
.devices-list{display:grid;gap:8px;margin-top:10px}
.device-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm)}
.device-main{min-width:0}
.device-main b{font-size:13px;display:flex;align-items:center;gap:5px}
.device-main small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.auth-gate{position:fixed;inset:0;z-index:100;background:#0a0c10;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-card{max-width:340px;width:100%;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px;text-align:center}
.auth-card h2{font-size:18px;margin:0 0 12px}
.auth-card p{font-size:13px;color:var(--muted);line-height:1.6;margin:0 0 12px}
.auth-device{font-size:11px;color:var(--amber);word-break:break-all}
.stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}
.strip-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 6px;text-align:center}
.strip-card span{display:block;color:var(--muted);font-size:10px;margin-bottom:2px}
.strip-card strong{display:block;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:clip;letter-spacing:-.3px}
.strip-card.c-income strong{color:var(--mint)}
.strip-card.c-expense strong{color:var(--red)}
.strip-card.c-cdk strong{color:var(--blue)}
.strip-card.c-pending strong{color:var(--amber)}
.home-trend{margin-top:2px}
.day-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.day-summary div{padding:11px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);text-align:center}
.day-summary span{display:block;color:var(--muted);font-size:10px}
.day-summary strong{display:block;font-size:14px;margin-top:2px}
.bar-hit{cursor:pointer}
.bar-hit:hover{opacity:1 !important}
.trend-chart{position:relative}
.chart-tip{position:absolute;z-index:5;min-width:120px;background:rgba(24,28,37,.96);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.45);padding:9px 11px;pointer-events:none;transform:translateY(-6px);opacity:0;transition:opacity .18s ease,transform .18s ease;backdrop-filter:blur(4px)}
.chart-tip.show{opacity:1;transform:translateY(0)}
.chart-tip::after{content:'';position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--line)}
.chart-tip .tip-title{font-size:11px;color:var(--muted);margin-bottom:5px}
.chart-tip .tip-row{display:flex;justify-content:space-between;gap:14px;font-size:12px;padding:1px 0}
.chart-tip .tip-row b{font-weight:800}
.chart-tip .tip-row .up{color:var(--mint)}
.chart-tip .tip-row .dn{color:var(--red)}
.chart-tip .tip-row .cd{color:var(--blue)}
.chart-tip .tip-row .pr{color:var(--purple)}
.trend-block{margin-bottom:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:13px}
.trend-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.trend-modes{display:flex;gap:5px}
.tmode{flex:none;border:1px solid var(--line);background:var(--panel2);color:var(--muted);border-radius:7px;padding:4px 8px;font-size:11px}
.tmode.active{color:var(--mint);border-color:var(--mint);background:rgba(52,211,153,.08);font-weight:700}
.scale-btn{color:var(--amber);border-color:rgba(245,165,36,.35)}
.scale-btn.active{color:var(--amber);border-color:var(--amber);background:rgba(245,165,36,.1)}
.trend-chart{overflow-x:auto}
.trend-legend{display:flex;gap:16px;justify-content:center;margin-top:6px;font-size:11px;color:var(--muted)}
.trend-legend span{display:inline-flex;align-items:center;gap:5px}
.trend-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}

/* ============================================================
   计算器
   ============================================================ */
.calc-modal{width:min(330px,92%);padding:14px;padding-bottom:18px}
#calcModal{align-items:center}
.calc-screen{background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;font-size:26px;font-weight:800;text-align:right;margin-bottom:10px;font-variant-numeric:tabular-nums;min-height:54px;word-break:break-all;color:var(--text)}
.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.calc-key{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:var(--radius-sm);padding:12px 0;font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center}
.calc-key:active{background:var(--line)}
.calc-key.op{color:var(--mint);font-size:19px}
.calc-key.fn{color:var(--amber);font-size:13px}
.calc-key.eq{background:var(--mint);color:var(--mint-ink);border-color:var(--mint);font-size:20px}
.calc-key.zero{grid-column:span 2}
.input-calc-wrap{display:flex;gap:8px;align-items:center;width:100%}
.modal .input-calc-wrap input{flex:1;width:auto;margin-top:0}
.calc-trigger{flex:none;width:38px;height:38px;border:1px solid var(--line);background:var(--panel2);color:var(--mint);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center}
.calc-trigger .icon{width:17px;height:17px}
.calc-trigger:active{background:var(--line)}

/* ============================================================
   响应式
   ============================================================ */
@media(max-width:420px){
  .app-shell{padding-left:14px;padding-right:14px}
  .quick-grid{gap:7px}
  .quick-btn{padding:9px 9px}
  .quick-btn b{font-size:11px}
  .hero-number{font-size:30px}
}

/* ===== 登录页 ===== */
.login-gate{position:fixed;inset:0;z-index:200;background:#0a0c10;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:340px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg,16px);padding:24px;display:flex;flex-direction:column;gap:12px}
.login-card h2{margin:0 0 6px;font-size:19px;text-align:center}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}
.login-card input{padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel2,#161a22);color:var(--text,#f1f4f9);font-size:15px}
.login-error{color:var(--red,#ef6b7b);font-size:12px;min-height:16px;margin:0}
.login-card .primary-btn{width:100%;padding:12px}

.rule-row input.rule-price{background:var(--panel2,#161a22);border:1px solid var(--line);border-radius:7px;color:var(--text,#f1f4f9);font-size:13px;padding:4px 6px;width:64px;text-align:center}
.rule-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:14px}

.redeem-spinner{display:inline-block;width:22px;height:22px;border:3px solid rgba(52,211,153,.2);border-top-color:var(--mint,#34d399);border-radius:50%;animation:redeem-spin .8s linear infinite;vertical-align:-5px;margin-right:8px}
@keyframes redeem-spin{to{transform:rotate(360deg)}}
.redeem-progress{font-size:14px;color:var(--text,#f1f4f9)}
.redeem-terminal{font-size:13px;line-height:1.65}
.redeem-terminal-ok{border-color:rgba(52,211,153,.45);background:rgba(52,211,153,.08);color:var(--mint,#34d399)}
.redeem-terminal-error{border-color:rgba(239,107,123,.55);background:rgba(239,107,123,.08);color:var(--red,#ef6b7b)}
.redeem-terminal-warn{border-color:rgba(245,165,36,.55);background:rgba(245,165,36,.08);color:var(--amber,#f5a524)}
.redeem-result-title{font-size:14px;font-weight:800;margin-bottom:3px}
.redeem-result-body{color:var(--text,#f1f4f9);word-break:break-word}
.redeem-done{font-size:14px;font-weight:700}
.redeem-done.ok{color:var(--mint,#34d399)}
.redeem-done.fail{color:var(--red,#ef6b7b)}

.redeem-slider{position:relative;height:48px;border-radius:24px;background:rgba(52,211,153,.15);border:1px solid rgba(52,211,153,.4);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:none}
.redeem-slider-track{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.redeem-slider-text{color:var(--mint,#34d399);font-size:14px;font-weight:600}
.redeem-slider-thumb{position:absolute;top:3px;left:3px;width:42px;height:42px;border-radius:50%;background:var(--mint,#34d399);color:#0a0c10;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;cursor:grab;z-index:2;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.redeem-slider-thumb:active{cursor:grabbing}
.redeem-slider.done .redeem-slider-thumb{background:var(--blue,#5b8def)}
.redeem-slider.done .redeem-slider-text{color:var(--blue,#5b8def)}
.redeem-slider.locked{opacity:.65;filter:saturate(.55)}
.redeem-slider.locked .redeem-slider-thumb{cursor:not-allowed}

/* ===== 充值弹窗 ===== */
.rd-card{display:flex;flex-wrap:wrap;gap:8px}
.rd-chip{flex:1 1 0;min-width:calc(50% - 4px);background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 11px}
.rd-chip span{display:block;color:var(--muted);font-size:10px;margin-bottom:3px}
.rd-chip b{font-size:13px;font-weight:700;word-break:break-all;line-height:1.35}
.rd-field{margin-top:14px}
.rd-field-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}
.rd-field-head span{color:var(--muted);font-size:11px}
.rd-link{background:none;border:0;color:var(--blue);font-size:11px;padding:2px 0;font-weight:600}
#redeemSession{width:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);padding:11px;font-size:12px;line-height:1.55;resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
#redeemSession:focus{outline:none;border-color:var(--blue)}
.rd-confirm{margin-top:16px;border:1px solid rgba(245,165,36,.35);background:rgba(245,165,36,.06);border-radius:var(--radius);padding:13px}
.rd-confirm-head{color:var(--amber);font-size:11px;font-weight:750;letter-spacing:.5px;margin-bottom:9px}
.rd-account{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;margin-bottom:10px}
.rd-account .em{font-size:16px;font-weight:800;word-break:break-all;line-height:1.35;margin-bottom:6px}
.rd-account .row{display:flex;justify-content:space-between;gap:12px;font-size:12px;margin-top:5px}
.rd-account .row span{color:var(--muted);flex:0 0 auto}
.rd-account .row b{font-weight:600;word-break:break-all;text-align:right;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.rd-ghost{width:100%;background:transparent;border:1px dashed var(--line);color:var(--muted);font-size:12px;padding:9px;border-radius:var(--radius-sm);margin-bottom:12px}
.rd-ghost:active{color:var(--text);border-color:var(--blue)}
.rd-progress{margin-top:14px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;font-size:13px;line-height:1.6}
.upstream-stock-modal{max-width:560px}
.upstream-stock-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:11px;margin:-4px 0 12px}
.upstream-stock-state{border:1px dashed var(--line);border-radius:var(--radius-sm);padding:12px;color:var(--muted);font-size:12px;text-align:center}
.upstream-stock-state.error{border-color:rgba(239,107,123,.45);color:var(--red);text-align:left}
.upstream-stock-list{display:grid;gap:8px;margin-top:10px}
.upstream-stock-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:11px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-sm)}
.upstream-stock-row strong{display:block;font-size:13px;line-height:1.35}
.upstream-stock-row small{display:block;color:var(--muted);font-size:11px;margin-top:4px;line-height:1.45}
.upstream-stock-available{text-align:right;white-space:nowrap;min-width:54px}
.upstream-stock-available b{display:block;color:var(--mint);font-size:18px;line-height:1.1;font-variant-numeric:tabular-nums}
.upstream-stock-available small{margin-top:3px}
.redeem-task-details{margin-top:10px;padding:11px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:11.5px}
.redeem-task-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:7px;color:var(--muted);font-size:10px;letter-spacing:.4px}
.redeem-task-head strong{color:var(--text);font-size:12px;letter-spacing:0}
.redeem-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.redeem-task-row{min-width:0;padding:6px 7px;border:1px solid var(--line);border-radius:7px;background:rgba(10,12,16,.28)}
.redeem-task-row span{display:block;color:var(--muted);font-size:10px;margin-bottom:2px}
.redeem-task-row b{display:block;word-break:break-word;font-weight:650;line-height:1.35}
.redeem-task-stages{margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.redeem-task-stage{display:flex;justify-content:space-between;gap:8px;padding:4px 0;color:var(--muted)}
.redeem-task-stage b{color:var(--text);font-weight:600;text-align:right}
.redeem-task-unavailable{color:var(--muted);font-size:11px}
.rd-shot-overlay{position:fixed;inset:0;z-index:30;background:rgba(3,5,9,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:18px}
.rd-shot-overlay img{max-width:100%;max-height:74vh;border-radius:14px;box-shadow:var(--shadow-md)}
.rd-shot-tip{color:var(--muted);font-size:12px;text-align:center;line-height:1.6}
.rd-shot-close{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:10px 26px;border-radius:var(--radius-sm);font-size:13px}

.rd-save{width:100%;border:0;border-radius:var(--radius-sm);padding:13px;background:var(--blue);color:#06121f;font-weight:750;font-size:14px;margin-bottom:12px;letter-spacing:.3px}
.rd-save:active{filter:brightness(1.1)}
.rd-save:disabled{opacity:.55}

/* 充值弹窗紧凑版 */
.rd-card{gap:6px}
.rd-chip{padding:7px 9px}
.rd-chip span{font-size:9px;margin-bottom:2px}
.rd-chip b{font-size:12px}
.rd-field{margin-top:10px}
#redeemSession{padding:9px;font-size:11.5px}
.rd-confirm{margin-top:10px;padding:11px}
.rd-confirm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.rd-account{padding:10px;margin-bottom:8px}
.rd-account .em{font-size:15px;margin-bottom:4px}
.rd-account .row{font-size:11.5px;margin-top:4px}
.rd-save{padding:11px;font-size:13px;margin-bottom:9px}
.redeem-slider{height:46px}
.redeem-slider-thumb{width:40px;height:40px}
.rd-progress{margin-top:10px;padding:10px;font-size:12.5px}
.redeem-task-details{margin-top:8px;padding:9px}
#redeemPrepareBtn{margin-top:9px}

/* 充值弹窗高度：占屏更多，不再"只有一半" */
#redeemModal .modal{min-height:74vh}
#redeemModal .rd-card{flex:0 0 auto}
#redeemSession{min-height:132px}

/* 充值账号：横向窄条（不换行、不占高度） */
.cdk-redeem-line{display:flex;align-items:center;gap:7px;margin:0 0 10px;padding:6px 9px;background:var(--panel2);
  border:1px solid var(--line);border-radius:8px;font-size:11px;line-height:1.3;overflow:hidden}
.cdk-redeem-line span{color:var(--muted);flex:0 0 auto;font-size:10.5px}
.cdk-redeem-line b{flex:1 1 auto;min-width:0;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}
.cdk-redeem-line i{flex:0 0 auto;color:var(--muted);font-style:normal;font-size:10.5px}
.cdk-redeem-line:active{background:#1e2431}


/* 卡详情信息区（紧凑）：压缩4项，给账号腾空间 */
.cdk-meta{gap:6px;margin-top:12px}
.cdk-meta > div{padding:7px 10px}
.cdk-meta span{font-size:10px;letter-spacing:.2px}
.cdk-meta strong{font-size:13px;margin-top:2px}
/* 充值账号：占满整行，与上面同风格 */
.cdk-meta .cdk-acct{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.cdk-meta .cdk-acct strong{font-size:12.5px;font-weight:650;margin-top:0;min-width:0;word-break:break-all;line-height:1.35}
.cdk-meta .cdk-acct i{font-style:normal;color:var(--muted);font-size:10.5px;flex:0 0 auto;white-space:nowrap}


/* 充值账号：与其他项同款框（标签+值都在框内），仅占满整行 */
.cdk-meta #cdkDetailAccountRow{grid-column:1/-1}
.cdk-meta #cdkDetailAccountRow .cdk-acct{display:flex;align-items:baseline;gap:8px;margin-top:3px}
.cdk-meta #cdkDetailAccountRow .cdk-acct strong{font-size:13px;font-weight:650;margin:0;min-width:0;word-break:break-all;line-height:1.35}
.cdk-meta #cdkDetailAccountRow .cdk-acct i{flex:0 0 auto;font-style:normal;color:var(--muted);font-size:10.5px;white-space:nowrap}

/* 记录页 v2：右侧统一 + 副行精简 + 操作收起 */
.record-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.record-sub2{font-size:10.5px;color:var(--muted);margin-top:1px;text-align:right;white-space:nowrap}
.record-amount.coin{color:var(--purple,#a78bfa)}
.record-amount.profit{color:var(--mint)}
.record-amount.negative{color:var(--red)}
.more-btn{background:none;border:0;color:var(--muted);font-size:17px;line-height:1;padding:0 6px;margin-top:2px;font-weight:700}
.more-btn:active{color:var(--text)}
.rec-actions{display:none;gap:6px;margin-top:4px;align-items:center}
.record-item.show-actions .rec-actions{display:inline-flex}
.record-item.show-actions .more-btn{display:none}
.record-item{position:relative}

/* 账号值内层：透明无框（防"框中框"） */
.cdk-meta #cdkDetailAccountRow .cdk-acct,
.cdk-meta .cdk-acct{
  background:none !important;border:0 !important;border-radius:0 !important;
  padding:0 !important;box-shadow:none !important;
  display:flex;align-items:baseline;gap:8px;margin-top:3px;
}
.cdk-meta .cdk-acct strong{font-size:13px;font-weight:650;margin:0;min-width:0;word-break:break-all;line-height:1.35}
.cdk-meta .cdk-acct i{flex:0 0 auto;font-style:normal;color:var(--muted);font-size:10.5px;white-space:nowrap}

/* 账号标签行：左标签、右时间；账号值单独一行 */
.cdk-meta #cdkDetailAccountRow > span.cdk-lbl{
  display:flex !important;align-items:center;justify-content:space-between;gap:10px;
  font-size:10px;color:var(--muted);letter-spacing:.2px;
}
.cdk-meta #cdkDetailAccountRow > span.cdk-lbl i{
  font-style:normal;font-weight:400;font-size:10px;color:var(--muted);
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap;
}
.cdk-meta #cdkDetailAccountRow .cdk-acct{display:block !important;margin-top:3px}
.cdk-meta #cdkDetailAccountRow .cdk-acct strong{
  font-size:13px;font-weight:650;line-height:1.35;word-break:break-all;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
}

/* 记录页 v3：待收货瘦身 + 账号标题 + 成本可见 */
.record-item.pending{
  border-left:3px solid var(--amber);border-color:var(--line);
  background:none;box-shadow:none;
}
.confirm-btn{padding:5px 9px;font-size:11px;gap:4px}
.confirm-btn .icon{width:12px;height:12px}
/* 副行不再截断，保证"成本"一定看得见 */
.record-sub{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.5}
/* 用账号当标题时用等宽小字 */
.record-title.is-acct{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.5px;font-weight:600}

/* 记录页 v4：待收货与已收货完全同款 */
.record-item.pending{border-left:0;border-color:var(--line);background:none;box-shadow:none}
.record-item{padding:12px 13px}
.record-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.rec-act-row{display:flex;align-items:center;gap:6px;margin-top:4px}
.more-btn{margin-top:0;font-size:16px;padding:0 4px}
.record-amount{font-size:15px;line-height:1.25}
.record-sub2{font-size:10.5px}
.confirm-btn{padding:4px 8px;font-size:11px}
.record-title{font-size:13px}
.record-title.is-acct{font-size:12.5px}

/* ⋯ 展开区里的「已收货」按钮 */
.recv-btn{border:1px solid rgba(52,211,153,.5);background:rgba(52,211,153,.12);color:var(--mint);
  font-size:11px;font-weight:700;padding:4px 9px;border-radius:8px;white-space:nowrap}
.recv-btn:active{filter:brightness(1.15)}

/* 记录页 v6：左滑操作 */
.record-item.swipe-row{display:block;padding:0;position:relative;overflow:hidden}
.swipe-row .swipe-body{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:12px 13px;background:var(--panel);border-radius:inherit;position:relative;z-index:2;
  transition:transform .18s ease;will-change:transform}
.swipe-row.swiped .swipe-body{transform:translateX(-180px)}
.swipe-row .swipe-actions{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:stretch;z-index:1}
.swipe-row .swipe-actions button{border:0;padding:0 15px;font-size:12px;font-weight:750;color:#0b0e13;white-space:nowrap}
.swipe-row .sw-recv{background:rgba(52,211,153,.9)}
.swipe-row .sw-edit{background:rgba(91,141,239,.9)}
.swipe-row .sw-del{background:rgba(239,107,123,.9)}

/* 记录页 v7：渠道配色（边框 + 低透明度填充，底色不透明所以滑动不透色） */
/* 滑动要顺滑；操作条严格位于下层，且行体不透明 */
.swipe-row .swipe-body{background-color:var(--panel);transition:transform .22s cubic-bezier(.22,.61,.36,1)}
.swipe-row .swipe-actions{pointer-events:auto}
.swipe-row:not(.swiped) .swipe-actions{pointer-events:none}

/* 记录页 v11：操作条与内容并排（同层一起滑，颜色不会再透上来） */
.record-item.swipe-row{display:block;padding:0;position:relative;overflow:hidden;background:transparent;touch-action:pan-y}
.swipe-row .swipe-body{display:flex;align-items:stretch;width:calc(100% + 94px);padding:0;gap:0;background:transparent;
  transition:transform .22s cubic-bezier(.22,.61,.36,1);will-change:transform}
.swipe-row.swiped .swipe-body{transform:translateX(-94px)}
.swipe-row .swipe-content{flex:0 0 calc(100% - 94px);box-sizing:border-box;display:flex;justify-content:space-between;
  align-items:center;gap:12px;padding:12px 13px;background-color:var(--panel)}
.swipe-row .swipe-content .record-main{flex:1 1 auto;min-width:0}
.swipe-row .swipe-actions{position:static;top:auto;right:auto;bottom:auto;left:auto;z-index:auto;
  flex:0 0 94px;display:flex;align-items:stretch}
.swipe-row .swipe-actions button{flex:1 1 auto;padding:0 6px;border:0;font-size:12px;font-weight:750;color:#0b0e13;white-space:nowrap}
.swipe-row .sw-detail{background:rgba(91,141,239,.9)}
/* 副行拆两行：第一行只放渠道标签 */
.record-sub .tag{margin-left:0}
.record-meta{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.5}

/* 记录页 v12：行内不放 ⋯；取消收货兜底按钮 */
.swipe-row .sw-unrecv{background:rgba(138,147,165,.85)}

/* 记录页 v13：待收货 → 行中间一枚琥珀徽章，天数挪到渠道标签那行 */
.record-item.rec-wait{border-color:rgba(245,165,36,.45)}
.record-item.rec-wait .swipe-content{background-color:#221d15}
.rec-mid{flex:0 0 auto;margin-left:auto;margin-right:auto;display:flex;align-items:center;justify-content:center}
.rec-badge{background:var(--amber);color:#20150a;font-size:12.5px;font-weight:800;padding:4px 11px;
  border-radius:9px;letter-spacing:.3px;white-space:nowrap}
.tag.rec-days{color:var(--amber);background:rgba(245,165,36,.15)}
.record-sub .tag + .tag{margin-left:5px}

/* 记录页 v14：待收货徽章竖排贴行最右 —— 位置恒定，不再被邮箱长度推着跑，邮箱也不再被切 */
.rec-mid{margin-left:auto;margin-right:0}
.rec-badge{font-size:10.5px;padding:7px 4px;border-radius:7px;letter-spacing:1.5px;writing-mode:vertical-rl}

/* 记录页 v15：右侧数字列永不压缩（利润/售价必须完整），让邮箱列去让位 */
.record-item.swipe-row .record-right{flex:0 0 auto}
.record-item.swipe-row.rec-wait .swipe-content{gap:10px}
.record-item.swipe-row .record-title.is-acct{font-size:12px}

/* 记录页 v16：根治"邮箱长→利润被裁" —— 内容层不许被 nowrap 邮箱撑宽 */
.swipe-row .swipe-content{min-width:0}
.swipe-row .swipe-content .record-main{min-width:0;overflow:hidden}
.swipe-row .swipe-content .record-title{min-width:0;max-width:100%}

/* 记录页 v26：待收货徽章可点（点了＝已收货） */
.rec-badge{border:0;appearance:none;cursor:pointer;font-family:inherit;line-height:1.35;
  -webkit-tap-highlight-color:transparent;user-select:none;touch-action:manipulation}
.rec-badge:active{filter:brightness(1.18)}

.tag.p-16688{color:var(--cyan);background:rgba(34,211,238,.12)}

.inv-search{margin:10px 0}
.inv-search input{width:100%;box-sizing:border-box;padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font-size:14px;outline:none}
.inv-search input:focus{border-color:var(--blue)}

/* ===== 修复：标题被挤成两行 =====
   原规则 .secondary-btn,.text-btn{width:100%} 让标题行的按钮撑满整行，
   导致「最近记录」换行。这里把标题行的按钮还原成内容宽度。 */
.section-head .text-btn,
.section-head .secondary-btn{width:auto;flex:0 0 auto;padding:4px 6px}
.section-head h2{white-space:nowrap;flex:0 0 auto}

/* ============================================================
   充值页（独立页面）+ 顶栏齿轮
   追加到 styles.css 末尾；不改动任何原有规则
   ============================================================ */

/* --- 顶栏：标题 + 齿轮（设置入口）--- */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gear-btn{
  width:34px;height:34px;flex:0 0 34px;padding:0;min-height:0;
  display:grid;place-items:center;border-radius:10px;
  border:1px solid var(--line);background:var(--panel);color:var(--muted);
}
.gear-btn .icon{width:16px;height:16px}
.gear-btn:active{background:var(--panel2);color:var(--text)}
/* 齿轮复用了 .nav-item 以便共用点击逻辑，但不要底部导航那种选中块 */
.gear-btn.active{background:var(--panel2);color:var(--text);border-color:var(--line2)}

/* --- 库存概览（可用 CDK / USDT）--- */
.recharge-stock{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.recharge-stock>div{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:10px 12px;
}
.recharge-stock span{display:block;font-size:10px;color:var(--muted);letter-spacing:.2px;margin-bottom:2px}
.recharge-stock strong{
  display:block;font-size:19px;font-weight:700;letter-spacing:-.4px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-variant-numeric:tabular-nums;
}
.recharge-stock>div:first-child strong{color:var(--blue)}
.recharge-stock>div:last-child strong{color:var(--cyan);font-size:15px}

/* --- 可选卡片列表 --- */
#rcList .cdk-row{cursor:pointer;transition:border-color .15s ease,background .15s ease}
#rcList .cdk-row:active{background:var(--panel2)}
#rcList .rc-avail{border-color:rgba(61,220,151,.28)}

/* --- 流程区：页面里比弹窗宽松，其余沿用原有 .rd-* 样式 --- */
#rcFlow{margin-top:2px}
#rcFlow #redeemSession{min-height:120px;font-size:13px;line-height:1.6}
#rcChangeCard{font-size:11.5px;min-height:34px;padding:7px 10px}
#view-recharge .section-head.page-head{margin-bottom:12px}

/* --- 窄屏微调 --- */
@media(max-width:360px){
  .recharge-stock{grid-template-columns:1fr}
  .recharge-stock>div:last-child strong{font-size:17px}
}



/* --- 齿轮图标（后加的，需要单独的尺寸规则）--- */
.gear-btn .icon svg{width:16px;height:16px;display:block}
.gear-btn .icon{display:grid;place-items:center}

/* ============================================================
   充值页：三个功能入口 + 面板
   追加到 styles.css 末尾
   ============================================================ */

/* 三个功能按钮 */
.rc-feat{display:flex;gap:8px;margin-bottom:14px}
.rc-feat-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:12px 4px;color:var(--muted);font-size:10.5px;font-weight:600;
  min-height:0;line-height:1.2;
}
.rc-feat-btn i{font-size:17px;font-style:normal;line-height:1}
.rc-feat-btn:active{background:var(--panel2)}
.rc-feat-btn.active{border-color:var(--mint);background:#0f1a16;color:var(--mint);font-weight:700}

/* 面板外壳 */
.rc-panel-body{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px;
}

/* 上游库存：复用原有 .upstream-stock-* 样式，这里只保证在页面里显示正常 */
#view-recharge .upstream-stock-list{display:grid;gap:8px}
#view-recharge .upstream-stock-state{
  font-size:11.5px;color:var(--muted);line-height:1.6;text-align:center;padding:10px 4px;
}
#view-recharge .upstream-stock-state.error{color:var(--red)}

/* 查卡状态的结果框（页面上给点留白，别贴着边） */
#view-recharge .batch-result{margin-bottom:10px}

.audit-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.audit-title-row h3{margin:0}
.audit-title-row .form-hint{margin:6px 0 0}
.audit-log-list{display:grid;gap:9px;margin-top:12px}
.audit-log-item{min-width:0;padding:10px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}
.audit-log-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;font-size:13px}
.audit-log-head strong{overflow-wrap:anywhere}
.audit-log-head span{flex:0 0 auto;color:var(--muted);font-size:11px}
.audit-log-meta{margin-top:5px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}
.audit-log-item details{margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.audit-log-item summary{color:var(--blue);font-size:12px;cursor:pointer}
.audit-log-item pre{max-height:280px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:8px 0 0;color:var(--text);font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.audit-more-btn{width:100%;margin-top:10px}
.audit-more-btn[hidden]{display:none}
@media(max-width:420px){.audit-title-row{align-items:stretch;flex-direction:column}.audit-title-row .outline-btn{width:100%}}


.card-platform-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 18px}
.card-platform-stat,.card-platform-card,.card-platform-event{min-width:0;padding:13px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}
.card-platform-stat span,.card-platform-card small,.card-platform-event small{display:block;color:var(--muted);font-size:11px}
.card-platform-stat strong{display:block;margin-top:4px;font-size:18px;overflow-wrap:anywhere}
.card-platform-stat .cp-sub{margin-top:4px;color:var(--muted);font-size:10px}
.card-platform-stat.cp-total strong{color:var(--mint)}
.card-platform-card-list,.card-platform-event-list{display:grid;gap:8px;margin:10px 0 18px}
.card-platform-card-head,.card-platform-event-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.card-platform-card-head strong,.card-platform-event-head strong{font-size:13px}
.card-platform-card-meta,.card-platform-event-meta{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:8px;color:var(--muted);font-size:11px}
.card-platform-event-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:10px}
.card-platform-event-actions select{min-width:0;width:100%;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--text);padding:9px;font-size:12px}
.card-platform-event-actions button{white-space:nowrap;padding:8px 11px}
.cp-badge{display:inline-flex;padding:3px 7px;border-radius:7px;font-size:10px;background:var(--panel2);color:var(--muted)}
.cp-badge.cp-linked{color:var(--mint);background:rgba(52,211,153,.13)}
.cp-mode{margin-top:8px}
.cp-mode select{border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--text);padding:6px;font-size:11px}
.cp-muted{color:var(--muted);font-size:11px;line-height:1.5}
.cp-error{color:var(--red)}
.cp-good{color:var(--mint)}
@media(min-width:520px){.card-platform-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
