style.css · 约 14124 字符
1/* 小草咖啡轻食 · 移动端 H5 样式 */
2*{margin:0;padding:0;box-sizing:border-box}
3body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#faf5ef;color:#3e2c1c;max-width:430px;margin:0 auto;min-height:100vh}
4a{text-decoration:none;color:inherit}
5ul{list-style:none}
6:root{--primary:#a05c2b;--primary-light:#f7ead9;--secondary:#d98e48;--accent:#e9b44c;--dark:#4a2e15;--gray:#9b8a76;--light-gray:#f0e8dd;--green:#52c41a;--blue:#1890ff}
7.header{background:linear-gradient(135deg,#7c4a21,#c07a3a);color:#fff;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(124,74,33,.3)}
8.header .back{font-size:22px;cursor:pointer;width:32px}
9.header h1{font-size:17px;font-weight:600;flex:1;text-align:center}
10.header .right{width:32px;text-align:right;font-size:14px}
11.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;background:#fff;border-top:1px solid #eee;display:flex;z-index:100;padding-bottom:env(safe-area-inset-bottom)}
12.tabbar a{flex:1;text-align:center;padding:8px 0;color:#999;font-size:11px}
13.tabbar a.active{color:var(--primary)}
14.tabbar a .icon{font-size:22px;display:block;margin-bottom:2px}
15.card{background:#fff;border-radius:12px;margin:12px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
16.section-title{font-size:16px;font-weight:700;margin:16px 16px 8px;display:flex;justify-content:space-between;align-items:center}
17.section-title span{font-size:12px;color:#999;font-weight:400}
18.btn{display:block;width:100%;padding:13px;border:none;border-radius:25px;font-size:15px;font-weight:600;cursor:pointer;text-align:center}
19.btn-primary{background:linear-gradient(135deg,#7c4a21,#c07a3a);color:#fff}
20.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}
21.badge-hot{background:#fff1f0;color:#ff4d4f}
22.badge-new{background:#e6f7ff;color:var(--blue)}
23.badge-sale{background:#fff7e6;color:var(--accent)}
24.tag{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;background:var(--light-gray);color:#7a6a55;margin:2px 4px 0 0}
25/* 首页 */
26.banner{height:130px;margin:12px;border-radius:14px;background:linear-gradient(135deg,#7c4a21,#c98a4b);color:#fff;display:flex;align-items:center;padding:20px;position:relative;overflow:hidden}
27.banner .bn-title{font-size:22px;font-weight:800;letter-spacing:1px}
28.banner .bn-sub{font-size:13px;opacity:.9;margin-top:6px}
29.banner .bn-emoji{position:absolute;right:18px;font-size:56px;opacity:.9}
30.search-bar{background:#fff;margin:12px;border-radius:25px;padding:10px 16px;display:flex;align-items:center;gap:8px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
31.search-bar .sb-icon{font-size:16px}
32.search-bar .sb-text{flex:1;color:#999;font-size:14px}
33.search-bar .sb-btn{color:var(--primary);font-size:14px;font-weight:600}
34.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:16px 12px;background:#fff;margin:12px;border-radius:12px}
35.quick-grid a{text-align:center;font-size:12px;color:#6b5744}
36.quick-grid a .qicon{font-size:28px;display:block;margin-bottom:4px}
37.goods-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:0 12px}
38.goods-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.05)}
39.goods-card .gc-img{height:100px;display:flex;align-items:center;justify-content:center;font-size:42px;position:relative}
40.goods-card .gc-tag{position:absolute;top:6px;left:6px}
41.goods-card .gc-body{padding:10px}
42.goods-card .gc-name{font-size:13px;font-weight:600;line-height:1.4;height:36px;overflow:hidden}
43.goods-card .gc-desc{font-size:11px;color:#9b8a76;margin-top:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
44.goods-card .gc-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
45.goods-card .gc-price{font-size:16px;color:var(--primary);font-weight:700}
46.goods-card .gc-price small{font-size:11px;font-weight:400;color:#9b8a76}
47.goods-card .gc-add{width:26px;height:26px;border-radius:50%;background:var(--primary);color:#fff;border:none;font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer}
48.coupon-card{display:flex;gap:12px;align-items:center;background:#fff;margin:8px 12px;border-radius:12px;padding:14px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
49.coupon-card .cc-left{width:64px;text-align:center;color:var(--primary)}
50.coupon-card .cc-left .cc-amount{font-size:20px;font-weight:800}
51.coupon-card .cc-left .cc-cond{font-size:10px;color:#9b8a76}
52.coupon-card .cc-info{flex:1}
53.coupon-card .cc-name{font-size:14px;font-weight:600}
54.coupon-card .cc-time{font-size:11px;color:#9b8a76;margin-top:4px}
55/* 点单 */
56.menu-layout{display:flex;min-height:calc(100vh - 100px)}
57.menu-side{width:88px;background:#fff;flex-shrink:0;border-right:1px solid #f0e8dd;overflow-y:auto}
58.menu-side a{display:block;text-align:center;padding:14px 6px;font-size:13px;color:#7a6a55;position:relative}
59.menu-side a.active{color:var(--primary);font-weight:700;background:#faf5ef}
60.menu-side a.active::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--primary);border-radius:0 3px 3px 0}
61.menu-main{flex:1;padding:12px;overflow-y:auto}
62.menu-main .mm-title{font-size:14px;font-weight:700;margin-bottom:8px;color:var(--dark)}
63.menu-item{display:flex;gap:10px;background:#fff;border-radius:12px;padding:10px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
64.menu-item .mi-img{width:58px;height:58px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:30px;flex-shrink:0}
65.menu-item .mi-info{flex:1}
66.menu-item .mi-name{font-size:14px;font-weight:600}
67.menu-item .mi-spec{font-size:11px;color:#9b8a76;margin-top:2px}
68.menu-item .mi-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
69.menu-item .mi-price{font-size:15px;color:var(--primary);font-weight:700}
70.menu-item .mi-add{width:24px;height:24px;border-radius:50%;background:var(--primary);color:#fff;border:none;font-size:14px;cursor:pointer}
71.cart-float{position:fixed;bottom:58px;left:50%;transform:translateX(-50%);width:calc(100% - 24px);max-width:406px;background:linear-gradient(135deg,#4a2e15,#7c4a21);color:#fff;border-radius:28px;padding:12px 18px;display:flex;align-items:center;gap:12px;z-index:95;box-shadow:0 4px 16px rgba(74,46,21,.4);cursor:pointer}
72.cart-float .cf-cart{font-size:24px;position:relative}
73.cart-float .cf-num{position:absolute;top:-8px;right:-8px;background:#ff4d4f;font-size:10px;border-radius:10px;padding:1px 5px}
74.cart-float .cf-total{flex:1;font-size:13px}
75.cart-float .cf-total b{font-size:17px}
76.cart-float .cf-btn{background:#fff;color:var(--primary);border:none;border-radius:20px;padding:8px 18px;font-size:13px;font-weight:700;cursor:pointer}
77/* 规格弹层 */
78.spec-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:120;display:none}
79.spec-mask.show{display:block}
80.spec-panel{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;background:#fff;border-radius:16px 16px 0 0;z-index:121;padding:20px 16px 30px;display:none}
81.spec-panel.show{display:block}
82.spec-panel .sp-name{font-size:16px;font-weight:700}
83.spec-panel .sp-price{font-size:18px;color:var(--primary);font-weight:700;margin:4px 0 12px}
84.spec-panel .sp-group{margin:10px 0}
85.spec-panel .sp-label{font-size:13px;color:#9b8a76;margin-bottom:6px}
86.spec-chips{display:flex;flex-wrap:wrap;gap:8px}
87.spec-chips .chip{padding:6px 12px;border-radius:18px;font-size:13px;border:1px solid #e8ddcd;background:#fff;color:#6b5744;cursor:pointer}
88.spec-chips .chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
89.sp-bottom{display:flex;gap:10px;margin-top:16px}
90.sp-bottom .sp-qty{display:flex;align-items:center;gap:10px}
91.sp-bottom .sp-qty button{width:30px;height:30px;border-radius:50%;border:1px solid #ddd;background:#fff;font-size:16px;cursor:pointer}
92.sp-bottom .sp-add{flex:1;background:linear-gradient(135deg,#7c4a21,#c07a3a);color:#fff;border:none;border-radius:25px;font-size:15px;font-weight:600;cursor:pointer}
93/* 购物车 */
94.cart-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #f5f5f5;background:#fff}
95.cart-item .ci-img{width:52px;height:52px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:26px;flex-shrink:0}
96.cart-item .ci-info{flex:1}
97.cart-item .ci-name{font-size:14px;font-weight:600}
98.cart-item .ci-spec{font-size:11px;color:#9b8a76;margin-top:2px}
99.cart-item .ci-price{font-size:14px;color:var(--primary);font-weight:700;margin-top:2px}
100.cart-item .qty{display:flex;align-items:center;gap:8px}
101.cart-item .qty button{width:26px;height:26px;border-radius:50%;border:1px solid #ddd;background:#fff;font-size:14px;cursor:pointer}
102.cart-item .qty span{min-width:20px;text-align:center;font-size:14px}
103.cart-bar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;background:#fff;border-top:1px solid #eee;display:flex;align-items:center;padding:10px 16px;z-index:100}
104.cart-bar .total{flex:1;font-size:13px}
105.cart-bar .total b{font-size:20px;color:var(--primary)}
106.cart-bar .checkout-btn{background:linear-gradient(135deg,#7c4a21,#c07a3a);color:#fff;border:none;padding:12px 26px;border-radius:25px;font-size:15px;font-weight:600;cursor:pointer}
107.mode-toggle{display:flex;background:#fff;margin:12px;border-radius:12px;padding:6px;gap:6px}
108.mode-toggle div{flex:1;text-align:center;padding:10px;border-radius:8px;font-size:13px;color:#7a6a55;cursor:pointer}
109.mode-toggle div.active{background:var(--primary-light);color:var(--primary);font-weight:600}
110/* 订单 */
111.order-item{background:#fff;border-radius:12px;margin:8px 12px;padding:14px}
112.order-item .oi-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
113.order-item .oi-status{font-size:13px;font-weight:600;color:var(--primary)}
114.order-item .oi-goods{display:flex;gap:10px;align-items:center;margin-bottom:8px}
115.order-item .oi-img{width:44px;height:44px;border-radius:8px;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-size:22px}
116.order-item .oi-name{flex:1;font-size:14px}
117.order-item .oi-spec{font-size:11px;color:#9b8a76;margin-top:2px}
118.order-item .oi-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:8px;border-top:1px solid #f5f5f5}
119.order-item .oi-total{font-size:14px;font-weight:700}
120.pick-code{display:flex;align-items:center;gap:12px;background:var(--primary-light);border-radius:10px;padding:10px;margin:8px 0}
121.pick-code .pc-num{font-size:28px;font-weight:800;color:var(--primary);letter-spacing:3px}
122.pick-code .pc-tip{font-size:11px;color:#9b8a76}
123.progress{display:flex;align-items:center;margin-top:10px}
124.progress .pr-node{text-align:center;flex:1;font-size:10px;color:#9b8a76}
125.progress .pr-node.active{color:var(--primary);font-weight:600}
126.progress .pr-dot{width:10px;height:10px;border-radius:50%;background:#ddd;margin:0 auto 4px}
127.progress .pr-node.active .pr-dot{background:var(--primary)}
128.progress .pr-line{width:100%;height:2px;background:#eee;flex:1}
129/* 会员 */
130.member-hero{background:linear-gradient(135deg,#4a2e15,#c07a3a);margin:12px;border-radius:14px;padding:20px;color:#fff}
131.member-hero .mh-level{font-size:20px;font-weight:800}
132.member-hero .mh-desc{font-size:12px;opacity:.85;margin-top:4px}
133.member-hero .mh-points{display:flex;gap:20px;margin-top:14px}
134.member-hero .mh-points b{font-size:18px}
135.balance-card{display:flex;background:#fff;margin:12px;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
136.balance-card .bc-half{flex:1;text-align:center;padding:16px}
137.balance-card .bc-half+.bc-half{border-left:1px solid #f0e8dd}
138.balance-card .bc-num{font-size:22px;font-weight:800;color:var(--primary)}
139.balance-card .bc-label{font-size:12px;color:#9b8a76;margin-top:4px}
140.recharge-row{display:flex;gap:8px;margin:0 12px}
141.recharge-row .rc-item{flex:1;text-align:center;background:#fff;border-radius:10px;padding:12px 4px;border:2px solid transparent}
142.recharge-row .rc-item.active{border-color:var(--primary)}
143.recharge-row .rc-item .rc-amount{font-size:16px;font-weight:700}
144.recharge-row .rc-item .rc-bonus{font-size:11px;color:var(--primary)}
145.level-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 12px}
146.level-card{background:#fff;border-radius:12px;padding:14px;text-align:center;box-shadow:0 1px 4px rgba(0,0,0,.06)}
147.level-card .lc-icon{font-size:26px}
148.level-card .lc-name{font-size:13px;font-weight:600;margin-top:6px}
149.level-card .lc-disc{font-size:11px;color:#9b8a76;margin-top:2px}
150.level-card.current{border:2px solid var(--primary)}
151/* 我的 */
152.profile-header{background:linear-gradient(135deg,#4a2e15,#c07a3a);color:#fff;padding:28px 16px;text-align:center}
153.profile-avatar{width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.25);margin:0 auto 8px;display:flex;align-items:center;justify-content:center;font-size:30px}
154.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;margin-top:16px}
155.profile-stats .ps-num{font-size:20px;font-weight:700}
156.profile-stats .ps-label{font-size:11px;opacity:.8;margin-top:2px}
157.order-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:#fff;margin:12px;border-radius:12px;padding:16px}
158.order-nav a{text-align:center;font-size:12px;color:#6b5744}
159.order-nav a .on-icon{font-size:26px;display:block;margin-bottom:4px}
160.menu-list{background:#fff;margin:12px;border-radius:12px;padding:0}
161.menu-list a{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #f5f5f5}
162.menu-list a:last-child{border-bottom:none}
163.menu-list .ml-arrow{color:#ccc}
164.empty{text-align:center;padding:60px 20px;color:#999}
165.empty .eicon{font-size:48px;margin-bottom:12px}
166