Files
wxapp_escort/pages/home/index.wxss
T
2026-10-02 15:29:15 +08:00

550 lines
19 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===== 首页 · 暖白纸面 × 单一暖橙(按参考图设计语言重做) =====
参考图要点:
- 暖白纸面 + 纯白圆角卡片 + 米色发丝边,阴影极轻,几乎只靠留白分层
- 单一暖橙主色:实心按钮/标识走深一档,浅橙衬底承载图标与标签
- 大量圆角方形衬底 + 彩色线图标
- 大字号标题直接落在纸面上,不用整块色面板压首屏 */
page {
/* 暖橙主色阶:strong 是实心块/按钮(白字需 ≥4.5:1、白图标需 ≥3:1),
soft 是衬底,ink 是浅衬底上的文字与线图标 */
--brand: #F97316; /* 主色:仅装饰性小色块 */
--brand-strong: #C2410C; /* 实心按钮 / 选中态:白字 4.69:1,过 AA 正文 */
--brand-soft: #FFF4E8; /* 图标衬底、标签底 */
--brand-line: #FFE0C2; /* 浅橙衬底的描边 */
--brand-ink: #9A3412; /* 浅橙衬底上的文字/图标:6.8:1,过 AA */
/* 状态色:全页唯一的冷色,只用在「待服务订单」提醒条上。
作用是制造唯一焦点——整页暖橙平铺时需要一个"该看这里"的落点 */
--status-soft: #ECF7F4;
--status-line: #C7E5DF;
--status-ink: #0F766E; /* #ECF7F4 上 5.0:1,过 AA 正文 */
/* 中性:暖灰阶,与暖白纸面同温(冷灰会让白卡边缘发青) */
--ink: #2B2521;
--ink-2: #4A4038;
--muted: #6F655C; /* 纸面(--paper) 5.28:1 / 白卡 5.69:1,过 AA 正文。
原 #7A7068 在白卡上 4.83:1 达标,但落在暖白纸面上只有 4.49:1,压线不过 */
--faint: #A79C92; /* 仅用于非文字装饰 */
--line: #F0E9E0; /* 米色发丝边 */
--paper: #FAF6F0; /* 暖白纸面 */
--white: #FFFFFF;
--shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.04);
/* 彩色阴影原为 0 6rpx 16rpx/22%:全页只有它与品牌印记两处彩色阴影,且都在首屏,
是首屏显重的主要来源,也与"小偏移、小模糊"的锐利阴影偏好相悖,故收小一档 */
--shadow-cta: 0 2rpx 8rpx rgba(194, 65, 12, 0.16);
}
.page-bg {
min-height: 100vh;
background: var(--paper);
}
.container {
padding: 0 32rpx 40rpx;
}
/* ===== 顶部品牌行 ===== */
.topbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 120rpx 0 0;
}
.brand {
display: flex;
align-items: center;
}
/* 品牌印记:实心暖橙圆角方块 + 白色品牌 Logo。
Logo 是白色线稿(心形 + 圆点)、透明底,必须压在有色底上才可见,
40rpx 是经真机像素验证后仍能辨认轮廓的最小尺寸 */
.brand-mark {
width: 56rpx;
height: 56rpx;
border-radius: 16rpx;
background: var(--brand-strong);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2rpx 8rpx rgba(194, 65, 12, 0.16);
}
.brand-logo {
width: 40rpx;
height: 40rpx;
}
.brand-name {
font-size: 34rpx;
font-weight: 700;
color: var(--ink);
margin-left: 16rpx;
letter-spacing: 1rpx;
}
/* ===== ① 头部:大字标题直接落在纸面上 ===== */
/* 留白加码:44→56rpx 上、+16rpx 下(下方 .section 自带 56rpx,合计 72rpx 到"陪诊服务")。
topbar 的 120rpx 不能动,那是给微信胶囊/状态栏让位的安全距,不是设计留白 */
.hero {
padding: 56rpx 0 16rpx;
}
.hero-title {
display: block;
/* 居中:与下方居中的信任条、通栏 CTA 共用一条视觉中轴,首屏呈海报式对称 */
text-align: center;
/* 48rpx(24px) 正好落在 WCAG"大字"门槛(18pt/24px)上,橙色半句的 AA 结论不变。
从 52 收到 48:52rpx 与下方 34rpx 区块标题之间是 1.53× 的空断层,
且 52rpx 全页只出现这一次,是首屏显重的三个来源之一 */
font-size: 48rpx;
font-weight: 700;
letter-spacing: 2rpx;
/* 1.36 → 1.45:标题自身也松一口气,配合下方三段 gap 一起降密度 */
line-height: 1.45;
}
/* 不用逗号断句:靠「暖橙强调 + 深墨正文」的色差切分两个短句。
两段合计 11 字 × (48rpx + 2rpx 字距) + 10rpx 间隔 ≈ 560rpx,
小于容器内宽 686rpx(750 - 32×2 页边距),不会折行 */
.hero-title-accent {
color: var(--brand-strong); /* 暖白纸面上 5.0:1,过 AA */
}
.hero-title-main {
color: var(--ink);
margin-left: 10rpx;
}
/* 场景行:三项核心场景两行排布(场景词 + 补充),纯展示不点击。
场景词走暖陶土 --brand-ink 做暖色标签,与标题深墨半句靠色相拉开层级,
避免两条深色带叠在一起;补充走 muted 保持安静。
28 → 40rpx:补充语由 8 字收到 5 字后横向已有空气,纵向再拉开一档 */
.scene-row {
display: flex;
align-items: center;
margin-top: 40rpx;
}
.scene-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
}
.scene-name {
font-size: 30rpx;
font-weight: 700;
/* 暖陶土 --brand-ink:与标题深墨半句「让就医更省心」同屏时靠色相拉开层级,
避免两段 ink+700 连排成"两条深色带";比标题的 --brand-strong 低一档分量,
标题仍是首屏唯一的亮橙焦点。纸面上 6.8:1,过 AA */
color: var(--brand-ink);
letter-spacing: 1rpx;
}
.scene-desc {
margin-top: 6rpx;
font-size: 24rpx;
color: var(--muted);
letter-spacing: 1rpx;
}
/* 竖分隔线:仅装饰,不承载信息。
比 --line 加深一档,保证暖白纸面上仍可见 */
.scene-sep {
width: 2rpx;
height: 44rpx;
background: #E5DACC;
flex-shrink: 0;
}
/* 主行动按钮:通栏胶囊,直达服务列表。
36 → 48rpx 上间距、26 → 30rpx 内边距:让它在松开的首屏里仍然"立得住"——
上一轮已把彩色阴影收到 0 2rpx 8rpx/16%,抓力更依赖自身色块,故用体量补回来 */
.hero-cta {
display: flex;
align-items: center;
justify-content: center;
margin-top: 48rpx;
padding: 30rpx;
border-radius: 999rpx;
background: var(--brand-strong);
box-shadow: var(--shadow-cta);
transition: transform 0.15s ease;
}
.hero-cta:active {
transform: scale(0.98);
}
.hero-cta-text {
font-size: 30rpx;
font-weight: 700;
color: var(--white);
letter-spacing: 2rpx;
margin-right: 6rpx;
}
/* ===== ② 陪诊服务:服务宫格 + 品类介绍卡 ===== */
/* 介绍卡:整卡走浅橙衬底,位于宫格下方,是本区块的尾部视觉锚点;
宫格保持白卡安静语言、紧贴标题。
纯内容展示卡(不可点),指南入口在区块标题行右侧 */
.intro-card {
display: flex;
flex-direction: column;
padding: 28rpx 26rpx;
/* 位于宫格下方,改为上间距;比原 20rpx 略大,与宫格拉开层级 */
margin-top: 24rpx;
border-radius: 28rpx;
background: var(--brand-soft);
border: 2rpx solid var(--brand-line);
}
/* 介绍卡定位句:一句(14 字)读完全卡主旨,比信任行更深一档做层级,
浅橙底 9.2:1 过 AA */
.intro-desc {
font-size: 26rpx;
line-height: 1.6;
color: var(--ink-2);
}
/* 信任行:三项信任背书单行小字,从首屏下沉至此,
在用户开始了解服务时补上信任背书;位于定位句下方,拉开 16rpx */
.intro-trust {
display: flex;
align-items: center;
margin-top: 16rpx;
}
.intro-trust-item {
font-size: 24rpx;
font-weight: 700;
color: var(--brand-ink); /* 浅橙底 6.8:1,过 AA */
letter-spacing: 1rpx;
}
/* 分隔竖线:不能用 --brand-line(#FFE0C2)——它落在浅橙底 #FFF4E8 上只有 1.16:1,肉眼看不见。
改用 #E5DACC,与场景行、页脚的竖分隔线同一档,保证在浅橙底上也能看见 */
.intro-trust-sep {
width: 2rpx;
height: 20rpx;
background: #E5DACC;
margin: 0 16rpx;
flex-shrink: 0;
}
/* ===== 通用区块 ===== */
.section {
margin-top: 56rpx;
}
.section-head {
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 22rpx;
}
/* 区块标识:单竖条。原「实心橙方块 + 白图标」在页面上已是第三、四个橙色实心块,
与顶部品牌印记撞语言,且 26rpx 的白图标过小看不清;改竖条后视觉更轻,
把重心让给下方的服务宫格与功能卡。条高与 34rpx 标题齐平,避免细条显单薄 */
.section-bar {
width: 8rpx;
height: 34rpx;
border-radius: 4rpx;
background: var(--brand-strong);
flex-shrink: 0;
}
.section-title {
margin-left: 16rpx;
font-size: 34rpx;
font-weight: 700;
color: var(--ink);
letter-spacing: 1rpx;
}
/* 标题行右侧入口(如「服务指南」):靠 margin-left:auto 右对齐。
走 muted 而非暖橙,把橙色焦点留给 hero 标题;24rpx 纸面 5.28:1 过 AA。
文字只有 24rpx 高,用 padding 把点击热区撑到 56rpx(28px),
再用等量负外边距抵消,保证标题行的高度与上下间距不变 */
.section-link {
margin: -16rpx 0 -16rpx auto;
padding: 16rpx 0;
display: flex;
align-items: center;
flex-shrink: 0;
}
.section-link:active {
opacity: 0.7;
}
.section-link-text {
font-size: 24rpx;
color: var(--muted);
letter-spacing: 1rpx;
}
/* 服务宫格:8 项服务白卡(区块主体,紧贴标题) */
.assist-card {
padding: 16rpx 8rpx 20rpx;
border-radius: 28rpx;
background: var(--white);
border: 2rpx solid var(--line);
box-shadow: var(--shadow-card);
}
.assist-grid {
display: flex;
flex-wrap: wrap;
}
/* 8 项服务:4 列 × 2 行正好排满 */
.assist-item {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
padding: 26rpx 0;
transition: transform 0.15s ease;
}
.assist-item:active {
transform: scale(0.94);
}
/* 纤细线图标:24x24 网格、stroke-width 1.5、暖橙 #C2410C,base64 内嵌避免引入图标字体。
60rpx(30px) 是过 WCAG 非文本 3:1 后兼顾真机清晰度、减少白卡空荡感的尺寸。
图标直接落在白卡上、不加衬底方块:衬底层级已让给上方主推卡,小宫格保持安静 */
.assist-icon {
width: 60rpx;
height: 60rpx;
margin-bottom: 20rpx;
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
}
/* 1 全天陪诊:整圈表盘 + 指针 */
.assist-icon-1 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgNi42VjEybDMuOCAyLjIiLz48L3N2Zz4=");
}
/* 2 半天陪诊:整圈表盘 + 右半实心填充,与 1 的"空心全圈"形成"全 / 半"对照,
避免原半月形在小尺寸下被误读为字母 D */
.assist-icon-2 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgMy41YTguNSA4LjUgMCAwIDEgMCAxN1oiIGZpbGw9IiNDMjQxMEMiIHN0cm9rZT0ibm9uZSIvPjwvc3ZnPg==");
}
/* 3 代问诊:对话气泡 + 医疗十字 */
.assist-icon-3 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjAgMTQuNWEyLjUgMi41IDAgMCAxLTIuNSAyLjVIOGwtNCAzLjVWNmEyLjUgMi41IDAgMCAxIDIuNS0yLjVoMTFBMi41IDIuNSAwIDAgMSAyMCA2WiIvPjxwYXRoIGQ9Ik0xMiA3LjZ2NS4yTTkuNCAxMC4yaDUuMiIvPjwvc3ZnPg==");
}
/* 4 检查预约:日历 + 对勾 */
.assist-icon-4 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSIzLjUiIHk9IjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNS41IiByeD0iMi41Ii8+PHBhdGggZD0iTTggM3Y0TTE2IDN2NE0zLjUgOS41aDE3Ii8+PHBhdGggZD0ibTkuNCAxNSAxLjkgMS45IDMuNy00Ii8+PC9zdmc+");
}
/* 5 出入院代办:医院楼 + 地面 + 十字 */
.assist-icon-5 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNC41IDIwLjVWNi41YTIgMiAwIDAgMSAyLTJoMTFhMiAyIDAgMCAxIDIgMnYxNCIvPjxwYXRoIGQ9Ik0yLjUgMjAuNWgxOSIvPjxwYXRoIGQ9Ik0xMiA4LjZ2NU05LjUgMTEuMWg1Ii8+PC9zdmc+");
}
/* 6 跑腿服务:包裹箱 */
.assist-icon-6 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjAuNSA4LjJ2Ny42YTEuNiAxLjYgMCAwIDEtLjg0IDEuNDJsLTYuOSAzLjhhMS42IDEuNiAwIDAgMS0xLjUyIDBsLTYuOS0zLjhBMS42IDEuNiAwIDAgMSAzLjUgMTUuOFY4LjJhMS42IDEuNiAwIDAgMSAuODQtMS40Mmw2LjktMy44YTEuNiAxLjYgMCAwIDEgMS41MiAwbDYuOSAzLjhBMS42IDEuNiAwIDAgMSAyMC41IDguMloiLz48cGF0aCBkPSJNMy45IDcuMyAxMiAxMS43bDguMS00LjRNMTIgMTEuN1YyMSIvPjwvc3ZnPg==");
}
/* 7 陪诊套餐:礼盒 */
.assist-icon-7 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSIzIiB5PSI3LjUiIHdpZHRoPSIxOCIgaGVpZ2h0PSI0LjUiIHJ4PSIxLjIiLz48cGF0aCBkPSJNNC41IDEydjcuNUExLjUgMS41IDAgMCAwIDYgMjFoMTJhMS41IDEuNSAwIDAgMCAxLjUtMS41VjEyIi8+PHBhdGggZD0iTTEyIDcuNVYyMSIvPjxwYXRoIGQ9Ik0xMiA3LjVIOS4yYTIuMyAyLjMgMCAxIDEgMC00LjZDMTAuNyAyLjkgMTIgNy41IDEyIDcuNVoiLz48cGF0aCBkPSJNMTIgNy41aDIuOGEyLjMgMi4zIDAgMSAwIDAtNC42QzEzLjMgMi45IDEyIDcuNSAxMiA3LjVaIi8+PC9zdmc+");
}
/* 8 买药套餐:45° 斜置胶囊 + 中缝,避免原横置胶囊被误读为"链接"图标 */
.assist-icon-8 {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzI0MTBDIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSI0LjIiIHk9IjguMiIgd2lkdGg9IjE1LjYiIGhlaWdodD0iNy42IiByeD0iMy44IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDUgMTIgMTIpIi8+PHBhdGggZD0iTTkuMyA5LjNsNS40IDUuNCIvPjwvc3ZnPg==");
}
/* 宫格项名统一走 28rpx 标题档(与 .quick-name 同级)。
4 列布局列宽 ≈ 167rpx,5 字项名「出入院代办」= 140rpx,不折行 */
.assist-name {
font-size: 28rpx;
font-weight: 700;
color: var(--ink-2);
}
/* ===== ④ 常用功能 ===== */
/* 全页唯一的状态色:这是唯一"需要用户行动"的信息,用它把视线钉住 */
.order-tip {
display: flex;
align-items: center;
padding: 22rpx 24rpx;
margin-bottom: 16rpx;
border-radius: 20rpx;
background: var(--status-soft);
border: 2rpx solid var(--status-line);
}
.order-tip:active {
opacity: 0.75;
}
.order-dot {
width: 12rpx;
height: 12rpx;
border-radius: 50%;
background: var(--status-ink);
margin-right: 14rpx;
flex-shrink: 0;
}
.order-tip-text {
flex: 1;
font-size: 28rpx;
font-weight: 700;
color: var(--status-ink);
}
/* 双列卡片 + 图标左、文字右的横排结构;
第三张通栏卡靠换行落到第二行 */
.quick-list {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
}
/* 图标左、文字右的横排结构 */
.quick-item {
flex: 1;
min-width: 0;
display: flex;
flex-direction: row;
align-items: center;
padding: 24rpx;
border-radius: 28rpx;
background: var(--white);
border: 2rpx solid var(--line);
box-shadow: var(--shadow-card);
transition: transform 0.15s ease;
}
.quick-item:active {
transform: scale(0.98);
}
/* 通栏卡(联系我们):两列网格 2+1 排布,第三张占满第二行。
必须显式 border-box:全局只有 .container 设了它,否则 width:100%
会再叠加自身 padding(24rpx×2) + 描边(2rpx×2),整卡溢出容器。
同时兼作页面尾部的落点:下半区(宫格、功能卡)全是"白卡 + 28rpx 深墨标题"的同一语言,
视线落下去找不到第二处落点,"上重下平"由此而来。
这里借用陪诊服务区块尾部的浅橙介绍卡语言,让每个区块都收在暖色卡上;
浅橙底本身已能与纸面区分,故去掉阴影,与介绍卡保持一致 */
.quick-item-full {
width: 100%;
flex: none;
box-sizing: border-box;
background: var(--brand-soft);
border-color: var(--brand-line);
box-shadow: none;
}
/* 浅橙衬底上不再叠浅橙衬底(同色叠同色等于没有衬底),让图标直接落在卡面上,
与陪诊服务宫格"图标不加衬底"的处理一致 */
.quick-item-full .quick-icon {
background: transparent;
}
/* 68 → 60rpx:两列卡右侧补了 chevron 后文字区被压缩,
衬底缩一档给 desc 让出宽度(60rpx/30px 仍在真机清晰区间内) */
.quick-icon {
width: 60rpx;
height: 60rpx;
border-radius: 18rpx;
background: var(--brand-soft);
display: flex;
align-items: center;
justify-content: center;
margin-right: 14rpx;
flex-shrink: 0;
}
.quick-info {
display: flex;
flex-direction: column;
min-width: 0;
}
.quick-name {
font-size: 28rpx;
font-weight: 700;
color: var(--ink);
}
.quick-desc {
font-size: 24rpx;
color: var(--muted);
margin-top: 6rpx;
}
/* 每张卡右侧箭头:两列卡此前没有任何点击暗示,属于"无暗示的整卡可点",
与通栏卡不一致;补齐后三张卡语言统一,通栏卡同时填补右半空白 */
.quick-arrow {
margin-left: auto;
flex-shrink: 0;
display: flex;
align-items: center;
}
/* ===== ⑤ 页脚 ===== */
.page-footer {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 64rpx;
padding-top: 32rpx;
border-top: 2rpx solid var(--line);
}
/* B 端合作文字链:低调但可读,点击转服务电话 */
.footer-links {
display: flex;
align-items: center;
margin-bottom: 20rpx;
}
/* 文字只有 24rpx 高,用 padding 撑热区、等量负外边距抵消,不影响页脚原有行距 */
.footer-link {
padding: 16rpx 0;
margin: -16rpx 0;
font-size: 24rpx;
color: var(--muted); /* 纸面 5.28:1,过 AA 正文 */
letter-spacing: 1rpx;
}
.footer-link:active {
color: var(--brand-strong);
}
/* 细竖线分隔:替代原中点字符,避免一行多点 */
.footer-sep {
width: 2rpx;
height: 20rpx;
background: var(--faint); /* 仅作装饰分隔,不承载信息 */
margin: 0 24rpx;
}
.footer-note {
font-size: 24rpx;
color: var(--muted);
letter-spacing: 2rpx;
}
/* 自定义 tabBar 是 fixed 脱离文档流的,这里补足它的高度,否则页脚会被盖住 */
.footer-space {
height: calc(100rpx + env(safe-area-inset-bottom));
}