/* ═══════════════════════════════════════════════════
   房融e家 H5 v8 - 1:1 对标微信小程序设计
   设计语言: Blue/Purple Glass-Morphism + Water Ripple
   ================================================= */

:root{
  --p:#1a73e8; --pd:#0d47a1;
  --pu:#7c3aed; /* Purple accent */
  --o:#ff5722; --w:#ff9800; --s:#4caf50; --d:#e74c3c;
  --bg:#f0f2f5; --cbg:rgba(255,255,255,0.72);
  --r:16px; --t:#1a1a1a; --tl:#8e8e93;
  --glass-blur:blur(20px);
  --glass-border:rgba(255,255,255,0.6);
  --card-shadow:0 2px 12px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04);
}

*{margin:0;padding:0;box-sizing:border-box}
html{overflow-x:hidden}
body{
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue','Microsoft YaHei',sans-serif;
  background:var(--bg);color:var(--t);font-size:15px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  -webkit-tap-highlight-color:transparent;
}
#app{max-width:480px;margin:0 auto;min-height:100vh;overflow-x:hidden;box-shadow:0 0 40px rgba(0,0,0,0.08)}

/* ═══════════ Scrollbar ═══════════ */
::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-thumb{background:#d0d0d0;border-radius:3px}
::-webkit-scrollbar-track{background:transparent}

/* ═══════════ Water Ripple Animations (对标小程序) ═══════════ */
@keyframes ripple-blue{
  0%{box-shadow:0 0 0 0 rgba(26,115,232,0.45),0 0 0 0 rgba(66,133,244,0.28)}
  60%{box-shadow:0 0 16px 10px rgba(26,115,232,0.16),0 0 32px 20px rgba(66,133,244,0.08)}
  100%{box-shadow:0 0 0 0 rgba(26,115,232,0.45),0 0 0 0 rgba(66,133,244,0.28)}
}
@keyframes ripple-purple{
  0%{box-shadow:0 0 0 0 rgba(124,58,237,0.45),0 0 0 0 rgba(99,102,241,0.28)}
  60%{box-shadow:0 0 16px 10px rgba(124,58,237,0.16),0 0 32px 20px rgba(99,102,241,0.08)}
  100%{box-shadow:0 0 0 0 rgba(124,58,237,0.45),0 0 0 0 rgba(99,102,241,0.28)}
}
@keyframes ripple-green{
  0%{box-shadow:0 0 0 0 rgba(76,175,80,0.45),0 0 0 0 rgba(129,199,132,0.28)}
  60%{box-shadow:0 0 16px 10px rgba(76,175,80,0.16),0 0 32px 20px rgba(129,199,132,0.08)}
  100%{box-shadow:0 0 0 0 rgba(76,175,80,0.45),0 0 0 0 rgba(129,199,132,0.28)}
}
@keyframes ripple-orange{
  0%{box-shadow:0 0 0 0 rgba(255,152,0,0.45),0 0 0 0 rgba(255,183,77,0.28)}
  60%{box-shadow:0 0 16px 10px rgba(255,152,0,0.16),0 0 32px 20px rgba(255,183,77,0.08)}
  100%{box-shadow:0 0 0 0 rgba(255,152,0,0.45),0 0 0 0 rgba(255,183,77,0.28)}
}
@keyframes ripple-danger{
  0%{box-shadow:0 0 0 0 rgba(244,67,54,0.40),0 0 0 0 rgba(229,115,115,0.22)}
  60%{box-shadow:0 0 12px 8px rgba(244,67,54,0.14),0 0 24px 16px rgba(229,115,115,0.06)}
  100%{box-shadow:0 0 0 0 rgba(244,67,54,0.40),0 0 0 0 rgba(229,115,115,0.22)}
}

/* ═══════════ Glass Button Base ═══════════ */
.glass-btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  border:none;border-radius:24px;font-weight:700;letter-spacing:0.5px;
  cursor:pointer;transition:all 0.18s ease;overflow:hidden;
  text-shadow:0 0.5px 0 rgba(255,255,255,0.4), 0 -0.8px 0 rgba(0,0,0,0.25);
  user-select:none;-webkit-tap-highlight-color:transparent;
}
.glass-btn:active{transform:scale(0.94);opacity:0.82}
.glass-btn:disabled{opacity:0.5;cursor:not-allowed;animation:none!important;transform:none!important}

