feat: 技术支持工单/企微权限/开发版本管理/消息推送等迭代

This commit is contained in:
2026-08-04 21:32:13 +08:00
parent c8ea5a3119
commit 9d96c73246
1341 changed files with 0 additions and 195605 deletions
-283
View File
@@ -1,283 +0,0 @@
/* 地址管理 */
.address-page {
background: var(--color-background);
min-height: 100vh;
}
.address-item {
background: var(--color-card);
border-radius: var(--radius-lg);
margin: 12px var(--space-page);
padding: 16px;
box-shadow: var(--shadow-card);
}
.address-item-head {
display: flex;
align-items: center;
margin-bottom: 8px;
}
.address-item-name {
font-size: 15px;
font-weight: 700;
margin-right: 10px;
}
.address-item-phone {
font-size: 14px;
color: var(--color-on-surface-variant);
}
.address-default-tag {
margin-left: auto;
padding: 2px 8px;
border-radius: 999px;
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
font-size: 11px;
}
.address-item-detail {
display: block;
font-size: 13px;
color: var(--color-on-surface-variant);
line-height: 1.5;
margin-bottom: 12px;
}
.address-item-actions {
display: flex;
justify-content: flex-end;
}
.address-action {
font-size: 13px;
color: var(--color-heritage-red);
margin-left: 16px;
}
.address-fab {
position: fixed;
left: var(--space-page, 16px);
right: var(--space-page, 16px);
bottom: calc(16px + env(safe-area-inset-bottom, 0px));
height: 48px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 16px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
z-index: 50;
}
.address-form-field {
margin: 0 var(--space-page) 12px;
box-sizing: border-box;
}
.address-form-label {
display: block;
font-size: 13px;
line-height: 18px;
color: var(--color-on-surface-variant);
margin-bottom: 6px;
}
.address-form-input {
width: 100%;
height: 48px;
padding: 0 14px;
border: none;
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
font-size: 15px;
line-height: 48px;
color: var(--color-on-surface);
box-sizing: border-box;
display: flex;
align-items: center;
}
/* Taro H5:样式常落在包装节点,需强制原生控件铺满对齐 */
.address-form-input input,
.address-form-input .taro-input,
.address-form-input .weui-input {
width: 100% !important;
height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
background: transparent !important;
box-sizing: border-box !important;
font-size: 15px !important;
line-height: normal !important;
color: inherit;
}
.address-form-textarea {
width: 100%;
min-height: 88px;
padding: 12px 14px;
border: none;
outline: none;
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
font-size: 15px;
line-height: 1.5;
color: var(--color-on-surface);
box-sizing: border-box;
display: block;
resize: vertical;
-webkit-appearance: none;
appearance: none;
}
/* H5 原生 textarea:避免 Taro Textarea 受控输入卡死 */
.address-form-textarea--native {
font-family: inherit;
}
.address-form-textarea textarea,
.address-form-textarea .taro-textarea,
.address-form-textarea .weui-textarea {
width: 100% !important;
min-height: 64px !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
outline: none !important;
background: transparent !important;
box-sizing: border-box !important;
font-size: 15px !important;
line-height: 1.5 !important;
color: inherit;
resize: none;
}
.address-form-row {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0 var(--space-page) 12px;
padding: 12px 14px;
min-height: 48px;
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
box-sizing: border-box;
}
.address-form-error {
display: block;
margin: -6px var(--space-page) 12px;
font-size: 12px;
color: var(--color-heritage-red);
}
.region-picker-overlay {
position: fixed;
inset: 0;
z-index: 1000;
background: rgba(26, 26, 26, 0.45);
display: flex;
align-items: flex-end;
justify-content: center;
}
.region-picker-sheet {
width: 100%;
background: #fff;
border-radius: 16px 16px 0 0;
padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
max-height: 56vh;
display: flex;
flex-direction: column;
}
.region-picker-toolbar {
display: flex;
align-items: stretch;
padding: 0 16px;
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
flex-shrink: 0;
}
.region-picker-tabs {
flex: 1;
display: flex;
align-items: stretch;
gap: 28px;
min-width: 0;
}
.region-picker-tab {
position: relative;
padding: 14px 0 12px;
font-size: 15px;
line-height: 22px;
color: var(--color-on-surface-variant);
white-space: nowrap;
}
.region-picker-tab.active {
color: var(--color-on-surface);
font-weight: 500;
}
.region-picker-tab.active::after {
content: '';
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 2px;
background: var(--color-heritage-red);
border-radius: 1px;
}
.region-picker-tab.disabled {
opacity: 0.45;
}
.region-picker-confirm {
flex-shrink: 0;
padding: 14px 0 12px 12px;
font-size: 15px;
line-height: 22px;
color: var(--color-on-surface-variant);
}
.region-picker-confirm.ready {
color: var(--color-heritage-red);
font-weight: 500;
}
.region-picker-list {
flex: 1;
min-height: 0;
max-height: 40vh;
padding: 4px 0 8px;
}
.region-picker-option {
padding: 14px 20px;
font-size: 16px;
line-height: 24px;
color: var(--color-on-surface);
}
.region-picker-option.selected {
color: var(--color-heritage-red);
}
.region-picker-option--all {
font-weight: 500;
}
-97
View File
@@ -1,97 +0,0 @@
/* 全局基础类(对齐 shared-ui / h5-user,适配 Taro */
.app-page-title {
margin: 0;
font-family: var(--font-headline);
font-size: 18px;
font-weight: 700;
line-height: 26px;
color: var(--color-heritage-red);
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.full-bleed {
width: 100%;
margin-left: 0;
margin-right: 0;
}
.inset-page {
padding-left: var(--space-page);
padding-right: var(--space-page);
box-sizing: border-box;
}
.u-card {
background: var(--color-card);
border-radius: var(--radius-lg);
margin: 12px var(--space-page);
padding: 16px;
box-shadow: var(--shadow-card);
box-sizing: border-box;
}
.u-muted {
color: var(--color-subtle-gray);
font-size: 13px;
}
.u-title {
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
margin: 0 0 8px;
color: var(--color-on-surface);
}
.u-btn {
display: flex;
align-items: center;
justify-content: center;
border: none;
border-radius: var(--radius-md);
padding: 12px 18px;
font-size: 15px;
font-weight: 600;
line-height: 1.2;
background: var(--color-heritage-red);
color: #fff;
}
.u-btn--block {
width: 100%;
}
.u-btn--ghost {
background: transparent;
color: var(--color-heritage-red);
border: 1px solid var(--color-heritage-red);
}
.u-btn:active {
opacity: 0.85;
}
.u-empty {
text-align: center;
padding: 48px 24px;
color: var(--color-subtle-gray);
font-size: 14px;
}
.u-safe-top {
padding-top: env(safe-area-inset-top, 0px);
}
.text-primary {
color: var(--color-heritage-red);
}
.amount-lg {
font-family: var(--font-headline);
font-size: 24px;
font-weight: 700;
color: var(--color-heritage-red);
}
-263
View File
@@ -1,263 +0,0 @@
/* 好客权益 */
.benefit-page {
background: var(--color-background);
}
.benefit-header {
position: sticky;
top: 0;
z-index: 50;
background: var(--color-background);
box-sizing: border-box;
}
.benefit-header__content {
position: relative;
display: flex;
align-items: center;
width: 100%;
}
.benefit-header-title {
position: absolute;
left: 0;
right: 0;
top: var(--nav-status-bar-height);
height: var(--nav-content-height);
line-height: var(--nav-content-height);
text-align: center;
padding: 0 48px;
box-sizing: border-box;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
color: var(--color-heritage-red);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
pointer-events: none;
z-index: 1;
}
.benefit-header-city {
display: flex;
align-items: center;
color: var(--color-heritage-red);
font-size: 12px;
font-weight: 500;
max-width: 30vw;
position: relative;
z-index: 2;
}
.benefit-header__share .page-nav-bar__btn {
background: transparent;
}
.benefit-header__share .page-nav-bar__icon {
color: var(--color-heritage-red);
}
.benefit-header-city-pin {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--color-heritage-red);
margin-right: 4px;
flex-shrink: 0;
}
.benefit-main {
padding: 16px var(--space-page) 24px;
}
.benefit-hero {
position: relative;
overflow: hidden;
padding: 16px;
border-radius: var(--radius-lg);
background: var(--color-card);
border: 1px solid rgba(226, 190, 188, 0.2);
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
margin-bottom: 16px;
}
.benefit-hero-top {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 16px;
}
.benefit-hero-label {
display: block;
font-size: 12px;
color: var(--color-on-surface-variant);
margin-bottom: 4px;
}
.benefit-hero-amount {
display: flex;
align-items: baseline;
color: var(--color-heritage-red);
}
.benefit-hero-symbol {
font-family: var(--font-headline);
font-size: 28px;
font-weight: 700;
}
.benefit-hero-value {
font-family: var(--font-headline);
font-size: 40px;
font-weight: 700;
line-height: 1;
}
.benefit-hero-logo {
width: 48px;
height: 48px;
border-radius: 12px;
background: rgba(166, 29, 36, 0.08);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-heritage-red);
font-weight: 700;
font-size: 18px;
overflow: hidden;
}
.benefit-hero-logo-img {
width: 28px;
height: 28px;
display: block;
}
.benefit-hero-cta {
height: 44px;
border-radius: var(--radius-full);
background: var(--color-heritage-red);
color: #fff;
font-size: 15px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
}
.benefit-tabs {
display: flex;
margin-bottom: 12px;
border-bottom: 1px solid var(--color-surface-container);
}
.benefit-tab {
margin-right: 24px;
padding: 10px 0;
font-size: 14px;
font-weight: 600;
color: var(--color-subtle-gray);
border-bottom: 2px solid transparent;
}
.benefit-tab--active {
color: var(--color-heritage-red);
border-bottom-color: var(--color-heritage-red);
}
.benefit-coupon {
position: relative;
background: var(--color-card);
border-radius: var(--radius-lg);
padding: 16px;
margin-bottom: 12px;
box-shadow: var(--shadow-card);
overflow: hidden;
}
.benefit-coupon-notch {
position: absolute;
left: -8px;
top: 50%;
width: 16px;
height: 16px;
margin-top: -8px;
border-radius: 50%;
background: var(--color-background);
}
.benefit-coupon-notch--right {
left: auto;
right: -8px;
}
.benefit-coupon-head {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 8px;
}
.benefit-coupon-name {
font-family: var(--font-headline);
font-size: 15px;
font-weight: 700;
color: var(--color-on-surface);
flex: 1;
margin-right: 8px;
}
.benefit-coupon-balance {
font-family: var(--font-headline);
font-size: 20px;
font-weight: 700;
color: var(--color-heritage-red);
}
.benefit-coupon-no {
display: block;
font-size: 11px;
color: var(--color-subtle-gray);
margin-bottom: 10px;
}
.benefit-progress {
height: 6px;
border-radius: 999px;
background: var(--color-surface-container);
overflow: hidden;
margin-bottom: 12px;
}
.benefit-progress-bar {
height: 100%;
background: var(--color-heritage-red);
border-radius: 999px;
}
.benefit-coupon-footer {
display: flex;
justify-content: space-between;
align-items: center;
}
.benefit-coupon-meta {
font-size: 12px;
color: var(--color-subtle-gray);
}
.benefit-coupon-btn {
padding: 6px 14px;
border-radius: var(--radius-full);
background: var(--color-heritage-red);
color: #fff;
font-size: 12px;
font-weight: 600;
}
.benefit-login-gate {
padding: 48px 24px;
text-align: center;
}
-316
View File
@@ -1,316 +0,0 @@
/* 首页(Tab 顶栏样式见 styles/nav-bar.css */
.tab-main-city-pin {
width: 14px;
height: 14px;
border-radius: 50%;
background: var(--color-heritage-red);
flex-shrink: 0;
position: relative;
}
.tab-main-city-pin::after {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 5px;
height: 5px;
margin: -2px 0 0 -2px;
border-radius: 50%;
background: #fff;
}
.tab-main-city-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 100px;
}
.home-page {
background: var(--color-background);
}
.home-promo-banner {
margin: 12px var(--space-page) 0;
border-radius: var(--radius-lg);
overflow: hidden;
background: var(--color-card);
box-shadow: var(--shadow-card);
aspect-ratio: 15 / 8;
}
.home-promo-banner-swiper {
width: 100%;
height: 100%;
}
.home-promo-banner-img {
width: 100%;
height: 100%;
display: block;
}
.home-aroma-nav {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin-top: 4px;
padding: 6px var(--space-page) 4px;
background: transparent;
border-bottom: none;
position: sticky;
top: 0;
z-index: 40;
background: rgba(250, 249, 247, 0.96);
}
.home-aroma-tabs {
display: flex;
align-items: center;
gap: 4px;
flex: 1;
min-width: 0;
}
.home-aroma-city {
flex-shrink: 0;
font-size: 11px;
color: var(--color-subtle-gray);
pointer-events: none;
max-width: 72px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.home-aroma-tab {
border: none;
background: transparent;
padding: 4px 10px;
font-family: var(--font-headline);
font-size: 14px;
font-weight: 600;
line-height: 22px;
color: var(--color-subtle-gray);
border-bottom: 2px solid transparent;
white-space: nowrap;
}
.home-aroma-tab--active {
color: var(--color-heritage-red);
border-bottom-color: var(--color-heritage-red);
}
.home-fulfillment-filters {
display: flex;
align-items: center;
gap: 8px;
padding: 4px var(--space-page) 2px;
overflow-x: auto;
}
.home-fulfillment-chip {
flex-shrink: 0;
padding: 4px 12px;
font-size: 12px;
line-height: 18px;
color: var(--color-subtle-gray);
background: rgba(0, 0, 0, 0.04);
border-radius: 999px;
}
.home-fulfillment-chip--active {
color: var(--color-heritage-red);
background: rgba(179, 38, 30, 0.1);
font-weight: 600;
}
.home-product-list {
display: flex;
flex-direction: column;
gap: 10px;
padding: 8px var(--space-page) 12px;
}
.home-aroma-section {
display: flex;
flex-direction: column;
gap: 10px;
scroll-margin-top: 48px;
}
.home-aroma-section + .home-aroma-section {
margin-top: 8px;
padding-top: 12px;
border-top: 1px solid rgba(0, 0, 0, 0.04);
}
.home-aroma-section-title {
font-family: var(--font-headline);
font-size: 15px;
font-weight: 700;
line-height: 22px;
color: var(--color-on-surface);
padding: 2px 2px 0;
}
.home-empty--section {
padding: 16px 0 8px;
}
.home-product-card {
background: var(--color-card);
border-radius: 12px;
overflow: hidden;
box-shadow: var(--shadow-card);
}
.home-product-card-inner {
display: flex;
align-items: stretch;
gap: 10px;
padding: 10px;
}
.home-product-thumb-wrap {
flex-shrink: 0;
width: 88px;
height: 88px;
border-radius: 8px;
overflow: hidden;
background: var(--color-surface-container);
}
.home-product-thumb {
width: 100%;
height: 100%;
display: block;
}
.home-product-thumb--empty {
background: var(--color-surface-container);
}
.home-product-main {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
}
.home-product-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 8px;
}
.home-product-name {
font-family: var(--font-headline);
font-size: 14px;
font-weight: 600;
line-height: 20px;
color: var(--color-on-surface);
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.home-product-price {
font-size: 15px;
font-weight: 700;
line-height: 20px;
color: var(--color-heritage-red);
flex-shrink: 0;
}
.home-product-sub {
font-size: 11px;
color: var(--color-subtle-gray);
line-height: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.home-product-footer {
margin-top: 2px;
}
.home-product-actions {
margin-top: auto;
padding-top: 4px;
display: flex;
justify-content: flex-end;
gap: 6px;
}
.home-pickup-btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 4px 10px;
border-radius: var(--radius-full);
background: var(--color-aged-amber);
color: #5c4500;
font-size: 11px;
font-weight: 600;
line-height: 16px;
border: none;
}
.home-buy-btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 4px 12px;
border-radius: var(--radius-full);
background: var(--color-heritage-red);
color: #fff;
font-size: 11px;
font-weight: 600;
line-height: 16px;
border: none;
}
.home-promo-footer {
margin: 0 var(--space-page) 8px;
border-radius: var(--radius-lg);
overflow: hidden;
background: var(--color-card);
box-shadow: var(--shadow-card);
aspect-ratio: 15 / 4;
}
.home-promo-footer-img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.home-empty {
text-align: center;
padding: 32px 24px;
color: var(--color-subtle-gray);
font-size: 13px;
}
.home-page .coupon-badge {
position: relative;
display: inline-flex;
align-items: center;
background: var(--color-aged-amber);
color: var(--color-on-secondary-container);
padding: 2px 8px;
border-radius: 2px;
font-family: var(--font-label);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.02em;
line-height: 16px;
}
-44
View File
@@ -1,44 +0,0 @@
.legal-page .legal-body {
min-height: calc(100vh - var(--nav-bar-height, 88px));
padding-top: 8px;
padding-bottom: 40px;
box-sizing: border-box;
background: var(--color-background, #f7f4ef);
}
.legal-updated {
display: block;
font-size: 12px;
color: #8d706e;
margin-bottom: 12px;
line-height: 1.5;
}
.legal-intro {
display: block;
font-size: 14px;
line-height: 1.75;
color: #1f1a17;
margin-bottom: 20px;
}
.legal-section {
margin-bottom: 18px;
}
.legal-heading {
display: block;
font-size: 15px;
font-weight: 600;
color: #1f1a17;
margin-bottom: 8px;
line-height: 1.5;
}
.legal-paragraph {
display: block;
font-size: 13px;
line-height: 1.75;
color: #3d3530;
margin-bottom: 8px;
}
-376
View File
@@ -1,376 +0,0 @@
/* 登录页(对齐 h5-user login-page */
.login-page {
min-height: 100vh;
display: flex;
flex-direction: column;
background: var(--color-background);
color: var(--color-on-surface);
box-sizing: border-box;
padding-top: var(--nav-status-bar-height, 20px);
}
.login-header {
padding: 48px var(--space-page) 32px;
display: flex;
flex-direction: column;
align-items: center;
}
.login-logo-wrap {
position: relative;
width: 200px;
height: 72px;
margin-bottom: 28px;
}
.login-logo {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.login-logo-img {
width: 100%;
height: 100%;
}
.login-logo-badge {
position: absolute;
bottom: -8px;
right: -8px;
background: var(--color-heritage-red);
color: #fff;
font-size: 10px;
font-weight: 700;
padding: 2px 8px;
border-radius: 999px;
line-height: 1.4;
}
.login-welcome {
text-align: center;
}
.login-welcome-title {
display: block;
font-family: var(--font-headline);
font-size: 20px;
font-weight: 600;
line-height: 28px;
color: var(--color-ink-black, #1a1a1a);
letter-spacing: -0.01em;
}
.login-welcome-sub {
display: block;
margin-top: 8px;
font-size: 16px;
line-height: 24px;
color: var(--color-on-surface-variant);
opacity: 0.8;
}
.login-main {
flex: 1;
padding: 0 var(--space-page) 32px;
width: 100%;
box-sizing: border-box;
}
.login-card {
background: var(--color-card);
border-radius: var(--radius-xl);
padding: 24px;
box-shadow: var(--shadow-card);
}
.login-card-title {
display: block;
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
line-height: 26px;
margin-bottom: 16px;
color: var(--color-on-surface);
}
.login-field {
display: flex;
align-items: center;
border-bottom: 1px solid var(--color-surface-variant, #e8e4de);
padding-bottom: 8px;
margin-bottom: 16px;
min-height: 40px;
}
.login-field-prefix {
font-size: 16px;
font-weight: 500;
line-height: 32px;
color: var(--color-on-surface);
margin-right: 12px;
flex-shrink: 0;
}
.login-field-input {
flex: 1;
border: none;
background: transparent;
padding: 0;
height: 32px;
font-size: 16px;
line-height: 32px;
color: var(--color-on-surface);
min-width: 0;
box-sizing: border-box;
display: flex;
align-items: center;
}
.login-field-input input,
.login-field-input .taro-input,
.login-field-input .weui-input {
width: 100% !important;
height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
background: transparent !important;
box-sizing: border-box !important;
font-size: 16px !important;
line-height: normal !important;
color: inherit;
}
.login-get-code {
flex-shrink: 0;
border: none;
background: transparent;
padding: 0;
margin: 0;
font-size: 14px;
font-weight: 500;
color: var(--color-heritage-red);
line-height: 1.4;
}
.login-get-code--disabled {
color: var(--color-subtle-gray);
}
.login-msg {
display: block;
font-size: 13px;
color: var(--color-heritage-red);
margin-bottom: 12px;
}
.login-msg--hint {
color: var(--color-success, #2d6a4f);
}
.login-sms-btn {
width: 100%;
height: 48px;
margin-top: 8px;
border: 1.5px solid var(--color-heritage-red, #a61d24);
border-radius: var(--radius-lg);
background: #fff;
color: var(--color-heritage-red, #a61d24);
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
padding: 0;
box-sizing: border-box;
}
.login-sms-btn__text {
color: var(--color-heritage-red, #a61d24);
font-size: 18px;
font-weight: 600;
line-height: 26px;
}
.login-sms-btn:active {
background: rgba(166, 29, 36, 0.06);
transform: scale(0.98);
}
.login-sms-btn--disabled {
opacity: 0.6;
pointer-events: none;
}
.login-divider {
display: flex;
align-items: center;
gap: 16px;
margin: 32px 0;
}
.login-divider-line {
flex: 1;
height: 1px;
background: linear-gradient(
90deg,
transparent 0%,
var(--color-surface-variant, #e8e4de) 50%,
transparent 100%
);
}
.login-divider-text {
font-size: 12px;
font-weight: 500;
letter-spacing: 0.05em;
color: var(--color-subtle-gray);
flex-shrink: 0;
}
.login-wechat-btn,
.login-phone-quick-btn {
width: 100%;
height: 56px;
border: none;
border-radius: var(--radius-lg);
background: var(--color-heritage-red);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
line-height: 1;
padding: 0;
margin: 0;
box-sizing: border-box;
box-shadow: 0 8px 24px rgba(166, 29, 36, 0.1);
}
.login-wechat-btn:active,
.login-phone-quick-btn:active {
transform: scale(0.98);
}
.login-wechat-btn--disabled,
.login-phone-quick-btn--disabled {
opacity: 0.7;
pointer-events: none;
}
.login-wechat-btn__text,
.login-phone-quick-btn__text {
color: #fff;
font-size: 18px;
font-weight: 600;
line-height: 26px;
}
/* 重置小程序 Button 默认样式,避免绿边/微信绿 */
.login-phone-quick-btn::after {
border: none;
}
.login-footer {
padding: 0 var(--space-page) calc(env(safe-area-inset-bottom, 0px) + 32px);
width: 100%;
box-sizing: border-box;
}
.login-agreement {
display: flex;
align-items: flex-start;
gap: 8px;
margin: 12px 0 16px;
}
.login-agreement-check {
width: 16px;
height: 16px;
margin-top: 0;
border-radius: 4px;
border: 1px solid var(--color-outline, #c8c4be);
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 11px;
line-height: 1;
color: #fff;
box-sizing: border-box;
}
.login-agreement-check--on {
background: var(--color-heritage-red);
border-color: var(--color-heritage-red);
}
.login-agreement-text {
flex: 1;
font-size: 12px;
font-weight: 500;
line-height: 16px;
letter-spacing: 0.05em;
color: var(--color-on-surface-variant);
}
.login-agreement-link {
color: var(--color-heritage-red);
}
.login-nav {
min-height: 44px;
padding: 8px var(--space-page) 0;
display: flex;
align-items: center;
box-sizing: border-box;
}
.login-nav-back {
min-width: 72px;
min-height: 40px;
display: flex;
align-items: center;
gap: 4px;
color: var(--color-on-surface);
font-size: 16px;
font-weight: 600;
}
.login-nav-back-icon {
font-size: 30px;
line-height: 1;
}
.login-cancel-btn {
width: 100%;
min-height: 48px;
margin-top: 20px;
border: 1px solid var(--color-heritage-red);
border-radius: var(--radius-lg);
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
color: var(--color-heritage-red);
font-size: 16px;
font-weight: 700;
background: #fff;
}
.login-cancel-hint {
display: block;
margin-top: 10px;
text-align: center;
color: var(--color-on-surface-variant);
font-size: 13px;
}
-561
View File
@@ -1,561 +0,0 @@
/* 我的 */
.page-shell.mine-page {
min-height: auto;
padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
}
.mine-page {
background: var(--color-background);
}
.mine-header {
position: relative;
z-index: 2;
padding: 16px var(--space-page) 44px;
background: linear-gradient(135deg, #820012 0%, var(--color-heritage-red) 40%, #d4a373 100%);
overflow: visible;
}
.mine-header-texture {
position: absolute;
inset: 0;
opacity: 0.08;
background: repeating-linear-gradient(
45deg,
transparent,
transparent 8px,
rgba(255, 255, 255, 0.04) 8px,
rgba(255, 255, 255, 0.04) 16px
);
pointer-events: none;
}
.mine-profile {
position: relative;
display: flex;
align-items: center;
z-index: 3;
}
.mine-avatar-wrap {
position: relative;
z-index: 4;
flex-shrink: 0;
margin-right: 12px;
}
.mine-avatar-wrap--action {
cursor: pointer;
}
.mine-profile-meta {
min-width: 0;
flex: 1;
}
.mine-avatar-status {
position: absolute;
left: 50%;
bottom: -4px;
transform: translateX(-50%);
padding: 2px 8px;
border-radius: 999px;
font-size: 9px;
font-weight: 600;
line-height: 1.3;
white-space: nowrap;
border: 1px solid rgba(255, 255, 255, 0.85);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
.mine-avatar-status--ok {
background: #07c160;
color: #fff;
}
.mine-avatar-status--pending {
background: #fff;
color: var(--color-heritage-red);
}
.mine-avatar-badge {
position: absolute;
right: -4px;
bottom: -2px;
background: var(--color-heritage-red);
color: #fff;
font-size: 9px;
padding: 2px 6px;
border-radius: 999px;
}
.mine-member-tag--wechat {
background: rgba(255, 255, 255, 0.25);
}
.mine-avatar {
width: 64px;
height: 64px;
border-radius: 50%;
border: 2px solid rgba(255, 255, 255, 0.35);
background: #fff;
overflow: hidden;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
color: var(--color-heritage-red);
font-size: 24px;
font-weight: 700;
box-sizing: border-box;
}
.mine-avatar--wx-ok {
border-color: #07c160;
box-shadow: 0 0 0 2px rgba(7, 193, 96, 0.25);
}
.mine-avatar--wx-pending {
border-color: rgba(255, 255, 255, 0.9);
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35);
}
.mine-avatar-wrap .mine-avatar {
margin-right: 0;
}
.mine-profile > .mine-avatar {
margin-right: 12px;
}
.mine-avatar-img {
width: 100%;
height: 100%;
}
.mine-profile-name {
display: block;
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
color: #fff;
margin-bottom: 2px;
}
.mine-member-tag {
display: inline-block;
padding: 2px 8px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.15);
font-size: 10px;
color: rgba(255, 255, 255, 0.9);
}
.mine-profile-retry {
display: block;
margin-top: 6px;
font-size: 11px;
color: #fff;
text-decoration: underline;
}
.mine-main {
margin-top: -28px;
position: relative;
z-index: 1;
padding: 0 var(--space-page) 0;
}
.mine-card {
background: var(--color-card);
border-radius: var(--radius-lg);
padding: 12px;
box-shadow: var(--shadow-card);
margin-bottom: 8px;
}
.mine-card:last-of-type {
margin-bottom: 0;
}
.mine-card-head {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.mine-card-title {
font-family: var(--font-headline);
font-size: 15px;
font-weight: 700;
color: var(--color-on-surface);
}
.mine-card-link {
font-size: 12px;
color: var(--color-subtle-gray);
}
.mine-asset-panel {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px;
border-radius: var(--radius-md);
background: linear-gradient(135deg, #fff9e6 0%, #fff0c2 100%);
}
.mine-asset-label {
display: block;
font-size: 12px;
color: rgba(87, 69, 0, 0.8);
margin-bottom: 4px;
}
.mine-asset-amount {
display: flex;
align-items: baseline;
color: var(--color-heritage-red);
}
.mine-asset-currency {
font-size: 16px;
font-weight: 700;
margin-right: 2px;
}
.mine-asset-value {
font-family: var(--font-headline);
font-size: 24px;
font-weight: 700;
}
.mine-asset-cta {
padding: 6px 14px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 12px;
font-weight: 600;
}
.mine-order-grid {
display: flex;
justify-content: space-around;
}
.mine-order-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 4px;
position: relative;
width: 33%;
}
.mine-order-icon {
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 4px;
}
.mine-order-icon-img {
width: 28px;
height: 28px;
display: block;
}
.mine-order-badge {
position: absolute;
top: 2px;
right: 18%;
min-width: 16px;
height: 16px;
padding: 0 4px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 10px;
line-height: 16px;
text-align: center;
}
.mine-order-label {
font-size: 12px;
color: var(--color-on-surface);
}
.mine-service-grid {
display: flex;
flex-wrap: wrap;
}
.mine-service-item {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
padding: 6px 4px;
box-sizing: border-box;
}
.mine-service-icon {
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 4px;
}
.mine-service-icon-img {
width: 28px;
height: 28px;
display: block;
}
.mine-service-label {
font-size: 11px;
color: var(--color-on-surface);
text-align: center;
}
.mine-footer {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 0 0;
margin-top: 8px;
}
.mine-version {
font-size: 12px;
color: var(--color-subtle-gray);
}
.mine-logout {
display: inline-flex;
padding: 6px 18px;
border-radius: var(--radius-full);
border: 1px solid rgba(166, 29, 36, 0.3);
color: var(--color-heritage-red);
font-size: 13px;
font-weight: 600;
}
.mine-login-gate {
margin-top: -24px;
margin-left: var(--space-page);
margin-right: var(--space-page);
margin-bottom: 8px;
padding: 16px;
position: relative;
z-index: 2;
background: var(--color-card);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
box-sizing: border-box;
}
.mine-login-gate-hint {
text-align: center;
padding: 24px 0 16px;
color: var(--color-subtle-gray);
font-size: 14px;
}
.mine-login-btn {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
box-sizing: border-box;
padding: 12px 18px;
border-radius: var(--radius-md);
background: var(--color-heritage-red);
color: #fff;
font-size: 15px;
font-weight: 600;
}
.mine-profile-sheet-mask {
position: fixed;
inset: 0;
z-index: 1000;
background: rgba(20, 16, 14, 0.45);
display: flex;
align-items: flex-end;
justify-content: center;
}
.mine-profile-sheet {
width: 100%;
max-width: 480px;
box-sizing: border-box;
background: #fff;
border-radius: 20px 20px 0 0;
padding: 20px 20px calc(20px + env(safe-area-inset-bottom, 0px));
}
.mine-profile-sheet-title {
display: block;
font-size: 17px;
font-weight: 700;
color: #1f1a17;
text-align: center;
}
.mine-profile-sheet-hint {
display: block;
margin-top: 8px;
font-size: 12px;
line-height: 1.5;
color: #8d706e;
text-align: center;
}
.mine-profile-avatar-btn {
margin: 20px auto 0;
padding: 0;
width: auto;
background: transparent;
border: none;
line-height: 1.2;
display: flex;
flex-direction: column;
align-items: center;
}
.mine-profile-avatar-btn::after {
border: none;
}
.mine-profile-avatar-preview {
width: 88px;
height: 88px;
border-radius: 50%;
overflow: hidden;
border: 2px solid rgba(166, 29, 36, 0.25);
background: #f7f4ef;
}
.mine-profile-avatar-tip {
margin-top: 8px;
font-size: 12px;
color: var(--color-heritage-red);
font-weight: 600;
}
.mine-profile-nickname-wrap {
margin-top: 18px;
}
.mine-profile-nickname-label {
display: block;
font-size: 13px;
color: #5c504c;
margin-bottom: 8px;
}
.mine-profile-nickname-input {
width: 100%;
box-sizing: border-box;
height: 44px;
padding: 0 14px;
border-radius: 12px;
background: #f7f4ef;
font-size: 15px;
color: #1f1a17;
}
.mine-profile-sheet-actions {
margin-top: 22px;
display: flex;
gap: 12px;
}
.mine-profile-sheet-cancel,
.mine-profile-sheet-save {
flex: 1;
height: 44px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
font-weight: 600;
}
.mine-profile-sheet-cancel {
background: #f0ebe4;
color: #5c504c;
}
.mine-profile-sheet-save {
background: var(--color-heritage-red);
color: #fff;
}
.mine-profile-sheet-save.is-disabled {
opacity: 0.65;
pointer-events: none;
}
.mine-qualification-mask {
position: fixed;
inset: 0;
z-index: 1200;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
background: rgba(0, 0, 0, 0.55);
box-sizing: border-box;
}
.mine-qualification-scroll {
flex: 1;
width: 100%;
height: 100%;
max-width: none;
max-height: none;
border-radius: 0;
overflow: hidden;
background: transparent;
}
.mine-qualification-body {
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
min-height: 100%;
width: 100%;
padding: 24px 16px 56px;
}
.mine-qualification-img {
display: block;
width: 100%;
height: auto;
pointer-events: none;
}
.mine-qualification-hint {
position: absolute;
left: 0;
right: 0;
bottom: calc(12px + env(safe-area-inset-bottom, 0px));
z-index: 1;
text-align: center;
font-size: 12px;
color: rgba(255, 255, 255, 0.9);
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
pointer-events: none;
}
-302
View File
@@ -1,302 +0,0 @@
/* 页面壳 + 三种顶栏(刘海屏 / 胶囊适配) */
.page-shell {
min-height: 100vh;
background: var(--color-background);
box-sizing: border-box;
}
.page-shell--tab {
padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
}
/* 小程序原生 tabBar 页面窗口已扣除底栏,避免滑到底多余空白 */
.page-shell--tab.page-shell--native-tabbar {
padding-bottom: 12px;
}
.page-shell--scroll,
.page-shell--sub,
.page-shell--plain {
padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
}
.page-shell--fixed-footer {
padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
}
/* 无自定义 Tab 顶栏:贴顶(标题走小程序/H5 系统导航栏) */
.page-shell.no-tab-header,
.page-shell.h5-no-tab-header {
--nav-bar-height: 0px;
--nav-status-bar-height: 0px;
--nav-content-height: 0px;
}
.page-shell.no-tab-header .home-aroma-nav,
.page-shell.h5-no-tab-header .home-aroma-nav {
top: 0;
}
.tab-main-header__content {
position: relative;
display: flex;
align-items: center;
justify-content: flex-end;
width: 100%;
}
.tab-main-header__title {
position: absolute;
left: 0;
right: 0;
top: var(--nav-status-bar-height);
height: var(--nav-content-height);
line-height: var(--nav-content-height);
text-align: center;
padding: 0 48px;
box-sizing: border-box;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
color: var(--color-heritage-red);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
pointer-events: none;
z-index: 1;
}
.tab-main-header__extra {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
max-width: 40vw;
}
.tab-main-header__extra-inner {
display: flex;
align-items: center;
color: var(--color-heritage-red);
font-size: 12px;
font-weight: 500;
}
.tab-main-header__extra-inner .tab-main-city-label {
margin-left: 4px;
}
/* ── 滚动透明顶栏(商品/门店详情) ── */
.page-nav-bar {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 50;
background: transparent;
box-sizing: border-box;
transition: background 0.3s, box-shadow 0.3s;
}
.page-nav-bar--solid {
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05);
}
.page-nav-bar__content {
position: relative;
display: flex;
align-items: center;
width: 100%;
}
.page-nav-bar__btn {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
border-radius: 999px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.8);
flex-shrink: 0;
z-index: 2;
}
.page-nav-bar__btn--back {
left: 0;
}
.page-nav-bar__btn--right {
left: auto;
right: 0;
}
/* 右侧操作槽:固定贴着内容区右缘(内容区已用 navBarPaddingRight 避让微信菜单) */
.page-nav-bar__right-slot {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
}
.page-nav-bar__right-slot .page-nav-bar__btn {
position: relative;
top: auto;
left: auto;
right: auto;
transform: none;
}
.page-nav-bar--solid .page-nav-bar__btn {
background: transparent;
}
.page-nav-bar__btn--placeholder {
background: transparent;
pointer-events: none;
}
.page-nav-bar__icon {
font-size: 32px;
line-height: 1;
color: var(--color-ink-black);
font-weight: 300;
margin-top: -2px;
}
.page-nav-bar__icon--share {
font-size: 18px;
font-weight: 600;
}
/* 小程序分享 Button 去默认样式,对齐圆形胶囊按钮 */
.page-nav-bar__share-btn {
padding: 0 !important;
margin: 0 !important;
border: none !important;
line-height: 1 !important;
background: rgba(255, 255, 255, 0.8) !important;
box-sizing: border-box;
}
.page-nav-bar__share-btn::after {
border: none !important;
}
.page-nav-bar--solid .page-nav-bar__share-btn {
background: transparent !important;
}
.page-nav-bar__title {
position: absolute;
left: 0;
right: 0;
top: var(--nav-status-bar-height);
height: var(--nav-content-height);
line-height: var(--nav-content-height);
text-align: center;
/* 左右等宽留白,避免右侧分享/胶囊导致标题视觉偏左 */
padding: 0 max(72px, var(--nav-padding-right, 96px));
box-sizing: border-box;
opacity: 0;
font-family: var(--font-headline);
font-size: 15px;
font-weight: 600;
color: var(--color-ink-black);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transition: opacity 0.3s;
pointer-events: none;
z-index: 1;
}
.page-nav-bar__title--visible {
opacity: 1;
}
.page-with-nav-bar {
padding-top: var(--nav-bar-height, 56px);
box-sizing: border-box;
}
/* ── 子页面固定实底顶栏 ── */
.sub-page-header {
position: sticky;
top: 0;
z-index: 50;
background: var(--color-background);
box-shadow: var(--shadow-card);
box-sizing: border-box;
}
.sub-page-header__content {
position: relative;
display: flex;
align-items: center;
justify-content: flex-end;
width: 100%;
}
.sub-page-header__title {
position: absolute;
left: 0;
right: 0;
top: var(--nav-status-bar-height);
height: var(--nav-content-height);
line-height: var(--nav-content-height);
text-align: center;
padding: 0 48px;
box-sizing: border-box;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
color: var(--color-heritage-red);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
pointer-events: none;
z-index: 1;
}
.sub-page-header__back {
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
}
.sub-page-header__back-icon {
font-size: 32px;
line-height: 1;
color: var(--color-heritage-red);
font-weight: 300;
margin-top: -2px;
}
.sub-page-header__right {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
z-index: 2;
}
.sub-page-body {
padding-top: 12px;
box-sizing: border-box;
}
-490
View File
@@ -1,490 +0,0 @@
/* 订单确认 / 支付 / 订单列表 / 订单详情 */
.order-confirm-page,
.pay-page,
.orders-page,
.order-detail-page {
background: var(--color-background);
min-height: 100vh;
}
.order-detail-page--with-pay .sub-page-body,
.order-detail-page--with-actions .sub-page-body {
padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
}
.order-detail-pay-bar {
justify-content: space-between;
gap: 12px;
}
.order-detail-actionbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 50;
display: flex;
align-items: center;
gap: 10px;
padding: 10px var(--space-page) calc(10px + env(safe-area-inset-bottom, 0px));
background: var(--color-card, #fff);
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.06);
box-sizing: border-box;
}
.order-detail-actionbar--with-pay {
justify-content: space-between;
}
.order-detail-cs-btn {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
min-width: 96px;
height: 40px;
padding: 0 14px;
margin: 0;
border: 1px solid var(--color-outline, #c8c4be);
border-radius: 999px;
background: transparent;
color: var(--color-on-surface);
font-size: 14px;
font-weight: 600;
line-height: 1.2;
box-sizing: border-box;
}
.order-detail-cs-btn::after {
border: none;
}
.order-detail-actionbar .order-confirm-total {
flex: 1;
min-width: 0;
}
.order-detail-actionbar .order-confirm-submit {
flex-shrink: 0;
}
.order-confirm-submit--disabled {
opacity: 0.55;
pointer-events: none;
}
.order-card {
background: var(--color-card);
border-radius: var(--radius-lg);
margin: 0 var(--space-page) 12px;
padding: 16px;
box-shadow: var(--shadow-card);
}
.order-card--warn {
background: rgba(166, 29, 36, 0.06);
box-shadow: none;
border: 1px solid rgba(166, 29, 36, 0.15);
}
.order-warn-text {
display: block;
font-size: 13px;
line-height: 1.5;
color: var(--color-heritage-red);
}
.order-card-title {
display: block;
font-family: var(--font-headline);
font-size: 15px;
font-weight: 700;
margin-bottom: 12px;
color: var(--color-on-surface);
}
.order-product-row {
display: flex;
align-items: center;
}
.order-product-thumb {
width: 72px;
height: 72px;
border-radius: 12px;
background: var(--color-surface-container);
margin-right: 12px;
flex-shrink: 0;
overflow: hidden;
}
.order-product-thumb-img {
width: 100%;
height: 100%;
}
.order-product-name {
display: block;
font-size: 15px;
font-weight: 600;
margin-bottom: 4px;
}
.order-product-price {
display: block;
color: var(--color-heritage-red);
font-weight: 700;
font-size: 16px;
}
.order-qty-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid var(--color-surface-container);
}
.order-qty-controls {
display: flex;
align-items: center;
}
.order-qty-btn {
width: 32px;
height: 32px;
border-radius: 8px;
background: var(--color-surface-container-low);
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
color: var(--color-on-surface);
}
.order-qty-btn--disabled {
opacity: 0.4;
pointer-events: none;
}
.order-qty-value {
margin: 0 14px;
font-size: 16px;
font-weight: 600;
min-width: 24px;
text-align: center;
}
.order-qty-hint {
display: block;
margin-top: 10px;
font-size: 13px;
color: var(--color-heritage-red);
line-height: 1.4;
text-align: center;
}
.order-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
font-size: 14px;
}
.order-row-label {
color: var(--color-on-surface-variant);
}
.order-row-value {
color: var(--color-on-surface);
font-weight: 500;
}
.order-row--address {
align-items: flex-start;
}
.order-row-value--wrap {
flex: 1;
text-align: right;
white-space: normal;
word-break: break-all;
line-height: 1.5;
}
.order-row-value--price {
color: var(--color-heritage-red);
font-weight: 700;
}
.order-confirm-bar,
.pay-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 50;
padding: 12px 16px calc(env(safe-area-inset-bottom, 0px) + 12px);
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.95);
border-top: 1px solid rgba(226, 190, 188, 0.1);
box-sizing: border-box;
}
.order-confirm-total {
flex: 1;
}
.order-confirm-total-label {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
}
.order-confirm-total-value {
font-family: var(--font-headline);
font-size: 22px;
font-weight: 700;
color: var(--color-heritage-red);
}
.order-confirm-submit {
height: 48px;
padding: 0 28px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 16px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
}
.order-confirm-submit--disabled {
background: #c9c5c0;
color: #fff;
opacity: 0.85;
pointer-events: none;
}
.order-tabs {
display: flex;
padding: 0 var(--space-page);
border-bottom: 1px solid var(--color-surface-container);
background: var(--color-background);
position: sticky;
top: var(--nav-bar-height, 56px);
z-index: 40;
}
.order-tab {
flex: 1;
text-align: center;
padding: 12px 0;
font-size: 14px;
font-weight: 600;
color: var(--color-subtle-gray);
border-bottom: 2px solid transparent;
}
.order-tab--active {
color: var(--color-heritage-red);
border-bottom-color: var(--color-heritage-red);
}
.order-list-item {
background: var(--color-card);
border-radius: var(--radius-lg);
margin: 12px var(--space-page);
padding: 16px;
box-shadow: var(--shadow-card);
}
.order-list-head {
display: flex;
justify-content: space-between;
margin-bottom: 12px;
}
.order-list-head-left {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.order-list-no {
font-size: 12px;
color: var(--color-subtle-gray);
}
.order-status-row {
display: flex;
align-items: center;
gap: 8px;
}
.order-proxy-badge {
flex-shrink: 0;
font-size: 11px;
font-weight: 600;
color: var(--color-heritage-red);
background: rgba(166, 29, 36, 0.08);
padding: 2px 6px;
border-radius: 4px;
}
.order-proxy-hint {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
margin: -4px 0 10px;
}
.order-list-status {
font-size: 13px;
font-weight: 600;
color: var(--color-heritage-red);
}
.order-list-body {
display: flex;
align-items: center;
}
.order-list-thumb {
width: 64px;
height: 64px;
border-radius: 10px;
background: var(--color-surface-container);
margin-right: 12px;
flex-shrink: 0;
overflow: hidden;
}
.order-list-thumb-img {
width: 100%;
height: 100%;
display: block;
}
.order-list-name {
display: block;
font-size: 14px;
font-weight: 600;
margin-bottom: 4px;
}
.order-list-meta-row {
display: flex;
align-items: center;
gap: 12px;
}
.order-list-meta {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
}
.order-list-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid var(--color-surface-container);
gap: 12px;
}
.order-list-pay-amount {
display: flex;
align-items: baseline;
gap: 6px;
min-width: 0;
}
.order-list-pay-btn {
flex-shrink: 0;
height: 32px;
padding: 0 16px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 13px;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
}
.pay-status {
text-align: center;
padding: 48px 24px;
}
.pay-status-icon {
width: 72px;
height: 72px;
border-radius: 50%;
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
font-size: 36px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 16px;
}
.pay-status-title {
display: block;
font-family: var(--font-headline);
font-size: 20px;
font-weight: 700;
margin-bottom: 8px;
}
.pay-status-amount {
display: block;
font-size: 28px;
font-weight: 700;
color: var(--color-heritage-red);
margin-bottom: 24px;
}
.pay-wechat-auth-card {
margin: 0 0 16px;
padding: 16px;
border-radius: 12px;
background: #fff;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
text-align: center;
}
.pay-wechat-auth-title {
display: block;
font-size: 16px;
font-weight: 600;
color: var(--color-on-surface);
margin-bottom: 8px;
}
.pay-wechat-auth-desc {
display: block;
font-size: 13px;
color: var(--color-muted, #999);
margin-bottom: 16px;
line-height: 1.5;
}
.pay-wechat-auth-msg {
display: block;
font-size: 13px;
color: var(--color-heritage-red, #a02d30);
line-height: 1.5;
text-align: center;
}
@@ -1,345 +0,0 @@
/* 商品详情页 — 对齐 h5-user ProductDetailPage */
.product-detail-page {
background: var(--color-background);
}
.product-detail-main {
padding-bottom: 24px;
}
.product-detail-hero {
background: var(--color-card);
}
.detail-carousel-wrap {
position: relative;
width: 100%;
aspect-ratio: 1;
overflow: hidden;
}
.detail-carousel {
width: 100%;
height: 100%;
}
.detail-carousel-item,
.detail-carousel-image,
.detail-carousel-placeholder {
width: 100%;
height: 100%;
}
.detail-carousel-placeholder {
background: var(--color-surface-container);
}
.detail-carousel-dots {
position: absolute;
bottom: 16px;
left: 0;
right: 0;
display: flex;
justify-content: center;
gap: 6px;
pointer-events: none;
}
.detail-carousel-dot {
height: 4px;
width: 6px;
border-radius: 999px;
background: rgba(153, 153, 153, 0.3);
}
.detail-carousel-dot--active {
width: 24px;
background: var(--color-heritage-red);
}
.product-detail-info {
padding: var(--space-md) var(--space-page) var(--space-lg);
}
.product-detail-price {
display: flex;
align-items: baseline;
gap: 2px;
margin-bottom: 8px;
}
.product-detail-price-symbol {
font-family: var(--font-headline);
font-size: 16px;
font-weight: 600;
color: var(--color-heritage-red);
}
.product-detail-price-value {
font-family: var(--font-headline);
font-size: 32px;
font-weight: 700;
line-height: 40px;
color: var(--color-heritage-red);
}
.product-detail-name {
display: block;
font-family: var(--font-headline);
font-size: 20px;
font-weight: 700;
line-height: 28px;
color: var(--color-ink-black);
margin-bottom: 4px;
}
.product-detail-subtitle {
display: block;
font-size: 14px;
line-height: 20px;
color: var(--color-on-surface-variant);
margin-bottom: 24px;
}
.product-detail-promo {
position: relative;
padding: 16px;
border-radius: var(--radius-lg);
background: linear-gradient(135deg, #fff9e6 0%, #fff0c2 100%);
border: 1px solid rgba(255, 191, 0, 0.1);
overflow: hidden;
}
.product-detail-promo-glow {
position: absolute;
top: -16px;
right: -16px;
width: 80px;
height: 80px;
border-radius: 50%;
background: rgba(166, 29, 36, 0.05);
}
.product-detail-promo-head {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 8px;
position: relative;
z-index: 1;
}
.product-detail-promo-icon {
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.product-detail-promo-icon-text {
color: #fff;
font-size: 16px;
font-weight: 700;
}
.product-detail-promo-title {
flex: 1;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
line-height: 22px;
color: var(--color-on-secondary-container);
}
.product-detail-promo-amount {
color: var(--color-heritage-red);
}
.product-detail-promo-desc {
display: block;
font-size: 14px;
line-height: 22px;
color: rgba(87, 69, 0, 0.8);
padding-left: 52px;
position: relative;
z-index: 1;
}
.product-detail-content {
background: var(--color-card);
border-radius: 24px 24px 0 0;
padding-top: var(--space-lg);
padding-bottom: 24px;
}
.product-detail-section-head {
display: flex;
align-items: center;
gap: 8px;
padding: 0 var(--space-page);
margin-bottom: var(--space-md);
}
.product-detail-section-bar {
width: 4px;
height: 20px;
border-radius: 999px;
background: var(--color-heritage-red);
}
.product-detail-section-title {
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
color: var(--color-ink-black);
}
.product-detail-banner {
width: 100%;
display: block;
}
.product-detail-copy {
padding: var(--space-lg) var(--space-page);
}
.product-detail-story {
text-align: center;
margin-bottom: 24px;
}
.product-detail-story-title {
display: block;
font-family: var(--font-headline);
font-size: 18px;
font-weight: 700;
color: var(--color-heritage-red);
margin-bottom: 8px;
}
.product-detail-story-text {
display: block;
font-size: 14px;
line-height: 22px;
color: var(--color-on-surface-variant);
}
.product-detail-features {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.product-detail-feature {
width: calc(50% - 8px);
background: var(--color-surface-container-low);
border: 1px solid rgba(226, 190, 188, 0.3);
border-radius: var(--radius-lg);
padding: 16px;
text-align: center;
box-sizing: border-box;
}
.product-detail-feature-icon {
display: block;
font-size: 20px;
color: var(--color-heritage-red);
}
.product-detail-feature-title {
display: block;
font-family: var(--font-headline);
font-size: 14px;
font-weight: 600;
color: var(--color-ink-black);
margin-top: 8px;
}
.product-detail-feature-desc {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
margin-top: 4px;
}
.product-detail-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 50;
padding: 12px 16px calc(env(safe-area-inset-bottom, 0px) + 12px);
display: flex;
align-items: center;
gap: 16px;
background: rgba(255, 255, 255, 0.95);
border-top: 1px solid rgba(226, 190, 188, 0.1);
box-sizing: border-box;
}
.product-detail-bar-home {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
padding: 0 8px;
}
.product-detail-bar-home-icon {
width: 24px;
height: 24px;
}
.product-detail-bar-home-label {
font-size: 10px;
font-weight: 500;
color: var(--color-on-surface-variant);
}
.product-detail-pickup-btn {
flex: 1;
height: 48px;
border-radius: 999px;
background: transparent;
border: 1px solid var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
}
.product-detail-pickup-btn-text {
color: var(--color-heritage-red);
font-family: var(--font-headline);
font-size: 15px;
font-weight: 700;
}
.product-detail-buy-btn {
flex: 1;
height: 48px;
border-radius: 999px;
background: var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8px 24px rgba(166, 29, 36, 0.2);
}
.product-detail-buy-btn--disabled {
background: #c4c4c4;
box-shadow: none;
pointer-events: none;
}
.product-detail-buy-btn-text {
color: #fff;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
}
-651
View File
@@ -1,651 +0,0 @@
/* 核销 / 核销码 / 成功 / 权益明细 */
.redeem-page,
.redeem-code-page,
.redeem-success-page,
.benefit-detail-page,
.cs-page {
background: var(--color-background);
min-height: 100vh;
}
.redeem-hero {
margin: 16px var(--space-page);
padding: 24px 20px;
border-radius: var(--radius-lg);
background: linear-gradient(135deg, #fff9e6 0%, #fff0c2 100%);
text-align: center;
}
.redeem-hero-label {
display: block;
font-size: 13px;
color: rgba(87, 69, 0, 0.8);
margin-bottom: 8px;
}
.redeem-hero-amount {
font-family: var(--font-headline);
font-size: 36px;
font-weight: 700;
color: var(--color-heritage-red);
}
.redeem-input-wrap {
margin: 0 var(--space-page) 16px;
background: var(--color-card);
border-radius: var(--radius-lg);
padding: 16px;
box-shadow: var(--shadow-card);
}
.redeem-input {
width: 100%;
height: 52px;
font-size: 24px;
font-weight: 700;
line-height: 52px;
color: var(--color-heritage-red);
text-align: center;
box-sizing: border-box;
}
.redeem-input-placeholder {
color: var(--color-subtle-gray);
text-align: center;
}
/* 小程序原生 inputtext-align 需落到组件自身与内部节点 */
.redeem-input,
.redeem-input input,
.redeem-input .taro-input,
.redeem-input .weui-input {
width: 100% !important;
height: 52px !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
background: transparent !important;
box-sizing: border-box !important;
font-size: 24px !important;
font-weight: 700 !important;
line-height: 52px !important;
color: var(--color-heritage-red);
text-align: center !important;
}
.redeem-tips {
display: block;
box-sizing: border-box;
margin: 8px var(--space-page) 0;
padding: 12px 16px;
border-radius: var(--radius-md);
background: rgba(0, 0, 0, 0.03);
}
.redeem-tips-text {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
line-height: 1.7;
word-break: break-word;
}
.redeem-amount-hint {
font-size: 12px;
color: var(--color-subtle-gray);
line-height: 1.4;
}
.redeem-amount-foot {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0 var(--space-page) 12px;
}
.redeem-fill-max {
font-size: 13px;
color: var(--color-heritage-red);
font-weight: 600;
}
.redeem-submit {
margin: 24px var(--space-page);
height: 48px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 16px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
}
.redeem-submit--disabled {
opacity: 0.5;
}
.redeem-cancel-btn {
margin: 0 var(--space-page) 24px;
height: 48px;
border-radius: var(--radius-md);
background: transparent;
color: var(--color-heritage-red);
border: 1px solid var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
font-weight: 600;
box-sizing: border-box;
}
.redeem-code-panel {
margin: 32px var(--space-page);
padding: 32px 20px;
background: var(--color-card);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-card);
text-align: center;
}
.redeem-code-head {
display: block;
font-size: 14px;
color: var(--color-subtle-gray);
margin-bottom: 20px;
}
.redeem-qr-wrap {
padding: 12px;
border: 4px solid rgba(166, 29, 36, 0.1);
border-radius: var(--radius-lg);
margin: 0 auto 20px;
width: 240px;
max-width: calc(100% - 40px);
box-sizing: border-box;
}
.redeem-qr-box {
position: relative;
width: 100%;
height: 0;
padding-bottom: 100%;
background: #fff;
overflow: hidden;
}
.redeem-qr-canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
display: block;
}
.redeem-qr-img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
display: block;
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
}
.redeem-qr-placeholder {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
background: var(--color-surface-container);
}
.redeem-qr-scanline {
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 3;
height: 3px;
background: linear-gradient(
180deg,
rgba(166, 29, 36, 0) 0%,
rgba(166, 29, 36, 0.85) 50%,
rgba(166, 29, 36, 0) 100%
);
box-shadow: 0 0 12px rgba(166, 29, 36, 0.55);
pointer-events: none;
animation: redeem-scan 3s ease-in-out infinite;
}
@keyframes redeem-scan {
0%,
100% {
top: 0;
opacity: 0.1;
}
50% {
top: 95%;
opacity: 0.8;
}
}
.redeem-timer {
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 16px;
border-radius: var(--radius-md);
}
.redeem-timer--active {
animation: redeem-pulse 2s infinite;
}
@keyframes redeem-pulse {
0% {
box-shadow: 0 0 0 0 rgba(166, 29, 36, 0.2);
}
70% {
box-shadow: 0 0 0 10px rgba(166, 29, 36, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(166, 29, 36, 0);
}
}
.redeem-timer-value {
font-family: var(--font-headline);
font-size: 24px;
font-weight: 700;
color: var(--color-ink-black);
}
.redeem-timer-label {
font-size: 10px;
letter-spacing: 0.12em;
color: var(--color-subtle-gray);
margin-top: 4px;
}
.redeem-code-amount {
display: block;
font-family: var(--font-headline);
font-size: 28px;
font-weight: 700;
color: var(--color-heritage-red);
margin: 8px 0 16px;
}
.redeem-code-token-wrap {
margin-top: 8px;
padding-top: 16px;
border-top: 1px solid var(--color-surface-container);
}
.redeem-code-token-label {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
margin-bottom: 4px;
}
.redeem-code-token {
display: block;
font-family: ui-monospace, monospace;
font-size: 11px;
color: var(--color-on-surface);
line-height: 1.5;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.redeem-code-token-hint {
display: block;
margin-top: 4px;
font-size: 11px;
color: var(--color-subtle-gray);
}
.redeem-success-icon {
width: 80px;
height: 80px;
border-radius: 50%;
background: rgba(45, 106, 79, 0.12);
color: var(--color-success-green);
font-size: 40px;
display: flex;
align-items: center;
justify-content: center;
margin: 48px auto 16px;
}
.redeem-success-title {
display: block;
text-align: center;
font-family: var(--font-headline);
font-size: 22px;
font-weight: 700;
margin-bottom: 8px;
}
.redeem-success-desc {
display: block;
text-align: center;
font-size: 14px;
color: var(--color-subtle-gray);
margin-bottom: 24px;
}
.redeem-success-amount {
display: block;
text-align: center;
font-family: var(--font-headline);
font-size: 28px;
font-weight: 700;
color: var(--color-heritage-red);
margin-bottom: 8px;
}
.redeem-success-details {
margin: 0 var(--space-page) 24px;
padding: 16px;
background: var(--color-card);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.redeem-success-detail-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
padding: 10px 0;
font-size: 13px;
border-bottom: 1px solid var(--color-surface-container);
}
.redeem-success-detail-row:last-child {
border-bottom: none;
}
.redeem-success-mono {
font-family: ui-monospace, monospace;
font-size: 12px;
text-align: right;
word-break: break-all;
}
.redeem-success-rating {
margin: 16px var(--space-page) 0;
padding: 16px;
background: var(--color-card);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.redeem-success-rating-title {
display: block;
font-size: 15px;
font-weight: 700;
color: var(--color-on-surface);
margin-bottom: 12px;
}
.redeem-rating-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.redeem-rating-label {
font-size: 14px;
color: var(--color-on-surface);
}
.redeem-star-row {
display: flex;
gap: 6px;
}
.redeem-star-btn {
font-size: 22px;
color: #d0d0d0;
line-height: 1;
}
.redeem-star-btn--active {
color: #f5a623;
}
.ledger-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 14px 0;
border-bottom: 1px solid var(--color-surface-container);
}
.ledger-item:last-child {
border-bottom: none;
}
.ledger-title {
display: block;
font-size: 14px;
font-weight: 600;
margin-bottom: 4px;
}
.ledger-time {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
}
.ledger-amount {
font-size: 16px;
font-weight: 700;
}
.ledger-amount--in {
color: var(--color-success-green);
}
.ledger-amount--out {
color: var(--color-heritage-red);
}
.region-picker-mask {
position: fixed;
inset: 0;
z-index: 100;
background: rgba(0, 0, 0, 0.45);
display: flex;
align-items: flex-end;
}
.region-picker-sheet {
width: 100%;
background: var(--color-card);
border-radius: 20px 20px 0 0;
padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
}
.region-picker-head {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 16px;
border-bottom: 1px solid var(--color-surface-container);
}
.region-picker-title {
font-size: 16px;
font-weight: 700;
}
.region-picker-cancel,
.region-picker-ok {
font-size: 14px;
color: var(--color-heritage-red);
padding: 4px 8px;
}
.region-picker-body {
padding: 24px 16px;
}
.region-picker-item {
display: block;
text-align: center;
padding: 12px;
font-size: 16px;
color: var(--color-on-surface);
}
.region-picker-item--active {
color: var(--color-heritage-red);
font-weight: 700;
}
.cs-bubble {
max-width: 78%;
padding: 12px 14px;
border-radius: 16px;
margin-bottom: 12px;
font-size: 14px;
line-height: 1.5;
}
.cs-bubble--bot {
background: var(--color-card);
box-shadow: var(--shadow-card);
margin-right: auto;
}
.cs-bubble--user {
background: var(--color-heritage-red);
color: #fff;
margin-left: auto;
}
.cs-quick {
display: flex;
flex-wrap: wrap;
margin: 16px var(--space-page);
}
.cs-quick-item {
padding: 8px 12px;
margin-right: 8px;
margin-bottom: 8px;
border-radius: 999px;
background: var(--color-card);
box-shadow: var(--shadow-card);
font-size: 12px;
color: var(--color-on-surface);
}
.cs-body {
display: flex;
flex-direction: column;
align-items: center;
padding-top: 48px;
text-align: center;
}
.cs-brand {
display: block;
font-family: var(--font-headline);
font-size: 22px;
font-weight: 700;
color: var(--color-on-surface);
margin-bottom: 10px;
}
.cs-title {
font-size: 14px;
color: var(--color-subtle-gray);
margin-bottom: 12px;
}
.cs-phone,
.cs-phone-display {
display: block;
font-family: var(--font-headline);
font-size: 28px;
font-weight: 700;
color: var(--color-heritage-red);
margin-top: 20px;
letter-spacing: 1px;
}
.cs-hint {
display: block;
font-size: 14px;
color: var(--color-subtle-gray);
line-height: 1.5;
margin-bottom: 8px;
max-width: 280px;
}
.cs-hours {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
margin-bottom: 32px;
}
.cs-online-btn {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
max-width: 280px;
padding: 14px 24px;
margin: 0;
border: none;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 15px;
font-weight: 600;
line-height: 1.4;
box-sizing: border-box;
}
.cs-online-btn::after {
border: none;
}
.cs-call-btn {
padding: 12px 32px;
border-radius: 999px;
background: var(--color-heritage-red);
color: #fff;
font-size: 15px;
font-weight: 600;
}
.cs-phone-link {
margin-top: 20px;
padding: 8px 12px;
font-size: 13px;
color: var(--color-subtle-gray);
text-decoration: underline;
text-underline-offset: 3px;
}
-318
View File
@@ -1,318 +0,0 @@
/* 门店详情 */
.store-detail-page {
background: var(--color-background);
}
.store-detail-hero {
background: var(--color-card);
}
.store-detail-carousel-wrap {
position: relative;
width: 100%;
height: 280px;
overflow: hidden;
}
.store-detail-carousel {
width: 100%;
height: 100%;
}
.store-detail-carousel-item,
.store-detail-carousel-image,
.store-detail-carousel-placeholder {
width: 100%;
height: 100%;
}
.store-detail-carousel-placeholder {
background: var(--color-surface-container);
}
.store-detail-carousel-dots {
position: absolute;
bottom: 16px;
left: 0;
right: 0;
display: flex;
justify-content: center;
}
.store-detail-carousel-dot {
height: 4px;
width: 6px;
margin: 0 3px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.45);
}
.store-detail-carousel-dot--active {
width: 20px;
background: #fff;
}
.store-detail-info-card {
margin: -40px var(--space-page) 16px;
position: relative;
z-index: 2;
background: var(--color-card);
border-radius: var(--radius-lg);
padding: 20px 16px;
box-shadow: var(--shadow-card);
}
.store-detail-name {
display: block;
font-family: var(--font-headline);
font-size: 20px;
font-weight: 700;
color: var(--color-ink-black);
margin-bottom: 8px;
}
.store-detail-meta {
display: block;
font-size: 13px;
color: var(--color-on-surface-variant);
margin-bottom: 6px;
line-height: 1.5;
}
.store-detail-meta--flex {
flex: 1;
min-width: 0;
margin-bottom: 0;
}
.store-detail-row {
display: flex;
align-items: flex-start;
gap: 12px;
margin-bottom: 6px;
}
.store-detail-action {
flex-shrink: 0;
padding: 2px 10px;
border-radius: 999px;
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
font-size: 12px;
font-weight: 600;
line-height: 1.6;
}
.store-detail-intro {
display: block;
font-size: 14px;
color: var(--color-on-surface);
line-height: 1.7;
white-space: pre-wrap;
}
.store-detail-tags {
display: flex;
flex-wrap: wrap;
margin-top: 12px;
}
.store-detail-tag {
padding: 4px 10px;
margin-right: 8px;
margin-bottom: 8px;
border-radius: 999px;
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
font-size: 11px;
}
.store-detail-marquee-wrap {
margin: 0 var(--space-page) 12px;
}
.store-detail-marquee {
margin: 0;
padding: 0;
border-radius: 8px;
background: #fff7f6;
border: 1px solid rgba(166, 29, 36, 0.12);
overflow: hidden;
height: 40px;
box-sizing: border-box;
position: relative;
}
.store-detail-marquee-inner {
position: absolute;
top: 50%;
margin-top: -10px;
white-space: nowrap;
}
.store-detail-marquee-text {
white-space: nowrap;
font-size: 12px;
line-height: 20px;
color: #a61d24;
}
.store-detail-section {
background: var(--color-card);
margin: 0 var(--space-page) 16px;
border-radius: var(--radius-lg);
padding: 16px;
box-shadow: var(--shadow-card);
}
.store-detail-section-title {
display: block;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
margin-bottom: 10px;
color: var(--color-on-surface);
}
.store-detail-env-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.store-detail-env-item {
position: relative;
width: 100%;
aspect-ratio: 1;
border-radius: var(--radius-md, 8px);
overflow: hidden;
background: var(--color-surface-container);
}
.store-detail-env-img {
width: 100%;
height: 100%;
display: block;
}
.store-detail-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 50;
padding: 12px 16px calc(env(safe-area-inset-bottom, 0px) + 12px);
display: flex;
background: rgba(255, 255, 255, 0.95);
border-top: 1px solid rgba(226, 190, 188, 0.1);
box-sizing: border-box;
}
.store-detail-bar-btn {
flex: 1;
height: 48px;
border-radius: 999px;
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
font-weight: 700;
}
.store-detail-bar-btn--ghost {
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
margin-right: 12px;
}
.store-detail-bar-btn--primary {
background: var(--color-heritage-red);
color: #fff;
}
.store-detail-bar-btn--full {
flex: 1;
margin-right: 0;
}
.store-detail-package-card {
padding: 12px 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.store-detail-package-card:last-of-type {
border-bottom: none;
}
.store-detail-package-name {
display: block;
font-size: 16px;
font-weight: 700;
color: var(--color-text-primary, #1a1a1a);
margin-bottom: 6px;
}
.store-detail-package-body {
display: block;
font-size: 14px;
color: var(--color-text-secondary, #666);
line-height: 1.5;
}
.store-detail-package-meta {
display: block;
font-size: 13px;
color: var(--color-text-tertiary, #999);
margin-top: 4px;
}
.store-detail-package-dispute {
display: block;
margin-top: 12px;
font-size: 13px;
color: var(--color-heritage-red);
}
.store-detail-dispute-mask {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.45);
z-index: 1000;
display: flex;
align-items: flex-end;
justify-content: center;
}
.store-detail-dispute-panel {
width: 100%;
max-width: 480px;
background: #fff;
border-radius: 16px 16px 0 0;
padding: 20px 16px calc(20px + env(safe-area-inset-bottom));
box-sizing: border-box;
}
.store-detail-dispute-input {
width: 100%;
min-height: 96px;
margin: 12px 0 16px;
padding: 12px;
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 8px;
box-sizing: border-box;
font-size: 14px;
}
.store-detail-dispute-actions {
display: flex;
gap: 12px;
}
.store-detail-dispute-actions .u-btn {
flex: 1;
}
.store-detail-dispute-actions .u-btn--ghost {
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
}
-206
View File
@@ -1,206 +0,0 @@
/* 门店列表 */
.store-page {
background: var(--color-background);
}
.store-filter {
padding: 0 var(--space-page) 12px;
}
.store-search-row {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
box-sizing: border-box;
}
.store-search-input {
flex: 1;
min-width: 0;
height: 40px;
padding: 0 14px;
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
font-size: 13px;
line-height: 40px;
color: var(--color-on-surface);
box-sizing: border-box;
}
.store-search-input input,
.store-search-input .taro-input,
.store-search-input .weui-input {
width: 100% !important;
height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
background: transparent !important;
box-sizing: border-box !important;
font-size: 13px !important;
line-height: normal !important;
color: inherit;
}
.store-search-btn {
flex-shrink: 0;
width: 40px;
height: 40px;
border-radius: var(--radius-md);
background: var(--color-heritage-red);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
}
.store-search-icon {
position: relative;
width: 14px;
height: 14px;
border: 2px solid currentColor;
border-radius: 50%;
box-sizing: border-box;
}
.store-search-icon::after {
content: '';
position: absolute;
right: -5px;
bottom: -4px;
width: 7px;
height: 2px;
background: currentColor;
border-radius: 1px;
transform: rotate(45deg);
transform-origin: left center;
}
.store-filter-row {
display: flex;
align-items: center;
gap: 8px;
margin-top: 10px;
}
.store-filter-chip {
flex: 1;
min-width: 0;
height: 36px;
padding: 0 10px;
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
box-sizing: border-box;
}
.store-filter-chip-text {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 12px;
font-weight: 500;
color: var(--color-on-surface);
}
.store-filter-chip-arrow {
flex-shrink: 0;
font-size: 10px;
color: var(--color-subtle-gray);
}
.store-filter-icon-btn {
flex-shrink: 0;
width: 36px;
height: 36px;
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-heritage-red);
box-sizing: border-box;
}
.store-filter-icon-btn--busy {
opacity: 0.5;
}
.store-filter-icon-glyph {
font-size: 18px;
line-height: 1;
font-weight: 700;
color: var(--color-heritage-red);
}
.store-list {
padding: 4px var(--space-page) 16px;
}
.store-card {
background: var(--color-card);
border-radius: var(--radius-lg);
overflow: hidden;
box-shadow: var(--shadow-card);
margin-bottom: 16px;
}
.store-card-cover {
width: 100%;
height: 160px;
background: var(--color-surface-container);
display: block;
}
.store-card-cover--empty {
height: 160px;
background: var(--color-surface-container);
}
.store-card-body {
padding: 14px 16px 16px;
}
.store-card-name {
display: block;
font-family: var(--font-headline);
font-size: 16px;
font-weight: 700;
color: var(--color-on-surface);
margin-bottom: 6px;
}
.store-card-meta {
display: block;
font-size: 12px;
color: var(--color-subtle-gray);
margin-bottom: 4px;
}
.store-card-footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 12px;
}
.store-card-distance {
font-size: 12px;
color: var(--color-on-surface-variant);
}
.store-card-cta {
padding: 6px 14px;
border-radius: var(--radius-full);
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
font-size: 12px;
font-weight: 600;
}
-51
View File
@@ -1,51 +0,0 @@
/* Dukang design tokens — mirrored from packages/shared-ui/src/tokens.css */
page,
:root {
--color-surface: #faf9f7;
--color-surface-dim: #dadad8;
--color-surface-container-low: #f4f3f1;
--color-surface-container: #efeeec;
--color-surface-container-highest: #e3e2e0;
--color-on-surface: #1a1c1b;
--color-on-surface-variant: #5a413f;
--color-outline: #8d706e;
--color-outline-variant: #e2bebc;
--color-primary: #820012;
--color-on-primary: #ffffff;
--color-heritage-red: #a61d24;
--color-on-primary-container: #ffb9b4;
--color-secondary: #735c00;
--color-secondary-container: #fed65b;
--color-on-secondary-container: #745c00;
--color-aged-amber: #ffbf00;
--color-success-green: #2d6a4f;
--color-status-blue: #2a6ebb;
--color-subtle-gray: #999999;
--color-ink-black: #1a1a1a;
--color-error: #ba1a1a;
--color-background: #faf9f7;
--color-card: #ffffff;
--font-headline: 'PingFang SC', 'Noto Sans SC', sans-serif;
--font-body: 'PingFang SC', 'Noto Sans SC', sans-serif;
--font-label: 'PingFang SC', 'Noto Sans SC', sans-serif;
--radius-sm: 0.25rem;
--radius-md: 0.75rem;
--radius-lg: 1rem;
--radius-xl: 1.5rem;
--radius-full: 9999px;
--space-page: 20px;
--space-gutter: 12px;
--space-md: 16px;
--space-lg: 32px;
--shadow-card: 0 4px 20px rgba(166, 29, 36, 0.05);
--shadow-tabbar: 0 -4px 20px rgba(0, 0, 0, 0.06);
--border-card: 1px solid rgba(166, 29, 36, 0.05);
}