* { margin: 0; padding: 0; box-sizing: border-box; } * { -webkit-tap-highlight-color: transparent; /* 顺手优化长按菜单(需要可跳过) */ -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #121212; min-height: 100vh; color: #fff; padding-bottom: env(safe-area-inset-bottom); } /* 在 :root 中定义全局变量,方便复用 */ :root { --safe-area-inset-top: env(safe-area-inset-top, 0px); --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px); } /* 1. 为页面主体添加安全区内边距 */ body { padding-top: var(--safe-area-inset-top); padding-bottom: var(--safe-area-inset-bottom); } body > .container.activity { background: white; color: #000000; } .container { margin-top: 50px; } .container.activity{ margin-top: 0; } .status-bar { display: flex; justify-content: space-between; align-items: center; padding: 12px 24px; font-size: 14px; font-weight: 600; } .status-bar-time { font-weight: 600; } .status-bar-icons { display: flex; align-items: center; gap: 6px; } .status-bar-icons svg { width: 18px; height: 18px; } .header { display: flex; align-items: center; justify-content: space-between; padding: 16px 16px; } .activity.header { padding: 16px 0; } .header-title { font-size: 18px; font-weight: 600; line-height: 1; } .vip-card { margin: 40px 16px 30px; border-radius: 8px; position: relative; border: 1px solid #2c2c2c; background: #121212; position: relative; } .vip-card::before { content: ""; position: absolute; right: 0; top: -40px; width: 150px; height: 150px; background-image: url(/images/image195@2x.png); background-repeat: no-repeat; background-position: left top; background-size: 150px auto; z-index: 10; } .vip-box { position: relative; padding: 16px; z-index: 8; background-image: url(/images/unblock-bg-round2@2x.png); background-repeat: no-repeat; background-position: left top; background-size: 270px auto; background-color: #121212; } .vip-bg { position: absolute; z-index: 4; right: 0; top: 0; } .vip-bg::after { content: ""; position: absolute; right: -16px; top: -130px; width: 200px; height: 260px; background-image: url(/images/unlock-dots-right1@2x.png); background-repeat: no-repeat; background-position: left top; background-size: 200px auto; } .vip-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 26px; } .vip-level-badge { gap: 8px; } .vip-level-title { font-size: 10px; color: #888888; margin-bottom: 6px; } .vip-level-text { font-size: 32px; font-weight: 700; } .vip-card-tabs { display: flex; gap: 8px; } .vip-tab { padding: 6px 12px; border-radius: 8px; font-size: 12px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.1); cursor: pointer; transition: all 0.3s ease; } .vip-tab.active { background: linear-gradient(135deg, #f5a623, #ff6b35); border-color: transparent; } .vip-card-tip { font-size: 10px; color: #8a8a9a; margin-top: 16px; text-align: right; } .vip-card-tip span { color: #f5a623; } .progress-items { display: flex; flex-direction: column; gap: 18px; } .progress-item { font-size: 10px; } .progress-label { color: #888888; margin-bottom: 6px; } .progress-label span { color: #ffffff; font-weight: 600; } .progress-bar { width: 100%; height: 6px; background: rgba(255, 255, 255, 0.1); border-radius: 3px; overflow: hidden; } .progress-bar-fill { height: 100%; background: linear-gradient(90deg, #f5a623, #ff6b35); border-radius: 3px; transition: width 0.5s ease; } .section-title { font-size: 16px; font-weight: 600; padding: 0 16px 12px; } .benefits-tabs { display: flex; gap: 12px; padding: 0 16px; margin-bottom: 16px; font-size: 14px; } .benefits-tab { cursor: pointer; transition: all 0.3s ease; color: #888888; } .benefits-tab.active { border-color: transparent; color: #ffffff; font-weight: 500; position: relative; } .benefits-tab.active::after { content: ""; position: absolute; bottom: 0; left: 0; width: 14px; height: 2px; transform: translateX(-50%); left: 50%; bottom: -6px; background: linear-gradient(135deg, #f5a623, #ff6b35); } .benefits-table { margin: 0 16px 32px; } .benefits-header { display: grid; grid-template-columns: 1.5fr 1fr 1fr; padding: 12px 0; font-size: 10px; /* gap: 10px; */ color: #6a6a7a; text-align: left; } .benefits-header > div:nth-child(3) { text-align: right; } .benefits-row { display: grid; grid-template-columns: 1.5fr 1fr 1fr; padding: 14px 0; font-size: 12px; align-items: center; text-align: left; border-bottom: 1px solid #2c2c2c; transition: background 0.3s ease; } .td { min-width: 80px; } .benefits-row > div:nth-child(3) { flex: 78px; text-align: right; } .benefits-row:last-child { border-bottom: none; } .benefits-row .vip-name { font-weight: 600; display: flex; align-items: center; gap: 4px; } .benefits-row .vip-name img { width: 14px; } .benefits-row.active .vip-icon { background: linear-gradient(135deg, #f5a623, #ff6b35); } @media (max-width: 374px) { .benefits-header, .benefits-row { font-size: 10px; padding: 10px 8px; } .benefits-header { grid-template-columns: 1.5fr 1fr 1fr; } .benefits-row { grid-template-columns: 1.5fr 1fr 1fr; } } @media (min-width: 768px) { .container { max-width: 420px; margin: 0 auto; } } .contribution-section { padding: 0 16px; margin-bottom: 32px; } .contribution-title { font-family: "PingFang SC"; font-size: 16px; font-weight: 500; color: #ffffff; margin-bottom: 18px; } .contribution-card { width: 100%; background: #141414; border: 1px solid #2c2c2c; border-radius: 8px; padding: 16px; } .contribution-item { font-family: "PingFang SC"; font-size: 12px; font-weight: 400; color: #888888; line-height: 1.4; margin-bottom: 25px; } .contribution-item:last-child { margin-bottom: 0; } .contribution-item .highlight { color: #ffffff; } .contribution-tip { font-family: "PingFang SC"; font-size: 10px; color: #666666; margin-top: 16px; line-height: 1.5; } .loading-overlay, .error-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 1000; backdrop-filter: blur(4px); } .loading-content, .error-content { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 32px; background: #1a1a1a; border-radius: 12px; border: 1px solid #2c2c2c; } .loading-spinner { width: 40px; height: 40px; border: 3px solid rgba(245, 166, 35, 0.2); border-top-color: #f5a623; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text, .error-text { font-size: 14px; color: #fff; } .error-icon { width: 40px; height: 40px; background: #ff4444; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: bold; color: #fff; } .error-retry { padding: 10px 24px; background: linear-gradient(135deg, #f5a623, #ff6b35); border: none; border-radius: 8px; color: #fff; font-size: 14px; font-weight: 500; cursor: pointer; transition: opacity 0.3s ease; } .error-retry:hover { opacity: 0.9; } .error-retry:active { transform: scale(0.98); }