/* The three supplied layouts are scoped by the active single-page view. */

/* purchase */
body[data-page="purchase"] {
      --ink: #18302b;
      --muted: #6e7d78;
      --brand: #176b58;
      --brand-dark: #105345;
      --accent: #d49b45;
      --accent-soft: #fff4df;
      --paper: #fffdf8;
      --page: #f4f1e9;
      --line: #dfe5df;
      --danger: #b94a48;
      --success: #27886d;
      --shadow: 0 20px 55px rgba(29, 54, 47, .08);
      --radius-lg: 24px;
      --radius-md: 16px;
      --radius-sm: 11px;
    }
body[data-page="purchase"] * { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body[data-page="purchase"] {
      margin: 0;
      min-width: 320px;
      color: var(--ink);
      background:
        radial-gradient(circle at 5% 3%, rgba(212, 155, 69, .12), transparent 25rem),
        linear-gradient(180deg, #f9f7f1 0, var(--page) 36rem);
      font-family: "Microsoft YaHei", "PingFang SC", system-ui, -apple-system, sans-serif;
      -webkit-font-smoothing: antialiased;
    }
body[data-page="purchase"] button,
body[data-page="purchase"] input { font: inherit; }
body[data-page="purchase"] button { cursor: pointer; }
body[data-page="purchase"] button:focus-visible,
body[data-page="purchase"] input:focus-visible { outline: 3px solid rgba(23, 107, 88, .18); outline-offset: 2px; }
body[data-page="purchase"] .topbar {
      height: 5px;
      background: linear-gradient(90deg, var(--brand), #47a185 68%, var(--accent));
    }
body[data-page="purchase"] .page { width: min(1360px, calc(100% - 64px)); margin: 0 auto; padding: 54px 0 70px; }
body[data-page="purchase"] .hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 42px; align-items: center; margin-bottom: 26px; }
body[data-page="purchase"] .eyebrow { display: inline-flex; align-items: center; gap: 8px; color: var(--brand); font-size: 13px; font-weight: 800; letter-spacing: .12em; }
body[data-page="purchase"] .eyebrow::before { content: ""; width: 24px; height: 2px; background: var(--accent); }
body[data-page="purchase"] h1 { margin: 12px 0 10px; font-size: clamp(34px, 3.2vw, 48px); line-height: 1.18; letter-spacing: -.025em; font-weight: 800; }
body[data-page="purchase"] .subtitle { margin: 0; color: var(--muted); font-size: 16px; line-height: 1.75; }
body[data-page="purchase"] .hero-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
body[data-page="purchase"] .service-status { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 12px; }
body[data-page="purchase"] .service-status i { width: 8px; height: 8px; border-radius: 50%; background: #44b38e; box-shadow: 0 0 0 4px rgba(68, 179, 142, .12); }
body[data-page="purchase"] .hero-query { display: flex; align-items: center; gap: 18px; min-width: 190px; padding: 13px 16px; color: var(--ink); border: 1px solid rgba(24, 48, 43, .14); border-radius: 13px; background: rgba(255, 253, 248, .85); box-shadow: 0 8px 24px rgba(29, 54, 47, .06); font-weight: 800; transition: border-color .2s, transform .2s; }
body[data-page="purchase"] .hero-query:hover { transform: translateY(-2px); border-color: rgba(23, 107, 88, .45); }
body[data-page="purchase"] .hero-query span { margin-left: auto; color: var(--brand); font-size: 18px; }
body[data-page="purchase"] .notice { display: flex; align-items: center; padding: 15px 20px; margin-bottom: 26px; border: 1px solid #e5d9bd; border-radius: var(--radius-md); background: #fffaf0; font-size: 14px; line-height: 1.7; }
body[data-page="purchase"] .notice strong { flex: 0 0 auto; margin-right: 4px; color: #6f4b16; }
body[data-page="purchase"] .notice p { margin: 0; color: #746c5c; }
body[data-page="purchase"] .workspace { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; }
body[data-page="purchase"] .panel { border: 1px solid rgba(24, 48, 43, .09); border-radius: var(--radius-lg); background: rgba(255, 253, 248, .92); box-shadow: var(--shadow); }
body[data-page="purchase"] .flow { padding: 32px; }
body[data-page="purchase"] .section + .section { margin-top: 38px; padding-top: 34px; border-top: 1px solid var(--line); }
body[data-page="purchase"] .section-head { display: flex; align-items: center; gap: 14px; margin-bottom: 21px; }
body[data-page="purchase"] .step { display: grid; place-items: center; flex: 0 0 34px; height: 34px; border-radius: 11px; color: white; background: var(--brand); font-size: 13px; font-weight: 900; }
body[data-page="purchase"] .section-head h2 { margin: 0; font-size: 20px; line-height: 34px; }
body[data-page="purchase"] .section-head p { margin: 0; color: var(--muted); font-size: 13px; }
body[data-page="purchase"] .section-note { margin: -2px 0 16px 48px; padding: 0 0 0 11px; color: #8a938f; border-left: 2px solid #d8dee0; font-size: 12px; line-height: 1.6; }
body[data-page="purchase"] .tier-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
body[data-page="purchase"] .tier-card { position: relative; display: flex; flex-direction: column; min-height: 248px; padding: 21px 20px 18px; overflow: hidden; color: var(--ink); border: 1px solid var(--line); border-radius: 18px; background: #fff; text-align: left; transition: transform .2s, border-color .2s, box-shadow .2s; }
body[data-page="purchase"] .tier-card:hover:not(:disabled) { transform: translateY(-3px); border-color: rgba(23, 107, 88, .45); box-shadow: 0 12px 28px rgba(24, 48, 43, .09); }
body[data-page="purchase"] .tier-card.is-selected { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand), 0 12px 28px rgba(23, 107, 88, .1); background: linear-gradient(150deg, #fff 30%, #f0faf6); }
body[data-page="purchase"] .tier-card.is-selected::after { content: "✓"; position: absolute; right: 15px; bottom: 15px; display: grid; place-items: center; width: 23px; height: 23px; color: white; border-radius: 50%; background: var(--brand); box-shadow: 0 3px 9px rgba(23, 107, 88, .25); font-size: 12px; line-height: 1; font-weight: 900; }
body[data-page="purchase"] .tier-card:disabled { cursor: not-allowed; opacity: .55; filter: grayscale(.35); }
body[data-page="purchase"] .tier-name { display: block; padding-right: 82px; font-size: 18px; font-weight: 900; }
body[data-page="purchase"] .merge-badge { position: absolute; right: 0; top: 0; min-width: 72px; padding: 7px 11px 8px; border-radius: 0 17px 0 13px; text-align: center; font-size: 11px; font-weight: 900; letter-spacing: .02em; }
body[data-page="purchase"] .merge-badge.days { color: #245c8e; background: #e5f2ff; }
body[data-page="purchase"] .merge-badge.none { color: #68736f; background: #edf0ef; }
body[data-page="purchase"] .merge-badge.same-day { color: #a85b19; background: #fff0dc; }
body[data-page="purchase"] .tier-price { display: flex; align-items: baseline; gap: 3px; margin: 17px 0 13px; color: var(--brand); }
body[data-page="purchase"] .tier-price small { font-size: 14px; font-weight: 800; }
body[data-page="purchase"] .tier-price b { font-size: 34px; line-height: 1; letter-spacing: -.04em; }
body[data-page="purchase"] .tier-remark { display: -webkit-box; min-height: 38px; margin: 0 0 15px; overflow: hidden; color: #75827e; font-size: 12px; line-height: 1.6; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
body[data-page="purchase"] .tier-gift { display: block; margin: -2px 0 13px; color: #8b672c; font-size: 12px; font-weight: 700; }
body[data-page="purchase"] .tier-gift strong { color: #b87518; font-size: 14px; }
body[data-page="purchase"] .tier-meta { display: grid; gap: 8px; padding-top: 13px; color: var(--muted); border-top: 1px dashed #dfe5df; font-size: 13px; }
body[data-page="purchase"] .tier-meta span { display: flex; justify-content: space-between; gap: 10px; }
body[data-page="purchase"] .tier-meta em { color: var(--ink); font-style: normal; font-weight: 700; }
body[data-page="purchase"] .remain { display: inline-flex; align-items: center; width: fit-content; margin-top: 14px; padding: 6px 35px 6px 10px; color: var(--success); border: 1px solid rgba(39, 136, 109, .18); border-radius: 999px; background: rgba(39, 136, 109, .08); font-size: 12px; font-weight: 800; }
body[data-page="purchase"] .remain::before { content: ""; width: 6px; height: 6px; margin-right: 7px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 3px rgba(39, 136, 109, .1); }
body[data-page="purchase"] .remain.sold { color: var(--danger); border-color: rgba(185, 74, 72, .16); background: rgba(185, 74, 72, .07); }
body[data-page="purchase"] .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
body[data-page="purchase"] .field.full { grid-column: 1 / -1; }
body[data-page="purchase"] .required-mark { margin-left: 4px; color: var(--danger); }
body[data-page="purchase"] .restriction-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; grid-column: 1 / -1; padding-top: 3px; }
body[data-page="purchase"] .restriction-grid.is-single .field:not([hidden]) { grid-column: 1 / -1; }
body[data-page="purchase"] .restriction-grid:empty,
body[data-page="purchase"] .restriction-grid[hidden],
body[data-page="purchase"] .field[hidden] { display: none; }
body[data-page="purchase"] .field-top { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 9px; }
body[data-page="purchase"] label { font-size: 14px; font-weight: 800; }
body[data-page="purchase"] .field-hint { color: #89938f; font-size: 12px; }
body[data-page="purchase"] input { width: 100%; height: 48px; padding: 0 14px; color: var(--ink); border: 1px solid #d6ddd8; border-radius: var(--radius-sm); background: white; transition: border .2s, box-shadow .2s; }
body[data-page="purchase"] input::placeholder { color: #aab2af; }
body[data-page="purchase"] input:focus { border-color: var(--brand); box-shadow: 0 0 0 4px rgba(23, 107, 88, .08); outline: 0; }
body[data-page="purchase"] .dynamic-list { display: grid; gap: 10px; }
body[data-page="purchase"] .dynamic-row { display: grid; grid-template-columns: 30px 1fr 38px; gap: 9px; align-items: center; }
body[data-page="purchase"] .dynamic-row.has-gift { grid-template-columns: 30px minmax(0, 1fr) 132px 38px; }
body[data-page="purchase"] .gift-input-wrap { position: relative; display: block; }
body[data-page="purchase"] .gift-input-wrap > span { position: absolute; left: 13px; top: 50%; z-index: 1; color: #9b762f; transform: translateY(-50%); font-weight: 800; }
body[data-page="purchase"] .gift-input-wrap .gift-amount { padding-left: 31px; color: #9b6515; font-weight: 800; }
body[data-page="purchase"] .gift-input-wrap .gift-amount[readonly] { cursor: default; background: #f5f3ec; }
body[data-page="purchase"] .gift-allocation-summary { margin: 12px 0 0 39px; padding: 10px 12px; color: #7b6847; border: 1px solid #e6d7b6; border-radius: 10px; background: #fff8e9; font-size: 12px; font-weight: 800; }
body[data-page="purchase"] .gift-allocation-summary small { display: block; margin-top: 3px; color: #9a8a6d; font-size: 11px; font-weight: 400; }
body[data-page="purchase"] .gift-allocation-summary.is-complete { color: #23725e; border-color: rgba(39, 136, 109, .22); background: #eef9f5; }
body[data-page="purchase"] .gift-allocation-summary.is-over { color: var(--danger); border-color: rgba(185, 74, 72, .22); background: #fff1f0; }
body[data-page="purchase"] .row-no { display: grid; place-items: center; height: 30px; color: var(--muted); border-radius: 9px; background: #edf1ed; font-size: 12px; font-weight: 800; }
body[data-page="purchase"] .icon-btn { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; color: #9a6563; border: 0; border-radius: 10px; background: #f8eeee; font-size: 20px; }
body[data-page="purchase"] .icon-btn[hidden],
body[data-page="purchase"] .add-btn[hidden],
body[data-page="purchase"] .average-btn[hidden] { display: none; }
body[data-page="purchase"] .field-actions { display: flex; align-items: center; gap: 12px; margin: -5px 0; }
body[data-page="purchase"] .field-top .add-btn { margin: -5px 0; padding: 5px 3px; color: var(--brand); border: 0; background: transparent; font-size: 13px; font-weight: 900; }
body[data-page="purchase"] .field-actions .add-btn { margin: 0; }
body[data-page="purchase"] .average-btn { padding: 5px 9px; color: #8a621d; border: 1px solid #ead7ad; border-radius: 8px; background: #fff8e8; font-size: 12px; font-weight: 900; }
body[data-page="purchase"] .average-btn:hover { border-color: #d9b96f; background: #fff1d3; }
body[data-page="purchase"] .pay-methods { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
body[data-page="purchase"] .pay-option { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 13px 16px; color: var(--ink); border: 1px solid var(--line); border-radius: 14px; background: white; font-weight: 800; }
body[data-page="purchase"] .pay-option.is-selected { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); background: #f1faf6; }
body[data-page="purchase"] .pay-logo { display: grid; place-items: center; width: 36px; height: 36px; color: white; border-radius: 11px; font-size: 16px; font-weight: 900; }
body[data-page="purchase"] .pay-logo.wechat { background: #20b85a; }
body[data-page="purchase"] .pay-logo.alipay { background: #1677ff; }
body[data-page="purchase"] .pay-check { margin-left: auto; color: var(--brand); opacity: 0; }
body[data-page="purchase"] .pay-option.is-selected .pay-check { opacity: 1; }
body[data-page="purchase"] .summary { position: sticky; top: 22px; padding: 26px; }
body[data-page="purchase"] .summary-tag { color: var(--brand); font-size: 12px; font-weight: 900; letter-spacing: .14em; }
body[data-page="purchase"] .summary h2 { margin: 7px 0 22px; font-family: Georgia, "Songti SC", serif; font-size: 27px; }
body[data-page="purchase"] .summary-rows { padding: 8px 0 15px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
body[data-page="purchase"] .summary-row { display: flex; justify-content: space-between; gap: 15px; padding: 9px 0; font-size: 13px; }
body[data-page="purchase"] .summary-row span { color: var(--muted); }
body[data-page="purchase"] .summary-row strong { max-width: 60%; text-align: right; }
body[data-page="purchase"] .total { display: flex; align-items: flex-end; justify-content: space-between; margin: 22px 0; }
body[data-page="purchase"] .total span { color: var(--muted); font-size: 13px; }
body[data-page="purchase"] .total strong { color: var(--brand); font-size: 14px; }
body[data-page="purchase"] .total b { margin-left: 3px; font-size: 38px; line-height: 1; letter-spacing: -.05em; }
body[data-page="purchase"] .submit-btn { width: 100%; height: 54px; color: white; border: 0; border-radius: 14px; background: linear-gradient(135deg, var(--brand), #23816c); box-shadow: 0 13px 25px rgba(23, 107, 88, .22); font-size: 16px; font-weight: 900; transition: transform .2s, box-shadow .2s; }
body[data-page="purchase"] .submit-btn:hover { transform: translateY(-2px); box-shadow: 0 16px 29px rgba(23, 107, 88, .28); }
body[data-page="purchase"] .safe-note { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 13px 0 0; color: #89938f; font-size: 11px; }
body[data-page="purchase"] .toast { position: fixed; left: 50%; top: max(24px, env(safe-area-inset-top)); z-index: 20; min-width: 260px; padding: 13px 20px; color: white; border: 1px solid rgba(255,255,255,.18); border-radius: 12px; background: #203c35; box-shadow: 0 14px 34px rgba(14, 40, 33, .28); opacity: 0; transform: translate(-50%, -18px); text-align: center; pointer-events: none; transition: .25s; }
body[data-page="purchase"] .toast.show { opacity: 1; transform: translate(-50%, 0); }
body[data-page="purchase"] dialog { width: min(500px, calc(100% - 32px)); padding: 0; border: 0; border-radius: 22px; background: var(--paper); box-shadow: 0 35px 90px rgba(17, 39, 33, .28); }
body[data-page="purchase"] dialog::backdrop { background: rgba(16, 38, 32, .58); backdrop-filter: blur(4px); }
body[data-page="purchase"] .dialog-body { padding: 27px; }
body[data-page="purchase"] .dialog-head { display: flex; justify-content: space-between; gap: 15px; margin-bottom: 20px; }
body[data-page="purchase"] .dialog-head h2 { margin: 0 0 5px; font-size: 23px; }
body[data-page="purchase"] .dialog-head p { margin: 0; color: var(--muted); font-size: 13px; }
body[data-page="purchase"] .dialog-close { width: 36px; height: 36px; padding: 0; border: 0; border-radius: 10px; background: #edf1ed; font-size: 20px; }
body[data-page="purchase"] .dialog-fields { display: grid; gap: 15px; }
body[data-page="purchase"] .query-error { padding: 10px 12px; color: var(--danger); border: 1px solid rgba(185, 74, 72, .2); border-radius: 10px; background: #fff1f0; font-size: 12px; line-height: 1.6; }
body[data-page="purchase"] .query-error[hidden] { display: none; }
body[data-page="purchase"] #gift-confirm-dialog { width: min(440px, calc(100% - 32px)); }
body[data-page="purchase"] .gift-confirm-body { padding: 30px; text-align: center; }
body[data-page="purchase"] .gift-confirm-icon { display: grid; place-items: center; width: 52px; height: 52px; margin: 0 auto 14px; color: #9c6a12; border-radius: 17px; background: #fff2d9; font-size: 25px; font-weight: 900; }
body[data-page="purchase"] .gift-confirm-body h2 { margin: 0 0 8px; color: #243c35; font-size: 21px; }
body[data-page="purchase"] .gift-confirm-body > p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
body[data-page="purchase"] .gift-confirm-amounts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 20px 0; padding: 13px 8px; border: 1px solid #f0dfbc; border-radius: 14px; background: #fffbf3; }
body[data-page="purchase"] .gift-confirm-amounts div { display: grid; gap: 5px; }
body[data-page="purchase"] .gift-confirm-amounts span { color: #8d816c; font-size: 11px; }
body[data-page="purchase"] .gift-confirm-amounts strong { color: #73581f; font-size: 16px; }
body[data-page="purchase"] .gift-confirm-amounts .is-remaining strong { color: #bd6c36; }
body[data-page="purchase"] .gift-confirm-actions { display: grid; grid-template-columns: 1fr 1.25fr; gap: 10px; }
body[data-page="purchase"] .gift-confirm-actions button { height: 45px; border-radius: 12px; font-weight: 800; }
body[data-page="purchase"] .gift-confirm-back { color: #51645e; border: 1px solid #d8e1dc; background: #fff; }
body[data-page="purchase"] .gift-confirm-continue { color: #fff; border: 0; background: #176b58; box-shadow: 0 9px 18px rgba(23, 107, 88, .22); }
@media (max-width: 1080px) {
body[data-page="purchase"] .page { width: min(100% - 36px, 920px); }
body[data-page="purchase"] .workspace { grid-template-columns: 1fr; }
body[data-page="purchase"] .summary { position: static; }
body[data-page="purchase"] .summary-rows { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
body[data-page="purchase"] .summary-row { display: block; }
body[data-page="purchase"] .summary-row strong { display: block; max-width: none; margin-top: 4px; text-align: left; }
}
@media (max-width: 720px) {
body[data-page="purchase"] .page { width: 100%; padding: 30px 14px 42px; }
body[data-page="purchase"] .hero { display: block; margin: 0 7px 22px; }
body[data-page="purchase"] .hero-actions { align-items: stretch; margin-top: 20px; }
body[data-page="purchase"] .service-status { display: none; }
body[data-page="purchase"] .hero-query { width: 100%; min-width: 0; }
body[data-page="purchase"] h1 { font-size: 34px; }
body[data-page="purchase"] .subtitle { font-size: 14px; line-height: 1.7; }
body[data-page="purchase"] .notice { align-items: flex-start; padding: 13px 15px; font-size: 13px; }
body[data-page="purchase"] .flow,
body[data-page="purchase"] .summary { padding: 20px 16px; border-radius: 19px; }
body[data-page="purchase"] .section + .section { margin-top: 29px; padding-top: 27px; }
body[data-page="purchase"] .section-note { margin: -4px 0 17px; }
body[data-page="purchase"] .tier-grid { display: flex; gap: 12px; margin: 0 -16px; padding: 1px 16px 13px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
body[data-page="purchase"] .tier-grid::-webkit-scrollbar { display: none; }
body[data-page="purchase"] .tier-card { flex: 0 0 100%; min-height: 0; padding: 19px 18px 17px; scroll-snap-align: start; }
body[data-page="purchase"] .tier-name { padding-right: 76px; }
body[data-page="purchase"] .tier-gift { line-height: 1.55; }
body[data-page="purchase"] .form-grid { grid-template-columns: 1fr; gap: 18px; }
body[data-page="purchase"] .field.full { grid-column: auto; }
body[data-page="purchase"] .restriction-grid { grid-template-columns: 1fr; grid-column: auto; gap: 18px; }
body[data-page="purchase"] .restriction-grid.is-single .field:not([hidden]) { grid-column: auto; }
body[data-page="purchase"] .pay-methods { grid-template-columns: 1fr; }
body[data-page="purchase"] .summary-rows { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
body[data-page="purchase"] .tier-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 0; padding: 1px 0 13px; overflow: visible; scroll-snap-type: none; }
body[data-page="purchase"] .tier-card { min-width: 0; width: 100%; }
}
@media (max-width: 440px) {
body[data-page="purchase"] .tier-card { padding: 18px 16px 16px; }
body[data-page="purchase"] .tier-name { padding-right: 72px; font-size: 17px; line-height: 1.45; }
body[data-page="purchase"] .merge-badge { min-width: 68px; padding-right: 9px; padding-left: 9px; }
body[data-page="purchase"] .summary-rows { grid-template-columns: 1fr; }
body[data-page="purchase"] .dynamic-row.has-gift { grid-template-columns: 30px minmax(0, 1fr) 38px; }
body[data-page="purchase"] .dynamic-row.has-gift .gift-input-wrap { grid-column: 2; }
body[data-page="purchase"] .dynamic-row.has-gift .icon-btn { grid-column: 3; grid-row: 1; }
body[data-page="purchase"] .gift-allocation-summary { margin-left: 39px; }
}

/* payment */
body[data-page="payment"] {
      --ink: #18302b;
      --muted: #6e7d78;
      --brand: #176b58;
      --brand-dark: #105345;
      --accent: #d49b45;
      --paper: #fffdf8;
      --page: #f4f1e9;
      --line: #dfe5df;
      --danger: #b94a48;
      --shadow: 0 20px 55px rgba(29, 54, 47, .09);
      --radius-lg: 24px;
    }
body[data-page="payment"] * { box-sizing: border-box; }
body[data-page="payment"] {
      margin: 0;
      min-width: 320px;
      min-height: 100vh;
      color: var(--ink);
      background:
        radial-gradient(circle at 6% 4%, rgba(212, 155, 69, .13), transparent 26rem),
        linear-gradient(180deg, #faf8f2 0, var(--page) 38rem);
      font-family: "Microsoft YaHei", "PingFang SC", system-ui, -apple-system, sans-serif;
      -webkit-font-smoothing: antialiased;
    }
body[data-page="payment"] button { font: inherit; cursor: pointer; }
body[data-page="payment"] button:focus-visible,
body[data-page="payment"] a:focus-visible { outline: 3px solid rgba(23, 107, 88, .18); outline-offset: 3px; }
body[data-page="payment"] .topbar { height: 5px; background: linear-gradient(90deg, var(--brand), #47a185 68%, var(--accent)); }
body[data-page="payment"] .page { width: min(1080px, calc(100% - 48px)); margin: 0 auto; padding: 42px 0 64px; }
body[data-page="payment"] .page-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
body[data-page="payment"] .brand { color: var(--brand); font-size: 14px; font-weight: 900; letter-spacing: .1em; }
body[data-page="payment"] .back-link { color: var(--muted); font-size: 13px; text-decoration: none; }
body[data-page="payment"] .back-link:hover { color: var(--brand); }
body[data-page="payment"] .layout { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr); gap: 22px; align-items: stretch; }
body[data-page="payment"] .panel { border: 1px solid rgba(24, 48, 43, .09); border-radius: var(--radius-lg); background: rgba(255, 253, 248, .94); box-shadow: var(--shadow); }
body[data-page="payment"] .payment-panel { position: relative; display: flex; flex-direction: column; align-items: center; min-height: 650px; padding: 42px 36px 34px; overflow: hidden; text-align: center; }
body[data-page="payment"] .payment-panel::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--brand), #4da98d); }
body[data-page="payment"] .status-icon { position: relative; display: grid; place-items: center; width: 58px; height: 58px; margin-bottom: 15px; color: white; border-radius: 18px; background: linear-gradient(145deg, var(--brand), #30917a); box-shadow: 0 12px 24px rgba(23, 107, 88, .2); }
body[data-page="payment"] .status-icon svg { width: 27px; height: 27px; }
body[data-page="payment"] .status-icon::after { content: ""; position: absolute; right: -3px; top: -3px; width: 11px; height: 11px; border: 3px solid var(--paper); border-radius: 50%; background: var(--accent); }
body[data-page="payment"] h1 { margin: 0 0 7px; font-size: 27px; line-height: 1.3; }
body[data-page="payment"] .status-copy { margin: 0; color: var(--muted); font-size: 14px; }
body[data-page="payment"] .amount { display: flex; align-items: baseline; justify-content: center; margin: 22px 0 18px; color: var(--brand); }
body[data-page="payment"] .amount span { margin-right: 8px; color: var(--muted); font-size: 13px; }
body[data-page="payment"] .amount small { font-size: 17px; font-weight: 900; }
body[data-page="payment"] .amount strong { font-size: 40px; line-height: 1; letter-spacing: -.05em; }
body[data-page="payment"] .qr-shell { position: relative; display: grid; place-items: center; width: 256px; height: 256px; padding: 13px; border: 1px solid #e4e8e4; border-radius: 20px; background: white; box-shadow: 0 14px 34px rgba(29, 54, 47, .1); }
body[data-page="payment"] #qrcode,
body[data-page="payment"] #qrcode img,
body[data-page="payment"] #qrcode canvas { width: 228px !important; height: 228px !important; }
body[data-page="payment"] #qrcode img,
body[data-page="payment"] #qrcode canvas { display: block; }
body[data-page="payment"] .qr-fallback { display: grid; place-items: center; width: 228px; height: 228px; color: var(--muted); background: repeating-conic-gradient(#17332d 0 25%, #fff 0 50%) 0/18px 18px; }
body[data-page="payment"] .qr-fallback span { padding: 9px 12px; border-radius: 8px; background: white; font-size: 12px; }
body[data-page="payment"] .scan-tip { margin: 19px 0 7px; color: var(--ink); font-size: 14px; font-weight: 800; }
body[data-page="payment"] .refresh-tip { margin: 0; color: var(--muted); font-size: 12px; }
body[data-page="payment"] .countdown { display: inline-flex; align-items: center; gap: 7px; margin-top: 17px; padding: 8px 13px; color: #7d6740; border-radius: 999px; background: #fff4df; font-size: 12px; }
body[data-page="payment"] .countdown strong { color: #a96913; font-variant-numeric: tabular-nums; }
body[data-page="payment"] .order-panel { display: flex; flex-direction: column; padding: 31px; }
body[data-page="payment"] .order-tag { color: var(--brand); font-size: 12px; font-weight: 900; letter-spacing: .13em; }
body[data-page="payment"] .order-panel h2 { margin: 7px 0 8px; font-size: 25px; }
body[data-page="payment"] .order-description { margin: 0 0 23px; color: var(--muted); font-size: 13px; line-height: 1.7; }
body[data-page="payment"] .detail-list { border-top: 1px solid var(--line); }
body[data-page="payment"] .detail-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; padding: 14px 0; border-bottom: 1px dashed #dfe5df; font-size: 13px; }
body[data-page="payment"] .detail-row span { flex: 0 0 auto; color: var(--muted); }
body[data-page="payment"] .detail-row strong { min-width: 0; overflow-wrap: anywhere; text-align: right; }
body[data-page="payment"] .account-gift-amount { color: #b87518; font-weight: 900; }
body[data-page="payment"] .detail-row.total-row { align-items: baseline; border-bottom-style: solid; }
body[data-page="payment"] .detail-row.total-row strong { color: var(--brand); font-size: 20px; }
body[data-page="payment"] .notice { margin: 20px 0; padding: 13px 14px; color: #746c5c; border: 1px solid #e5d9bd; border-radius: 12px; background: #fffaf0; font-size: 12px; line-height: 1.7; }
body[data-page="payment"] .actions { margin-top: auto; }
body[data-page="payment"] .cancel-btn { width: 100%; height: 48px; color: #805755; border: 1px solid #e0c9c7; border-radius: 13px; background: #fff9f8; font-weight: 800; transition: border-color .2s, background .2s; }
body[data-page="payment"] .cancel-btn:hover { border-color: #c89692; background: #fff3f1; }
body[data-page="payment"] .cancel-note { margin: 10px 0 0; color: #929b98; font-size: 11px; text-align: center; }
body[data-page="payment"] dialog { width: min(430px, calc(100% - 32px)); padding: 0; border: 0; border-radius: 20px; background: var(--paper); box-shadow: 0 35px 90px rgba(17, 39, 33, .28); }
body[data-page="payment"] dialog::backdrop { background: rgba(16, 38, 32, .55); backdrop-filter: blur(3px); }
body[data-page="payment"] .dialog-body { padding: 27px; text-align: center; }
body[data-page="payment"] .dialog-icon { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 13px; color: var(--danger); border-radius: 15px; background: #faeceb; font-size: 23px; font-weight: 900; }
body[data-page="payment"] .dialog-body h3 { margin: 0 0 8px; font-size: 21px; }
body[data-page="payment"] .dialog-body p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
body[data-page="payment"] .dialog-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 22px; }
body[data-page="payment"] .dialog-actions button { height: 43px; border-radius: 11px; font-weight: 800; }
body[data-page="payment"] .keep-btn { color: var(--ink); border: 1px solid var(--line); background: white; }
body[data-page="payment"] .confirm-btn { color: white; border: 0; background: var(--danger); }
body[data-page="payment"] .closed-state .status-icon { background: #8c9692; box-shadow: none; }
body[data-page="payment"] .closed-state .status-icon::after,
body[data-page="payment"] .closed-state .qr-shell,
body[data-page="payment"] .closed-state .scan-tip,
body[data-page="payment"] .closed-state .refresh-tip,
body[data-page="payment"] .closed-state .countdown { display: none; }
body[data-page="payment"] .closed-state .amount { margin-top: 30px; }
body[data-page="payment"] .expired-state .status-icon { background: #8c9692; box-shadow: none; }
body[data-page="payment"] .expired-state .status-icon::after { display: none; }
body[data-page="payment"] .expired-state .qr-shell { overflow: hidden; border-color: #d6dbd8; background: #f1f3f1; box-shadow: none; }
body[data-page="payment"] .expired-state .qr-shell::after { content: "二维码已失效"; position: absolute; inset: 50% auto auto 50%; z-index: 2; min-width: 116px; padding: 10px 14px; color: white; border-radius: 10px; background: rgba(46, 59, 55, .88); box-shadow: 0 7px 20px rgba(20, 37, 32, .18); transform: translate(-50%, -50%); font-size: 14px; font-weight: 900; }
body[data-page="payment"] .expired-state #qrcode { filter: grayscale(1) blur(5px); opacity: .32; transform: scale(.97); pointer-events: none; user-select: none; }
body[data-page="payment"] .expired-state .scan-tip { color: #727d79; }
body[data-page="payment"] .expired-state .countdown { color: #7f8885; background: #ecefed; }
body[data-page="payment"] .expired-state .countdown strong { color: #68736f; }
@media (max-width: 820px) {
body[data-page="payment"] .page { width: min(100% - 28px, 620px); padding: 26px 0 42px; }
body[data-page="payment"] .layout { grid-template-columns: 1fr; }
body[data-page="payment"] .payment-panel { min-height: 0; padding: 34px 20px 29px; }
body[data-page="payment"] .order-panel { padding: 24px 20px; }
}
@media (max-width: 380px) {
body[data-page="payment"] .qr-shell { width: 238px; height: 238px; }
body[data-page="payment"] #qrcode,
body[data-page="payment"] #qrcode img,
body[data-page="payment"] #qrcode canvas,
body[data-page="payment"] .qr-fallback { width: 210px !important; height: 210px !important; }
body[data-page="payment"] .detail-row { gap: 14px; }
}

/* success */
body[data-page="success"] {
      --ink: #18302b;
      --muted: #6e7d78;
      --brand: #176b58;
      --accent: #d49b45;
      --paper: #fffdf8;
      --page: #f4f1e9;
      --line: #dfe5df;
      --blue: #347fa1;
      --shadow: 0 20px 55px rgba(29, 54, 47, .09);
      --radius-lg: 24px;
    }
body[data-page="success"] * { box-sizing: border-box; }
body[data-page="success"] {
      margin: 0;
      min-width: 320px;
      min-height: 100vh;
      color: var(--ink);
      background:
        radial-gradient(circle at 5% 3%, rgba(212, 155, 69, .13), transparent 26rem),
        linear-gradient(180deg, #faf8f2 0, var(--page) 38rem);
      font-family: "Microsoft YaHei", "PingFang SC", system-ui, -apple-system, sans-serif;
      -webkit-font-smoothing: antialiased;
    }
body[data-page="success"] button { font: inherit; cursor: pointer; }
body[data-page="success"] button:focus-visible { outline: 3px solid rgba(23, 107, 88, .18); outline-offset: 3px; }
body[data-page="success"] .topbar { height: 5px; background: linear-gradient(90deg, var(--brand), #47a185 68%, var(--accent)); }
body[data-page="success"] .page { width: min(1080px, calc(100% - 48px)); margin: 0 auto; padding: 42px 0 64px; }
body[data-page="success"] .brand { margin-bottom: 22px; color: var(--brand); font-size: 14px; font-weight: 900; letter-spacing: .1em; }
body[data-page="success"] .panel { border: 1px solid rgba(24, 48, 43, .09); border-radius: var(--radius-lg); background: rgba(255, 253, 248, .94); box-shadow: var(--shadow); }
body[data-page="success"] .status-panel { position: relative; padding: 37px 34px 32px; overflow: hidden; text-align: center; }
body[data-page="success"] .status-panel::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--brand), #4da98d); }
body[data-page="success"] .status-icon { position: relative; display: grid; place-items: center; width: 62px; height: 62px; margin: 0 auto 16px; color: white; border-radius: 19px; background: linear-gradient(145deg, var(--brand), #33957c); box-shadow: 0 12px 25px rgba(23, 107, 88, .2); }
body[data-page="success"] .status-icon svg { width: 30px; height: 30px; }
body[data-page="success"] .status-icon::after { content: "✓"; position: absolute; right: -5px; bottom: -4px; display: grid; place-items: center; width: 22px; height: 22px; color: white; border: 3px solid var(--paper); border-radius: 50%; background: var(--accent); font-size: 11px; font-weight: 900; }
body[data-page="success"] h1 { margin: 0 0 8px; font-size: 28px; line-height: 1.3; }
body[data-page="success"] .status-copy { margin: 0; color: var(--muted); font-size: 14px; }
body[data-page="success"] .status-flow { display: grid; grid-template-columns: repeat(3, 1fr); width: min(700px, 100%); margin: 29px auto 0; }
body[data-page="success"] .flow-step { position: relative; padding-top: 20px; color: #98a19e; font-size: 12px; }
body[data-page="success"] .flow-step::before { content: ""; position: absolute; left: calc(50% - 6px); top: 0; z-index: 2; width: 12px; height: 12px; border: 3px solid var(--paper); border-radius: 50%; background: #cdd3d0; box-shadow: 0 0 0 1px #cdd3d0; }
body[data-page="success"] .flow-step::after { content: ""; position: absolute; right: 50%; top: 6px; width: 100%; height: 2px; background: #dce1de; }
body[data-page="success"] .flow-step:first-child::after { display: none; }
body[data-page="success"] .flow-step.done,
body[data-page="success"] .flow-step.current { color: var(--brand); font-weight: 900; }
body[data-page="success"] .flow-step.done::before,
body[data-page="success"] .flow-step.current::before { background: var(--brand); box-shadow: 0 0 0 1px var(--brand); }
body[data-page="success"] .flow-step.current::before { box-shadow: 0 0 0 5px rgba(23, 107, 88, .12); }
body[data-page="success"] .processing .status-icon { background: linear-gradient(145deg, #b57a24, var(--accent)); box-shadow: 0 12px 25px rgba(181, 122, 36, .2); }
body[data-page="success"] .processing .status-icon::after { content: ""; display: none; }
body[data-page="success"] .processing .status-icon svg { animation: turn 2.2s linear infinite; }
body[data-page="success"] .failed .status-icon,
body[data-page="success"] .closed .status-icon { background: linear-gradient(145deg, #8f4b42, #b86658); box-shadow: 0 12px 25px rgba(143, 75, 66, .2); }
body[data-page="success"] .failed .status-icon::after,
body[data-page="success"] .closed .status-icon::after { display: none; }
body[data-page="success"] .failed::before,
body[data-page="success"] .closed::before { background: linear-gradient(90deg, #8f4b42, #c98270); }
@keyframes turn { to { transform: rotate(360deg); } }
body[data-page="success"] .content { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(330px, .88fr); gap: 22px; margin-top: 22px; align-items: start; }
body[data-page="success"] .order-panel,
body[data-page="success"] .credential-panel { padding: 29px; }
body[data-page="success"] .panel-tag { color: var(--brand); font-size: 12px; font-weight: 900; letter-spacing: .13em; }
body[data-page="success"] h2 { margin: 7px 0 20px; font-size: 23px; }
body[data-page="success"] .detail-list { border-top: 1px solid var(--line); }
body[data-page="success"] .detail-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 13px 0; border-bottom: 1px dashed #dfe5df; font-size: 13px; }
body[data-page="success"] .detail-row span { flex: 0 0 auto; color: var(--muted); }
body[data-page="success"] .detail-row strong { min-width: 0; max-width: 68%; overflow-wrap: anywhere; text-align: right; }
body[data-page="success"] .account-gift-amount { color: #b87518; font-weight: 900; }
body[data-page="success"] .detail-row:last-child { border-bottom-style: solid; }
body[data-page="success"] .credential-panel { position: sticky; top: 24px; border-color: rgba(23, 107, 88, .23); background: linear-gradient(145deg, #f6fcf9, #fffdf8 72%); }
body[data-page="success"] .credential-panel h2 { margin-bottom: 8px; }
body[data-page="success"] .credential-intro { margin: 0 0 21px; color: var(--muted); font-size: 13px; line-height: 1.75; }
body[data-page="success"] .credential-box { padding: 15px; border: 1px solid rgba(23, 107, 88, .15); border-radius: 14px; background: white; }
body[data-page="success"] .credential-row { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; }
body[data-page="success"] .credential-row + .credential-row { margin-top: 13px; padding-top: 13px; border-top: 1px dashed var(--line); }
body[data-page="success"] .credential-label { display: block; margin-bottom: 4px; color: var(--muted); font-size: 11px; }
body[data-page="success"] .credential-value { display: block; color: var(--ink); overflow-wrap: anywhere; font-size: 16px; font-weight: 900; }
body[data-page="success"] .copy-btn { min-width: 58px; height: 35px; padding: 0 11px; color: var(--brand); border: 1px solid rgba(23, 107, 88, .27); border-radius: 9px; background: #f1faf6; font-size: 12px; font-weight: 900; }
body[data-page="success"] .copy-all { width: 100%; height: 47px; margin-top: 15px; color: white; border: 0; border-radius: 12px; background: linear-gradient(135deg, var(--brand), #27836d); font-weight: 900; box-shadow: 0 10px 20px rgba(23, 107, 88, .15); }
body[data-page="success"] .save-tip { display: flex; gap: 10px; margin-top: 17px; padding: 13px; color: #7b6847; border: 1px solid #e6d7b6; border-radius: 12px; background: #fff8e9; font-size: 12px; line-height: 1.7; }
body[data-page="success"] .save-tip b { flex: 0 0 auto; color: #a56d18; }
body[data-page="success"] .bottom-action { width: 100%; height: 49px; margin-top: 22px; color: var(--ink); border: 1px solid #ced7d2; border-radius: 13px; background: rgba(255, 253, 248, .82); font-weight: 900; }
body[data-page="success"] .bottom-action:hover { border-color: var(--brand); color: var(--brand); }
body[data-page="success"] .toast { position: fixed; left: 50%; top: max(24px, env(safe-area-inset-top)); z-index: 20; min-width: 240px; padding: 12px 18px; color: white; border-radius: 11px; background: #203c35; box-shadow: 0 14px 34px rgba(14, 40, 33, .28); opacity: 0; transform: translate(-50%, -16px); text-align: center; pointer-events: none; transition: .25s; }
body[data-page="success"] .toast.show { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 820px) {
body[data-page="success"] .page { width: min(100% - 28px, 620px); padding: 26px 0 42px; }
body[data-page="success"] .content { grid-template-columns: 1fr; }
body[data-page="success"] .credential-panel { position: static; grid-row: 1; }
body[data-page="success"] .status-panel { padding: 32px 19px 27px; }
body[data-page="success"] .order-panel,
body[data-page="success"] .credential-panel { padding: 23px 19px; }
}
@media (max-width: 420px) {
body[data-page="success"] h1 { font-size: 24px; }
body[data-page="success"] .detail-row { gap: 13px; }
body[data-page="success"] .detail-row strong { max-width: 65%; }
body[data-page="success"] .credential-value { font-size: 14px; }
}
