/* ============================================================
   浩佳茶叶 H5 商城 - 前台样式 v4（云上茶山 · 清新杂志风）
   设计语言：米白底 + 茶青绿 + 陶土橙点缀 + 杂志式大排版
   ============================================================ */
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { font-size: 16px; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  background:
    radial-gradient(circle at 90% 0%, rgba(74,124,89,.07), transparent 40%),
    radial-gradient(circle at 5% 30%, rgba(217,142,74,.05), transparent 36%),
    #f7f4ec;
  color: #3a322a;
  line-height: 1.55;
  max-width: 640px;
  margin: 0 auto;
  min-height: 100vh;
  position: relative;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
input, button, textarea { font-family: inherit; font-size: 1rem; outline: none; }
button { cursor: pointer; border: none; background: none; }

.serif, .brand-text h1, .sec-head h2, .detail-name, .od-status h3, .auth-brand h2, .pay-money, .bc-amount, .hero-title, .season-name {
  font-family: Georgia, "Songti SC", "Noto Serif SC", "SimSun", serif;
}

.page { padding-bottom: 14px; }
.card {
  background: #fffdf8;
  border: 1px solid #e9e0cc;
  border-radius: 18px;
  margin: 12px;
  padding: 15px 17px;
  box-shadow: 0 2px 14px rgba(90,74,40,.07);
  color: #3a322a;
}

/* ---------- 顶部（浅色清爽） ---------- */
.topbar {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,253,248,.96);
  box-shadow: 0 1px 0 rgba(74,124,89,.35), 0 4px 16px rgba(90,74,40,.06);
  border-bottom: 1px solid #e4e0d2;
  backdrop-filter: blur(6px);
}
.topbar::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, #4a7c59, #7ba98a 40%, #4a7c59 70%, #3e6b4c);
}
.topbar-inner { display: flex; align-items: center; justify-content: space-between; padding: 13px 16px; position: relative; }
.brand { display: flex; align-items: center; gap: 11px; }
.brand-logo, .auth-logo {
  width: 44px; height: 44px; border-radius: 50%;
  background: linear-gradient(150deg, #7ba98a, #3e6b4c);
  color: #fff; font-size: 22px; font-weight: 700;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  display: flex; align-items: center; justify-content: center;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 3px 10px rgba(62,107,76,.3);
  border: 2px solid #f4efe2;
}
.brand-text h1 { font-size: 20px; letter-spacing: 3px; font-weight: 700; color: #3e6b4c; }
.brand-text p { font-size: 11px; color: #9a8f78; margin-top: 2px; letter-spacing: 3px; }
.top-phone {
  color: #4a7c59; padding: 7px; display: flex; align-items: center;
  background: #edf3ea; border-radius: 50%;
}
.top-phone svg { width: 21px; height: 21px; }

/* 公告（浅绿条） */
.notice-bar {
  display: flex; align-items: center; gap: 10px;
  background: linear-gradient(90deg, #eef4ea, #e3ecdf);
  color: #4a6b52; font-size: 12.5px;
  padding: 10px 16px; margin: 12px 12px 0;
  border-radius: 14px;
  border: 1px solid #d5e2cf;
}
.notice-icon {
  flex: none; background: linear-gradient(135deg, #4a7c59, #3e6b4c); color: #fff;
  font-size: 11px; padding: 2px 9px; border-radius: 8px; letter-spacing: 2px;
}
.notice-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #55705e; }

.flash { margin: 12px; padding: 13px 16px; border-radius: 14px; font-size: 14px; display: flex; align-items: center; }
.flash-ok  { background: #e7f2e6; color: #3c6b4a; border: 1px solid #cfe2cc; }
.flash-err { background: #fbeae6; color: #b0402c; border: 1px solid #f0cfc6; }

/* ---------- 问候大标题区 ---------- */
.hero {
  margin: 14px 14px 0; padding: 22px 20px 20px;
  background:
    radial-gradient(circle at 92% 12%, rgba(217,142,74,.14), transparent 40%),
    linear-gradient(140deg, #f0f5ed, #e6efe2);
  border: 1px solid #d8e3d2; border-radius: 22px;
  position: relative; overflow: hidden;
}
.hero::after {
  content: "茶"; position: absolute; right: 8px; bottom: -26px; font-size: 96px;
  font-family: Georgia, "Songti SC", serif; color: rgba(74,124,89,.08);
}
.hero-tag {
  display: inline-block; font-size: 11px; letter-spacing: 3px; color: #d98e4a;
  background: rgba(217,142,74,.12); border: 1px solid rgba(217,142,74,.35);
  border-radius: 20px; padding: 3px 12px; margin-bottom: 12px;
}
.hero-title { font-size: 26px; font-weight: 700; color: #31543d; letter-spacing: 2px; line-height: 1.35; }
.hero-title b { color: #d98e4a; font-weight: 700; }
.hero-sub { font-size: 12.5px; color: #7d8f7a; margin-top: 8px; letter-spacing: 1px; line-height: 1.8; }

/* ---------- 轮播（浅绿卡片式） ---------- */
.banner { position: relative; margin: 12px 12px 0; border-radius: 20px; overflow: hidden; box-shadow: 0 8px 24px rgba(90,74,40,.14); border: 1px solid #e9e0cc; }
.banner-track { display: flex; transition: transform .45s cubic-bezier(.25,.8,.35,1); }
.banner-slide { flex: none; width: 100%; }
.banner-slide img { width: 100%; height: 186px; object-fit: cover; }
.banner-dots { position: absolute; bottom: 10px; left: 0; right: 0; display: flex; justify-content: center; gap: 7px; }
.banner-dots i { width: 6px; height: 6px; border-radius: 4px; background: rgba(255,255,255,.55); transition: all .3s; }
.banner-dots i.on { width: 20px; background: #fff; }

/* 领券横幅 */
.coupon-entry {
  display: flex; align-items: center; gap: 12px; margin: 12px 12px 0;
  background: linear-gradient(120deg, #fdf1dd, #fae6c8);
  border: 1px solid #f0d5a6;
  border-radius: 18px; padding: 13px 16px; color: #8a6428;
  box-shadow: 0 4px 16px rgba(217,142,74,.14);
  position: relative; overflow: hidden;
}
.coupon-entry::after {
  content: "惠"; position: absolute; right: 44px; top: -14px;
  font-size: 58px; font-family: Georgia, "Songti SC", serif; color: rgba(217,142,74,.10);
}
.ce-icon {
  width: 32px; height: 32px; border-radius: 50%;
  background: linear-gradient(150deg, #e8a45c, #d98e4a); color: #fff;
  font-size: 16px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: none;
  box-shadow: 0 2px 8px rgba(217,142,74,.35);
}
.ce-text { flex: 1; font-size: 13px; letter-spacing: .5px; }
.ce-go { font-size: 13px; font-weight: 700; color: #c47a2d; }

/* ---------- 区块标题（杂志式） ---------- */
.sec { margin-top: 18px; }
.sec-head { display: flex; align-items: center; justify-content: space-between; padding: 4px 16px 12px; }
.sec-head h2 {
  font-size: 19px; color: #31543d; font-weight: 700; letter-spacing: 3px;
  display: flex; align-items: center; gap: 9px; position: relative;
}
.sec-head h2::before {
  content: ""; width: 6px; height: 20px; border-radius: 4px;
  background: linear-gradient(180deg, #7ba98a, #3e6b4c);
}
.sec-head h2::after {
  content: ""; width: 40px; height: 1px; margin-left: 2px;
  background: linear-gradient(90deg, #7ba98a, transparent);
}
.sec-more { font-size: 12.5px; color: #9a8f78; letter-spacing: 1px; }

/* ---------- 分类：图片墙（2 列大卡） ---------- */
.cat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 0 12px; }
.cat-card {
  background: #fffdf8; border: 1px solid #e9e0cc; border-radius: 18px;
  padding: 0; display: flex; flex-direction: column;
  box-shadow: 0 3px 14px rgba(90,74,40,.08); position: relative; overflow: hidden;
}
.cat-img {
  width: 100%; aspect-ratio: 16/10; overflow: hidden; position: relative;
  border-radius: 18px 18px 0 0;
}
.cat-img::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(30,40,28,.35));
}
.cat-img img { width: 100%; height: 100%; object-fit: cover; }
.cat-meta { display: flex; align-items: baseline; gap: 8px; padding: 11px 14px 13px; }
.cat-name { font-size: 15.5px; font-weight: 700; color: #31543d; letter-spacing: 2px; }
.cat-cnt { font-size: 11.5px; color: #c47a2d; letter-spacing: .5px; }

/* ---------- 当季新茶（横向大卡） ---------- */
.season-scroll { display: flex; gap: 12px; overflow-x: auto; padding: 2px 12px 10px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.season-scroll::-webkit-scrollbar { display: none; }
.season-card {
  flex: none; width: 272px; scroll-snap-align: start;
  background: #fffdf8; border: 1px solid #e9e0cc; border-radius: 20px;
  overflow: hidden; display: flex; flex-direction: column;
  box-shadow: 0 4px 16px rgba(90,74,40,.10);
}
.season-img { width: 100%; height: 158px; overflow: hidden; position: relative; }
.season-img img { width: 100%; height: 100%; object-fit: cover; }
.season-flag {
  position: absolute; top: 10px; left: 10px; z-index: 2;
  background: linear-gradient(135deg, #d98e4a, #c47a2d); color: #fff;
  font-size: 11px; padding: 3px 11px; border-radius: 6px 14px 14px 14px; letter-spacing: 1.5px;
  box-shadow: 0 3px 8px rgba(0,0,0,.25);
}
.season-body { padding: 12px 15px 14px; }
.season-name { font-size: 16.5px; font-weight: 700; color: #31543d; letter-spacing: 1px; }
.season-sub { font-size: 11.5px; color: #9a8f78; margin-top: 4px; letter-spacing: .5px; }
.season-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; }
.season-foot .price { font-size: 17px; }
.season-more { font-size: 12px; color: #4a7c59; font-weight: 700; }

/* ---------- 商品卡片（白色大卡） ---------- */
.goods-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; padding: 0 12px; }
.goods-card {
  background: #fffdf8; border: 1px solid #e9e0cc; border-radius: 18px; overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 3px 14px rgba(90,74,40,.08);
  position: relative; transition: transform .15s ease;
}
.goods-card:active { transform: scale(.97); }
.goods-img { aspect-ratio: 1/1; overflow: hidden; background: #f1ede0; position: relative; margin: 7px 7px 0; border-radius: 13px; }
.goods-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.goods-card:active .goods-img img { transform: scale(1.05); }
.goods-name {
  font-size: 13.5px; font-weight: 700; line-height: 1.45; margin: 9px 12px 2px; color: #3a322a;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.goods-sub { font-size: 10.5px; color: #a09682; margin: 0 12px; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; letter-spacing: .5px; }
.goods-foot { display: flex; align-items: baseline; gap: 6px; padding: 7px 12px 12px; }
.goods-foot .price { font-size: 16.5px; }
.goods-foot del { font-size: 11px; color: #b5ab97; }
.goods-sales { margin-left: auto; font-size: 10.5px; color: #b5ab97; }

.price { color: #c0471f; font-weight: 800; font-family: Georgia, "Songti SC", serif; }
del { color: #b5ab97; font-weight: 400; }

/* ---------- 热销横向滚动（绿色序号） ---------- */
.hot-scroll { display: flex; gap: 12px; overflow-x: auto; padding: 2px 12px 10px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.hot-scroll::-webkit-scrollbar { display: none; }
.hot-card {
  flex: none; width: 142px; scroll-snap-align: start;
  background: #fffdf8; border: 1px solid #e9e0cc; border-radius: 18px;
  padding: 8px 10px 13px; position: relative;
  box-shadow: 0 3px 14px rgba(90,74,40,.08);
}
.hot-rank {
  position: absolute; top: 13px; left: 13px; z-index: 2;
  width: 26px; height: 26px; border-radius: 8px;
  background: rgba(255,255,255,.92); color: #4a7c59;
  font-size: 13px; font-weight: 800; display: flex; align-items: center; justify-content: center;
  font-family: Georgia, serif; box-shadow: 0 2px 6px rgba(0,0,0,.15);
  border: 1px solid rgba(74,124,89,.4);
}
.hot-rank-1 { background: linear-gradient(135deg, #e2784d, #c0471f); color: #fff; border-color: #f0a07a; }
.hot-rank-2 { background: linear-gradient(135deg, #d98e4a, #b36a24); color: #fff; border-color: #eab784; }
.hot-rank-3 { background: linear-gradient(135deg, #8fa58f, #5e7a64); color: #fff; border-color: #b6c6b4; }
.hot-img { width: 122px; height: 122px; border-radius: 13px; overflow: hidden; margin: 0 auto 9px; }
.hot-img img { width: 100%; height: 100%; object-fit: cover; }
.hot-name { font-size: 12.5px; font-weight: 700; color: #3a322a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hot-card .price { display: inline-block; margin-top: 4px; font-size: 14px; }
.hot-sales { font-size: 10.5px; color: #b5ab97; margin-top: 2px; }

/* ---------- 品牌故事横幅 ---------- */
.brand-story {
  margin: 4px 12px 0; padding: 18px 18px;
  background:
    radial-gradient(circle at 90% 10%, rgba(217,142,74,.12), transparent 46%),
    linear-gradient(140deg, #f0f5ed, #e6efe2);
  border: 1px solid #d8e3d2; border-radius: 20px;
  display: flex; align-items: center; gap: 16px; position: relative; overflow: hidden;
  box-shadow: 0 3px 14px rgba(90,74,40,.08);
}
.brand-story::after {
  content: "高山野茶 · 产地直供"; position: absolute; right: 14px; bottom: -6px;
  font-size: 13px; letter-spacing: 3px; color: rgba(74,124,89,.10); font-family: Georgia, "Songti SC", serif;
}
.bs-vert {
  writing-mode: vertical-rl; text-orientation: upright; flex: none;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 14px; letter-spacing: 6px; color: #4a7c59;
  border-left: 1px solid rgba(74,124,89,.35); padding-left: 8px;
}
.bs-body { flex: 1; }
.bs-body h3 { font-size: 17px; color: #31543d; letter-spacing: 2px; margin-bottom: 6px; font-family: Georgia, "Songti SC", serif; }
.bs-body p { font-size: 12px; color: #7d8f7a; line-height: 1.8; letter-spacing: .5px; }
.bs-body p b { color: #4a7c59; }

/* ---------- 列表页 ---------- */
.searchbar {
  display: flex; gap: 8px; margin: 12px; padding: 9px;
  background: #fffdf8; border: 1px solid #e9e0cc; border-radius: 18px;
  box-shadow: 0 3px 14px rgba(90,74,40,.08);
}
.searchbar input {
  flex: 1; border: 1px solid #e2dcc8; border-radius: 22px; padding: 10px 17px; font-size: 14px;
  background: #faf7ef; color: #3a322a;
}
.searchbar input::placeholder { color: #b5ab97; }
.searchbar button { background: linear-gradient(135deg, #4a7c59, #3e6b4c); color: #fff; border-radius: 22px; padding: 0 24px; font-size: 14px; letter-spacing: 2px; }
.chip-scroll { display: flex; gap: 9px; overflow-x: auto; padding: 0 12px 4px; scrollbar-width: none; }
.chip-scroll::-webkit-scrollbar { display: none; }
.chip {
  flex: none; padding: 8px 18px; border-radius: 22px;
  background: #fffdf8; color: #7d8f7a;
  font-size: 13px; border: 1px solid #e2dcc8; letter-spacing: 1px;
}
.chip.on { background: linear-gradient(135deg, #4a7c59, #3e6b4c); color: #fff; border-color: #4a7c59; font-weight: 700; box-shadow: 0 4px 12px rgba(62,107,76,.3); }
.sortbar { display: flex; align-items: center; gap: 20px; padding: 13px 16px 6px; }
.sort-item { font-size: 13.5px; color: #9a8f78; letter-spacing: 1px; }
.sort-item.on { color: #3e6b4c; font-weight: 700; position: relative; }
.sort-item.on::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 2px; border-radius: 2px; background: #4a7c59; }
.sort-count { margin-left: auto; font-size: 12px; color: #b5ab97; }

.pager { display: flex; justify-content: center; align-items: center; gap: 14px; padding: 18px 0 8px; }
.pager-btn {
  background: #fffdf8; border: 1px solid #e2dcc8; border-radius: 20px;
  padding: 8px 22px; font-size: 13px; color: #6b6354;
}
.pager-btn:disabled { opacity: .45; }
.pager-info { font-size: 13px; color: #a09682; }

.empty { text-align: center; padding: 66px 20px; color: #a09682; }
.empty .empty-icon { color: #cbc3ab; margin-bottom: 12px; }
.empty p { margin-bottom: 14px; }

/* ---------- 按钮（茶绿） ---------- */
.btn {
  display: inline-block; border-radius: 26px; padding: 11px 26px;
  font-size: 14px; text-align: center; letter-spacing: 2px;
  transition: opacity .15s, transform .12s;
}
.btn:active { opacity: .85; transform: translateY(1px); }
.btn-primary { background: linear-gradient(140deg, #4a7c59, #3e6b4c); color: #fff; font-weight: 700; box-shadow: 0 5px 16px rgba(62,107,76,.3), inset 0 1px 0 rgba(255,255,255,.3); }
.btn-outline { border: 1.5px solid #4a7c59; color: #3e6b4c; background: #fff; }
.btn-ghost { color: #9a8f78; border: 1px solid #e2dcc8; background: #fff; }
.btn-block { display: block; width: 100%; }
.btn-mini { padding: 6px 16px; font-size: 12.5px; border-radius: 20px; letter-spacing: 1px; }

/* ---------- 详情页 ---------- */
.gallery { position: relative; overflow: hidden; background: #f1ede0; }
.gallery-track { display: flex; transition: transform .45s cubic-bezier(.25,.8,.35,1); }
.gallery-slide { flex: none; width: 100%; }
.gallery-slide img { width: 100%; height: 340px; object-fit: cover; }
.gallery-dots { position: absolute; bottom: 14px; left: 0; right: 0; display: flex; justify-content: center; gap: 7px; }
.gallery-dots i { width: 6px; height: 6px; border-radius: 3px; background: rgba(255,255,255,.6); }
.gallery-dots i.on { width: 20px; background: #4a7c59; }
.tag-hot {
  position: absolute; top: 14px; right: 14px; background: linear-gradient(135deg, #e2784d, #c0471f);
  color: #fff; font-size: 12px; padding: 5px 14px; border-radius: 8px 16px 16px 16px;
  letter-spacing: 2px; box-shadow: 0 3px 10px rgba(0,0,0,.2);
}
.detail-info { border-radius: 20px 20px 0 0; margin-top: -12px; position: relative; }
.detail-info::before { content: ""; position: absolute; top: 0; left: 16px; right: 16px; height: 2px; background: linear-gradient(90deg, transparent, #7ba98a, transparent); }
.detail-name { font-size: 20px; font-weight: 700; line-height: 1.4; letter-spacing: 1px; }
.detail-sub { font-size: 12.5px; color: #a09682; margin-top: 5px; letter-spacing: .5px; }
.detail-price-row { display: flex; align-items: baseline; gap: 9px; margin-top: 13px; flex-wrap: wrap; }
.detail-price { color: #c0471f; font-size: 28px; font-weight: 800; }
.detail-del { font-size: 13px; }
.detail-meta { margin-left: auto; font-size: 12px; color: #a09682; }

/* 卖点条 */
.detail-serve {
  display: flex; gap: 0; margin-top: 15px; background: #f0f5ed;
  border: 1px solid #d8e3d2; border-radius: 14px; padding: 11px 4px;
}
.detail-serve span { flex: 1; text-align: center; font-size: 11px; color: #55705e; position: relative; letter-spacing: .5px; }
.detail-serve span + span::before { content: ""; position: absolute; left: 0; top: 18%; bottom: 18%; width: 1px; background: #cfe0ca; }
.detail-serve b { display: block; font-size: 13px; color: #4a7c59; margin-bottom: 2px; }

.qty-row { display: flex; align-items: center; gap: 15px; margin-top: 16px; font-size: 14px; }
.qty-tip { font-size: 12px; color: #a09682; }
.stepper { display: flex; align-items: center; border: 1px solid #e2dcc8; border-radius: 12px; overflow: hidden; background: #fff; }
.step-btn { width: 38px; height: 36px; font-size: 18px; color: #6b6354; background: #f4f1e6; }
.step-btn:active { background: #eae5d5; }
.stepper input {
  width: 50px; height: 36px; border: none; border-left: 1px solid #ece6d6; border-right: 1px solid #ece6d6;
  text-align: center; font-size: 14px; background: #fff; color: #3a322a;
}
.stepper.sm .step-btn { width: 30px; height: 28px; font-size: 15px; }
.stepper.sm input { width: 40px; height: 28px; font-size: 13px; }

.detail-desc .desc-head { font-size: 16px; font-weight: 700; color: #31543d; letter-spacing: 2px; border-left: 4px solid #4a7c59; padding-left: 11px; margin-bottom: 13px; font-family: Georgia, "Songti SC", serif; }
.desc-body { font-size: 13.5px; color: #57503f; white-space: pre-line; line-height: 1.9; }

/* 底部购买栏 */
.buybar {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0;
  width: 100%; max-width: 640px; z-index: 60;
  background: rgba(255,253,248,.97);
  border-top: 1px solid #e4e0d2;
  display: flex; align-items: center; gap: 10px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  box-shadow: 0 -6px 20px rgba(90,74,40,.10); backdrop-filter: blur(6px);
}
.buy-cart {
  display: flex; flex-direction: column; align-items: center; font-size: 11px; color: #6b6354;
  padding: 0 8px; letter-spacing: 1px;
}
.buy-cart::before {
  content: ""; width: 23px; height: 23px; margin-bottom: 3px;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%234a7c59" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1.4"/><circle cx="18.5" cy="21" r="1.4"/><path d="M2.5 3h2.2l2.4 11.4a2 2 0 0 0 2 1.6h8.8a2 2 0 0 0 2-1.6L21.5 7H6.2"/></svg>') center / contain no-repeat;
}
.buy-btn { flex: 1; }
.buy-btn.btn-outline { flex: 1; }

/* ---------- 购物车 ---------- */
.cart-list { padding: 0; overflow: hidden; }
.cart-item { position: relative; display: flex; gap: 12px; padding: 15px 16px; border-bottom: 1px solid #f0ead9; align-items: center; }
.cart-check { display: flex; align-items: center; }
.cart-check input { display: none; }
.checkmark {
  width: 22px; height: 22px; border: 2px solid #c9c3ae; border-radius: 50%;
  display: inline-block; position: relative; flex: none;
  background: #fff;
}
.cart-check input:checked + .checkmark { background: #4a7c59; border-color: #4a7c59; }
.cart-check input:checked + .checkmark::after {
  content: ""; position: absolute; left: 6.5px; top: 3px; width: 5px; height: 10px;
  border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
.cart-check input:disabled + .checkmark { background: #eee9da; border-color: #dcd5c1; }
.cart-img { width: 82px; height: 82px; border-radius: 14px; overflow: hidden; flex: none; border: 1px solid #e9e0cc; }
.cart-img img { width: 100%; height: 100%; object-fit: cover; }
.cart-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cart-name { font-size: 13.5px; font-weight: 700; line-height: 1.45; color: #3a322a; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cart-sub { font-size: 11.5px; color: #a09682; margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cart-bottom { margin-top: auto; display: flex; align-items: center; justify-content: space-between; }
.cart-del {
  position: absolute; top: 10px; right: 10px; width: 29px; height: 29px;
  border-radius: 50%; background: #f3efe2; color: #a09682; font-size: 17px; line-height: 29px; text-align: center;
}
.cart-bar {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0;
  width: 100%; max-width: 640px; z-index: 60;
  background: rgba(255,253,248,.97); border-top: 1px solid #e4e0d2;
  display: flex; align-items: center; justify-content: space-between; padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  box-shadow: 0 -6px 20px rgba(90,74,40,.10); backdrop-filter: blur(6px);
}
.cart-check.all { gap: 7px; font-size: 13.5px; color: #6b6354; }
.cart-total { display: flex; align-items: center; gap: 10px; }
.cart-total .price { font-size: 19px; }

/* ---------- 结算页 ---------- */
.addr-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.addr-head h3 { font-size: 15.5px; font-family: Georgia, "Songti SC", serif; letter-spacing: 2px; color: #31543d; }
.addr-manage { font-size: 12.5px; color: #a09682; }
.addr-empty {
  display: block; text-align: center; padding: 21px; color: #3e6b4c; font-size: 14px;
  border: 1.5px dashed #9cbea6; border-radius: 14px; background: #f4f8f2;
}
.addr-item { display: flex; gap: 11px; padding: 13px 0; border-bottom: 1px solid #f0ead9; align-items: flex-start; }
.addr-item:last-child { border-bottom: none; }
.addr-item input { display: none; }
.addr-radio { width: 20px; height: 20px; border: 2px solid #c9c3ae; border-radius: 50%; flex: none; margin-top: 2px; background: #fff; }
.addr-item input:checked + .addr-radio { border-color: #4a7c59; background: radial-gradient(circle, #4a7c59 0 5.5px, #fff 6.5px); }
.addr-body { flex: 1; min-width: 0; }
.addr-line1 { font-size: 14px; font-weight: 700; color: #3a322a; }
.addr-line2 { font-size: 12.5px; color: #8f8673; margin-top: 2px; }
.addr-def { background: linear-gradient(135deg, #4a7c59, #3e6b4c); color: #fff; font-size: 10px; padding: 2px 8px; border-radius: 8px; margin-left: 7px; font-style: normal; letter-spacing: 1px; }

.og-head {
  font-size: 15.5px; font-weight: 700; color: #31543d; letter-spacing: 2px;
  border-left: 4px solid #4a7c59; padding-left: 11px; margin-bottom: 12px;
  font-family: Georgia, "Songti SC", serif;
}
.og-item { display: flex; gap: 11px; padding: 10px 0; align-items: center; }
.og-item img { width: 58px; height: 58px; border-radius: 12px; object-fit: cover; flex: none; border: 1px solid #e9e0cc; }
.og-info { flex: 1; min-width: 0; }
.og-name { font-size: 13px; font-weight: 700; color: #3a322a; line-height: 1.4; }
.og-sub { font-size: 11.5px; color: #a09682; margin-top: 2px; }
.og-price { font-size: 13.5px; font-weight: 700; flex: none; font-family: Georgia, "Songti SC", serif; }
.og-price.pos { color: #3c6b4a; }
.og-price.neg { color: #c0471f; }
.og-total { display: flex; justify-content: space-between; padding: 6px 0; font-size: 13px; color: #6b6354; }
.og-total.strong { font-weight: 700; font-size: 14px; border-top: 1px dashed #e2dcc8; margin-top: 6px; padding-top: 12px; }
.og-total.strong .price { font-size: 19px; }
.og-total.pos span { color: #3c6b4a; }

.form-row { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid #f0ead9; }
.form-row:last-child { border-bottom: none; }
.form-row label { flex: none; width: 76px; font-size: 13.5px; color: #6b6354; letter-spacing: 1px; }
.form-row input { flex: 1; border: none; font-size: 14px; padding: 4px 0; background: transparent; min-width: 0; color: #3a322a; }
.form-row input::placeholder { color: #c0b8a2; }

.pm-head { font-size: 15.5px; font-weight: 700; color: #31543d; letter-spacing: 2px; border-left: 4px solid #4a7c59; padding-left: 11px; margin-bottom: 8px; font-family: Georgia, "Songti SC", serif; }
.pm-item { display: flex; align-items: center; gap: 11px; padding: 13px 0; border-bottom: 1px solid #f0ead9; }
.pm-item:last-child { border-bottom: none; }
.pm-item input { display: none; }
.pm-radio { width: 20px; height: 20px; border: 2px solid #c9c3ae; border-radius: 50%; flex: none; background: #fff; }
.pm-item input:checked + .pm-radio { border-color: #4a7c59; background: radial-gradient(circle, #4a7c59 0 5.5px, #fff 6.5px); }
.pm-item input:disabled + .pm-radio { background: #eee9da; border-color: #dcd5c1; }
.pm-icon { width: 38px; height: 38px; border-radius: 11px; display: flex; align-items: center; justify-content: center; flex: none; font-size: 18px; }
.pm-wechat { background: #e8f3e6; color: #2e9e4f; }
.pm-alipay { background: #e9f2fd; color: #1677ff; }
.pm-balance { background: #f6ead0; color: #c47a2d; }
.pm-body { flex: 1; display: flex; flex-direction: column; }
.pm-name { font-size: 14px; font-weight: 700; color: #3a322a; }
.pm-tip { font-size: 11.5px; color: #a09682; }
.pm-warn { font-size: 11.5px; color: #b0402c; }

.checkout-bar {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0;
  width: 100%; max-width: 640px; z-index: 60;
  background: rgba(255,253,248,.97); border-top: 1px solid #e4e0d2;
  display: flex; align-items: center; justify-content: space-between; padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  box-shadow: 0 -6px 20px rgba(90,74,40,.10); backdrop-filter: blur(6px);
}
.co-amount .price { font-size: 20px; }
.co-tip { font-size: 11px; color: #b5ab97; margin-left: 4px; }

/* ---------- 订单 ---------- */
.order-tabs {
  display: flex; margin: 12px 12px 0; border-radius: 16px; overflow: hidden;
  background: #fffdf8; border: 1px solid #e9e0cc;
  box-shadow: 0 3px 14px rgba(90,74,40,.08);
}
.order-tab { flex: 1; text-align: center; padding: 14px 0; font-size: 13.5px; color: #9a8f78; border-bottom: 2.5px solid transparent; letter-spacing: 1px; }
.order-tab.on { color: #3e6b4c; font-weight: 700; border-bottom-color: #4a7c59; }
.order-list { padding: 0 12px; }
.order-card { padding: 0; overflow: hidden; }
.order-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: #f5f2e7; font-size: 12.5px; color: #8f8673; border-bottom: 1px solid #f0ead9; }
.order-status { font-weight: 700; letter-spacing: 1px; }
.order-status.s0 { color: #c47a2d; }
.order-status.s1 { color: #3e6b4c; }
.order-status.s2 { color: #1677ff; }
.order-status.s3 { color: #6a8456; }
.order-status.s4 { color: #a09682; }
.order-status.s5 { color: #b0402c; }
.order-item { display: flex; gap: 11px; padding: 13px 16px; border-bottom: 1px solid #f0ead9; align-items: center; }
.order-item img { width: 60px; height: 60px; border-radius: 12px; object-fit: cover; flex: none; border: 1px solid #e9e0cc; }
.oi-info { flex: 1; min-width: 0; }
.oi-name { font-size: 13px; font-weight: 700; color: #3a322a; }
.oi-sub { font-size: 11.5px; color: #a09682; margin-top: 2px; }
.oi-price { font-size: 13px; color: #6b6354; font-family: Georgia, "Songti SC", serif; }
.order-foot { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; flex-wrap: wrap; gap: 8px; }
.of-amount { font-size: 12.5px; color: #6b6354; }
.of-amount .price { font-size: 15px; }
.of-btns { display: flex; gap: 8px; }

/* ---------- 订单详情 ---------- */
.od-status {
  background: linear-gradient(150deg, #4a7c59, #33593f); color: #fff;
  margin: 0; border-radius: 0 0 20px 20px; padding: 24px 18px 28px; position: relative; overflow: hidden;
}
.od-status::after {
  content: "茶"; position: absolute; right: 8px; bottom: -20px; font-size: 80px;
  font-family: Georgia, "Songti SC", serif; color: rgba(255,255,255,.08);
}
.od-status h3 { font-size: 20px; margin-bottom: 6px; letter-spacing: 2px; }
.od-status p { font-size: 12.5px; color: rgba(255,255,255,.8); }
.od-tip { color: #f2dfb0 !important; }
.od-row { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px solid #f0ead9; font-size: 13px; }
.od-row:last-child { border-bottom: none; }
.od-row span:first-child { flex: none; color: #a09682; width: 76px; }
.od-row span:last-child { flex: 1; color: #4a4336; word-break: break-all; }
.od-actions { display: flex; gap: 10px; padding: 16px 16px 6px; justify-content: flex-end; }

/* ---------- 充值 / 余额 ---------- */
.balance-card {
  background: linear-gradient(150deg, #4a7c59, #33593f); color: #fff;
  text-align: center; padding: 30px 14px; border-radius: 20px; margin: 12px;
  position: relative; overflow: hidden;
  box-shadow: 0 8px 26px rgba(62,107,76,.3);
}
.balance-card::before {
  content: "¥"; position: absolute; right: 14px; bottom: -28px; font-size: 96px;
  font-family: Georgia, serif; color: rgba(255,255,255,.08);
}
.bc-label { font-size: 13px; color: rgba(255,255,255,.7); letter-spacing: 4px; }
.bc-amount { font-size: 38px; font-weight: 800; margin: 10px 0; color: #ffe6b8; }
.bc-tip { font-size: 12px; color: rgba(255,255,255,.6); }
.rf-label { font-size: 14px; font-weight: 700; margin: 12px 2px 10px; color: #3a322a; letter-spacing: 1px; }
.rf-presets { display: flex; gap: 9px; flex-wrap: wrap; }
.rf-preset {
  flex: 1; min-width: 64px; padding: 12px 0; border-radius: 14px;
  border: 1.5px solid #e2dcc8; background: #fff; font-size: 14px; font-weight: 700; color: #6b6354;
  font-family: Georgia, "Songti SC", serif;
}
.rf-preset.on { border-color: #4a7c59; color: #3e6b4c; background: #edf3ea; box-shadow: 0 3px 10px rgba(62,107,76,.15); }
.rf-pay { margin-bottom: 12px; }
.pay-done { color: #3c6b4a; font-style: normal; font-weight: 700; }

/* ---------- 收银台 ---------- */
.pay-card { text-align: center; }
.pay-amount { padding: 22px 0 10px; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.pay-label { font-size: 13px; color: #a09682; letter-spacing: 3px; }
.pay-money { font-size: 40px; font-weight: 800; color: #c0471f; }
.pay-no { font-size: 12px; color: #b5ab97; }
.pay-qr { display: flex; flex-direction: column; align-items: center; padding: 14px 0; }
#qrcode { padding: 15px; background: #fff; border: 1.5px solid #9cbea6; border-radius: 16px; box-shadow: 0 6px 20px rgba(90,74,40,.12); }
.pay-tip { font-size: 13px; color: #6b6354; margin-top: 10px; }
.pay-status { font-size: 13px; color: #3e6b4c; margin-top: 10px; }
.pay-error { background: #fbeae6; color: #b0402c; border: 1px solid #f0cfc6; border-radius: 14px; padding: 13px; font-size: 13px; margin-top: 12px; }
.pay-test-hint { font-size: 12px; color: #c47a2d; margin-top: 14px; }
.pay-methods-select { display: flex; flex-direction: column; gap: 10px; padding: 16px 0; }

/* ---------- 个人中心 ---------- */
.user-head {
  background:
    radial-gradient(circle at 88% 16%, rgba(255,230,184,.16), transparent 48%),
    linear-gradient(150deg, #4a7c59, #33593f);
  color: #fff; display: flex; align-items: center; gap: 15px; padding: 30px 18px 38px;
  position: relative; overflow: hidden;
}
.user-head::after {
  content: "茶韵"; position: absolute; right: 12px; bottom: -10px; font-size: 48px;
  font-family: Georgia, "Songti SC", serif; color: rgba(255,255,255,.07); letter-spacing: 8px;
}
.user-avatar {
  width: 66px; height: 66px; border-radius: 50%;
  background: linear-gradient(150deg, #f0d9a4, #d9ae55 60%, #c0953a);
  display: flex; align-items: center; justify-content: center; font-size: 28px; font-weight: 700;
  font-family: Georgia, "Songti SC", serif; color: #5a4318;
  border: 2px solid rgba(255,255,255,.55); box-shadow: 0 5px 16px rgba(0,0,0,.2);
}
.user-name { font-size: 18px; font-weight: 700; letter-spacing: 2px; display: flex; align-items: center; gap: 6px; }
.user-phone { font-size: 13px; color: rgba(255,255,255,.7); margin-top: 5px; letter-spacing: .5px; }
.balance-strip { display: flex; margin: -22px 12px 0; position: relative; z-index: 2; padding: 15px 8px; }
.bs-item { flex: 1; text-align: center; padding: 13px 0; display: flex; flex-direction: column; gap: 5px; }
.bs-num { font-size: 22px; font-weight: 800; color: #c0471f; font-family: Georgia, "Songti SC", serif; }
.bs-label { font-size: 12px; color: #a09682; letter-spacing: 1px; }
.bs-act { font-size: 17px; font-weight: 800; color: #c47a2d; }
.user-menu { padding: 11px 17px; }
.um-grid { display: flex; }
.um-item { flex: 1; text-align: center; padding: 13px 0; position: relative; }
.um-item span { font-size: 12.5px; color: #6b6354; letter-spacing: .5px; }
.um-item b { display: block; font-size: 18px; color: #3e6b4c; margin-top: 3px; font-family: Georgia, "Songti SC", serif; }
.um-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-bottom: 5px; box-shadow: 0 0 0 3px rgba(74,124,89,.16); }
.um-dot.w0 { background: #c47a2d; }
.um-dot.w1 { background: #4a7c59; }
.um-dot.w2 { background: #1677ff; }
.um-dot.w3 { background: #6a8456; }
.um-row { display: flex; justify-content: space-between; align-items: center; padding: 14px 2px; border-bottom: 1px solid #f0ead9; font-size: 14px; color: #4a4336; letter-spacing: .5px; }
.um-row:last-child { border-bottom: none; }
.um-row i { color: #c9bda0; font-style: normal; }

/* ---------- 地址管理 ---------- */
.addr-row { display: flex; align-items: center; gap: 9px; padding: 13px 0; border-bottom: 1px solid #f0ead9; }
.addr-row:last-child { border-bottom: none; }
.ar-body { flex: 1; min-width: 0; }
.ar-line1 { font-size: 14px; font-weight: 700; color: #3a322a; }
.ar-line2 { font-size: 12.5px; color: #8f8673; margin-top: 2px; }
.ar-ops { display: flex; flex-direction: column; gap: 7px; flex: none; }
.ar-op { font-size: 12px; color: #3e6b4c; background: #edf3ea; border-radius: 15px; padding: 5px 15px; letter-spacing: .5px; }
.ar-op.danger { color: #b0402c; background: #fbeae6; }
.switch { position: relative; display: inline-block; width: 47px; height: 26px; }
.switch input { display: none; }
.switch span { position: absolute; inset: 0; background: #dcd5c1; transition: .2s; }
.switch span::after { content: ""; position: absolute; width: 20px; height: 20px; border-radius: 50%; background: #fff; top: 3px; left: 3px; transition: .2s; box-shadow: 0 1px 5px rgba(0,0,0,.2); }
.switch input:checked + span { background: #4a7c59; }
.switch input:checked + span::after { left: 24px; }

/* ---------- 登录/注册 ---------- */
.auth-wrap { padding: 30px 20px 44px; }
.auth-brand { text-align: center; margin-bottom: 28px; }
.auth-brand .auth-logo { width: 66px; height: 66px; font-size: 32px; margin: 0 auto 15px; border-radius: 50%; }
.auth-brand h2 { font-size: 24px; letter-spacing: 6px; color: #31543d; }
.auth-brand p { font-size: 13px; color: #9a8f78; margin-top: 8px; letter-spacing: 3px; }
.auth-form { padding: 24px 18px; }
.auth-link { text-align: center; font-size: 13px; color: #a09682; margin-top: 18px; }
.auth-link a { color: #3e6b4c; font-weight: 700; }

/* ---------- 底部导航（浅色） ---------- */
.tabbar {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0;
  width: 100%; max-width: 640px; z-index: 60;
  background: rgba(255,253,248,.98);
  border-top: 1px solid #e4e0d2;
  display: flex; padding-bottom: env(safe-area-inset-bottom);
  box-shadow: 0 -6px 20px rgba(90,74,40,.10); backdrop-filter: blur(6px);
}
.tabbar::before { content: ""; position: absolute; top: -1px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 5px solid #4a7c59; }
.tabbar-space { height: 66px; }
.tab { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 10px 0 8px; color: #a09682; position: relative; }
.tab svg { width: 22px; height: 22px; }
.tab span { font-size: 11px; letter-spacing: 2px; }
.tab.on { color: #3e6b4c; }
.tab.on::after { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 24px; height: 2.5px; border-radius: 2px; background: linear-gradient(90deg, #7ba98a, #3e6b4c); }
.tab-badge {
  position: absolute; top: 5px; left: 50%; margin-left: 7px;
  background: linear-gradient(135deg, #e2784d, #c0471f); color: #fff; font-size: 10px; font-style: normal;
  min-width: 17px; height: 17px; line-height: 17px; border-radius: 9px; padding: 0 4px; text-align: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.2);
}

/* ---------- 页脚 ---------- */
.footer {
  background: linear-gradient(160deg, #33593f, #28452f);
  color: #cfdcc9; padding: 26px 18px 12px; margin-top: 20px; position: relative;
}
.footer::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #7ba98a, #d9ae55 40%, #4a7c59 70%, #7ba98a); }
.footer-card h4 { color: #f0d9a4; font-size: 17px; margin-bottom: 11px; letter-spacing: 4px; font-family: Georgia, "Songti SC", serif; }
.footer-card p { font-size: 12.5px; margin: 5px 0; color: #b7c9ae; }
.footer-card a { color: #f0d9a4; }
.footer-tip { color: #94ab92 !important; letter-spacing: 1.5px; }
.footer-copy { text-align: center; font-size: 11.5px; color: #7b9279; padding: 17px 0 8px; letter-spacing: 2px; }

/* ---------- 会员价 / 优惠券 ---------- */
.tag-member {
  display: inline-block; background: linear-gradient(135deg, #d9ae55, #c0953a); color: #fff;
  font-size: 10px; font-style: normal; border-radius: 6px; padding: 2px 7px; margin-left: 6px;
  vertical-align: 1px; white-space: nowrap; letter-spacing: 1px; font-weight: 700;
  box-shadow: 0 1px 4px rgba(192,149,58,.3);
}
.tag-member-lg { font-size: 12px; padding: 4px 11px; border-radius: 8px; vertical-align: 2px; }
.detail-member-tip { font-size: 12px; color: #b3792a; margin-top: 7px; letter-spacing: .5px; }
.user-member-badge {
  display: inline-block; background: linear-gradient(135deg, #d9ae55, #c0953a); color: #fff;
  font-size: 10px; font-style: normal; border-radius: 6px; padding: 2px 9px; margin-left: 9px;
  vertical-align: 2px; letter-spacing: 1px; font-weight: 700; box-shadow: 0 2px 6px rgba(0,0,0,.2);
}

.coupon-hero {
  background:
    radial-gradient(circle at 90% 18%, rgba(255,230,184,.16), transparent 46%),
    linear-gradient(150deg, #4a7c59, #33593f);
  color: #fff; border-radius: 20px; padding: 26px 20px; margin-bottom: 14px;
  position: relative; overflow: hidden;
  box-shadow: 0 8px 26px rgba(62,107,76,.28);
}
.coupon-hero::after { content: "券"; position: absolute; right: 10px; bottom: -24px; font-size: 90px; font-family: Georgia, "Songti SC", serif; color: rgba(255,255,255,.08); }
.coupon-hero h2 { font-size: 21px; letter-spacing: 3px; font-family: Georgia, "Songti SC", serif; }
.coupon-hero p { font-size: 12.5px; color: rgba(255,255,255,.75); margin-top: 6px; letter-spacing: .5px; }

.ticket {
  display: flex; align-items: stretch; border: 1px solid #e9e0cc; border-radius: 16px;
  overflow: hidden; margin-bottom: 12px; background: #fffdf8;
  box-shadow: 0 3px 14px rgba(90,74,40,.08); position: relative;
}
.ticket.used, .ticket.expired { opacity: .55; }
.tk-left {
  width: 98px; flex: none; background:
    radial-gradient(circle at 0 50%, #f7f4ec 0 8px, transparent 8px),
    linear-gradient(150deg, #f3ead4, #e9dbb4);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  padding: 12px 6px; border-right: 1px dashed #c9b98e; position: relative;
}
.tk-left::after {
  content: ""; position: absolute; right: -7px; top: 50%; transform: translateY(-50%);
  width: 14px; height: 14px; border-radius: 50%; background: #f7f4ec;
}
.ticket.used .tk-left { background: radial-gradient(circle at 0 50%, #f7f4ec 0 8px, transparent 8px), #efeae0; }
.ticket.expired .tk-left { background: radial-gradient(circle at 0 50%, #f7f4ec 0 8px, transparent 8px), #f1ede2; }
.tk-val { font-size: 22px; font-weight: 800; color: #b3792a; font-family: Georgia, "Songti SC", serif; }
.tk-name { font-size: 11px; color: #b3792a; letter-spacing: 1px; }
.tk-mid { flex: 1; min-width: 0; padding: 13px 14px; display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.tk-mid p { font-size: 13.5px; color: #3a322a; font-weight: 700; }
.tk-tip { font-size: 11.5px; color: #a09682 !important; }
.tk-right { width: 80px; flex: none; display: flex; align-items: center; justify-content: center; }
.tk-btn {
  background: linear-gradient(140deg, #4a7c59, #3e6b4c); color: #fff;
  font-size: 13px; border: none; border-radius: 19px; padding: 8px 16px; text-decoration: none; display: inline-block;
  letter-spacing: 1px; font-weight: 700; box-shadow: 0 4px 10px rgba(62,107,76,.25);
}
.tk-btn:disabled { background: #cbc3ab; }
.ticket.used .tk-btn, .ticket.expired .tk-btn { background: #ddd6c4; color: #a09682; pointer-events: none; }
.coupon-tip { background: #f4f8f2; border: 1px solid #d8e3d2; border-radius: 15px; padding: 14px 16px; font-size: 12px; color: #6b6354; line-height: 1.9; margin-top: 12px; }
.coupon-tip b { color: #3e6b4c; }

.coupon-card .og-head { margin-bottom: 4px; }
.coupon-item { display: flex; align-items: center; gap: 11px; padding: 13px 2px; border-bottom: 1px solid #f0ead9; }
.coupon-item:last-child { border-bottom: none; }
.coupon-item.disabled { opacity: .5; }
.coupon-item input { display: none; }
.coupon-radio { width: 20px; height: 20px; border-radius: 50%; border: 2px solid #c9c3ae; flex: none; position: relative; background: #fff; }
.coupon-item input:checked + .coupon-radio { border-color: #4a7c59; }
.coupon-item input:checked + .coupon-radio::after { content: ""; position: absolute; inset: 3.5px; border-radius: 50%; background: #4a7c59; }
.coupon-body { flex: 1; min-width: 0; }
.coupon-name { font-size: 13.5px; color: #3a322a; }
.coupon-amt { color: #b3792a; font-weight: 700; font-family: Georgia, "Songti SC", serif; }
.coupon-tip { font-size: 11.5px; color: #a09682; margin-top: 2px; }
.coupon-none { font-size: 12px; color: #a09682; padding: 6px 0; }
.coupon-none a { color: #3e6b4c; }
