.invite-page { max-width: 1080px; margin: 0 auto; padding: 38px 24px 64px; color: var(--text-primary); }
.invite-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 30px; }
.invite-eyebrow { font-size: 11px; letter-spacing: .22em; color: var(--accent-primary); font-weight: 700; }
.invite-header h1 { font-size: clamp(25px, 3vw, 36px); font-weight: 700; margin: 8px 0 0; letter-spacing: -.03em; }
.invite-benefits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--border-color); border-radius: 16px; overflow: hidden; background: var(--bg-secondary); }
.invite-benefit { padding: 25px 28px; position: relative; display: flex; flex-direction: column; gap: 8px; }
.invite-benefit + .invite-benefit { border-left: 1px solid var(--border-color); }
.invite-step { font-size: 11px; color: var(--text-muted); margin-bottom: 10px; font-variant-numeric: tabular-nums; }
.invite-benefit > span:not(.invite-step) { font-size: 14px; color: var(--text-secondary); }
.invite-benefit > strong { font-size: clamp(26px, 3vw, 36px); letter-spacing: -.04em; font-weight: 650; }
.invite-benefit > small { font-size: 12px; color: var(--text-secondary); }
.invite-benefit-reward { background: color-mix(in srgb, var(--accent-primary) 6%, var(--bg-secondary)); }
.invite-benefit-reward > strong { color: var(--accent-primary); }
.invite-share-section { display: grid; grid-template-columns: 1.25fr 1fr; gap: 24px; align-items: center; margin: 24px 0 32px; }
.invite-share { border: 1px solid var(--border-color); border-radius: 14px; padding: 24px; display: flex; gap: 16px; align-items: center; justify-content: space-between; }
.invite-share-content { min-width: 0; }
.invite-share label { font-size: 12px; color: var(--text-secondary); }
.invite-code-row { display: flex; align-items: center; gap: 8px; margin: 8px 0 16px; }
.invite-code-row input { border: none; background: none; color: var(--text-primary); font-family: ui-monospace, monospace; font-size: 23px; letter-spacing: .05em; width: 11ch; min-width: 0; padding: 0; }
.invite-icon-button { background: none; border: none; padding: 8px; color: var(--text-secondary); border-radius: 6px; }
.invite-icon-button:hover { color: var(--accent-primary); background: var(--bg-elevated); }
.invite-share-actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.invite-share-actions > a { font-size: 12px; color: var(--text-secondary); }
.invite-qr { width: 112px; height: 112px; border-radius: 6px; background: white; flex-shrink: 0; }
.invite-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; text-align: center; }
.invite-stats > div { display: grid; gap: 8px; }
.invite-stats strong { font-size: 30px; font-weight: 600; font-variant-numeric: tabular-nums; }
.invite-stats strong small { font-size: 16px; color: var(--text-secondary); }
.invite-stats span { font-size: 12px; color: var(--text-secondary); }
.invite-records { border-top: 1px solid var(--border-color); padding-top: 24px; }
.invite-section-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.invite-page h2 { font-size: 17px; font-weight: 650; margin: 0; }
.invite-section-heading > span { font-size: 12px; color: var(--text-secondary); }
.invite-table-scroll { overflow-x: auto; }
.invite-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.invite-table th { font-size: 12px; color: var(--text-secondary); font-weight: 500; background: var(--bg-secondary); }
.invite-table th, .invite-table td { padding: 14px 16px; border-bottom: 1px solid var(--border-color); text-align: left; white-space: nowrap; }
.invite-table small { display: block; font-size: 11px; color: var(--text-secondary); margin-top: 4px; }
.invite-status { font-size: 12px; color: var(--accent-primary); }
.invite-status.is-granted { color: var(--text-primary); }
.invite-muted { color: var(--text-secondary); }
.invite-empty { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 38px 0; color: var(--text-secondary); font-size: 13px; }
.invite-rules { margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--border-color); scroll-margin-top: 90px; }
.invite-rules ol { padding-left: 20px; margin: 16px 0 0; color: var(--text-secondary); font-size: 12px; line-height: 1.9; }
.invite-rules li + li { margin-top: 8px; }
.invite-join { padding: 36px 0 0; text-align: center; }
.invite-join h2 { margin-bottom: 18px; }
.invite-pagination { display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: 18px; font-size: 13px; }
.invite-notice { padding: 12px 16px; margin-bottom: 16px; font-size: 13px; border: 1px solid var(--border-color); border-radius: 10px; }
.invite-page :is(button, a, input):focus-visible { outline: 2px solid var(--accent-primary); outline-offset: 4px; }
@media (max-width: 900px) {
    .invite-share-section { grid-template-columns: 1fr; }
    .invite-stats { padding: 8px 0; }
}
@media (max-width: 575px) {
    .invite-page { padding: 24px 16px 40px; }
    .invite-header { align-items: flex-start; flex-direction: column; gap: 16px; margin-bottom: 20px; }
    .invite-benefit { padding: 18px 12px; gap: 6px; }
    .invite-benefit > span:not(.invite-step) { font-size: 11px; }
    .invite-benefit > strong { font-size: 22px; }
    .invite-benefit-reward > strong { font-size: clamp(15px, 4.6vw, 18px); white-space: nowrap; }
    .invite-benefit > small { font-size: 10px; }
    .invite-share { padding: 18px 16px; gap: 10px; }
    .invite-qr { width: 88px; height: 88px; }
    .invite-code-row input { font-size: 18px; }
    .invite-share-actions { gap: 10px; }
    .invite-share-actions .btn { font-size: 12px; }
}

