/* 推广海报页面 */ page { background: #0a0e17; min-height: 100vh; font-family: 'Avenir', 'PingFang SC', 'Helvetica Neue', sans-serif; color: #fff; } /* 背景网格 */ .grid-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(0, 160, 255, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 160, 255, 0.05) 1px, transparent 1px); background-size: 50rpx 50rpx; pointer-events: none; z-index: 0; } .page-container { position: relative; z-index: 2; min-height: 100vh; padding: 30rpx 25rpx; box-sizing: border-box; } /* 机械装饰线条 */ .mech-line { position: absolute; pointer-events: none; z-index: 1; } .line-h { top: 200rpx; left: 0; width: 100%; height: 2rpx; background: linear-gradient(90deg, transparent, #00a6ff, transparent); } .line-v { right: 50rpx; top: 100rpx; width: 2rpx; height: 300rpx; background: linear-gradient(180deg, transparent, #00a6ff, transparent); } .content { position: relative; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; padding: 40rpx 0; } /* 标题区域 */ .title-section { text-align: center; margin-bottom: 60rpx; } .title { font-size: 44rpx; font-weight: bold; color: #fff; text-shadow: 0 0 30rpx #00a6ff; letter-spacing: 2rpx; display: block; margin-bottom: 20rpx; } .subtitle { font-size: 28rpx; color: #9cf; opacity: 0.9; letter-spacing: 1rpx; } /* 二维码区域 */ .qrcode-section { width: 100%; display: flex; justify-content: center; align-items: center; margin-bottom: 60rpx; } .qrcode-wrapper { position: relative; width: 400rpx; height: 400rpx; background: rgba(0, 20, 40, 0.8); border: 4rpx solid #00a6ff; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 80rpx rgba(0, 166, 255, 0.4); animation: qrcodePulse 2s infinite alternate; } .qrcode-img { width: 90%; height: 90%; object-fit: contain; } .qrcode-glow { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 30% 30%, rgba(0, 166, 255, 0.2), transparent 70%); pointer-events: none; } .empty-qrcode { width: 400rpx; height: 400rpx; background: rgba(0, 20, 40, 0.8); border: 4rpx dashed #00a6ff; display: flex; flex-direction: column; align-items: center; justify-content: center; } .empty-icon { font-size: 80rpx; color: #00a6ff; margin-bottom: 20rpx; opacity: 0.5; } .empty-text { font-size: 26rpx; color: #9cf; text-align: center; padding: 0 40rpx; } /* 按钮区域 */ .button-section { width: 100%; display: flex; justify-content: center; margin-bottom: 40rpx; } .pbtn-group { display: flex; gap: 20rpx; flex-wrap: wrap; justify-content: center; } .pbtn { width: 220rpx; height: 80rpx; background: rgba(0, 30, 60, 0.8); border: 2rpx solid #00a6ff; border-right: none; border-bottom: none; clip-path: polygon(0 0, 100% 0, 90% 100%, 0 100%); display: flex; align-items: center; justify-content: center; position: relative; transition: 0.2s; } .pbtn:active { transform: scale(0.96); box-shadow: 0 0 40rpx #00a6ff; } .pbtn-save { border-color: #00a6ff; } .pbtn-refresh { border-color: #9333ea; } .pbtn-refresh .pbtn-icon { color: #9333ea; } .pbtn-poster { border-color: #9333ea; } .pbtn-poster .pbtn-icon { color: #9333ea; } .pbtn-loading { opacity: 0.7; pointer-events: none; } .pbtn-icon { font-size: 36rpx; margin-right: 8rpx; } .pbtn-text { font-size: 26rpx; font-weight: 500; color: #fff; } .loading-spinner-small { width: 30rpx; height: 30rpx; border: 4rpx solid rgba(255,255,255,0.2); border-top: 4rpx solid #fff; border-radius: 50%; animation: spin 1s linear infinite; margin-right: 10rpx; } /* 专属海报展示区 */ .poster-section { margin-top: 40rpx; display: flex; flex-direction: column; align-items: center; width: 100%; } .poster-canvas { width: 600rpx; height: 900rpx; background: #1a1f2e; border: 4rpx solid #00a6ff; box-shadow: 0 0 60rpx #00a6ff; } .poster-actions { display: flex; gap: 30rpx; margin-top: 30rpx; justify-content: center; } .pbtn-save-poster { background: linear-gradient(45deg, #0066cc, #00a6ff); border-color: #00a6ff; } .pbtn-back { background: rgba(0, 30, 60, 0.8); border-color: #00a6ff; } /* 使用说明 */ .instruction { margin-top: 30rpx; padding: 20rpx 40rpx; background: rgba(0, 30, 50, 0.5); border-left: 4rpx solid #00a6ff; clip-path: polygon(0 0, 100% 0, 98% 100%, 0 100%); } .instruction-text { font-size: 24rpx; color: #9cf; line-height: 1.6; } /* 动画 */ @keyframes qrcodePulse { 0% { box-shadow: 0 0 40rpx rgba(0, 166, 255, 0.3); } 100% { box-shadow: 0 0 100rpx rgba(0, 166, 255, 0.6); } }