:root{
  --paper:#FAF6EF;
  --card:#FFFFFF;
  --ink:#2B2521;
  --ink2:#6E645A;
  --ink3:#9C9186;
  --red:#9E2F27;
  --red-deep:#7C221C;
  --gold:#B99758;
  --line:#E8DECB;
  /* 「囍」字徽章保留宋体，其余全站统一使用系统黑体 */
  --serif:"Songti SC","STSong","Noto Serif CJK SC","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Hiragino Sans GB",sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background-color:#FAF5EB;
  background-image:radial-gradient(ellipse at 50% 120px, #FFFFFF 0%, #FAF5EA 45%, #EFE4CC 78%, #E4D3B4 100%);
  background-repeat:no-repeat;
  background-size:100% 100%;
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  min-height:100vh;
}
.app{
  max-width:520px;margin:0 auto;
  padding:calc(26px + env(safe-area-inset-top)) 20px calc(36px + env(safe-area-inset-bottom));
}
body.is-detail .hd{display:none}
body.is-detail .app{padding-top:calc(6px + env(safe-area-inset-top))}

/* ---------- 头部 ---------- */
.hd{text-align:center;margin-bottom:30px}
.hd__mark{
  width:52px;height:52px;margin:0 auto 16px;
  display:flex;align-items:center;justify-content:center;
  border-radius:14px;
  background:radial-gradient(circle at center, #B32E24 0%, #8C1E17 100%);
  border:1.5px solid #E5C583;
  box-shadow:0 4px 18px rgba(158,47,39,.25), inset 0 0 0 2px rgba(229,197,131,.35);
  color:#FFF7EB;
  font-family:"Noto Serif SC", "SimSun", serif;
  font-size:26px;
  font-weight:700;
  line-height:1;
  text-shadow:0 1px 3px rgba(0,0,0,.32);
  padding-bottom:3.5px; /* 光学居中：中文字体默认基线偏下，微调抬升消除下沉感 */
  animation:sealDrop .9s cubic-bezier(.16,1,.3,1) both;
}
@keyframes sealDrop{
  0%{opacity:0;transform:translateY(-14px) scale(0.90)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
.hd__title{
  font-weight:700;
  font-size:22px;letter-spacing:.3em;text-indent:.3em;
  margin:0 0 8px;color:var(--ink);
  animation:fadeIn .9s cubic-bezier(.16,1,.3,1) .35s both;
}
.hd__sub{
  margin:0;font-size:13px;color:var(--ink2);letter-spacing:.06em;
  animation:fadeIn .9s cubic-bezier(.16,1,.3,1) .65s both;
}
@keyframes fadeIn{
  0%{opacity:0;transform:translateY(10px)}
  100%{opacity:1;transform:none}
}
.hd__sub em{font-style:normal;color:var(--red);font-weight:600;white-space:pre-wrap}
.rule{
  margin-top:18px;display:flex;justify-content:center;
  animation:ruleExpand .8s cubic-bezier(.16,1,.3,1) .95s both;
}
@keyframes ruleExpand{
  0%{opacity:0;transform:scaleX(0)}
  100%{opacity:1;transform:scaleX(1)}
}
.rule span{display:block;width:64px;height:1px;background:var(--gold);opacity:.55;position:relative}
.rule span::after{
  content:"";position:absolute;left:50%;top:-2px;width:5px;height:5px;
  margin-left:-2.5px;background:var(--gold);transform:rotate(45deg);opacity:.8;
}

/* ---------- 搜索 ---------- */
.prompt{
  font-size:17px;color:var(--ink2);
  text-align:center;margin:0 0 16px;letter-spacing:.04em;
}
.prompt em{font-style:normal;color:var(--ink);font-weight:600}
.field{position:relative}
.field input{
  width:100%;height:58px;
  padding:0 46px 0 20px;
  font-size:17px;font-family:var(--sans);color:var(--ink);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:0 2px 10px rgba(90,70,40,.05), inset 0 1px 0 #fff;
  outline:none;
  transition:border-color .2s, box-shadow .2s;
  -webkit-appearance:none;
  appearance:none;
}
.field input::placeholder{color:#BDB2A4}
.field input:focus{
  border-color:var(--gold);
  box-shadow:0 0 0 4px rgba(201,169,106,.20), 0 4px 16px rgba(185,151,88,.15);
}
.field input::-webkit-search-cancel-button{display:none}
.field__clear{
  position:absolute;right:10px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;border:0;border-radius:50%;
  background:#F0EAE0;color:var(--ink2);font-size:18px;line-height:1;
  cursor:pointer;
}
.tip{
  font-size:13px;color:var(--ink2);
  text-align:center;margin:12px 2px 0;line-height:1.5;
  letter-spacing:.02em;
}
.tip em, .tip strong, .tip b{
  font-style:normal;
  color:var(--ink);
  font-weight:600;
}
.tip.is-warn{color:var(--ink2);font-weight:500}

/* ---------- 首页底部迎宾指引 ---------- */
.venue-hint-wrap{
  margin-top:34px;
  text-align:center;
  animation:fadeIn .9s cubic-bezier(.16,1,.3,1) .75s both;
}
.venue-hint{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:7px 18px 7px 14px;
  background:linear-gradient(180deg, rgba(255,255,255,.90) 0%, rgba(251,247,239,.82) 100%);
  border:1px solid rgba(201,169,106,.32);
  border-radius:999px;
  box-shadow:0 2px 10px rgba(90,70,40,.04), inset 0 1px 0 rgba(255,255,255,.9);
  color:var(--ink2);
  font-size:12.5px;
  letter-spacing:.04em;
  line-height:1.2;
  white-space:nowrap;
  user-select:none;
}
.venue-hint svg{
  color:var(--gold);
  flex-shrink:0;
}
@media (max-width:340px){
  .venue-hint{
    font-size:11.5px;
    padding:6px 12px 6px 10px;
    gap:5px;
  }
}

/* ---------- 结果 ---------- */
.results{margin-top:16px;display:flex;flex-direction:column}
.hit{
  display:flex;align-items:center;
  width:100%;padding:13px 14px 13px 18px;margin-bottom:10px;
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  font-family:inherit;text-align:left;cursor:pointer;
  box-shadow:0 1px 6px rgba(90,70,40,.04);
  transition:transform .12s ease, border-color .2s, box-shadow .2s;
  animation:rise .28s ease both;
}
.hit:active{transform:scale(.985);border-color:var(--gold)}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.hit__main{flex:1 1 auto;min-width:0;display:flex;align-items:baseline}
.hit__zone{
  flex:0 0 auto;min-width:4.9em;
  font-size:12.5px;color:var(--ink3);letter-spacing:.04em;white-space:nowrap;
}
.hit__name{
  font-size:19px;font-weight:600;
  letter-spacing:.04em;color:var(--ink);line-height:1.35;
}
.hit__cta{
  flex:0 0 auto;margin-left:12px;
  display:inline-flex;align-items:center;
  padding:8px 13px;border-radius:999px;
  border:1px solid rgba(158,47,39,.30);
  background:rgba(158,47,39,.05);
  color:var(--red);font-size:13.5px;letter-spacing:.02em;white-space:nowrap;
}
.empty{
  text-align:center;color:var(--ink3);font-size:13.5px;
  padding:28px 10px;line-height:1.75;letter-spacing:.02em;
}
.empty__salute{
  display:block;font-size:13.5px;color:var(--ink3);
  letter-spacing:.06em;margin-bottom:6px;
}
.empty b{
  display:block;font-size:15.5px;color:var(--ink);
  font-weight:600;letter-spacing:.03em;
  margin-bottom:4px;
}

/* 彩蛋 */
.egg{
  text-align:center;padding:26px 20px 22px;margin-top:8px;
  background:var(--card);
  border:1px solid rgba(185,151,88,.45);
  border-radius:18px;
  box-shadow:0 4px 20px rgba(90,70,40,.06);
  animation:rise .3s cubic-bezier(.16,1,.3,1) both;
}
.egg__t{
  margin:0 0 14px;font-size:20px;font-weight:700;
  color:var(--red);letter-spacing:.06em;
}
.egg__box{
  background:linear-gradient(135deg, #FFFDF9 0%, #FAF5EC 100%);
  border:1px solid #E8DECB;
  border-radius:12px;
  padding:16px 16px 14px;
  margin:0 auto 16px;
  box-shadow:inset 0 1px 0 #fff;
}
.egg__from{
  margin:0 0 8px;font-size:13px;color:var(--ink3);letter-spacing:.04em;
}
.egg__bless{
  margin:0 0 12px;font-size:17px;font-weight:600;
  color:var(--ink);letter-spacing:.06em;line-height:1.4;
}
.egg__rule{
  display:flex;justify-content:center;margin:0 0 10px;
}
.egg__rule span{
  display:block;width:36px;height:1px;background:var(--gold);opacity:.45;
}
.egg__concert{
  margin:0;font-size:13.5px;font-weight:600;
  color:var(--red);letter-spacing:.04em;line-height:1.4;
}
.egg__s{
  margin:0;font-size:13px;color:var(--ink2);line-height:1.6;letter-spacing:.02em;
}

/* ---------- 详情 ---------- */
.topbar{
  position:sticky;top:0;z-index:20;
  padding:6px 0 10px;
  background:transparent;
  display:flex;align-items:center;justify-content:space-between;
}
.topbar__greet{
  display:inline-flex;align-items:center;
  background:none;border:none;box-shadow:none;
  padding:0;
  font-family:var(--sans);font-size:13.5px;color:#9E7B38;
  letter-spacing:.08em;
  white-space:nowrap;
  user-select:none;
  pointer-events:none;
}
.back{
  display:inline-flex;align-items:center;justify-content:center;
  background:#fff;border:1px solid var(--line);border-radius:999px;
  height:36px;padding:0 14px;
  font-family:var(--sans);font-size:14px;color:var(--ink);
  letter-spacing:.02em;cursor:pointer;
  box-shadow:0 1px 5px rgba(90,70,40,.07);
  box-sizing:border-box;
}
.back:active{transform:scale(.97)}

/* 座位卡 */
.seat{
  padding:16px 18px;
  background:linear-gradient(135deg, #FFFFFF 0%, #FAF6EE 100%);
  border:1.5px solid var(--gold);
  border-radius:18px;
  box-shadow:0 6px 24px rgba(185,151,88,.12), 0 1px 3px rgba(0,0,0,.03);
  position:relative;
  overflow:hidden;
}
.seat::before{
  content:'';position:absolute;inset:4px;
  border:1px dashed rgba(185,151,88,.45);
  border-radius:13px;pointer-events:none;
}
.seat__line{
  margin:0;text-align:center;white-space:nowrap;line-height:1.3;
  display:flex;align-items:baseline;justify-content:center;
}
.seat__zone{
  font-size:13px;color:var(--gold);font-weight:500;letter-spacing:.06em;
  margin-right:10px;
  padding:2px 8px;background:rgba(185,151,88,.10);border-radius:6px;
}
.seat__zone[hidden]{display:none}
.seat__name{
  font-size:26px;font-weight:600;
  color:var(--ink);letter-spacing:.04em;
}
.seat__tail{font-size:13.5px;color:var(--ink3);margin-left:6px;margin-right:12px}
.seat__no{
  font-size:28px;font-weight:700;
  color:var(--red);letter-spacing:.02em;
}
.seat__unit{font-size:14px;color:var(--ink2);margin-left:3px;font-weight:500}

@media (max-width:340px){
  .seat__name{font-size:22px}
  .seat__no{font-size:24px}
  .seat__zone{margin-right:6px;padding:1px 5px}
  .seat__tail{margin-right:8px}
}

.dir{
  display:flex;align-items:flex-start;
  margin:12px 4px 14px;font-size:14px;color:var(--ink2);line-height:1.6;
}
.dir svg{flex:0 0 auto;margin-top:3px;margin-right:8px;color:var(--red)}

/* ---------- 同桌来宾卡片 ---------- */
.matescard{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  padding:14px 16px;
  margin-bottom:14px;
  box-shadow:0 3px 16px rgba(90,70,40,.04);
}
.matescard[hidden]{display:none}
.matescard__hd{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:11px;padding-bottom:8px;
  border-bottom:1px dashed rgba(232,222,203,.7);
}
.matescard__title{
  font-size:14px;font-weight:600;color:var(--ink);letter-spacing:.04em;
}
.matescard__count{
  font-size:12px;color:var(--gold);background:rgba(185,151,88,.12);
  padding:1px 8px;border-radius:999px;font-weight:500;
}
.matescard__list{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:8px;
}
.matescard__item{
  display:inline-flex;align-items:baseline;gap:5px;
  padding:6px 11px;
  background:#FAF6F0;
  border:1px solid #EFE6D8;
  border-radius:10px;
  font-size:14.5px;color:var(--ink);
  line-height:1.2;
}
.matescard__item.is-me{
  background:rgba(158,47,39,.06);
  border-color:rgba(158,47,39,.32);
  color:var(--red);
  font-weight:600;
}
.matescard__tag{
  font-size:11.5px;color:var(--ink3);font-weight:normal;
  line-height:1;
}
.matescard__me-tag{
  font-size:10px;color:#fff;background:var(--red);
  padding:1px 5px;border-radius:4px;line-height:1.2;
}
.matescard__loading{
  font-size:13px;color:var(--ink3);padding:8px 0;text-align:center;width:100%;
}

/* 地图卡片 */
.mapcard{
  background:var(--card);border:1px solid var(--line);border-radius:18px;
  padding:12px 10px 10px;box-shadow:0 4px 22px rgba(90,70,40,.05);
  margin-bottom:14px;
}
.mapcard__hall{
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:12.5px;color:var(--gold);font-weight:500;letter-spacing:.04em;
  padding:5px 12px;margin:0 2px 10px;
  background:rgba(185,151,88,.08);border:1px dashed rgba(185,151,88,.3);
  border-radius:8px;
}
.mapcard__hall svg{color:var(--gold);flex-shrink:0}
.mapcard__note{
  text-align:center;font-size:12px;color:var(--ink3);margin:6px 0 0;letter-spacing:.03em;
}
#map svg, #seatsMap svg{display:block;width:100%;height:auto}
#map g, #seatsMap g{transition:opacity .35s ease}
#seatsMap .tbl{cursor:pointer}
#seatsMap .tbl:active circle{opacity:.82}

/* ---------- 座位总览页面 ---------- */
.seats__hint{
  font-size:13px;color:var(--ink2);text-align:center;margin:6px 0 12px;
}

/* ---------- 某桌名单：底部抽屉（暗号 seats 用） ---------- */
.drawer{position:fixed;inset:0;z-index:60}
.drawer[hidden]{display:none}
.drawer__mask{position:absolute;inset:0;background:rgba(43,37,33,.38);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.drawer__panel{
  position:absolute;left:0;right:0;bottom:0;
  max-width:520px;margin:0 auto;
  background:var(--card);
  border-radius:20px 20px 0 0;
  box-shadow:0 -8px 36px rgba(60,40,20,.22);
  padding-bottom:calc(12px + env(safe-area-inset-bottom));
  max-height:75vh;display:flex;flex-direction:column;
  animation:drawerUp .24s cubic-bezier(.16,1,.3,1) both;
}
@keyframes drawerUp{from{transform:translateY(100%)}to{transform:none}}
.drawer__hd{
  position:relative;flex:0 0 auto;
  display:flex;align-items:center;gap:8px;
  padding:14px 48px 12px 18px; /* 右侧预留 48px，坚决不被关闭按钮遮挡 */
  border-bottom:1px solid var(--line);
}
.drawer__no{
  font-size:20px;font-weight:700;color:var(--red);letter-spacing:.03em;line-height:1;
}
.drawer__zone{font-size:12.5px;color:var(--ink3);letter-spacing:.03em}
.drawer__seats{
  font-size:12px;color:var(--ink3);font-weight:400;letter-spacing:.02em;
}
.drawer__close{
  position:absolute;right:14px;top:50%;transform:translateY(-50%);
  width:28px;height:28px;border:0;border-radius:50%;
  background:#EFE8DC;color:var(--ink2);font-size:18px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .15s ease;
}
.drawer__close:active{background:#E2D8C6}
.drawer__list{
  list-style:none;margin:0;padding:12px 10px 16px;
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  display:grid;grid-template-columns:repeat(2, 1fr);gap:8px;
}
@media (max-width: 350px){
  .drawer__list{ grid-template-columns:1fr; }
}
.drawer__card{
  display:flex;align-items:center;justify-content:space-between;gap:4px;
  padding:8px 8px;
  background:#FAF6EF;
  border:1px solid #EFE4D2;
  border-radius:9px;
  box-shadow:0 1px 3px rgba(90,70,40,.04);
  min-width:0;
}
.drawer__guest{
  display:inline-flex;align-items:center;gap:4px;
  min-width:0;flex-shrink:0;
}
.drawer__nm{
  font-size:14px;font-weight:500;color:var(--ink);letter-spacing:.02em;
  white-space:nowrap;flex-shrink:0;
}
.drawer__tag{
  flex-shrink:0;
  font-size:10.5px;color:var(--gold);
  background:rgba(185,151,88,.12);
  padding:1px 5px;border-radius:4px;
  letter-spacing:.02em;font-weight:500;
  line-height:1.2;
}
.drawer__loading{
  grid-column:1 / -1;
  text-align:center;color:var(--ink3);font-size:13.5px;padding:30px 0;
}

.ft{
  margin-top:36px;text-align:center;
  padding-bottom:14px;
  user-select:none;
}
.ft__credit{
  margin:0;font-size:11.5px;color:#B8ADA0;
  letter-spacing:.12em;font-weight:400;
  display:inline-flex;align-items:center;justify-content:center;
}
body.is-detail .ft{margin-top:24px}

/* 尊重系统「减弱动效」设置 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-delay:0ms !important;
    transition-duration:.01ms !important;
  }
}

/* ---------- 婚礼日志实况复盘报告专属样式 ---------- */
.ana-header{
  text-align:center;
  margin:18px 0 20px;
}
.ana-badge{
  display:inline-block;
  background:linear-gradient(135deg, rgba(158,47,39,.1), rgba(185,151,88,.15));
  border:1px solid rgba(185,151,88,.35);
  color:var(--red);
  font-size:11.5px;
  font-weight:600;
  padding:3px 10px;
  border-radius:999px;
  letter-spacing:.08em;
  margin-bottom:8px;
}
.ana-title{
  font-size:20px;
  font-weight:700;
  color:var(--ink);
  margin:0 0 6px;
  letter-spacing:.06em;
}
.ana-subtitle{
  font-size:12.5px;
  color:var(--ink2);
  margin:0;
  letter-spacing:.02em;
}

/* 4格指标网格 */
.ana-stat-grid{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:8px;
  margin-bottom:18px;
}
@media (max-width: 440px){
  .ana-stat-grid{ grid-template-columns:repeat(2, 1fr); }
}
.ana-stat-item{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 6px;
  text-align:center;
  box-shadow:0 2px 8px rgba(90,70,40,.04);
}
.ana-stat-num{
  font-size:22px;
  font-weight:700;
  color:var(--red);
  line-height:1.1;
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
}
.ana-stat-lbl{
  font-size:11px;
  color:var(--ink3);
  margin-top:4px;
  letter-spacing:.02em;
}

/* 卡片模块 */
.ana-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  padding:18px 16px;
  margin-bottom:16px;
  box-shadow:0 2px 12px rgba(90,70,40,.04);
}
.ana-card__title{
  margin:0 0 12px;
  font-size:16px;
  font-weight:700;
  color:var(--ink);
  display:flex;
  align-items:center;
  gap:8px;
  letter-spacing:.03em;
}
.ana-icon{
  font-size:18px;
  line-height:1;
}
.ana-card__desc{
  font-size:13px;
  color:var(--ink2);
  margin:0 0 12px;
  line-height:1.55;
}
.ana-card__subnote{
  font-size:12px;
  color:var(--ink3);
  margin:10px 0 0;
  line-height:1.5;
}

/* 时间轴 */
.ana-timeline{
  position:relative;
  padding-left:14px;
  border-left:2px solid #EFE4CC;
  margin-left:6px;
}
.ana-t-item{
  position:relative;
  margin-bottom:14px;
  padding-left:12px;
}
.ana-t-item:last-child{ margin-bottom:0; }
.ana-t-item::before{
  content:"";
  position:absolute;
  left:-19px;
  top:5px;
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--gold);
  border:2px solid #FFF;
  box-shadow:0 0 0 1px var(--gold);
}
.ana-t-item.is-hot::before{
  background:var(--red);
  box-shadow:0 0 0 2px rgba(158,47,39,.35);
}
.ana-t-time{
  font-size:12px;
  font-weight:600;
  color:var(--gold);
  margin-bottom:2px;
  font-family:var(--sans);
}
.ana-t-item.is-hot .ana-t-time{ color:var(--red); }
.ana-t-cnt{
  font-size:13px;
  color:var(--ink);
  line-height:1.5;
}
.ana-t-cnt span{
  font-size:12px;
  color:var(--ink2);
}

/* 榜单列表 */
.ana-rank-list{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.ana-rank-row{
  display:flex;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  background:#FAF7F2;
  border-radius:8px;
  font-size:13px;
}
.ana-tag{
  flex-shrink:0;
  font-size:11px;
  font-weight:600;
  padding:2px 7px;
  border-radius:6px;
}
.ana-tag.is-gold{ background:#FBEFCB; color:#8C6211; }
.ana-tag.is-silver{ background:#EAE7E1; color:#5D5953; }
.ana-tag.is-bronze{ background:#F3E2CF; color:#7D4E1E; }
.ana-tag.is-red{ background:#FADBD8; color:#9E2F27; }
.ana-tag.is-blue{ background:#DCEBF7; color:#1C5482; }

.ana-rank-name{
  font-weight:600;
  color:var(--ink);
  flex-shrink:0;
}
.ana-rank-desc{
  font-size:12px;
  color:var(--ink2);
  margin-left:auto;
  text-align:right;
}

/* 进度条 */
.ana-bar-wrap{
  margin-bottom:10px;
}
.ana-bar-lbl{
  display:flex;
  justify-content:space-between;
  font-size:12.5px;
  color:var(--ink);
  margin-bottom:4px;
}
.ana-bar-lbl b{
  color:var(--red);
  font-family:var(--sans);
}
.ana-progress{
  height:7px;
  background:#EFE6D4;
  border-radius:999px;
  overflow:hidden;
}
.ana-fill{
  height:100%;
  background:linear-gradient(90deg, #C9A96A, #9E2F27);
  border-radius:999px;
}
.ana-fill.is-huawei{ background:#9E2F27; }
.ana-fill.is-xiaomi{ background:#F37A20; }
.ana-fill.is-other{ background:#7B8CA3; }

.ana-note{
  background:#FBF7EF;
  border:1px dashed var(--line);
  padding:10px 12px;
  border-radius:8px;
  font-size:12px;
  color:var(--ink2);
  margin-top:12px;
  line-height:1.55;
}

/* 长辈手写笔画卡片 */
.ana-stroke-box{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.ana-stroke-item{
  background:#F8F4EC;
  border:1px solid #ECE1CC;
  border-radius:8px;
  padding:9px 12px;
  font-size:12.5px;
  color:var(--ink);
  line-height:1.6;
}
.ana-stroke-item code{
  background:#EAE0CD;
  padding:1px 5px;
  border-radius:4px;
  color:var(--red);
  font-family:monospace;
  font-weight:600;
}

/* 暗号与彩蛋双列对比 */
.ana-secret-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
@media (max-width: 440px){
  .ana-secret-grid{ grid-template-columns:1fr; }
}
.ana-secret-box{
  background:#FAF7F0;
  border:1px solid var(--line);
  border-radius:10px;
  padding:12px;
}
.ana-secret-t{
  font-size:13.5px;
  font-weight:700;
  color:var(--red);
  margin-bottom:6px;
  display:flex;
  align-items:center;
  gap:4px;
}
.ana-secret-t code{
  background:#F0E4CE;
  padding:1px 6px;
  border-radius:4px;
  color:var(--ink);
  font-size:12px;
}
.ana-secret-box p{
  margin:0;
  font-size:12px;
  color:var(--ink2);
  line-height:1.55;
}

/* 热门桌次标签 */
.ana-table-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.ana-ttag{
  background:#F5ECE0;
  color:var(--ink2);
  padding:4px 10px;
  border-radius:8px;
  font-size:12.5px;
  font-weight:500;
}
.ana-ttag.is-top{
  background:linear-gradient(135deg, rgba(158,47,39,.12), rgba(185,151,88,.18));
  border:1px solid rgba(158,47,39,.25);
  color:var(--red);
  font-weight:600;
}

/* 现场插曲故事 */
.ana-story-item{
  border-left:3px solid var(--gold);
  padding-left:10px;
  margin-bottom:12px;
}
.ana-story-item:last-child{ margin-bottom:0; }
.ana-story-item b{
  font-size:13.5px;
  color:var(--ink);
  display:block;
  margin-bottom:3px;
}
.ana-story-item p{
  margin:0;
  font-size:12.5px;
  color:var(--ink2);
  line-height:1.55;
}
.ana-story-item code{
  background:#EAE0CD;
  padding:1px 5px;
  border-radius:4px;
  color:var(--red);
}

/* ---------- 暗号查询专享：礼金统计看板与金额徽章 ---------- */
.groom-stat-card{
  background:linear-gradient(135deg, #FFFDF8 0%, #FAF2E3 100%);
  border:1.5px solid #E4C88E;
  border-radius:14px;
  padding:14px 16px;
  margin:14px 0 16px;
  box-shadow:0 3px 14px rgba(185,151,88,.15);
}
.groom-stat-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:6px;
}
.groom-stat-label{
  font-size:12.5px;
  font-weight:600;
  color:var(--ink2);
  letter-spacing:.05em;
  display:flex;
  align-items:center;
  gap:4px;
}
.groom-stat-label::before{
  content:"🧧";
  font-size:14px;
}
.groom-stat-count{
  font-size:12px;
  color:var(--gold);
  background:rgba(185,151,88,.12);
  padding:2px 8px;
  border-radius:999px;
  font-weight:500;
}
.groom-stat-amount{
  font-size:26px;
  font-weight:700;
  color:var(--red);
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
  line-height:1.1;
  letter-spacing:.02em;
}

/* 抽屉头部：本桌礼金 */
.drawer__amount{
  font-size:12px;
  color:var(--red);
  background:rgba(158,47,39,.08);
  border:1px solid rgba(158,47,39,.18);
  padding:2.5px 8.5px;
  border-radius:999px;
  font-weight:600;
  white-space:nowrap;
  margin-left:auto;
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
  line-height:1.2;
}

/* 抽屉名单内：每个来宾的红包金额徽章 */
.drawer__gift{
  margin-left:auto;
  flex-shrink:0;
  font-size:11.5px;
  font-weight:600;
  color:var(--red);
  background:linear-gradient(135deg, rgba(158,47,39,.08), rgba(212,175,55,.12));
  border:0.5px solid rgba(158,47,39,.2);
  padding:1.5px 5.5px;
  border-radius:5px;
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
  letter-spacing:.01em;
  display:inline-flex;
  align-items:center;
  gap:1px;
  line-height:1.2;
}
.drawer__gift::before{
  content:"¥";
  font-size:10px;
  font-weight:500;
}

/* ---------- 礼金明细账本（面板与控件） ---------- */
.groom-stat-main{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:10px;
  margin-top:2px;
}
.groom-stat-btn{
  background:linear-gradient(135deg, #9E2F27, #B5762A);
  color:#FFFDF8;
  border:0;
  border-radius:999px;
  padding:5px 13px;
  font-size:12px;
  font-weight:600;
  cursor:pointer;
  letter-spacing:.03em;
  box-shadow:0 2px 8px rgba(158,47,39,.22);
  transition:all .15s ease;
  white-space:nowrap;
  display:inline-flex;
  align-items:center;
  gap:3px;
}
.groom-stat-btn:active{
  transform:scale(0.97);
  opacity:0.9;
}

.ledger-panel{
  max-height:88vh;
  display:flex;
  flex-direction:column;
  padding-bottom:0;
}
.ledger-hd{
  padding:15px 18px 12px;
  border-bottom:1px solid var(--line);
  flex:0 0 auto;
}
.ledger-hd__title-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:12px;
}
.ledger-hd__title{
  font-size:17px;
  font-weight:700;
  color:var(--red);
  letter-spacing:.04em;
  display:flex;
  align-items:center;
  gap:6px;
}
.ledger-close{
  width:28px;
  height:28px;
  border:0;
  border-radius:50%;
  background:#EFE8DC;
  color:var(--ink2);
  font-size:18px;
  line-height:1;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .15s ease;
  flex-shrink:0;
}
.ledger-close:active{ background:#E2D8C6; }
.ledger-summary{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:6px;
  margin-bottom:12px;
}
.ledger-stat{
  background:#FAF5EA;
  border:1px solid #ECE1CC;
  border-radius:8px;
  padding:6px 3px;
  text-align:center;
}
.ledger-stat__val{
  display:block;
  font-size:13.5px;
  font-weight:700;
  color:var(--red);
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
  line-height:1.2;
}
.ledger-stat__lbl{
  font-size:10px;
  color:var(--ink3);
  margin-top:2px;
  display:block;
}

.ledger-tools{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.ledger-search-box{
  position:relative;
  display:flex;
  align-items:center;
}
.ledger-search-box input{
  width:100%;
  height:35px;
  padding:0 28px 0 10px;
  background:#FAF7F0;
  border:1px solid var(--line);
  border-radius:8px;
  font-size:12.5px;
  color:var(--ink);
  outline:none;
  box-sizing:border-box;
}
.ledger-search-box input::-webkit-search-cancel-button,
.ledger-search-box input::-webkit-search-decoration{
  -webkit-appearance:none;
  appearance:none;
  display:none;
}
.ledger-search-box input:focus{
  border-color:var(--gold);
  background:#FFF;
}
.ledger-search-clear{
  position:absolute;
  right:6px;
  top:50%;
  transform:translateY(-50%);
  background:none;
  border:none;
  font-size:16px;
  color:var(--ink3);
  cursor:pointer;
  padding:2px 6px;
}
.ledger-tabs{
  display:flex;
  gap:6px;
}
.ledger-tab{
  flex:1;
  text-align:center;
  padding:6px 0;
  font-size:12px;
  font-weight:500;
  color:var(--ink2);
  background:#F5ECE0;
  border:none;
  border-radius:6px;
  cursor:pointer;
  transition:all .15s ease;
}
.ledger-tab.is-active{
  background:var(--red);
  color:#FFFDF8;
  font-weight:600;
  box-shadow:0 2px 6px rgba(158,47,39,.18);
}

.ledger-body{
  flex:1 1 auto;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:12px 12px 16px;
}

.ledger-grp{
  margin-bottom:14px;
}
.ledger-grp:last-child{
  margin-bottom:0;
}
.ledger-grp__hd{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:5px 4px 6px;
  border-bottom:1px dashed #E5D9C4;
  margin-bottom:8px;
}
.ledger-grp__title{
  font-size:13px;
  font-weight:700;
  color:var(--red);
  display:flex;
  align-items:center;
  gap:5px;
}
.ledger-grp__amount{
  font-size:11.5px;
  font-weight:600;
  color:var(--gold);
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
}

.ledger-grid{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:6px;
}
@media (max-width: 350px){
  .ledger-grid{ grid-template-columns:1fr; }
}

.ledger-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:4px;
  padding:7px 8px;
  background:#FAF6EF;
  border:1px solid #EFE4D2;
  border-radius:8px;
  min-width:0;
}
.ledger-item__main{
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-width:0;
  flex-shrink:0;
}
.ledger-item__rank{
  font-size:10px;
  font-weight:700;
  color:#B58C46;
  background:rgba(185,151,88,.15);
  width:17px;
  height:17px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  font-family:var(--sans);
}
.ledger-item__rank.is-top1{ background:#E8B038; color:#FFF; }
.ledger-item__rank.is-top2{ background:#A8B0BC; color:#FFF; }
.ledger-item__rank.is-top3{ background:#C88D6A; color:#FFF; }

.ledger-item__name{
  font-size:13.5px;
  font-weight:500;
  color:var(--ink);
  white-space:nowrap;
  flex-shrink:0;
}
.ledger-item__tag{
  font-size:10px;
  color:var(--gold);
  background:rgba(185,151,88,.12);
  padding:1px 4.5px;
  border-radius:4px;
  flex-shrink:0;
  white-space:nowrap;
}
.ledger-item__table{
  font-size:10px;
  color:var(--ink3);
  background:rgba(0,0,0,.04);
  padding:1px 4.5px;
  border-radius:4px;
  flex-shrink:0;
  white-space:nowrap;
}
.ledger-item__gift{
  margin-left:auto;
  flex-shrink:0;
  font-size:11.5px;
  font-weight:600;
  color:var(--red);
  background:linear-gradient(135deg, rgba(158,47,39,.08), rgba(212,175,55,.12));
  border:0.5px solid rgba(158,47,39,.2);
  padding:1.5px 5.5px;
  border-radius:5px;
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
  display:inline-flex;
  align-items:center;
  line-height:1.2;
}
.ledger-item__gift::before{
  content:"¥";
  font-size:10px;
  font-weight:500;
}

.ledger-ft{
  padding:10px 16px calc(12px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line);
  background:#FFFDF8;
  flex:0 0 auto;
}
.ledger-export-btn{
  width:100%;
  height:40px;
  background:linear-gradient(135deg, #FAF4E6 0%, #F5E8CE 100%);
  border:1px solid #DFC89B;
  color:var(--ink);
  font-size:13px;
  font-weight:600;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  cursor:pointer;
  transition:all .16s ease;
  box-shadow:0 2px 8px rgba(185,151,88,.12);
}
.ledger-export-btn:active{
  background:#EBD8B6;
}
.ledger-loading, .ledger-empty{
  text-align:center;
  color:var(--ink3);
  font-size:13px;
  padding:36px 0;
}
