You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1328 lines
28 KiB

<template>
<view class="partner-page">
<view class="nav" :style="{ paddingTop: statusBarHeight + 'px' }">
<view class="back-btn" @tap="back">
<uni-icons type="left" size="23" color="#0C4B3E"></uni-icons>
</view>
<view class="nav-title">区域主理人</view>
</view>
<scroll-view scroll-y class="page-scroll">
<view class="nav-spacer" :style="{ height: navHeight + 'px' }"></view>
<view class="poster">
<view class="hero-card">
<!-- <image class="hero-bg" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/27046dba004e4f2eb494cb020fa04efa.png" mode="aspectFill"></image> -->
<view class="hero-mask"></view>
<view class="brand-row">
<view class="brand-logo">半径里</view>
<view class="brand-en">RADIUS CAMPUS</view>
</view>
<view class="hero-main">
<view class="hero-left">
<view class="hero-kicker">
<text>正在寻找全国</text>
<text class="kicker-pill">区域主理人</text>
</view>
<view class="hero-title">
<view>让你的区域</view>
<view>拥有自己的</view>
<view class="hero-green">生活平台</view>
</view>
<view class="hero-sub">省钱 · 兼职 · 社交 · 闲置</view>
<view class="hero-desc">打造属于本区域的数字生态</view>
<view class="metric-row">
<view class="metric-item" v-for="(item,index) in metrics" :key="index">
<view class="metric-dot"></view>
<view>{{item}}</view>
</view>
</view>
</view>
<view class="hero-right">
<view class="phone">
<view class="phone-notch"></view>
<view class="phone-screen">
<view class="app-top">
<view>
<view class="app-name">半径里</view>
<view class="app-small">区域生活平台</view>
</view>
<view class="app-school">区域</view>
</view>
<view class="app-banner">
<view class="app-banner-title">万物皆可拼团</view>
<view class="app-banner-sub">省钱 · 福利 · 区域任务</view>
</view>
<view class="app-grid">
<view class="app-module" v-for="(item,index) in appModules" :key="index">
<view class="module-mark">
<image v-if="item.icon" class="module-icon-img" :src="item.icon" mode="aspectFit"></image>
<text v-else>{{item.short}}</text>
</view>
<view>{{item.name}}</view>
</view>
</view>
</view>
</view>
<view class="float-card float-card-a">万物拼团</view>
<view class="float-card float-card-b">自由兼职</view>
<view class="float-card float-card-c">IE社交</view>
<image class="mascot hero-mascot" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/8493b053a0164882b20f6d4019de3a77.png" mode="aspectFit"></image>
</view>
</view>
</view>
<view class="section eco-section">
<view class="section-heading">
<text class="spark">✦</text>
<text>6大区域生态,0成本解决用户所有生活需求</text>
<text class="spark">✦</text>
</view>
<view class="eco-grid">
<view class="eco-card" v-for="(item,index) in ecosystems" :key="index">
<view class="eco-no">{{item.no}}</view>
<view class="eco-icon">
<image v-if="item.icon" class="eco-icon-img" :src="item.icon" mode="aspectFit"></image>
<text v-else>{{item.short}}</text>
</view>
<view class="eco-title">{{item.title}}</view>
<view class="eco-sub">{{item.tagline}}</view>
<view class="eco-points">
<view v-for="(point,pIndex) in item.points" :key="pIndex">{{point}}</view>
</view>
<view class="eco-result">{{item.solve}}</view>
</view>
</view>
</view>
<view class="section role-section">
<view class="section-heading">
<text class="spark">✦</text>
<text>成为区域主理人,你将负责</text>
<text class="spark">✦</text>
</view>
<view class="role-layout">
<view class="leader-card">
<image class="leader-bg" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/f7227759d693497a8beab87ff437a875.png" mode="aspectFill"></image>
<view class="leader-mask"></view>
<view class="leader-copy">
<view>你不是推广员</view>
<view>你是半径里</view>
<view class="leader-green">区域负责人</view>
</view>
</view>
<view class="role-cards">
<view class="role-card" v-for="(item,index) in responsibilities" :key="index">
<view class="role-no">{{item.no}}</view>
<view class="role-title">{{item.title}}</view>
<view class="role-desc">{{item.desc}}</view>
</view>
</view>
</view>
</view>
<view class="double-section">
<view class="half-card">
<view class="half-title">3步开启</view>
<view class="half-sub">你的区域项目</view>
<view class="step-row">
<view class="step-item" v-for="(item,index) in steps" :key="index">
<view class="step-dot">{{item.no}}</view>
<view class="step-title">{{item.title}}</view>
<view class="step-desc">{{item.desc}}</view>
</view>
</view>
</view>
<view class="half-card">
<view class="half-title">平台为你提供</view>
<view class="half-sub">从工具到运营支持</view>
<view class="support-grid">
<view class="support-item" v-for="(item,index) in supports" :key="index">
<view class="support-icon">{{item.short}}</view>
<view>{{item.name}}</view>
</view>
</view>
</view>
</view>
<view class="final-card">
<!-- <image class="final-bg" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/27046dba004e4f2eb494cb020fa04efa.png" mode="aspectFill"></image> -->
<view class="final-mask"></view>
<view class="final-left">
<view class="final-title">
<view>您所在的区域</view>
<view>值得拥有一个属于自己的半径</view>
</view>
<view class="final-desc">在这里每一个瞬间都值得被记录每一份努力都能被看见</view>
</view>
<image class="final-corner-icon" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/8953e4af95944d7c94936efaffe155c6.png" mode="aspectFit"></image>
<view class="join-btn" hover-class="tap-soft" hover-stay-time="80" @tap="joinNow">电话联系 半径区域主理人计划</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
const MY_CENTER_ICONS = {
group: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/7c183db1b23c4beab01548ceb1e9b009.png',
delivery: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/bca3af00ef5c4d68baa19ff79246f8d2.png',
planet: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/99b4e791056f45dfbea2941127ee406f.png',
social: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/9098995c67ae4271b23e0ac90c3abcad.png',
idle: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/4b5151ee6d804b2db41f7235ed63b04a.png',
campus: 'https://jewel-shop.oss-cn-beijing.aliyuncs.com/2e7e3d41d2964bb694f1a89e3f159927.png'
}
export default {
data() {
return {
statusBarHeight: 0,
navHeight: 64,
metrics: ['拼团省钱', '兼职挣钱', '多元社区', '互动交友'],
appModules: [{
short: '团',
name: '拼团',
icon: MY_CENTER_ICONS.group
}, {
short: '职',
name: '兼职',
icon: MY_CENTER_ICONS.delivery
}, {
short: '星',
name: '星球',
icon: MY_CENTER_ICONS.planet
}, {
short: '社',
name: '社交',
icon: MY_CENTER_ICONS.social
}, {
short: '闲',
name: '二手',
icon: MY_CENTER_ICONS.idle
}, {
short: '圈',
name: '区域圈',
icon: MY_CENTER_ICONS.campus
}],
ecosystems: [{
no: '01',
short: '团',
icon: MY_CENTER_ICONS.group,
title: '万物拼团',
tagline: '区域省钱入口',
points: ['外卖拼团', '到店优惠', '秒杀福利'],
solve: '让用户每天消费更便宜'
}, {
no: '02',
short: '职',
icon: MY_CENTER_ICONS.delivery,
title: '自由兼职',
tagline: '让时间产生价值',
points: ['跑腿配送', '快递代取', '区域任务'],
solve: '学习之余,轻松赚零花'
}, {
no: '03',
short: '星',
icon: MY_CENTER_ICONS.planet,
title: '白嫖星球',
tagline: '区域福利中心',
points: ['每日任务', '现金奖池', '学院排行'],
solve: '每天都有打开理由'
}, {
no: '04',
short: '社',
icon: MY_CENTER_ICONS.social,
title: 'IE区域社交',
tagline: '找到同频的TA',
points: ['学习搭子', '饭搭子', '运动搭子'],
solve: '让陌生区域产生连接'
}, {
no: '05',
short: '闲',
icon: MY_CENTER_ICONS.idle,
title: '区域二手',
tagline: '让闲置重新流动',
points: ['闲置发布', '求购信息', '区域交流'],
solve: '闲置流转,循环利用'
}, {
no: '06',
short: '圈',
icon: MY_CENTER_ICONS.campus,
title: '区域圈',
tagline: '记录区域每一刻',
points: ['区域故事', '生活分享', '毕业记忆'],
solve: '用于记录区域的青春记忆'
}],
responsibilities: [{
no: '01',
title: '区域商家合作',
desc: '寻找优质商家,上线优惠活动'
}, {
no: '02',
title: '区域用户运营',
desc: '组织拼团活动,策划福利玩法'
}, {
no: '03',
title: '区域生态建设',
desc: '打造区域自己的半径文化'
}],
steps: [{
no: '01',
title: '提交申请',
desc: '填写区域与团队信息'
}, {
no: '02',
title: '平台培训',
desc: '学习运营方法与工具'
}, {
no: '03',
title: '开启运营',
desc: '上线区域商家与活动'
}],
supports: [{
short: '工',
name: '系统工具'
}, {
short: '商',
name: '商家资源'
}, {
short: '玩',
name: '活动玩法'
}, {
short: '数',
name: '数据后台'
}, {
short: '运',
name: '运营支持'
}, {
short: '奖',
name: '成长激励'
}]
}
},
onLoad() {
this.setStatusBar()
},
methods: {
setStatusBar() {
try {
const systemInfo = uni.getSystemInfoSync ? uni.getSystemInfoSync() : {}
this.statusBarHeight = systemInfo.statusBarHeight || 0
const navContentHeight = uni.upx2px ? uni.upx2px(88) : 44
const navGap = uni.upx2px ? uni.upx2px(18) : 9
this.navHeight = this.statusBarHeight + navContentHeight + navGap
} catch (e) {
this.statusBarHeight = 0
this.navHeight = 64
}
},
back() {
uni.navigateBack({
delta: 1
})
},
joinNow() {
uni.makePhoneCall({
phoneNumber: '15533910775'
})
}
}
}
</script>
<style>
page {
width: 100%;
height: 100%;
background: #F3FBF7;
}
.partner-page {
width: 100%;
height: 100%;
color: #0C4B3E;
background:
radial-gradient(circle at 6% 0%, rgba(127, 227, 192, .24), rgba(127, 227, 192, 0) 360rpx),
radial-gradient(circle at 95% 18%, rgba(255, 226, 157, .28), rgba(255, 226, 157, 0) 360rpx),
#F3FBF7;
}
.nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 20;
display: flex;
align-items: center;
height: 88rpx;
padding-left: 24rpx;
box-sizing: content-box;
background: rgba(243, 251, 247, .82);
backdrop-filter: blur(24rpx);
}
.back-btn {
display: flex;
align-items: center;
justify-content: center;
width: 64rpx;
height: 64rpx;
border-radius: 999rpx;
background: rgba(255, 255, 255, .78);
box-shadow: 0 10rpx 26rpx rgba(12, 75, 62, .08);
}
.nav-title {
margin-left: 18rpx;
font-size: 28rpx;
font-weight: 900;
}
.page-scroll {
width: 100%;
height: 100%;
}
.nav-spacer {
width: 100%;
}
.poster {
padding: 20rpx 28rpx 70rpx;
box-sizing: border-box;
}
.hero-card,
.eco-card,
.leader-card,
.role-card,
.half-card,
.final-card {
border: 1rpx solid rgba(255, 255, 255, .88);
box-shadow: 0 18rpx 54rpx rgba(12, 75, 62, .08);
backdrop-filter: blur(22rpx);
}
.hero-card {
position: relative;
min-height: 540rpx;
padding: 28rpx;
border-radius: 44rpx;
overflow: hidden;
background: #EAF8F1;
box-sizing: border-box;
}
.hero-bg,
.hero-mask {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.hero-bg {
object-fit: cover;
object-position: center top;
}
.hero-mask {
background:
linear-gradient(90deg, rgba(243, 251, 247, .96) 0%, rgba(243, 251, 247, .78) 48%, rgba(243, 251, 247, .28) 100%),
linear-gradient(180deg, rgba(255, 255, 255, .16), rgba(243, 251, 247, .76));
}
.brand-row {
position: relative;
z-index: 1;
display: flex;
align-items: baseline;
}
.brand-logo {
color: #0C4B3E;
font-size: 30rpx;
font-weight: 900;
line-height: 36rpx;
}
.brand-en {
margin-left: 12rpx;
color: rgba(12, 75, 62, .56);
font-size: 17rpx;
font-weight: 900;
letter-spacing: 2rpx;
}
.hero-main {
position: relative;
z-index: 1;
display: flex;
margin-top: 28rpx;
}
.hero-left {
width: 53%;
min-width: 0;
}
.hero-right {
position: relative;
flex: 1;
min-width: 0;
height: 430rpx;
}
.hero-kicker {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10rpx;
color: #0C4B3E;
font-size: 23rpx;
font-weight: 900;
line-height: 34rpx;
}
.kicker-pill {
padding: 6rpx 14rpx;
border-radius: 999rpx;
background: #7FE3C0;
color: #0C4B3E;
font-size: 20rpx;
}
.hero-title {
margin-top: 22rpx;
color: #0A352E;
font-size: 54rpx;
font-weight: 900;
line-height: 64rpx;
letter-spacing: -2rpx;
}
.hero-green {
color: #0DB88D;
}
.hero-sub {
margin-top: 22rpx;
color: rgba(12, 75, 62, .72);
font-size: 22rpx;
font-weight: 900;
line-height: 32rpx;
}
.hero-desc {
margin-top: 8rpx;
color: rgba(12, 75, 62, .52);
font-size: 21rpx;
line-height: 32rpx;
}
.metric-row {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12rpx;
margin-top: 30rpx;
}
.metric-item {
display: flex;
align-items: center;
height: 48rpx;
padding: 0 12rpx;
border-radius: 999rpx;
background: rgba(255, 255, 255, .72);
color: rgba(12, 75, 62, .62);
font-size: 18rpx;
font-weight: 900;
box-sizing: border-box;
}
.metric-dot {
width: 12rpx;
height: 12rpx;
margin-right: 8rpx;
border-radius: 50%;
background: #7FE3C0;
}
.phone {
position: absolute;
right: 0;
top: 8rpx;
width: 220rpx;
height: 410rpx;
padding: 12rpx;
border: 3rpx solid #153E36;
border-radius: 42rpx;
background: #FFFFFF;
box-shadow: 0 26rpx 70rpx rgba(12, 75, 62, .18);
box-sizing: border-box;
transform: rotate(2deg);
}
.phone-notch {
position: absolute;
left: 50%;
top: 11rpx;
width: 76rpx;
height: 12rpx;
margin-left: -38rpx;
border-radius: 999rpx;
background: #153E36;
}
.phone-screen {
height: 100%;
padding: 32rpx 14rpx 14rpx;
border-radius: 32rpx;
background: linear-gradient(180deg, #F8FFFC, #E2F8EF);
box-sizing: border-box;
overflow: hidden;
}
.app-top {
display: flex;
align-items: center;
justify-content: space-between;
}
.app-name {
font-size: 22rpx;
font-weight: 900;
line-height: 28rpx;
}
.app-small {
margin-top: 2rpx;
color: rgba(12, 75, 62, .4);
font-size: 14rpx;
line-height: 20rpx;
}
.app-school {
width: 42rpx;
height: 42rpx;
border-radius: 15rpx;
background: #FFE8A8;
color: #0C4B3E;
font-size: 18rpx;
font-weight: 900;
line-height: 42rpx;
text-align: center;
}
.app-banner {
margin-top: 18rpx;
padding: 16rpx;
border-radius: 24rpx;
background: linear-gradient(135deg, #7FE3C0, #DFFAF0);
}
.app-banner-title {
font-size: 21rpx;
font-weight: 900;
line-height: 28rpx;
}
.app-banner-sub {
margin-top: 6rpx;
color: rgba(12, 75, 62, .58);
font-size: 15rpx;
}
.app-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10rpx;
margin-top: 16rpx;
}
.app-module {
height: 58rpx;
padding: 7rpx;
border-radius: 18rpx;
background: rgba(255, 255, 255, .78);
color: rgba(12, 75, 62, .62);
font-size: 15rpx;
font-weight: 900;
box-sizing: border-box;
}
.module-mark {
display: inline-flex;
align-items: center;
justify-content: center;
width: 24rpx;
height: 24rpx;
margin-right: 4rpx;
border-radius: 8rpx;
background: #DFFAF0;
color: #0BA37E;
font-size: 15rpx;
vertical-align: middle;
}
.module-icon-img {
width: 24rpx;
height: 24rpx;
display: block;
}
.float-card {
position: absolute;
z-index: 2;
height: 54rpx;
padding: 0 18rpx;
border: 1rpx solid rgba(255, 255, 255, .9);
border-radius: 999rpx;
background: rgba(255, 255, 255, .78);
box-shadow: 0 14rpx 34rpx rgba(12, 75, 62, .08);
color: rgba(12, 75, 62, .68);
font-size: 20rpx;
font-weight: 900;
line-height: 54rpx;
backdrop-filter: blur(18rpx);
}
.float-card-a {
left: -10rpx;
top: 88rpx;
}
.float-card-b {
left: -36rpx;
top: 190rpx;
}
.float-card-c {
right: -8rpx;
top: 318rpx;
}
.mascot {
position: absolute;
z-index: 3;
display: block;
}
.hero-mascot {
left: -36rpx;
bottom: 58rpx;
width: 150rpx;
height: 150rpx;
}
.section {
margin-top: 38rpx;
}
.section-heading {
display: flex;
align-items: center;
justify-content: center;
gap: 10rpx;
color: #0C4B3E;
font-size: 30rpx;
font-weight: 900;
line-height: 42rpx;
text-align: center;
}
.spark {
color: #7FE3C0;
font-size: 26rpx;
}
.eco-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 18rpx;
margin-top: 24rpx;
}
.eco-card {
position: relative;
min-height: 300rpx;
padding: 22rpx 20rpx 20rpx;
border-radius: 28rpx;
background: rgba(255, 255, 255, .78);
box-sizing: border-box;
overflow: hidden;
}
.eco-card:after {
content: '';
position: absolute;
right: -28rpx;
top: -28rpx;
width: 130rpx;
height: 130rpx;
border-radius: 50%;
background: rgba(127, 227, 192, .16);
}
.eco-no {
color: #20B28C;
font-size: 22rpx;
font-weight: 900;
}
.eco-icon {
position: absolute;
right: 20rpx;
top: 22rpx;
z-index: 1;
width: 54rpx;
height: 54rpx;
border-radius: 18rpx;
background: linear-gradient(145deg, #DFFAF0, #FFFFFF);
box-shadow: 0 12rpx 26rpx rgba(12, 75, 62, .08);
color: #0BA37E;
font-size: 24rpx;
font-weight: 900;
line-height: 54rpx;
text-align: center;
overflow: hidden;
}
.eco-icon-img {
width: 48rpx;
padding-left: 5rpx;
height: 48rpx;
margin: 6rpx auto 0;
display: block;
}
.eco-card:nth-child(2) .eco-icon-img,
.eco-card:nth-child(5) .eco-icon-img {
width: 40rpx;
height: 40rpx;
margin-top: 7rpx;
}
.eco-card:nth-child(4) .eco-icon-img {
width: 78rpx;
height: 78rpx;
padding-right: 12rpx;
margin-top: -10rpx;
}
.eco-title {
margin-top: 24rpx;
color: #0A352E;
font-size: 29rpx;
font-weight: 900;
line-height: 36rpx;
}
.eco-sub {
margin-top: 5rpx;
color: #0BA37E;
font-size: 20rpx;
font-weight: 900;
line-height: 28rpx;
}
.eco-points {
margin-top: 14rpx;
color: rgba(12, 75, 62, .56);
font-size: 20rpx;
line-height: 32rpx;
}
.eco-points view:before {
content: '';
display: inline-block;
width: 9rpx;
height: 9rpx;
margin-right: 8rpx;
border-radius: 50%;
background: #7FE3C0;
vertical-align: middle;
}
.eco-result {
margin-top: 12rpx;
color: #0C4B3E;
font-size: 19rpx;
font-weight: 900;
line-height: 28rpx;
}
.role-layout {
display: flex;
gap: 16rpx;
margin-top: 24rpx;
}
.leader-card {
position: relative;
flex: 1.08;
min-height: 250rpx;
border-radius: 28rpx;
overflow: hidden;
}
.leader-mask {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.leader-bg {
position: absolute;
right: 8rpx;
bottom: 4rpx;
z-index: 1;
width: 132rpx;
height: 132rpx;
display: block;
opacity: .92;
}
.leader-mask {
background: linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(223, 250, 240, .52));
}
.leader-copy {
position: relative;
z-index: 2;
padding: 30rpx 24rpx;
color: #0A352E;
font-size: 27rpx;
font-weight: 900;
line-height: 38rpx;
}
.leader-green {
color: #0BA37E;
}
.role-cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12rpx;
flex: 1.42;
}
.role-card {
min-height: 250rpx;
padding: 20rpx 16rpx;
border-radius: 26rpx;
background: linear-gradient(180deg, rgba(255, 255, 255, .78), rgba(223, 250, 240, .58));
box-sizing: border-box;
}
.role-no {
color: #0BA37E;
font-size: 24rpx;
font-weight: 900;
}
.role-title {
margin-top: 18rpx;
color: #0A352E;
font-size: 22rpx;
font-weight: 900;
line-height: 30rpx;
}
.role-desc {
margin-top: 10rpx;
color: rgba(12, 75, 62, .52);
font-size: 18rpx;
line-height: 28rpx;
}
.double-section {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 18rpx;
margin-top: 32rpx;
}
.half-card {
position: relative;
min-height: 286rpx;
padding: 24rpx 20rpx;
border-radius: 30rpx;
background:
radial-gradient(circle at 12% 8%, rgba(127, 227, 192, .22), rgba(127, 227, 192, 0) 170rpx),
linear-gradient(135deg, rgba(255, 255, 255, .9), rgba(238, 255, 248, .76));
box-sizing: border-box;
overflow: hidden;
}
.half-card:before {
content: '';
position: absolute;
right: -54rpx;
top: -64rpx;
width: 180rpx;
height: 180rpx;
border-radius: 50%;
background: rgba(127, 227, 192, .26);
filter: blur(2rpx);
}
.half-card:nth-child(2):before {
background: rgba(255, 226, 157, .34);
}
.half-card:after {
content: '';
position: absolute;
left: 22rpx;
right: 22rpx;
bottom: 0;
height: 2rpx;
background: linear-gradient(90deg, rgba(127, 227, 192, 0), rgba(127, 227, 192, .7), rgba(255, 226, 157, .65), rgba(127, 227, 192, 0));
}
.half-title {
position: relative;
z-index: 1;
color: #0A352E;
font-size: 30rpx;
font-weight: 900;
line-height: 36rpx;
}
.half-sub {
position: relative;
z-index: 1;
margin-top: 4rpx;
color: rgba(12, 75, 62, .56);
font-size: 21rpx;
font-weight: 900;
}
.step-row {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8rpx;
margin-top: 24rpx;
}
.step-row:before {
content: '';
position: absolute;
left: 16%;
right: 16%;
top: 25rpx;
height: 7rpx;
border-radius: 999rpx;
background: linear-gradient(90deg, #7FE3C0, #DFFAF0 50%, #FFE6A4);
box-shadow: 0 0 22rpx rgba(127, 227, 192, .48);
}
.step-item {
position: relative;
z-index: 1;
text-align: center;
}
.step-dot {
width: 56rpx;
height: 56rpx;
margin: 0 auto;
border-radius: 50%;
background: linear-gradient(145deg, #7FE3C0, #DFFAF0);
border: 4rpx solid rgba(255, 255, 255, .72);
box-shadow: 0 12rpx 26rpx rgba(12, 75, 62, .12), 0 0 26rpx rgba(127, 227, 192, .42);
color: #0C4B3E;
font-size: 20rpx;
font-weight: 900;
line-height: 56rpx;
}
.step-title {
margin-top: 12rpx;
color: #0A352E;
font-size: 20rpx;
font-weight: 900;
line-height: 28rpx;
}
.step-desc {
margin-top: 6rpx;
color: rgba(12, 75, 62, .44);
font-size: 17rpx;
line-height: 25rpx;
}
.support-grid {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14rpx 10rpx;
margin-top: 22rpx;
}
.support-item {
padding: 10rpx 4rpx 8rpx;
border-radius: 20rpx;
background: rgba(255, 255, 255, .56);
box-shadow: inset 0 1rpx 0 rgba(255, 255, 255, .78);
text-align: center;
color: rgba(12, 75, 62, .62);
font-size: 18rpx;
font-weight: 900;
line-height: 26rpx;
}
.support-icon {
width: 46rpx;
height: 46rpx;
margin: 0 auto 8rpx;
border-radius: 16rpx;
background: linear-gradient(145deg, #7FE3C0, #E9FFF7);
box-shadow: 0 10rpx 22rpx rgba(12, 75, 62, .1);
color: #0BA37E;
font-size: 20rpx;
line-height: 46rpx;
}
.final-card {
position: relative;
min-height: 380rpx;
margin-top: 32rpx;
padding: 34rpx 28rpx 116rpx;
border-radius: 34rpx;
overflow: hidden;
background: #E9F7F0;
box-sizing: border-box;
}
.final-bg,
.final-mask {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.final-mask {
background:
linear-gradient(90deg, rgba(255, 246, 217, .92), rgba(223, 250, 240, .72) 55%, rgba(223, 250, 240, .36)),
linear-gradient(180deg, rgba(255, 255, 255, .18), rgba(12, 75, 62, .16));
}
.final-left,
.final-right,
.final-corner-icon,
.join-btn {
position: relative;
z-index: 1;
}
.final-corner-icon {
position: absolute;
right: 46rpx;
top: 40rpx;
width: 112rpx;
height: 112rpx;
z-index: 2;
display: block;
filter: drop-shadow(0 16rpx 24rpx rgba(12, 75, 62, .12));
}
.final-title {
width: 58%;
color: #0A352E;
font-size: 36rpx;
font-weight: 900;
line-height: 48rpx;
}
.final-desc {
width: 52%;
margin-top: 18rpx;
color: rgba(12, 75, 62, .62);
font-size: 22rpx;
line-height: 34rpx;
}
.final-right {
position: absolute;
right: 28rpx;
top: 40rpx;
display: flex;
align-items: center;
width: 260rpx;
padding: 16rpx;
border-radius: 28rpx;
background: rgba(255, 255, 255, .74);
box-shadow: 0 16rpx 38rpx rgba(12, 75, 62, .08);
box-sizing: border-box;
}
.phone-contact-icon {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
width: 74rpx;
height: 74rpx;
border-radius: 24rpx;
background: linear-gradient(145deg, #7FE3C0, #E9FFF7);
box-shadow: 0 12rpx 28rpx rgba(12, 75, 62, .12);
color: #064E3F;
font-size: 28rpx;
font-weight: 900;
}
.phone-contact-copy {
min-width: 0;
margin-left: 16rpx;
}
.phone-contact-title {
color: #0A352E;
font-size: 22rpx;
font-weight: 900;
line-height: 30rpx;
}
.phone-contact-number {
margin-top: 4rpx;
color: #0BA37E;
font-size: 22rpx;
font-weight: 900;
line-height: 30rpx;
}
.qr-box {
position: relative;
flex-shrink: 0;
width: 96rpx;
height: 96rpx;
border-radius: 16rpx;
background: #FFFFFF;
overflow: hidden;
}
.qr-pattern {
position: absolute;
left: 12rpx;
right: 12rpx;
top: 12rpx;
bottom: 12rpx;
background:
linear-gradient(90deg, rgba(12, 75, 62, .18) 50%, transparent 50%),
linear-gradient(rgba(12, 75, 62, .18) 50%, transparent 50%);
background-size: 20rpx 20rpx;
}
.qr-text {
position: absolute;
left: 0;
right: 0;
bottom: 10rpx;
color: rgba(12, 75, 62, .58);
font-size: 16rpx;
font-weight: 900;
text-align: center;
}
.qr-copy {
margin-left: 14rpx;
color: #0A352E;
font-size: 20rpx;
font-weight: 900;
line-height: 30rpx;
}
.final-mascot {
right: 22rpx;
bottom: 86rpx;
width: 124rpx;
height: 124rpx;
}
.join-btn {
position: absolute;
left: 28rpx;
right: 28rpx;
bottom: 28rpx;
height: 78rpx;
border-radius: 999rpx;
background: linear-gradient(90deg, #064E3F, #0AA47E);
box-shadow: 0 18rpx 42rpx rgba(6, 78, 63, .22);
color: #FFFFFF;
font-size: 26rpx;
font-weight: 900;
line-height: 78rpx;
text-align: center;
}
.tap-soft {
transform: scale(.98);
}
.hero-desc,
.metric-item,
.eco-points,
.eco-result,
.role-desc,
.step-desc,
.final-desc {
font-size: 22rpx;
}
.app-small,
.app-banner-sub,
.app-module,
.step-desc,
.support-item {
font-size: 19rpx;
}
.app-small,
.app-banner-sub,
.app-module,
.support-item {
line-height: 27rpx;
}
.eco-points,
.eco-result,
.role-desc,
.final-desc {
line-height: 34rpx;
}
.step-desc {
line-height: 28rpx;
}
.eco-sub,
.half-sub,
.role-title,
.step-title,
.phone-contact-title,
.phone-contact-number {
font-size: 23rpx;
}
</style>