/* Glass buttons - semi-transparent bg + backdrop blur + border ripple */
.glass-btn-blue{
  background:rgba(26,115,232,0.18);color:#1a1a1a;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:2px solid rgba(26,115,232,0.45);
  box-shadow:0 0 0 1px rgba(26,115,232,0.08),inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-blue 3.5s ease-in-out infinite;
}
.glass-btn-purple{
  background:rgba(124,58,237,0.18);color:#1a1a1a;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:2px solid rgba(124,58,237,0.45);
  box-shadow:0 0 0 1px rgba(124,58,237,0.08),inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-purple 3.5s ease-in-out infinite;
}
.glass-btn-green{
  background:rgba(76,175,80,0.18);color:#1a1a1a;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:2px solid rgba(76,175,80,0.45);
  box-shadow:0 0 0 1px rgba(76,175,80,0.08),inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-green 3.5s ease-in-out infinite;
}
.glass-btn-orange{
  background:rgba(255,152,0,0.18);color:#1a1a1a;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:2px solid rgba(255,152,0,0.45);
  box-shadow:0 0 0 1px rgba(255,152,0,0.08),inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-orange 3.5s ease-in-out infinite;
}
.glass-btn-danger{
  background:rgba(244,67,54,0.16);color:#1a1a1a;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:2px solid rgba(244,67,54,0.40);
  box-shadow:0 0 0 1px rgba(244,67,54,0.06),inset 0 1px 0 rgba(255,255,255,0.24);
  animation:ripple-danger 3.0s ease-in-out infinite;
}
.glass-btn-gray{
  background:rgba(0,0,0,0.06);color:#666;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1.5px solid rgba(0,0,0,0.12);
  text-shadow:none
}
.glass-btn-gray:active{background:rgba(0,0,0,0.10)}