/* 活动首屏仅展示通栏图片，说明统一放在规则区。 */
.invite-page.invite-campaign { --campaign-accent: #c4542b; max-width: none; width: 100%; padding: 0; }
.campaign-hero { position: relative; width: 100%; aspect-ratio: 3 / 1; min-height: 210px; overflow: hidden; background: var(--bg-primary); }
/* 图片末端融入当前主题底色，避免与下方内容形成生硬的矩形分界。 */
.campaign-hero > img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 80%, transparent 100%); mask-image: linear-gradient(to bottom, #000 0%, #000 80%, transparent 100%); }
.campaign-content { max-width: 1080px; padding: 24px 24px 48px; margin: 0 auto; }
.campaign-back { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 22px; color: var(--text-secondary); font-size: 12px; text-decoration: none; }
.campaign-back:hover { color: var(--text-primary); }
.campaign-tickets { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 22px; }
.campaign-ticket { display: flex; align-items: center; justify-content: center; gap: 21px; min-width: 0; min-height: 104px; padding: 18px 16px; border: 1px solid var(--border-color); border-radius: 12px; background: var(--bg-secondary); }
.campaign-ticket > i { font-size: 25px; color: #b98e63; }
.campaign-amount { display: flex; align-items: baseline; gap: 5px; color: var(--text-primary); font-weight: 500; }
.campaign-amount > span { font: 48px/1.1 'Times New Roman', serif; font-variant-numeric: lining-nums tabular-nums; letter-spacing: -.04em; }
.campaign-amount > small { font-size: 14px; font-weight: 500; }
.campaign-bonus-value { display: block; color: var(--text-primary); font-size: 26px; font-weight: 550; line-height: 1.3; }
.campaign-bonus-value small { font-size: 13px; font-weight: 400; }
.campaign-token { display: block; margin-top: 4px; font-size: 11px; color: var(--text-secondary); }
.campaign-sharing { display: flex; align-items: center; gap: 26px; padding: 18px 22px; border: 1px solid var(--border-color); border-radius: 12px; background: var(--bg-secondary); }
.campaign-pass-qr { display: block; width: 92px; height: 92px; padding: 3px; border-radius: 5px; background: #fff; flex-shrink: 0; }
.campaign-pass-code { display: flex; align-items: center; gap: 10px; min-width: 0; }
.campaign-pass-code > input { width: 11ch; min-width: 0; padding: 0; border: 0; color: var(--text-primary); background: transparent; font: 20px ui-monospace, monospace; letter-spacing: .04em; }
.campaign-pass-code > button { border: 0; background: transparent; color: var(--text-secondary); padding: 8px 4px; cursor: pointer; }
.campaign-share-actions { display: flex; align-items: center; gap: 20px; margin-left: auto; }
.campaign-button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; border: 0; border-radius: 8px; padding: 12px 22px; min-height: 44px; color: #fff; background: var(--campaign-accent); font-size: 13px; font-weight: 550; cursor: pointer; }
.campaign-button:hover { color: #fff; background: #aa4320; }
.campaign-wallet { color: var(--text-secondary); font-size: 20px; padding: 8px; }
.campaign-wallet:hover { color: var(--text-primary); }
.campaign-join { display: flex; align-items: center; justify-content: center; gap: 20px; margin: 26px 0; }
.campaign-login { border: 0; padding: 10px; background: transparent; font-size: 13px; color: var(--text-secondary); }
.campaign-progress { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 15px 0 25px; }
.campaign-progress > div { display: flex; align-items: center; justify-content: center; gap: 15px; }
.campaign-progress > div + div { border-left: 1px solid var(--border-color); }
.campaign-progress span { color: var(--text-secondary); font-size: 12px; }
.campaign-progress strong { font-size: 25px; font-weight: 500; }
.campaign-progress small { font-size: 13px; color: var(--text-secondary); }
.invite-campaign .campaign-rules, .campaign-history { margin-top: 22px; padding-top: 0; border-top: 1px solid var(--border-color); }
.campaign-rules summary, .campaign-history > summary { display: flex; align-items: center; justify-content: space-between; list-style: none; padding: 20px 0; font-size: 14px; font-weight: 500; cursor: pointer; }
.campaign-rules summary::-webkit-details-marker, .campaign-history > summary::-webkit-details-marker { display: none; }
.campaign-rules summary i, .campaign-history > summary i { font-size: 11px; color: var(--text-secondary); margin-left: 8px; }
.campaign-rules[open] summary i, .campaign-history[open] > summary i { transform: rotate(180deg); }
.invite-campaign .campaign-rules ol { margin-top: 0; font-size: 12px; }
.invite-campaign .invite-records { border-top: 0; padding-top: 0; }
.invite-campaign :is(button, a, input, summary):focus-visible { outline: 2px solid var(--campaign-accent); outline-offset: 4px; }
@media (max-width: 640px) {
    .campaign-content { padding: 16px 14px 32px; }
    .campaign-hero { min-height: 220px; }
    .campaign-tickets { gap: 8px; margin-bottom: 14px; }
    .campaign-ticket { flex-direction: column; justify-content: center; gap: 5px; padding: 12px 6px; min-height: 112px; text-align: center; }
    .campaign-ticket > i { font-size: 19px; }
    .campaign-amount { gap: 3px; flex-wrap: wrap; justify-content: center; }
    .campaign-amount > span { font-size: 38px; }
    .campaign-amount > small { font-size: 11px; }
    .campaign-bonus-value { font-size: 22px; }
    .campaign-bonus-value small { font-size: 10px; }
    .campaign-token { font-size: 9px; margin-top: 2px; }
    .campaign-sharing { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 11px 15px; padding: 16px; }
    .campaign-pass-qr { width: 78px; height: 78px; grid-row: 1 / 3; }
    .campaign-pass-code { gap: 5px; justify-content: center; }
    .campaign-pass-code > input { font-size: 17px; }
    .campaign-share-actions { justify-content: center; gap: 14px; margin: 0; }
    .campaign-button { min-height: 38px; padding: 10px 18px; font-size: 12px; }
    .campaign-wallet { font-size: 18px; padding: 4px; }
    .campaign-progress > div { flex-direction: column; gap: 5px; }
    .campaign-progress span { font-size: 10px; }
}
@media (max-width: 360px) {
    .campaign-sharing { grid-template-columns: 68px minmax(0, 1fr); gap: 10px; padding: 14px; }
    .campaign-pass-qr { width: 68px; height: 68px; }
    .campaign-pass-code > input { font-size: 15px; }
    .campaign-share-actions { gap: 8px; }
    .campaign-button { padding: 9px 13px; }
}
