body {
  background: linear-gradient(135deg, #eef3fe 0%, #f4f7ff 40%, #e8f0fe 100%);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
}
html, body { height:100% }


/* ===================================================
   MAIN CONTENT
   =================================================== */
.main {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 96px var(--sp-6) var(--sp-10);
  position: relative;
  z-index: 1;
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px) }
  to   { opacity: 1; transform: translateY(0) }
}

/* ===================================================
   SPLIT LAYOUT: Left QR + Right Commitments
   =================================================== */
.split-layout {
  display: flex;
  gap: var(--sp-8);
  width: 100%;
  max-width: 860px;
  align-items: flex-start;
}

/* ---- LEFT: QR CODE CARD ---- */
.qr-card {
  flex: 0 0 300px;
  height: 545px;
  background: #fff;
  border-radius: var(--r-xl);
  box-shadow: 0 12px 48px rgba(0, 0, 0, .10), 0 2px 8px rgba(21, 78, 209, .08);
  padding: var(--sp-8) var(--sp-6) var(--sp-6);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  animation: fadeUp .5s var(--ease-out-quart) .1s both;
}

/* 头部：图标+标题+描述（在二维码上方） */
.qr-card__header {
  margin-bottom: var(--sp-6);
}
.qr-card__header-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--blue-50), var(--blue-100));
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--sp-4);
  box-shadow: 0 4px 16px rgba(21, 78, 209, .10);
}
.qr-card__header-title {
  font-size: var(--text-xl);
  font-weight: 800;
  color: var(--gray-900);
  letter-spacing: -0.025em;
  margin-bottom: var(--sp-2);
}
.qr-card__header-title span {
  background: linear-gradient(135deg, var(--blue-600), var(--blue-400));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.qr-card__header-desc {
  font-size: var(--text-sm);
  color: var(--gray-500);
  line-height: 1.6;
}

.qr-card__frame {
  width: 180px;
  height: 180px;
  margin-bottom: var(--sp-4);
  border: 2px dashed var(--gray-200);
  border-radius: var(--r-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--gray-50), #fff);
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
  transition: all var(--dur-norm) var(--ease-out-quart);
}
.qr-card__frame::before {
  content: '';
  position: absolute;
  inset: 6px;
  border-radius: var(--r-md);
  border: 1px dashed var(--gray-200);
  pointer-events: none;
}
.qr-card__frame img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: var(--r-md);
}
.qr-card__frame-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-3);
  color: var(--gray-400);
  position: relative;
  z-index: 1;
}
.qr-card__frame-empty svg {
  opacity: 0.5;
}
.qr-card__frame-empty p {
  font-size: var(--text-sm);
  font-weight: 500;
}

.qr-card__hint {
  font-size: var(--text-xs);
  color: var(--gray-400);
  margin-bottom: var(--sp-5);
}
.qr-card__btn-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: var(--sp-2) var(--sp-5);
  border: 1.5px solid var(--gray-200);
  color: var(--gray-500);
  border-radius: var(--r-full);
  text-decoration: none;
  font-size: var(--text-sm);
  font-weight: 500;
  transition: all .15s var(--ease-out-quart);
  background: #fff;
  margin-top: auto;
}
.qr-card__btn-back:hover {
  border-color: var(--blue-600);
  color: var(--blue-600);
}

/* ---- RIGHT: COMMITMENTS CARD ---- */
.commit-card {
  flex: 1;
  background: #fff;
  border-radius: var(--r-xl);
  box-shadow: 0 12px 48px rgba(0, 0, 0, .10), 0 2px 8px rgba(21, 78, 209, .08);
  padding: var(--sp-8) var(--sp-8);
  display: flex;
  flex-direction: column;
  animation: fadeUp .5s var(--ease-out-quart) .2s both;
}
.commit-card__header {
  margin-bottom: var(--sp-6);
}
.commit-card__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  background: linear-gradient(135deg, var(--blue-50), #eef4ff);
  color: var(--blue-600);
  font-size: var(--text-xs);
  font-weight: 600;
  border-radius: var(--r-full);
  margin-bottom: var(--sp-3);
  letter-spacing: 0.02em;
}
.commit-card__title {
  font-size: var(--text-xl);
  font-weight: 800;
  color: var(--gray-900);
  letter-spacing: -0.02em;
}
.commit-card__title span {
  background: linear-gradient(135deg, var(--blue-600), var(--blue-400));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Commitment items */
.commit-list {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  flex: 1;
}
.commit-item {
  display: flex;
  gap: var(--sp-4);
  padding: var(--sp-4);
  border-radius: var(--r-md);
  background: var(--gray-50);
  transition: all var(--dur-fast);
  align-items: flex-start;
}
.commit-item:hover {
  background: var(--blue-50);
}
.commit-item__icon {
  width: 44px;
  height: 44px;
  border-radius: var(--r-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.commit-item__icon.gold    { background: linear-gradient(135deg, #fef3c7, #fde68a) }
.commit-item__icon.green   { background: linear-gradient(135deg, #d1fae5, #a7f3d0) }
.commit-item__icon.blue    { background: linear-gradient(135deg, #dbeafe, #bfdbfe) }
.commit-item__icon.orange  { background: linear-gradient(135deg, #ffedd5, #fed7aa) }
.commit-item__icon.purple  { background: linear-gradient(135deg, #ede9fe, #ddd6fe) }
.commit-item__body {
  flex: 1;
}
.commit-item__label {
  font-size: var(--text-base);
  font-weight: 700;
  color: var(--gray-900);
  margin-bottom: 2px;
}
.commit-item__desc {
  font-size: var(--text-sm);
  color: var(--gray-500);
  line-height: 1.5;
}

/* Bottom CTA in commitments */
.commit-card__cta {
  margin-top: var(--sp-5);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  padding: var(--sp-3);
  border-radius: var(--r-md);
  background: linear-gradient(135deg, rgba(21, 78, 209, .05), rgba(21, 78, 209, .02));
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--blue-600);
  text-decoration: none;
  transition: all .15s var(--ease-out-quart);
}
.commit-card__cta:hover {
  background: linear-gradient(135deg, rgba(21, 78, 209, .10), rgba(21, 78, 209, .05));
}

/* ===================================================
   RESPONSIVE
   =================================================== */
@media (max-width: 860px) {
  .split-layout {
    flex-direction: column;
    max-width: 440px;
    gap: var(--sp-6);
  }
  .qr-card {
    flex: none;
    max-width: 340px;
  }
  .qr-card__frame {
    width: 180px;
    height: 180px;
  }
}

@media (max-width: 768px) {
  .main {
    padding: 80px var(--sp-4) var(--sp-6);
  }
}

@media (max-width: 520px) {
  .split-layout {
    max-width: 100%;
  }
  .qr-card {
    padding: var(--sp-6) var(--sp-5);
  }
  .qr-card__frame {
    width: 160px;
    height: 160px;
  }
  .commit-card {
    padding: var(--sp-6) var(--sp-5);
  }
}
