.page {
  min-height: 100vh;
  background: var(--bg);
}

.empty-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 32vw 0 0;
  gap: 5.333vw;
}

.empty-text {
  font-size: 3.733vw;
  color: var(--meta);
}

.rec-summary {
  padding: 4.267vw 6.4vw 0.533vw;
  font-size: 3.467vw;
  color: var(--sub);
  letter-spacing: .01em;
}

.rec-summary .b {
  color: var(--ink);
  font-weight: 600;
}

.rec-wrap {
  padding: 3.2vw 5.333vw 6.933vw;
}

.rec {
  background: var(--surface);
  border: 0.133vw solid var(--line);
  border-radius: 4vw;
  padding: 4.533vw;
  margin-bottom: 3.2vw;
}

.rec-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3.2vw;
}

.rec-plan {
  font-size: 4.133vw;
  font-weight: 600;
  color: var(--ink);
}

.rec-amt {
  font-family: 'Newsreader', Georgia, serif;
  font-weight: 600;
  font-size: 5.333vw;
  color: var(--ink);
  letter-spacing: .01em;
  flex: 0 0 auto;
}

/* 状态徽标（共用，同 subhistory） */
.badge {
  font-size: 2.933vw;
  font-weight: 600;
  letter-spacing: .02em;
  padding: 0.8vw 2.4vw;
  border-radius: 1.6vw;
  flex: 0 0 auto;
}

.badge.active   { color: var(--aha);  background: var(--aha-ghost); }
.badge.paid     { color: #4F9D57;     background: rgba(90,179,90,.13); }
.badge.expired  { color: var(--sub);  background: var(--line-soft); }
.badge.refunded { color: #9C9C97;     background: #F1EFEB; }
.badge.pending  { color: #C2841A;     background: #F4ECDB; }
.badge.failed   { color: #B04040;     background: rgba(176,64,64,.1); }
.badge.info     { color: var(--sub);  background: var(--line-soft); }

.rec-row2 {
  display: flex;
  align-items: center;
  gap: 2.933vw;
  margin-top: 3.733vw;
  font-size: 3.333vw;
  color: var(--meta);
}

.rec-pay {
  display: flex;
  align-items: center;
  gap: 1.6vw;
}

.wx-dot {
  width: 3.467vw;
  height: 3.467vw;
  border-radius: 0.8vw;
  background: #5ab35a;
  flex: 0 0 auto;
}

.rec-time {
  margin-left: auto;
  font-family: 'Newsreader', Georgia, serif;
  letter-spacing: .03em;
}