/* Solid fill buttons */
.glass-btn-solid-blue{
  background:linear-gradient(135deg,#1a5fd4,#2979ff);color:#fff;
  border:2px solid rgba(255,255,255,0.40);
  box-shadow:0 4px 16px rgba(26,80,200,0.30),inset 0 1px 0 rgba(255,255,255,0.20);
  text-shadow:0 -0.8px 0 rgba(0,0,0,0.20);
  animation:ripple-blue 3s ease-in-out infinite;
}
.glass-btn-solid-purple{
  background:linear-gradient(135deg,#6d28d9,#7c3aed);color:#fff;
  border:2px solid rgba(255,255,255,0.40);
  box-shadow:0 4px 16px rgba(109,40,217,0.30),inset 0 1px 0 rgba(255,255,255,0.20);
  text-shadow:0 -0.8px 0 rgba(0,0,0,0.20);
  animation:ripple-purple 3s ease-in-out infinite;
}
.glass-btn-solid-green{
  background:linear-gradient(135deg,#2e7d32,#43a047);color:#fff;
  border:2px solid rgba(255,255,255,0.40);
  box-shadow:0 4px 16px rgba(46,125,50,0.30),inset 0 1px 0 rgba(255,255,255,0.20);
  text-shadow:0 -0.8px 0 rgba(0,0,0,0.20);
  animation:ripple-green 3s ease-in-out infinite;
}
.glass-btn-solid-orange{
  background:linear-gradient(135deg,#e65100,#ff6d00);color:#fff;
  border:2px solid rgba(255,255,255,0.40);
  box-shadow:0 4px 16px rgba(230,81,0,0.30),inset 0 1px 0 rgba(255,255,255,0.20);
  text-shadow:0 -0.8px 0 rgba(0,0,0,0.20);
  animation:ripple-orange 3s ease-in-out infinite;
}

/* Glass button sizes */
.glass-btn-sm{padding:6px 16px;font-size:13px;border-radius:18px}
.glass-btn-md{padding:10px 22px;font-size:15px;border-radius:22px}
.glass-btn-lg{padding:13px 28px;font-size:16px;border-radius:26px}
.glass-btn-xl{padding:15px 36px;font-size:18px;border-radius:30px}
.glass-btn-full{width:100%;padding:13px 28px;font-size:16px;border-radius:26px;display:flex}

/* Text/link buttons */
.glass-btn-text{display:inline-flex;align-items:center;justify-content:center;color:#8e8e93;font-size:12px;font-weight:400;padding:6px 10px;cursor:pointer;border:none;background:none}
.glass-btn-text:active{opacity:0.6}
.glass-btn-link{display:inline-flex;align-items:center;justify-content:center;color:#1a5fd4;font-size:13px;font-weight:600;padding:4px 8px;cursor:pointer;border:none;background:none;text-decoration:none}
.glass-btn-link:active{opacity:0.6}

/* ═══════════ Legacy Button Compatibility ═══════════ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  border:none;border-radius:24px;font-weight:700;font-size:15px;letter-spacing:0.5px;
  cursor:pointer;padding:11px 22px;text-align:center;transition:all 0.18s;
  user-select:none;-webkit-tap-highlight-color:transparent;
  text-shadow:0 0.5px 0 rgba(255,255,255,0.35);
}
.btn:active{transform:scale(0.95);opacity:0.85}
.btn:disabled{opacity:0.5;cursor:not-allowed;animation:none!important}
.btn-block{width:100%;display:flex}
.btn-primary{
  background:rgba(26,115,232,0.18);color:#1a1a1a;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:2px solid rgba(26,115,232,0.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-blue 3.5s ease-in-out infinite;
}
.btn-warning{
  background:rgba(255,152,0,0.18);color:#1a1a1a;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:2px solid rgba(255,152,0,0.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-orange 3.5s ease-in-out infinite;
}
.btn-danger{
  background:rgba(244,67,54,0.16);color:#1a1a1a;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:2px solid rgba(244,67,54,0.40);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.24);
  animation:ripple-danger 3s ease-in-out infinite;
}
.btn-success{
  background:rgba(76,175,80,0.18);color:#1a1a1a;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:2px solid rgba(76,175,80,0.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.30);
  animation:ripple-green 3.5s ease-in-out infinite;
}
.btn-gray{
  background:rgba(0,0,0,0.06);color:#666;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1.5px solid rgba(0,0,0,0.12);
  text-shadow:none
}
.btn-outline{
  background:rgba(255,255,255,0.3);color:var(--p);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1.5px solid var(--p)
}
.btn-xs{
  padding:4px 10px;font-size:11px;border-radius:12px;font-weight:600;
  border:none;cursor:pointer;display:inline-flex;align-items:center;
  transition:all 0.15s;
}
.btn-xs:active{transform:scale(0.93)}
.btn-xs-green{background:rgba(76,175,80,0.12);color:#2e7d32;border:1px solid rgba(76,175,80,0.25)}
.btn-xs-gray{background:rgba(0,0,0,0.06);color:#666;border:1px solid rgba(0,0,0,0.10)}
.btn-xs-red{background:rgba(244,67,54,0.10);color:#c62828;border:1px solid rgba(244,67,54,0.20)}

/* ═══════════ Layout: Pages ═══════════ */
.page{padding-bottom:64px}
.topbar{
  position:sticky;top:0;z-index:100;
  background:linear-gradient(135deg,#1a73e8,#0d47a1);
  color:#fff;display:flex;justify-content:space-between;align-items:center;
  padding:13px 16px;min-height:50px;
}
.topbar-left{font-size:17px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.topbar-action{font-size:18px;cursor:pointer;color:#fff;padding:2px 4px;text-decoration:none}
.back-btn{cursor:pointer;margin-right:4px;font-size:20px;line-height:1}

/* Merchant Header (蓝紫渐变头) */
.mch-hdr{
  background:linear-gradient(135deg,#1a73e8 0%,#6d28d9 100%);
  padding:20px 16px;display:flex;justify-content:space-between;align-items:center;color:#fff;
}
.mch-hdr-row{display:flex;align-items:center;gap:12px}
.mch-avatar{
  width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,0.18);
  display:flex;align-items:center;justify-content:center;
  font-size:22px;overflow:hidden;flex-shrink:0;
  border:2px solid rgba(255,255,255,0.3);
  box-shadow:0 2px 8px rgba(0,0,0,0.15);
}
.mch-avatar img{width:100%;height:100%;object-fit:cover}
.mch-nmp{display:flex;flex-direction:column}
.mch-nm{font-size:17px;font-weight:700;letter-spacing:0.3px}
.mch-ph{font-size:12px;opacity:0.75;margin-top:2px}

/* ═══════════ Glass Cards (对标小程序玻璃卡片) ═══════════ */
.card{
  background:var(--cbg);margin:10px 12px;padding:16px;
  border-radius:var(--r);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.card-list{
  background:rgba(255,255,255,0.82);margin:8px 12px;padding:14px;
  border-radius:12px;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,0.55);
  box-shadow:0 1px 4px rgba(0,0,0,0.04);
  cursor:pointer;transition:transform 0.12s;
}
.card-list:active{transform:scale(0.975)}
.card-list-row{display:flex;justify-content:space-between;align-items:center}
.card-list-title{font-size:15px;font-weight:600;color:var(--t);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-list-meta{font-size:11px;color:var(--tl)}
.card-list-meta+.card-list-meta{margin-left:10px}

/* Token Card (橙渐变) */
.card-token{
  background:linear-gradient(135deg,#ff5722,#ff9800);
  margin:12px;padding:22px;border-radius:var(--r);color:#fff;
  display:flex;justify-content:space-between;align-items:center;
  box-shadow:0 4px 16px rgba(255,87,34,0.25);
}
.card-token .bal{display:flex;flex-direction:column}
.card-token .bal-label{font-size:13px;opacity:0.85}
.card-token .bal-row{display:flex;align-items:baseline;margin-top:4px}
.card-token .bal-num{font-size:36px;font-weight:700}
.card-token .bal-unit{font-size:14px;margin-left:6px;opacity:0.85}
.card-token .bal-frozen{font-size:12px;opacity:0.75;margin-top:4px}
.card-token .tok-arrow{background:rgba(255,255,255,0.18);border-radius:20px;padding:8px 14px;font-size:13px;cursor:pointer;white-space:nowrap}

/* ═══════════ Stats Section (Glass) ═══════════ */
.stats-section{
  background:var(--cbg);margin:12px;border-radius:var(--r);padding:18px;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stats-item{
  background:rgba(248,249,250,0.6);border-radius:12px;padding:14px 8px;
  text-align:center;cursor:pointer;
  border:1px solid rgba(0,0,0,0.04);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.stats-item.hl{
  background:linear-gradient(135deg,rgba(227,242,253,0.7),rgba(187,222,251,0.7));
  border:1px solid rgba(26,115,232,0.15);
}
.stats-val{display:block;font-size:24px;font-weight:700;color:var(--t)}
.stats-label{display:block;font-size:11px;color:var(--tl);margin-top:4px}

/* ═══════════ Menu Grid (Glass + Icons) ═══════════ */
.menu-section{
  background:var(--cbg);margin:12px;border-radius:var(--r);padding:18px 8px;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px 4px;text-align:center}
.menu-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 2px;cursor:pointer}
.menu-item-icon{
  width:46px;height:46px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;font-size:22px;
  box-shadow:0 2px 8px rgba(0,0,0,0.06);
}
.menu-item span:last-child{font-size:12px;color:var(--t);line-height:1.2;font-weight:500}

/* ═══════════ Chart Sections ═══════════ */
.chart-section{
  background:var(--cbg);margin:12px;border-radius:var(--r);padding:18px;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.chart-title{font-size:15px;font-weight:700;color:var(--t);margin-bottom:14px}
.chart-legend{display:flex;justify-content:center;gap:18px;margin-bottom:12px;font-size:11px}
.chart-legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.chart-total{text-align:center;margin-bottom:14px;font-size:13px;color:var(--tl);font-weight:500}
.bar-chart{display:flex;align-items:flex-end;justify-content:space-around;height:110px;gap:3px;padding:0 4px}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px}
.bar-o{background:linear-gradient(to top,#1a73e8,#4285f4);width:15px;border-radius:4px 4px 0 0;min-height:4px}
.bar-a{background:linear-gradient(to top,#ff5722,#ff9800);width:15px;border-radius:4px 4px 0 0;min-height:4px}
.bar-day{font-size:10px;color:var(--tl);margin-top:2px}
.bar-v{font-size:10px;color:var(--t);font-weight:600}

/* Income */
.income-item{margin-bottom:16px}
.income-header{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px;font-weight:500}
.income-val{font-weight:700;color:var(--t)}
.progress-bar{height:8px;background:rgba(0,0,0,0.06);border-radius:4px;overflow:hidden;margin-bottom:4px}
.progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#1a73e8,#4285f4)}
.progress-tip{font-size:11px;color:var(--tl)}
.pie-section{margin-top:16px}
.pie-title{font-size:14px;font-weight:700;margin-bottom:10px}
.pie-item{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px}
.pie-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.pie-value{margin-left:auto;font-weight:600;color:var(--t)}

/* ═══════════ Detail Sections ═══════════ */
.detail-section{
  background:var(--cbg);margin:8px 12px;padding:14px 16px;border-radius:var(--r);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.detail-field{display:flex;justify-content:space-between;align-items:center;padding:9px 0}
.detail-field+.detail-field{border-top:1px solid rgba(0,0,0,0.05)}
.field-label{font-size:13px;color:var(--tl);flex-shrink:0;min-width:56px;font-weight:500}
.field-val{font-size:14px;color:var(--t);font-weight:500;text-align:right;max-width:62%;overflow:hidden;text-overflow:ellipsis;word-break:break-all}
.field-block{flex-direction:column;align-items:flex-start}
.field-block .field-val{margin-top:4px;text-align:left;max-width:100%;font-size:13px;line-height:1.6}
.detail-actions{padding:8px 12px;display:flex;gap:8px;flex-wrap:wrap}
.detail-actions button,.detail-actions a{flex:1;min-width:80px;display:inline-flex;align-items:center;justify-content:center}
.detail-actions .btn-xs{flex:0 0 auto;min-width:0}

/* ═══════════ Section Title ═══════════ */
.section-title{font-size:15px;font-weight:700;color:var(--t);margin-bottom:12px;padding:0 4px}

/* ═══════════ Search ═══════════ */
.search-bar{margin:0 12px 10px;padding:0}
.search-entry{
  background:var(--cbg);margin:0 12px 10px;padding:12px 16px;
  border-radius:var(--r);display:flex;align-items:center;gap:8px;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,0.55);
  box-shadow:0 1px 4px rgba(0,0,0,0.04);
  cursor:pointer;color:var(--tl);font-size:14px;
}

/* ═══════════ Tabs ═══════════ */
.tab-row{
  display:flex;background:var(--cbg);margin:0 12px 12px;
  border-radius:var(--r);overflow:hidden;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,0.5);
  box-shadow:0 1px 3px rgba(0,0,0,0.04);
}
.tab-item{
  flex:1;text-align:center;padding:11px 4px;font-size:13px;
  color:var(--tl);cursor:pointer;border-bottom:2px solid transparent;
  transition:all 0.2s;font-weight:500;
}
.tab-item.active{color:var(--p);border-bottom-color:var(--p);font-weight:700}
.tab-scroll{overflow-x:auto;white-space:nowrap}
.tab-scroll .tab-item{flex:none;padding:11px 14px}

/* ═══════════ Tags ═══════════ */
.tag{font-size:11px;padding:3px 8px;border-radius:4px;font-weight:600;line-height:1.4}
.tag-green{background:rgba(76,175,80,0.12);color:#2e7d32}
.tag-orange{background:rgba(255,152,0,0.12);color:#e65100}
.tag-red{background:rgba(244,67,54,0.10);color:#c62828}
.tag-gray{background:rgba(0,0,0,0.06);color:#666}
.tag-blue{background:rgba(26,115,232,0.10);color:#1565c0}
.tag-purple{background:rgba(124,58,237,0.10);color:#6a1b9a}

/* ═══════════ Timeline ═══════════ */
.timeline-node{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13px}
.timeline-dot{width:10px;height:10px;border-radius:50%;background:var(--p);flex-shrink:0}
.timeline-dot.rejected{background:var(--d)}.timeline-dot.success{background:var(--s)}

/* ═══════════ Recharge ═══════════ */
.recharge-tiers{display:flex;gap:8px;margin:0;overflow-x:auto;padding-bottom:4px}
.recharge-tier{
  flex:1;min-width:90px;
  background:linear-gradient(135deg,rgba(227,242,253,0.5),rgba(187,222,251,0.5));
  border-radius:12px;padding:14px 8px;text-align:center;cursor:pointer;
  border:1px solid rgba(26,115,232,0.12);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  transition:transform 0.12s;
}
.recharge-tier:active{transform:scale(0.95)}
.tier-amount{font-size:20px;font-weight:700;color:#0d47a1}
.tier-reward{font-size:11px;color:var(--tl);margin-top:4px}

/* ═══════════ Forms ═══════════ */
.form-group{margin-bottom:14px}
.form-group label{display:block;font-size:13px;font-weight:600;color:var(--t);margin-bottom:6px}
.form-input{
  width:100%;padding:11px 14px;border:1.5px solid rgba(0,0,0,0.10);
  border-radius:10px;font-size:14px;background:rgba(250,250,250,0.5);
  transition:border 0.2s,box-shadow 0.2s;color:var(--t);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.form-input:focus{
  border-color:var(--p);background:rgba(255,255,255,0.9);outline:none;
  box-shadow:0 0 0 3px rgba(26,115,232,0.10);
}
select.form-input{appearance:auto;padding-right:30px}
textarea.form-input{resize:vertical;min-height:60px;font-family:inherit}
.form-row{display:flex;gap:10px}
.form-row>*{flex:1}
.form-tip{text-align:center;font-size:12px;color:var(--tl);margin-top:8px}
input[type="file"]{font-size:13px;width:100%}

/* ═══════════ Alert ═══════════ */
.alert-card{
  background:rgba(255,243,224,0.7);border:1px solid rgba(255,204,128,0.5);
  border-radius:var(--r);padding:12px 16px;font-size:13px;color:#e65100;
  cursor:pointer;margin:0 12px 10px;display:flex;align-items:center;gap:8px;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}

/* ═══════════ Bottom TabBar (对标小程序) ═══════════ */
.tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:480px;
  background:rgba(255,255,255,0.85);
  display:flex;justify-content:space-around;align-items:center;
  height:56px;padding:4px 0;padding-bottom:env(safe-area-inset-bottom,4px);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-top:1px solid rgba(0,0,0,0.08);
  box-shadow:0 -2px 12px rgba(0,0,0,0.04);
  z-index:999;
}
.tabbar-tab{
  flex:1;display:flex;flex-direction:column;align-items:center;
  justify-content:center;cursor:pointer;font-size:22px;color:#8e8e93;
  gap:1px;transition:color 0.2s;
}
.tabbar-tab span{font-size:10px;line-height:1.2;font-weight:600}
.tabbar-tab.active{color:var(--p)}
.tabbar-tab.active span{font-weight:700}
.tabbar-tab:active{opacity:0.6}

/* ═══════════ Modal / Sheet ═══════════ */
.modal-overlay{
  position:fixed;top:0;left:0;width:100%;height:100%;
  background:rgba(0,0,0,0.45);z-index:200;
  display:flex;align-items:flex-end;justify-content:center;
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.modal-sheet{
  background:rgba(255,255,255,0.92);border-radius:20px 20px 0 0;
  width:100%;max-width:480px;max-height:88vh;display:flex;flex-direction:column;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,0.6);
  box-shadow:0 -8px 40px rgba(0,0,0,0.15);
  animation:slideUp 0.25s ease;
}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-sheet-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:16px;border-bottom:1px solid rgba(0,0,0,0.06);flex-shrink:0;
}
.modal-sheet-head h3{font-size:17px;font-weight:700;color:var(--t)}
.btn-close{background:none;border:none;font-size:26px;color:var(--tl);cursor:pointer;padding:0 4px;line-height:1}
.modal-sheet-body{padding:18px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch}

/* ═══════════ Toast ═══════════ */
.toast{
  position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  background:rgba(0,0,0,0.78);color:#fff;padding:14px 28px;
  border-radius:10px;font-size:14px;z-index:9999;opacity:0;
  pointer-events:none;transition:opacity 0.2s;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.toast.show{opacity:1}

/* ═══════════ Settlement Modal ═══════════ */
.sm-overlay{
  position:fixed;top:0;left:0;width:100%;height:100%;
  background:rgba(0,0,0,0.5);z-index:300;
  display:flex;align-items:center;justify-content:center;padding:20px;
  backdrop-filter:blur(4px);
}
.sm-modal{
  background:rgba(255,255,255,0.94);border-radius:20px;
  width:100%;max-width:400px;max-height:88vh;overflow-y:auto;
  padding:24px;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,0.6);
  box-shadow:0 12px 40px rgba(0,0,0,0.2);
}
.sm-icon{text-align:center;font-size:40px;margin-bottom:6px}
.sm-title{text-align:center;font-size:17px;font-weight:700;color:var(--t);margin-bottom:16px}
.sm-tabs{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto;padding-bottom:4px}
.sm-tab{padding:6px 14px;border-radius:16px;font-size:12px;background:rgba(0,0,0,0.05);color:#666;cursor:pointer;white-space:nowrap;flex-shrink:0}
.sm-tab.active{background:var(--p);color:#fff}
.sm-row{display:flex;justify-content:space-between;padding:7px 0;font-size:13px;border-bottom:1px solid rgba(0,0,0,0.04)}
.sm-label{color:var(--tl);font-weight:500}
.sm-val{color:var(--t);font-weight:500;text-align:right;max-width:60%}
.sm-val.amount{color:#ff5722;font-weight:700;font-size:16px}
.sm-val.link{color:var(--p);text-decoration:underline;cursor:pointer}
.sm-divider{text-align:center;font-size:12px;color:var(--tl);margin:14px 0 10px}
.sm-account{background:rgba(0,0,0,0.03);border-radius:10px;padding:10px 14px;margin-bottom:8px}
.sm-acct-type{font-size:13px;font-weight:600;margin-bottom:4px}
.sm-acct-row{display:flex;justify-content:space-between;align-items:center}
.sm-acct-num{font-size:13px;color:var(--t);font-family:monospace}
.sm-acct-copy{font-size:11px;color:var(--p);cursor:pointer;background:rgba(26,115,232,0.08);padding:4px 10px;border-radius:4px;font-weight:600}
.sm-acct-sub{font-size:11px;color:var(--tl);margin-top:3px}
.sm-proof{background:rgba(0,0,0,0.02);border:2px dashed rgba(0,0,0,0.12);border-radius:12px;padding:24px;text-align:center;cursor:pointer;margin:0 0 12px}
.sm-proof-plus{font-size:30px;display:block;color:#bbb;margin-bottom:4px}
.sm-proof-hint{font-size:12px;color:var(--tl)}
.sm-proof-img{max-width:100%;max-height:180px;border-radius:10px}
.sm-proof-again{font-size:11px;color:var(--tl);margin-top:6px}
.sm-warn{text-align:center;font-size:11px;color:var(--d);margin-bottom:12px;padding:10px;background:rgba(244,67,54,0.05);border-radius:8px}
.sm-btn-row{display:flex;gap:10px}
.sm-btn{padding:12px;border-radius:24px;font-size:15px;font-weight:700;cursor:pointer;text-align:center;border:none;flex:1}
.sm-btn.cancel{background:rgba(0,0,0,0.05);color:#666}
.sm-btn.confirm{
  background:rgba(26,115,232,0.18);color:#1a1a1a;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:2px solid rgba(26,115,232,0.45);
  animation:ripple-blue 3.5s ease-in-out infinite;
}
.sm-btn.confirm:active{transform:scale(0.95)}

/* ═══════════ Product Banner ═══════════ */
.product-banner{margin:8px 12px;border-radius:var(--r);overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,0.08)}

/* ═══════════ Login Page ═══════════ */
.login-page{
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;background:linear-gradient(135deg,#1a73e8,#6d28d9);
  padding:20px;
}
.login-card{
  background:rgba(255,255,255,0.92);border-radius:20px;padding:44px 30px;
  width:100%;max-width:360px;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,0.6);
  box-shadow:0 12px 40px rgba(0,0,0,0.18);
  text-align:center;
}
.login-logo{width:76px;height:76px;border-radius:50%;object-fit:cover;margin-bottom:14px;border:3px solid var(--p);box-shadow:0 4px 16px rgba(26,115,232,0.25)}
.login-logo-icon{width:76px;height:76px;border-radius:50%;background:linear-gradient(135deg,#1a73e8,#6d28d9);display:flex;align-items:center;justify-content:center;font-size:38px;margin:0 auto 14px;color:#fff;box-shadow:0 4px 16px rgba(26,115,232,0.3)}
.login-card h2{font-size:24px;font-weight:700;color:var(--t);margin-bottom:4px}
.login-sub{font-size:14px;color:var(--tl);margin-bottom:24px}

/* ═══════════ Misc ═══════════ */
.empty-state{text-align:center;padding:40px 20px;color:var(--tl);font-size:14px}
.loading-more{text-align:center;padding:24px;color:var(--tl);font-size:13px}
.withdraw-card{
  background:var(--cbg);margin:12px;padding:22px;border-radius:var(--r);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--card-shadow);
}
.list-container{padding:0 0 12px}

/* 特殊资产房源（2026-09-20 新增） */
.au-tab { flex-shrink: 0; padding: 6px 14px; border-radius: 16px; font-size: 13px; color: var(--tl); background: #f2f2f7; cursor: pointer; }
.au-tab.active { background: var(--p); color: #fff; }
.au-timeline { padding-left: 6px; }
.au-tl-item { display: flex; gap: 10px; padding: 8px 0; align-items: flex-start; }
.au-tl-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--p); margin-top: 5px; flex-shrink: 0; }

/* ═══════════ 特殊资产详情（淘宝样式 2026-09-20） ═══════════ */
.au-wrap{padding-bottom:8px}
.au-card{background:var(--cbg);margin:0 12px 10px;padding:12px 14px;border-radius:var(--r);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--card-shadow)}
.au-card-title{font-size:14px;font-weight:700;color:var(--t);margin-bottom:4px}
.au-gallery{position:relative;background:#111;border-radius:10px;overflow:hidden}
.au-mainpic{display:block;width:100%;height:250px;object-fit:cover;cursor:zoom-in}
.au-piccount{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:2px 9px;border-radius:10px}
.au-srcbadge{position:absolute;left:10px;top:10px;background:rgba(230,57,70,.94);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:4px;letter-spacing:.5px}
.au-nopic{height:150px;display:flex;align-items:center;justify-content:center}
.au-thumbs{display:flex;gap:6px;margin-top:8px;overflow-x:auto;padding-bottom:2px}
.au-thumb{width:54px;height:54px;object-fit:cover;border-radius:6px;border:2px solid transparent;cursor:pointer;flex:0 0 auto;opacity:.7}
.au-thumb.on{border-color:#e63946;opacity:1}
.au-pricebar{display:flex;justify-content:space-between;align-items:flex-end;margin-top:12px;padding:10px 12px;background:linear-gradient(135deg,rgba(230,57,70,.09),rgba(230,57,70,.02));border-radius:8px}
.au-price-left{display:flex;align-items:baseline}
.au-price-label{font-size:12px;color:#e63946;margin-right:8px;font-weight:600}
.au-price-cur{font-size:14px;color:#e63946;font-weight:800}
.au-price-num{font-size:27px;color:#e63946;font-weight:800;line-height:1;font-family:'DIN Alternate',Arial,sans-serif}
.au-price-wan{font-size:13px;color:#e63946;font-weight:700;margin-left:2px}
.au-price-right{text-align:right}
.au-assess{font-size:12px;color:var(--tl)}
.au-discount{display:inline-block;margin-top:5px;font-size:11px;font-weight:700;color:#fff;background:#e63946;border-radius:3px;padding:2px 7px}
.au-title{font-size:15px;font-weight:700;color:var(--t);line-height:1.55;margin-top:11px}
.au-tagrow{margin-top:9px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.au-attr{display:flex;justify-content:space-between;align-items:flex-start;padding:9px 0;border-bottom:1px solid rgba(0,0,0,.05)}
.au-attrs .au-attr:last-child{border-bottom:none}
.au-attr-k{font-size:13px;color:var(--tl);flex-shrink:0;width:74px;font-weight:500}
.au-attr-v{font-size:13px;color:var(--t);font-weight:600;text-align:right;max-width:68%;word-break:break-all;line-height:1.5}
.au-na{font-style:normal;font-size:11px;color:#b3b3b3;font-weight:400}
.au-notice{font-size:11px;color:#e63946;line-height:1.7}
/* 方案C引导卡：完整标的信息 → 原平台公告 */
.au-guide{display:flex;align-items:center;gap:10px;margin:0 12px 10px;padding:12px 14px;border-radius:var(--r);background:rgba(26,115,232,.06);border:1px solid rgba(26,115,232,.25)}
.au-guide-icon{font-size:22px;flex-shrink:0}
.au-guide-body{flex:1;min-width:0}
.au-guide-title{font-size:13px;font-weight:700;color:#1a73e8;margin-bottom:2px}
.au-guide-desc{font-size:11px;color:#6b87b3;line-height:1.5}
.au-guide-arrow{font-size:20px;color:#1a73e8;flex-shrink:0}
.au-footbar{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid rgba(0,0,0,.06);z-index:60}
.au-footbar .btn{flex:1;margin:0}
.au-preview{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:200;display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.au-preview img{max-width:100%;max-height:100%;object-fit:contain}

/* ===== 特殊资产列表双列瀑布流（2026-09-21） ===== */
.auw{display:flex;align-items:flex-start;padding:0 12px 8px;gap:10px}
.auw-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.auw-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 6px rgba(0,0,0,.06)}
.auw-media{position:relative;max-height:300px;overflow:hidden;background:#f0f2f5}
.auw-img{width:100%;display:block}
.auw-noimg{height:150px;display:flex;align-items:center;justify-content:center;font-size:40px}
.auw-loc{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:3px 10px;border-radius:12px;max-width:75%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.auw-body{padding:10px 12px 12px}
.auw-title{font-size:14px;color:#222;font-weight:500;line-height:1.4;height:39px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.auw-tags{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 2px}
.auw-tag{font-size:10px;padding:1px 7px;border-radius:4px}
.auw-tag.red{color:#d94838;background:#fdeeee;border:1px solid #f3c5bf}
.auw-tag.org{color:#e08a00;background:#fff6e8;border:1px solid #f5dcae}
.auw-tag.blu{color:#1a73e8;background:#eef4ff;border:1px solid #c8dcfa}
.auw-tag.sl{color:#a33;background:#f7e8e8}
.auw-tag.gry{color:#999;background:#f2f2f2}
.auw-price{display:flex;align-items:baseline;margin-top:4px}
.auw-pl{font-size:11px;color:#999;margin-right:4px}
.auw-pn{font-size:17px;color:#d94838;font-weight:600}
.auw-views{margin-left:auto;font-size:11px;color:#aaa}
.auw-info{font-size:12px;color:#666;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.auw-time{font-size:11px;color:#999;margin-top:3px}

/* row 重排补丁 20260921 */
.auw-row2{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.auw-tag.pur{color:#7a4fd0;background:#f3eeff;border:1px solid #d9c9f5}
.auw-tag.grn{color:#0f9d58;background:#e8f7ee;border:1px solid #bfe6d2}

/* ===== 订单卡片类型边框（2026-09-29）：资金蓝/车辆橙/特殊资产绿，便于区分 ===== */
#olist .card-list { border: 2px solid #1a73e8; }
#carolist .card-list { border: 2px solid #f08c00; }
#aolist .card-list { border: 2px solid #27ae60; }

/* 20260929 zindex fix: 弹窗必须盖过底部 tabbar(z=999)，否则登录弹窗底部按钮被遮挡 */
.modal-overlay{z-index:3000}
.modal-sheet{padding-bottom:env(safe-area-inset-bottom,0px)}

/* 20261003: app.js 全站使用的 btn-pri/btn-full 此前无定义（按钮裸奔：窄、靠左、无底色），补齐 */
.btn-pri{background:var(--p,#1a73e8);color:#fff;text-shadow:none}
.btn-pri:active{filter:brightness(.92)}
.btn-full{width:100%;display:flex}
/* 注册页提交按钮：必填未完成时的置灰态（点击仍可触发提示） */
.reg-btn-off,.reg-btn-off:active{background:#c8c8c8!important;color:#fff!important;text-shadow:none;box-shadow:none;transform:none!important}

/* ===== [SUBORDER-20261012] 延续子订单 ===== */
.card-list.sub-dark { background:#EEF1F7; border-left:4px solid #6D28D9; }
.sub-tag { display:inline-block; font-size:10px; font-weight:700; color:#fff; background:#6D28D9; border-radius:4px; padding:1px 6px; vertical-align:1px; margin-left:6px; }
.sub-banner { margin:8px 0; background:#3B3554; color:#E8E4F5; font-size:12px; border-radius:8px; padding:8px 12px; line-height:1.5; cursor:pointer; }
.sub-create-btn { display:inline-block; margin-left:8px; font-size:11px; font-weight:700; color:#fff; background:linear-gradient(135deg,#6D28D9,#2563EB); border-radius:6px; padding:2px 10px; cursor:pointer; }
.sub-list { margin:6px 0; font-size:12px; color:#4B5563; }
.ausw-house { border:2px solid #e7eaf3; border-radius:10px; padding:8px 10px; margin-bottom:8px; cursor:pointer; }

/* [HOUSENO-20261012] 房源编号徽标 */
.auw-no{display:inline-block;font-size:10px;font-weight:800;color:#fff;background:#6D28D9;border-radius:4px;padding:1px 6px;margin-right:6px;vertical-align:1px}
