.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);
}

.empty-cta {
  background: var(--aha-bright);
  color: #1B1B1A;
  font-size: 3.733vw;
  font-weight: 700;
  padding: 2.667vw 8vw;
  border-radius: 6.4vw;
}

.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);
}

/* 状态徽标 */
.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.expired {
  color: var(--sub);
  background: var(--line-soft);
}

.badge.paid {
  color: #4F9D57;
  background: rgba(90,179,90,.13);
}

.rec-dates {
  display: flex;
  gap: 8vw;
  margin-top: 4.267vw;
}

.rec-date .k {
  font-size: 2.933vw;
  color: var(--meta);
  letter-spacing: .04em;
}

.rec-date .v {
  font-family: 'Newsreader', Georgia, serif;
  font-size: 3.867vw;
  color: var(--ink);
  margin-top: 1.067vw;
  letter-spacing: .04em;
}
