/* ── 奶油治愈系 Design System ─────────────────── */
/* 渲染过渡：任何重新渲染时内容区轻柔过渡，消除视觉闪烁 */
#app{
  will-change: opacity;
}
#app.rendering{
  opacity: 0.92;
  transition: opacity 0.14s ease;
}
#app.rendered{
  opacity: 1;
  transition: opacity 0.14s ease;
}

:root{
  /* ── 冰淇淋奶油色系 Sorbet Palette ── */
  --bg:        #FFFDF9;
  --cream:     #FFFDF9;
  --card:      #FFFFFF;

  /* 主調色 — 降飽和，柔和桃粉 */
  --coral:     #F4A58A;
  --coral-d:   #D4826A;
  --coral-l:   #FEF5F1;
  --coral-m:   #FCDDD0;

  /* 多色標籤 — 全部降至20-30%飽和度 */
  --mint:      #8ECBA8;
  --mint-l:    #EEF8F3;
  --honey:     #F5D98A;
  --honey-l:   #FEFAE8;
  --matcha:    #C5DEC6;
  --matcha-d:  #5A8C60;
  --lavender:  #D8C8E8;
  --lav-d:     #8868A8;
  --lav-l:     #F5F0FA;
  --ocean:     #B8DDF0;
  --ocean-d:   #5888A8;
  --ocean-l:   #EDF6FC;

  /* 兼容 */
  --peach:     #F8D0BC;
  --sky:       #90C8DA;
  --sky-l:     #EAF5F8;
  --sage:      #A0C090;
  --sage-l:    #ECF5E8;
  --gold:      #F5D98A;
  --gold-l:    #FEFAE8;
  --rose:      #F0B0B0;
  --rose-l:    #FEF0F0;

  /* 文字 */
  --text-d:    #3A3835;
  --text-m:    #8A8580;
  --text-l:    #C0BCB8;

  /* 投影 — 更輕柔 */
  --shadow:    0 6px 20px rgba(200,140,110,0.09);
  --shadow-md: 0 10px 28px rgba(200,140,110,0.12);
  --shadow-sm: 0 2px 8px rgba(200,140,110,0.07);
  --shadow-card: 0 2px 10px rgba(0,0,0,0.055);

  --r-card:    24px;
  --r-pill:    50px;
  --r-btn:     14px;

  --font: 'Noto Sans SC',-apple-system,BlinkMacSystemFont,sans-serif;
  --lh-base:   1.6;
  --ls-body:   0.01em;
  --heading-gap: 4px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{
  font-family:var(--font);
  /* 纯白背景 — 简洁干净，让内容和配图更突出 */
  background: linear-gradient(180deg,
    #FFFFFF 0%,
    #FAFAFA 60%,
    #F8F8F8 100%
  );
  background-attachment: fixed;
  min-height:100vh;
  color:var(--text-d);
  padding-bottom:80px;
  line-height:var(--lh-base);
  letter-spacing:var(--ls-body);
}
/* 卡片白色底让内容清晰可读 */
.card,.browse-card,.weekly-card,.big-card,.pick-card{
  background:rgba(255,255,255,0.92) !important;
  backdrop-filter:blur(2px);
}
button{font-family:var(--font);cursor:pointer;border:none;outline:none}
a{text-decoration:none;color:inherit}
input{font-family:var(--font);outline:none}

/* ── 顶部英雄区 ─────── */
.hero{
  background-color: #b8dfb8;
  padding:16px 16px 16px;
  position:relative;
  overflow:hidden;
  min-height:220px;
}
.hero::before{ display:none; }
.hero::after{ display:none; }
.hero-sakura-left{ display:none; }
.hero-sakura-right2{ display:none; }
.hero-bg-img{
  position:absolute;
  top:0; left:0;
  width:100%; height:100%;
  object-fit:cover;
  object-position:center bottom;
  z-index:0;
  display:block;
  pointer-events:none;
}
.hero-content{
  position:relative;
  z-index:1;
}
.hero-top{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;
  position:relative;z-index:1;
  gap:8px;
}
.hero-slogan{
  font-size:22px;font-weight:900;color:var(--text-d);
  letter-spacing:-0.5px;
  line-height:1.3;
}
.hero-slogan span{
  background:linear-gradient(135deg,#FF8C30,#F05010);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.hero-sub{
  font-size:12px;color:var(--text-m);margin-top:3px;font-weight:400;
}
.weather-chip{
  background:rgba(255,255,255,0.85);
  backdrop-filter:blur(8px);
  border-radius:16px;
  padding:8px 12px;
  text-align:center;
  min-width:72px;
  box-shadow:var(--shadow-sm);
  flex-shrink:0;
}
.weather-chip .w-emoji{font-size:22px;line-height:1}
.weather-chip .w-temp{font-size:16px;font-weight:900;color:var(--text-d);margin-top:1px}
.weather-chip .w-desc{font-size:11px;color:var(--text-m);font-weight:500}
.weather-tip{
  background:rgba(255,255,255,0.85);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:24px;padding:8px 14px;
  font-size:12px;font-weight:600;
  margin-bottom:12px;
  border:1px solid rgba(0,0,0,.06);
  box-shadow:0 2px 8px rgba(0,0,0,.05);
  position:relative;z-index:1;
}

/* ── Banner Carousel ─────────────────────────── */
.bcarousel{
  overflow-x:auto;
  display:flex;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  padding-bottom:6px;
}
.bcarousel::-webkit-scrollbar{display:none}
.bcarousel-slide{flex:0 0 100%;min-width:0;scroll-snap-align:start}

/* ── 标准化 Banner 卡片 ───────────────────────── */
.std-banner-card{
  margin:0 16px 10px;
  border-radius:18px;
  overflow:hidden;
  cursor:pointer;
  box-shadow:0 4px 20px rgba(0,0,0,.08),0 1px 4px rgba(0,0,0,.04);
  transition:transform .15s,box-shadow .15s;
}
.std-banner-card:active{transform:scale(0.98);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.std-banner-inner{
  padding:10px 14px;
  min-height:80px;
  height:auto;
  display:flex;
  align-items:center;
  gap:10px;
  position:relative;
  box-sizing:border-box;
}
.std-banner-icon{
  flex-shrink:0;
  width:52px;
  height:52px;
  background:rgba(255,255,255,.5);
  border-radius:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:30px;
  position:relative;
  z-index:1;
}
.std-banner-body{
  flex:1;
  position:relative;
  z-index:1;
  padding-right:74px;
}
.std-banner-title{
  font-size:17px;
  font-weight:900;
  line-height:1.3;
  margin-bottom:3px;
}
.std-banner-sub{
  font-size:12px;
  font-weight:400;
  line-height:1.4;
  opacity:.85;
  margin-bottom:5px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.std-banner-tags{
  display:flex;
  gap:5px;
  flex-wrap:nowrap;
  overflow:hidden;
  margin-bottom:0;
}
.std-banner-tag{
  height:20px;
  font-size:10px;
  background:rgba(255,255,255,.75);
  border-radius:10px;
  padding:0 8px;
  font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;line-height:1;
}
/* ── 详情页标签胶囊（统一规格）─── */
.detail-tag{
  height:26px;
  padding:0 12px;
  border-radius:13px;
  font-size:11px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;line-height:1;
}
.std-banner-btn{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  right:16px;
  background:rgba(255,255,255,.75);
  font-size:11px;
  font-weight:800;
  padding:5px 14px;
  border-radius:12px;
  border:none;
  cursor:pointer;
  white-space:nowrap;
}
.std-banner-deco{
  position:absolute;
  inset:0;
  opacity:.10;
  font-size:52px;
  line-height:1;
  overflow:hidden;
  pointer-events:none;
}

/* ── 周末活动轮播 (新版) ──────────────────────── */
.wknd-section{
  margin:0 14px 14px;
  background:linear-gradient(145deg,#FFF0F0,#FDE8ED);
  border-radius:20px;
  overflow:hidden;
  box-shadow:0 4px 20px rgba(220,100,130,.1),0 1px 4px rgba(0,0,0,.04);
  border:1px solid rgba(255,180,190,.2);
}
.wknd-header{
  padding:14px 16px 10px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.wknd-header-title{
  font-size:17px;
  font-weight:900;
  color:#3A1A2A;
  display:flex;
  align-items:center;
  gap:6px;
}
.wknd-header-sub{
  font-size:11px;
  color:#9A6070;
  margin-top:2px;
}
.wknd-header-link{
  font-size:12px;
  font-weight:800;
  color:#C04060;
  background:rgba(255,255,255,.7);
  border:1.5px solid rgba(200,80,110,.25);
  border-radius:14px;
  padding:5px 12px;
  cursor:pointer;
  white-space:nowrap;
  flex-shrink:0;
}
.wknd-carousel-wrap{
  display:flex;
  gap:12px;
  overflow-x:auto;
  padding:4px 16px 14px;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  scroll-snap-type:x mandatory;
}
.wknd-carousel-wrap::-webkit-scrollbar{display:none}
.wknd-card{
  flex-shrink:0;
  width:260px;
  background:white;
  border-radius:16px;
  overflow:hidden;
  cursor:pointer;
  box-shadow:0 3px 14px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);
  border:1px solid rgba(0,0,0,.05);
  scroll-snap-align:start;
  transition:transform .2s,box-shadow .2s;
}
.wknd-card:active{transform:scale(0.97)}
.wknd-card-img{
  height:160px;
  position:relative;
  overflow:hidden;
  background:#F5E8ED;
}
.wknd-card-img img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .3s;
}
.wknd-card-body{
  padding:12px 12px 12px;
}
.wknd-card-title{
  font-size:14px;
  font-weight:900;
  color:#1A1A2E;
  line-height:1.35;
  margin-bottom:5px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.wknd-card-desc{
  font-size:12px;
  color:#888;
  line-height:1.5;
  margin-bottom:8px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.wknd-env-badge{
  display:inline-flex;
  align-items:center;
  gap:3px;
  font-size:9px;
  font-weight:800;
  padding:2px 6px;
  border-radius:7px;
  white-space:nowrap;
}
.wknd-seeall-card{
  flex-shrink:0;
  width:110px;
  min-height:220px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,.7);
  border-radius:16px;
  cursor:pointer;
  border:1.5px dashed rgba(200,80,110,.35);
  gap:8px;
  scroll-snap-align:start;
}
.wknd-dots{
  display:flex;
  justify-content:center;
  gap:5px;
  padding:2px 0 14px;
}
.wknd-dot{
  width:6px;height:6px;border-radius:3px;
  background:rgba(0,0,0,.15);
  transition:all .3s;
  flex-shrink:0;
}
.wknd-dot.active{
  width:18px;
  background:#C04060;
}

/* ── 天气弹窗 ─────── */
.weather-modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:10002;
  display:flex;align-items:flex-end;justify-content:center;
  animation:fadeIn .2s ease;
}
.weather-modal{
  background:var(--card);width:100%;max-width:480px;
  border-radius:24px 24px 0 0;padding:20px 20px calc(36px + env(safe-area-inset-bottom));
  animation:slideUp .32s cubic-bezier(.2,.8,.3,1);
}
.weather-modal-header{
  display:flex;align-items:center;gap:12px;margin-bottom:16px;
}
.weather-modal-icon{font-size:36px;line-height:1;flex-shrink:0}
.weather-modal-title{font-size:17px;font-weight:900;color:var(--text-d)}
.weather-modal-sub{font-size:12px;color:var(--text-m);margin-top:2px}
.weather-modal-close{
  margin-left:auto;background:rgba(0,0,0,.07);border:none;
  width:28px;height:28px;border-radius:50%;
  font-size:14px;cursor:pointer;color:var(--text-m);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.weather-modal-item{
  display:flex;align-items:center;gap:12px;
  padding:10px 0;border-top:1px solid rgba(0,0,0,.06);cursor:pointer;
}
.weather-modal-item:active{opacity:.7}
.weather-modal-item-icon{font-size:24px;flex-shrink:0}
.weather-modal-item-name{font-size:14px;font-weight:700;color:var(--text-d)}
.weather-modal-item-sub{font-size:11px;color:var(--text-m);margin-top:2px}

/* ── 搜索框 ─────── */
.search-wrap{
  position:relative;margin-bottom:0;
  position:relative;z-index:1;
}
.search-input{
  width:100%;
  height:36px;
  background:rgba(255,255,255,0.92);
  backdrop-filter:blur(8px);
  border:1.5px solid rgba(255,255,255,0.9);
  border-radius:var(--r-pill);
  padding:0 12px 0 36px;
  font-size:12px;
  color:var(--text-d);
  box-shadow:0 1px 8px rgba(255,139,118,0.10);
  transition:box-shadow .2s,border-color .2s;
}
.search-input:focus{
  box-shadow:0 4px 20px rgba(255,139,118,0.22);
  border-color:var(--coral);
}
.search-input::placeholder{color:var(--text-l)}
.search-icon{
  position:absolute;left:15px;top:50%;transform:translateY(-50%);
  font-size:16px;pointer-events:none;
}

/* ── Tab 切换 ─────── */
.tab-bar{
  display:flex;gap:0;
  margin-top:12px;
  border-bottom:none;
  position:relative;z-index:1;
}
.tab-btn{
  flex:1;padding:10px 0 14px;
  font-size:12px;font-weight:600;
  background:transparent;
  color:var(--text-m);
  border-bottom:2.5px solid transparent;
  transition:all .2s;
  letter-spacing:0.3px;
}
.tab-btn.active{
  color:var(--coral-d);
  border-bottom-color:var(--coral-d);
  font-weight:800;
}

/* ── 类别圆形图标 ─────── */
.cats-scroll{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  padding:14px 16px 6px;
  display:flex;gap:10px;
  scrollbar-width:none;
}
.cats-scroll::-webkit-scrollbar{display:none}
.cat-item{
  display:flex;flex-direction:column;align-items:center;
  gap:5px;flex-shrink:0;cursor:pointer;
}
.cat-icon{
  width:54px;height:54px;
  border-radius:18px;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;
  transition:transform .15s,box-shadow .15s;
  position:relative;
}
.cat-icon.active{
  transform:scale(1.08);
  box-shadow:0 6px 18px rgba(0,0,0,0.15);
}
.cat-icon.active::after{
  content:'';
  position:absolute;bottom:-5px;
  width:6px;height:6px;
  border-radius:50%;
  background:var(--coral-d);
}
.cat-label{
  font-size:11px;font-weight:500;
  color:var(--text-m);
  white-space:nowrap;
  text-align:center;
}
.cat-item.active .cat-label{color:var(--coral-d);font-weight:700}

/* ── 分类宫格 ─────── */
.cats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:8px;padding:12px 16px 6px;
}
.cat-grid-item{
  background:var(--card);border-radius:16px;
  padding:10px 6px 8px;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  cursor:pointer;box-shadow:var(--shadow-sm);
  border:2px solid transparent;transition:all .15s;
}
.cat-grid-item.active{border-color:var(--coral);background:var(--coral-l)}
.cat-grid-icon{font-size:24px;line-height:1}
.cat-grid-label{font-size:11px;font-weight:600;color:var(--text-m);text-align:center;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all}
.cat-grid-item.active .cat-grid-label{color:var(--coral-d);font-weight:800}
.cats-more-row{
  padding:0 16px 6px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;
}
.cats-more-row::-webkit-scrollbar{display:none}

/* ── 今日推荐大卡片 ─────── */
.featured-scroll{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  padding:10px 16px 4px;display:flex;gap:12px;scrollbar-width:none;
}
.featured-scroll::-webkit-scrollbar{display:none}
.featured-card{
  flex-shrink:0;width:220px;border-radius:20px;
  overflow:hidden;position:relative;cursor:pointer;
  box-shadow:var(--shadow-md);transition:transform .15s;
}
.featured-card:active{transform:scale(0.97)}
.featured-img{width:100%;height:138px;object-fit:cover;display:block}
.featured-img-bg{width:100%;height:138px;display:flex;align-items:center;justify-content:center;font-size:44px}
.featured-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,0.65) 0%,transparent 55%)}
.featured-content{position:absolute;bottom:0;left:0;right:0;padding:10px 12px}
.featured-badge{
  display:inline-flex;align-items:center;gap:3px;
  background:rgba(255,255,255,0.25);backdrop-filter:blur(4px);
  border-radius:7px;padding:2px 6px;font-size:9px;font-weight:700;color:white;margin-bottom:4px;
}
.featured-name{
  font-size:13px;font-weight:900;color:white;
  text-shadow:0 1px 3px rgba(0,0,0,0.4);line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.featured-meta{font-size:10px;color:rgba(255,255,255,0.8);margin-top:2px}
.section-label{
  padding:10px 16px 2px;font-size:13px;font-weight:800;color:var(--text-d);
  display:flex;align-items:center;justify-content:space-between;
}


/* ── 筛选胶囊 ─────── */
.filters-wrap{
  padding:0 16px 10px;
  display:flex;gap:7px;flex-wrap:wrap;
}
.filter-pill{
  height:40px;
  padding:0 12px;
  border-radius:var(--r-pill);
  font-size:11px;font-weight:700;
  background:var(--card);
  color:var(--text-m);
  border:1.5px solid #E8E8E8;
  transition:all .18s;
  white-space:nowrap;
  display:flex;align-items:center;gap:4px;
  letter-spacing:0.01em;
}
.filter-pill.active{
  background:var(--coral-d);
  color:white;
  border-color:var(--coral-d);
  font-weight:800;
  box-shadow:0 2px 8px rgba(212,130,106,.35);
}
.filter-row{
  display:flex;gap:7px;
  overflow-x:auto;
  scrollbar-width:none;
  padding-bottom:2px;
  flex-wrap:nowrap;
}
.filter-row::-webkit-scrollbar{display:none}

/* ── 地点数量提示 ─────── */
.count-bar{
  padding:4px 16px 10px;
  display:flex;align-items:center;justify-content:space-between;
}
.count-text{font-size:12px;color:var(--text-m);font-weight:500}
.count-num{font-weight:800;color:var(--text-d)}
.view-toggle{
  display:flex;gap:4px;
  background:var(--card);
  border-radius:10px;
  padding:3px;
  box-shadow:var(--shadow-sm);
}
.view-btn{
  width:28px;height:28px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;
  background:transparent;color:var(--text-l);
  transition:all .15s;
}
.view-btn.active{background:var(--coral-l);color:var(--coral-d)}

/* ── 卡片容器 ─────── */
.cards-wrap{
  padding:0 16px;
  display:flex;flex-direction:column;
  gap:14px;
}
.cards-grid{
  padding:0 16px;
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
}

/* ── 地点卡片（列表模式） ─────── */
.place-card{
  background:var(--card);
  border-radius:var(--r-card);
  box-shadow:var(--shadow);
  overflow:hidden;
  display:flex;
  transition:transform .15s,box-shadow .15s;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.place-card:active{transform:scale(0.98)}
.card-accent{
  width:68px;min-width:68px;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:4px;
  padding:12px 6px;
}
.card-emoji{font-size:26px;line-height:1}
.card-type-tag{
  font-size:10px;font-weight:700;
  color:white;opacity:0.85;
  text-align:center;
  max-width:56px;
  line-height:1.3;
}
.card-body{
  flex:1;padding:12px 14px 12px 10px;
  min-width:0;
}
.card-name{
  font-size:14px;font-weight:800;
  color:var(--text-d);
  margin-bottom:2px;
  line-height:1.35;
  display:-webkit-box;
  -webkit-line-clamp:1;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.card-area{
  font-size:11px;color:var(--text-m);
  margin-bottom:7px;font-weight:400;
}
.card-tags{
  display:flex;gap:4px;flex-wrap:wrap;align-items:center;
  margin-bottom:7px;
}
.tag{
  height:20px;
  padding:0 8px;
  border-radius:10px;
  font-size:10px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;
  line-height:1;
}
.tag-price{background:#FFF5CC;color:#9B7800}
.tag-indoor{background:var(--sky-l);color:#3A88AA}
.tag-outdoor{background:var(--sage-l);color:#4A8040}
.tag-free{background:#E6FAF0;color:#1A8050}
.card-notes{
  font-size:11px;color:var(--text-m);
  line-height:1.5;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.card-footer{
  display:flex;align-items:center;justify-content:space-between;
  margin-top:8px;padding-top:8px;
  border-top:1px solid #F5F5F5;
}
.card-link{
  font-size:10px;font-weight:700;
  color:var(--coral-d);
  display:flex;align-items:center;gap:3px;
}
.card-save{
  width:28px;height:28px;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--cream);
  font-size:14px;
  transition:background .15s;
}
.card-save.saved{background:var(--coral-l)}

/* 展开状态 */
.card-expanded{
  background:var(--card);
  border-radius:var(--r-card);
  box-shadow:var(--shadow-md);
  overflow:hidden;
  margin-bottom:2px;
}
.card-exp-header{
  padding:16px 16px 12px;
  display:flex;align-items:flex-start;gap:12px;
}
.card-exp-icon{
  width:52px;height:52px;
  border-radius:16px;
  display:flex;align-items:center;justify-content:center;
  font-size:26px;
  flex-shrink:0;
}
.card-exp-body{flex:1}
.card-exp-name{font-size:16px;font-weight:900;color:var(--text-d);margin-bottom:2px}
.card-exp-sub{font-size:11px;color:var(--text-m)}
.card-exp-content{padding:0 16px 16px}
.detail-row{
  display:flex;gap:8px;margin-bottom:10px;
}
.detail-item{
  flex:1;
  background:var(--cream);
  border-radius:12px;
  padding:8px 10px;
}
.detail-label{font-size:11px;color:var(--text-l);font-weight:600;margin-bottom:3px;text-transform:uppercase;letter-spacing:0.5px}
.detail-val{font-size:12px;font-weight:700;color:var(--text-d);line-height:1.3}
.notes-box{
  background:var(--cream);
  border-radius:12px;
  padding:10px 12px;
  margin-bottom:10px;
}
.notes-text{font-size:12px;color:var(--text-m);line-height:1.6}
.link-btn{
  display:flex;align-items:center;justify-content:center;gap:6px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  color:white;
  border-radius:var(--r-btn);
  padding:11px;
  font-size:13px;font-weight:800;
  box-shadow:0 4px 14px rgba(255,139,118,0.3);
  margin-top:4px;
}

/* 网格卡片（竖版） */
.place-card-v{
  background:var(--card);
  border-radius:var(--r-card);
  box-shadow:var(--shadow);
  overflow:hidden;
  cursor:pointer;
  transition:transform .15s,box-shadow .15s;
}
.place-card-v:active{transform:scale(0.97)}
.card-v-header{
  height:90px;
  display:flex;align-items:center;justify-content:center;
  font-size:36px;
  position:relative;
}
.card-v-save{
  position:absolute;top:8px;right:8px;
  width:26px;height:26px;border-radius:50%;
  background:rgba(255,255,255,0.85);
  display:flex;align-items:center;justify-content:center;
  font-size:13px;
}
.card-v-body{padding:10px 12px 12px}
.card-v-name{font-size:13px;font-weight:800;color:var(--text-d);margin-bottom:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.card-v-area{font-size:10px;color:var(--text-m);margin-bottom:6px}
.card-v-tags{display:flex;gap:3px;flex-wrap:wrap;align-items:center}

/* ── 空状态 ─────── */
.empty-state{
  padding:48px 24px;
  text-align:center;
}
.empty-icon{font-size:48px;margin-bottom:12px}
.empty-title{font-size:15px;font-weight:800;color:var(--text-d);margin-bottom:6px}
.empty-sub{font-size:12px;color:var(--text-m);line-height:1.6}

/* ── 本亲子周末活动 ─────── */
.weekly-card{
  background:var(--card);
  border-radius:var(--r-card);
  box-shadow:var(--shadow-card);
  overflow:hidden;
  margin:0 16px 10px;
}
/* 网格视图下的活动卡片 */
.weekly-grid-wrap .weekly-card{
  margin:0;
  border-radius:14px;
}
.weekly-grid-wrap .weekly-img{height:110px}
.weekly-grid-wrap .weekly-img-title{font-size:11px;bottom:7px;left:8px;right:8px}
.weekly-grid-wrap .weekly-header{padding:7px 10px 4px}
.weekly-grid-wrap .weekly-name{font-size:12px}
.weekly-grid-wrap .weekly-body{padding:0 10px 10px}
.weekly-grid-wrap .weekly-info{display:none}
.weekly-grid-wrap .weekly-cta{padding:0 10px;height:40px;font-size:10px}
/* 本周活动图片区 */
.weekly-img{
  position:relative;height:150px;overflow:hidden;
  background:linear-gradient(135deg,#E8F0FF,#F0E8FF);
}
.weekly-img img{width:100%;height:100%;object-fit:cover;display:block}
.weekly-img-overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.60) 0%,rgba(0,0,0,.12) 55%,transparent 100%);
}
.weekly-img-badges{
  position:absolute;top:7px;left:10px;
  display:flex;gap:5px;flex-wrap:wrap;
  max-width:78%;
}
.weekly-cat-row{
  position:absolute;bottom:46px;left:12px;z-index:3;
  display:flex;gap:4px;
}
.weekly-grid-wrap .weekly-cat-row{bottom:30px;left:8px}
.weekly-img-title{
  position:absolute;bottom:10px;left:12px;right:12px;
  font-size:14px;font-weight:900;color:white;
  text-shadow:0 1px 5px rgba(0,0,0,.6);
  line-height:1.35;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.weekly-header{padding:9px 14px 6px}
.weekly-badges{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-bottom:6px}
.weekly-badge{
  height:20px;padding:0 8px;
  border-radius:10px;font-size:10px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;line-height:1;
}
.weekly-name{font-size:14px;font-weight:900;color:var(--text-d);margin-bottom:1px;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.weekly-venue{font-size:12px;color:var(--text-m);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.weekly-body{padding:0 14px 14px}
.weekly-header .amenity-tags{padding:0}
.weekly-info{
  display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;
}
.weekly-info-item{
  background:var(--cream);border-radius:10px;padding:7px 10px;min-width:0;
}
.weekly-info-label{font-size:11px;color:var(--text-l);font-weight:600;margin-bottom:3px;letter-spacing:.2px}
.weekly-info-val{font-size:12px;font-weight:700;color:var(--text-d);
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.weekly-desc{
  font-size:12px;color:var(--text-m);line-height:1.65;
  background:var(--cream);border-radius:10px;padding:9px 11px;margin-bottom:8px;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;
}
.weekly-cta{
  display:flex;align-items:center;justify-content:center;gap:6px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  color:white;border-radius:var(--r-btn);
  padding:10px;font-size:12px;font-weight:800;
  box-shadow:0 4px 12px rgba(255,139,118,0.28);
}

/* ── 周末活动 Premium v2 ─────────────────────────────────────── */
.wk2-card{
  background:var(--card);border-radius:20px;
  box-shadow:0 2px 12px rgba(0,0,0,.08),0 8px 28px rgba(0,0,0,.07);
  overflow:hidden;margin:0 16px 16px;
  -webkit-tap-highlight-color:transparent;
  transition:transform .15s,box-shadow .15s;
  border:1px solid rgba(0,0,0,.04);
}
.wk2-card:active{transform:scale(0.985);box-shadow:0 1px 6px rgba(0,0,0,.07)}
.wk2-hero{position:relative;height:215px;overflow:hidden;background:linear-gradient(135deg,#E8F0FF,#F0E8FF)}
.wk2-hero img{width:100%;height:100%;object-fit:cover;display:block}
.wk2-hero-grad{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.88) 0%,rgba(0,0,0,.35) 45%,rgba(0,0,0,.04) 100%);
}
.wk2-hero-top{
  position:absolute;top:10px;left:10px;right:10px;
  display:flex;justify-content:space-between;align-items:flex-start;gap:6px;
}
.wk2-hero-bottom{position:absolute;bottom:0;left:0;right:0;padding:12px 14px}
.wk2-cat-chips{display:flex;gap:5px;margin-bottom:8px}
.wk2-cat-chip{
  font-size:9px;font-weight:700;padding:2px 8px;border-radius:20px;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:white;
  letter-spacing:0.01em;line-height:1.4;
}
.wk2-title{
  font-size:17px;font-weight:900;color:white;
  text-shadow:0 1px 8px rgba(0,0,0,.55);line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.wk2-body{padding:13px 14px 14px}
.wk2-meta-row{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}
.wk2-meta-chip{
  display:inline-flex;align-items:center;gap:4px;
  height:28px;padding:0 11px;border-radius:14px;
  font-size:11px;font-weight:700;
  background:var(--cream);color:var(--text-d);
  border:1.5px solid rgba(0,0,0,.05);white-space:nowrap;
}
.wk2-venue-row{
  font-size:12px;color:var(--text-m);display:flex;align-items:center;gap:5px;
  margin-bottom:9px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
}
.wk2-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.wk2-tag{
  height:22px;padding:0 8px;border-radius:11px;font-size:10px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;
}
.wk2-desc{
  font-size:12px;color:var(--text-m);line-height:1.65;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
  margin-bottom:12px;
}
.wk2-actions{display:flex;gap:7px;align-items:center}
.wk2-btn-main{
  flex:1;height:40px;border-radius:12px;background:var(--coral);color:white;
  border:none;font-size:12px;font-weight:800;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  box-shadow:0 3px 10px rgba(255,139,118,.28);text-decoration:none;
}
.wk2-btn-sec{
  height:40px;padding:0 13px;border-radius:12px;
  background:var(--cream);color:var(--text-m);
  border:1.5px solid #EBEBEB;font-size:12px;font-weight:700;
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;
}
.wk2-btn-ghost{
  height:40px;padding:0 11px;border-radius:12px;
  background:rgba(0,0,0,.04);color:var(--text-l);
  border:1.5px solid rgba(0,0,0,.06);font-size:13px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
}
/* 周末导航栏 v2 */
.wk2-nav{
  display:flex;align-items:center;padding:10px 14px 6px;gap:8px;
}
.wk2-nav-arrow{
  flex-shrink:0;width:36px;height:36px;border-radius:50%;
  border:1.5px solid #EBEBEB;background:white;font-size:17px;color:var(--text-m);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 5px rgba(0,0,0,.07);
}
.wk2-nav-center{flex:1;text-align:center;background:rgba(255,255,255,.78);border-radius:14px;padding:6px 14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.wk2-nav-title{font-size:14px;font-weight:900;color:#3D2010;text-shadow:none}
.wk2-nav-sub{font-size:11px;color:#6D4A30;margin-top:2px;text-shadow:none}
.wk2-week-badge{
  display:inline-block;margin-left:5px;font-size:10px;
  padding:2px 7px;border-radius:8px;color:white;vertical-align:middle;font-weight:800;
}
/* 搜索栏 v2 */
.wk2-search-wrap{padding:4px 14px 6px}
.wk2-search-inner{position:relative}
.wk2-search-icon{
  position:absolute;left:12px;top:50%;transform:translateY(-50%);
  font-size:14px;color:var(--text-l);pointer-events:none;
}
.wk2-search-input{
  width:100%;height:40px;border-radius:20px;
  border:1.5px solid #E8E8E8;padding:0 36px 0 36px;
  font-size:13px;font-family:var(--font);
  outline:none;background:white;color:var(--text-d);box-sizing:border-box;
  transition:border-color .2s,box-shadow .2s;
}
.wk2-search-input:focus{border-color:var(--coral);box-shadow:0 0 0 3px rgba(255,139,118,.12)}
/* 网格模式 */
.wk2-grid-wrap{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 14px 4px}
.wk2-grid-wrap .wk2-card{margin:0;border-radius:16px}
.wk2-grid-wrap .wk2-hero{height:130px}
.wk2-grid-wrap .wk2-cat-chips{display:none}
.wk2-grid-wrap .wk2-hero-grad{background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.25) 65%,transparent 100%)}
.wk2-grid-wrap .wk2-hero-bottom{padding:9px 10px}
.wk2-grid-wrap .wk2-title{font-size:12px;font-weight:900;-webkit-line-clamp:3;line-height:1.3}
.wk2-grid-wrap .wk2-hero-top span{font-size:9px;padding:3px 7px;border-radius:9px}
.wk2-grid-wrap .wk2-body{padding:7px 10px 10px}
.wk2-grid-wrap .wk2-meta-row{display:none}
.wk2-grid-wrap .wk2-venue-row{font-size:10px;margin-bottom:6px}
.wk2-grid-wrap .wk2-tags{display:none}
.wk2-grid-wrap .wk2-desc{display:none}
.wk2-grid-wrap .wk2-actions{gap:4px}
.wk2-grid-wrap .wk2-btn-main{font-size:10px;height:32px;border-radius:10px;box-shadow:none}
.wk2-grid-wrap .wk2-btn-sec{height:32px;padding:0 8px;font-size:10px;border-radius:10px}
.wk2-grid-wrap .wk2-btn-ghost{height:32px;padding:0 8px;font-size:11px;border-radius:10px}
/* ── 活动详情浮层 ── */
.evt-detail-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:2100;display:flex;flex-direction:column;justify-content:flex-end;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.evt-detail-sheet{background:var(--card);border-radius:24px 24px 0 0;max-height:92vh;overflow-y:auto;position:relative;overscroll-behavior:contain}
.evt-detail-hero{position:relative;height:220px;overflow:hidden;background:linear-gradient(135deg,#E8F0FF,#F0E8FF);flex-shrink:0}
.evt-detail-hero img{width:100%;height:100%;object-fit:cover;display:block}
.evt-detail-hero-grad{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.88) 0%,rgba(0,0,0,.2) 55%,transparent 100%)}
.evt-detail-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;border:none;background:rgba(0,0,0,.45);color:white;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.evt-detail-hero-bottom{position:absolute;bottom:0;left:0;right:0;padding:12px 14px}
.evt-detail-body{padding:16px 16px 40px}
.evt-detail-name{font-size:18px;font-weight:900;color:var(--text-d);line-height:1.3;margin-bottom:10px}
.evt-detail-venue{font-size:12px;color:var(--text-m);display:flex;align-items:flex-start;gap:5px;margin-bottom:10px;line-height:1.5}
.evt-detail-desc{font-size:13px;color:var(--text-m);line-height:1.65;margin-bottom:14px}
.evt-detail-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:16px}
.evt-detail-btn-playdate{width:100%;height:48px;border-radius:14px;background:linear-gradient(135deg,#F97316,#C2410C);color:white;border:none;font-size:15px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;box-shadow:0 4px 16px rgba(249,115,22,.30);margin-bottom:9px}
.evt-detail-btn-row{display:flex;gap:8px;margin-bottom:9px}
.evt-detail-btn-want{flex:1;height:42px;border-radius:12px;background:rgba(0,0,0,.04);color:var(--text-m);border:1.5px solid rgba(0,0,0,.08);font-size:13px;font-weight:800;cursor:pointer;transition:background .15s,color .15s}
.evt-detail-btn-checkin{flex:1;height:42px;border-radius:12px;background:rgba(0,0,0,.04);color:var(--text-m);border:1.5px solid rgba(0,0,0,.08);font-size:13px;font-weight:800;cursor:pointer;transition:background .15s,color .15s}
.evt-detail-btn-url{width:100%;height:42px;border-radius:12px;background:white;color:var(--text-d);border:1.5px solid rgba(0,0,0,.10);font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;text-decoration:none}
.evt-cal-wrap{margin-bottom:9px}
.evt-cal-btn{width:100%;height:42px;border-radius:12px;background:rgba(80,60,180,.07);color:#4830A0;border:1.5px solid rgba(80,60,180,.18);font-size:13px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:background .15s}
.evt-cal-btn:active{background:rgba(80,60,180,.13)}
/* picker 用普通流布局（不用 absolute），避免被父级 overflow:auto 裁剪 */
.evt-cal-picker{margin-top:6px;background:var(--card);border-radius:14px;box-shadow:0 4px 20px rgba(0,0,0,.13);border:1px solid rgba(0,0,0,.07);overflow:hidden;animation:_calPickerIn .15s ease}
@keyframes _calPickerIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.evt-cal-opt{width:100%;height:48px;border:none;background:transparent;color:var(--text-d);font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;padding:0 16px;gap:10px;border-bottom:1px solid rgba(0,0,0,.05);text-align:left}
.evt-cal-opt:last-child{border-bottom:none}
.evt-cal-opt:active{background:rgba(0,0,0,.04)}

/* ── 用户主页 modal ─────────────────────────────────────────────── */
.upf-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:2200;display:flex;flex-direction:column;justify-content:flex-end;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.upf-sheet{background:var(--card);border-radius:24px 24px 0 0;max-height:92vh;overflow-y:auto;position:relative;overscroll-behavior:contain}
.upf-cover{height:128px;flex-shrink:0;position:relative}
.upf-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(255,255,255,0) 55%,rgba(255,255,255,.18) 100%);pointer-events:none}
.upf-close{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:none;background:rgba(0,0,0,.38);color:white;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.upf-avatar{width:72px;height:72px;border-radius:50%;border:3.5px solid white;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 18px rgba(124,58,237,.22);overflow:hidden;cursor:pointer;position:relative}
.upf-avatar-edit{position:absolute;inset:0;background:rgba(0,0,0,.38);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;border-radius:50%}
.upf-avatar:hover .upf-avatar-edit{opacity:1}
.upf-stat-row{display:flex;margin:0 16px 16px;background:linear-gradient(135deg,#F6F1FF,#FBF1F8);border-radius:18px;overflow:hidden;border:1px solid #EFE8FF}
.upf-stat-item{flex:1;padding:14px 8px;text-align:center}
.upf-stat-item:not(:last-child){border-right:1px solid rgba(160,128,224,.14)}
.upf-stat-num{font-size:22px;font-weight:900;color:#5040A0;line-height:1.1}
.upf-stat-lbl{font-size:10px;color:#9090B0;margin-top:3px}
.upf-tag{background:#F0E8FF;color:#7040C0;border-radius:20px;padding:5px 13px;font-size:12px;font-weight:700;display:inline-block}
.upf-info-row{font-size:12px;color:#555;padding:8px 0;border-bottom:1px solid #F5F5F5;display:flex;align-items:center;gap:8px}
.upf-info-row:last-child{border-bottom:none}
.upf-privacy-lock{font-size:10px;color:#B0B0C0;margin-left:auto;flex-shrink:0}
.upf-hidden-notice{margin:0 16px 14px;padding:10px 14px;background:#FFFBE8;border-radius:12px;font-size:11px;color:#A08020;border:1px solid rgba(200,160,0,.15)}

/* ── 主页编辑 sheet ─────────────────────────────────────────────── */
.upf-edit-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:2300;display:flex;flex-direction:column;justify-content:flex-end;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.upf-edit-sheet{background:var(--card);border-radius:24px 24px 0 0;max-height:95vh;overflow-y:auto;position:relative;overscroll-behavior:contain}
.upf-edit-label{font-size:12px;font-weight:800;color:var(--text-d);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.upf-edit-input{width:100%;padding:12px 14px;border-radius:14px;border:1.5px solid rgba(0,0,0,.1);background:var(--cream);font-size:13px;color:var(--text-d);box-sizing:border-box;font-family:var(--font)}
.upf-edit-input:focus{outline:none;border-color:#A080E0}
.upf-privacy-row{display:flex;gap:5px;margin-top:6px}
.upf-privacy-btn{flex:1;padding:6px 4px;border-radius:10px;border:1.5px solid rgba(0,0,0,.08);background:var(--cream);font-size:11px;color:var(--text-m);cursor:pointer;font-weight:600;text-align:center;transition:all .15s}
.upf-privacy-btn:active{transform:scale(.94)}
.upf-privacy-btn.active{background:#EDE8FF;border-color:#A080E0;color:#6040A0;font-weight:800}
.upf-tag-toggle{padding:7px 14px;border-radius:20px;border:1.5px solid rgba(0,0,0,.1);background:white;color:var(--text-m);font-size:12px;font-weight:600;cursor:pointer;transition:transform .12s,box-shadow .15s,background .15s,border-color .15s,color .15s;white-space:nowrap}
.upf-tag-toggle:active{transform:scale(.93)}
.upf-tag-toggle.active{background:linear-gradient(135deg,#A78BFA,#7C3AED);border-color:transparent;color:#fff;font-weight:800;box-shadow:0 3px 10px rgba(124,58,237,.28)}

/* ── 我的主页预览卡片 (在mine tab里) ──────────────────────────────── */
.upf-mine-card{margin:12px 16px 0;background:white;border-radius:22px;overflow:hidden;box-shadow:0 2px 16px rgba(120,80,180,.08)}
.upf-mine-cover{height:80px;background:linear-gradient(135deg,#F3E8FF 0%,#E0D4FF 40%,#FFD8F0 100%)}

.section-title{font-size:13px;font-weight:800;color:var(--text-d);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.range-wrap{margin-bottom:14px}
.range-header{display:flex;justify-content:space-between;margin-bottom:8px}
.range-label{font-size:12px;font-weight:600;color:var(--text-d)}
.range-val{font-size:15px;font-weight:900;color:var(--coral-d)}
input[type=range]{
  width:100%;
  -webkit-appearance:none;
  height:8px;  /* 更粗 — 設計師說「毛毛蟲/雲朵般粗壯圓潤」 */
  background:linear-gradient(90deg,var(--coral) 0%,#FF9E80 50%,var(--lavender) 100%);
  border-radius:50px;cursor:pointer;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;
  width:26px;height:26px;
  border-radius:50%;
  background:white;
  border:3px solid var(--coral);
  box-shadow:0 3px 10px rgba(255,158,128,0.45);
  cursor:pointer;
  transition:transform .1s;
}
input[type=range]::-webkit-slider-thumb:active{
  transform:scale(1.15);
}
.budget-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px}
.budget-btn{
  padding:8px 4px;
  border-radius:12px;
  border:1.5px solid #EBEBEB;
  background:var(--cream);
  font-size:12px;font-weight:600;
  color:var(--text-m);
  transition:all .15s;
}
.budget-btn.active{
  border-color:var(--coral-m);
  background:var(--coral-l);
  color:var(--coral-d);
  font-weight:800;
}
.area-chips{display:flex;gap:6px;flex-wrap:wrap}
.area-chip{
  height:40px;padding:0 12px;
  border-radius:var(--r-pill);
  font-size:11px;font-weight:600;
  background:var(--cream);color:var(--text-m);
  border:1.5px solid #EBEBEB;
  transition:all .15s;
}
.area-chip.active{
  background:var(--mint-l);color:#2A8060;
  border-color:rgba(110,198,160,0.5);
  font-weight:800;
}
.ai-cta-btn{
  width:auto;padding:8px 20px;
  border-radius:20px;
  background:linear-gradient(135deg,var(--coral) 0%,#F5A080 100%);
  color:white;font-size:12px;font-weight:800;
  box-shadow:0 3px 10px rgba(255,139,118,0.3);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  margin-bottom:6px;
  transition:transform .15s,box-shadow .15s;
}
.ai-cta-btn:active{transform:scale(0.97);box-shadow:0 3px 12px rgba(255,139,118,0.25)}
.copy-success{
  background:#E6FAF0;border-radius:14px;
  padding:14px 16px;margin-bottom:10px;
  display:flex;gap:10px;align-items:flex-start;
}
.steps-card{
  background:var(--cream);border-radius:14px;
  padding:14px 16px;
}
.step-row{display:flex;gap:8px;margin-bottom:8px;align-items:flex-start}
.step-num{font-size:13px;flex-shrink:0;line-height:1.5}
.step-text{font-size:12px;color:var(--text-m);line-height:1.5}

/* ── 顶部公告栏 ─────── */
/* ── 一次性 toast 通知 ─────── */
.ann-toast{
  position:fixed;
  bottom:calc(68px + env(safe-area-inset-bottom));
  left:12px;right:12px;
  z-index:9999;
  background:rgba(40,40,40,.92);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:16px;
  padding:12px 14px;
  display:flex;align-items:center;gap:10px;
  box-shadow:0 4px 24px rgba(0,0,0,.25);
  animation:toast-in .3s cubic-bezier(.34,1.56,.64,1);
  pointer-events:auto;
}
.ann-toast.hiding{
  animation:toast-out .25s ease-in forwards;
}
@keyframes toast-in{
  from{opacity:0;transform:translateY(20px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes toast-out{
  from{opacity:1;transform:translateY(0)}
  to{opacity:0;transform:translateY(16px)}
}
.ann-toast-text{
  flex:1;font-size:12px;font-weight:600;color:white;line-height:1.4;
}
.ann-toast-close{
  width:24px;height:24px;border-radius:12px;
  background:rgba(255,255,255,.15);border:none;
  color:white;font-size:14px;line-height:1;
  cursor:pointer;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}

/* ── 底部导航 ─────── */
.bottom-nav{
  position:fixed;bottom:0;left:0;right:0;
  background:rgba(255,255,255,0.98);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border-top:1px solid rgba(0,0,0,0.06);
  display:flex;
  padding:5px 0 calc(5px + env(safe-area-inset-bottom));
  z-index:2000;
  box-shadow:0 -4px 24px rgba(0,0,0,.08);
}

/* ── 平板/桌面：宽屏布局适配 ── */
@media (min-width: 768px) {
  html {
    background: #B8AFA6;
    background-image:
      radial-gradient(ellipse at 30% 20%, rgba(255,200,180,0.12) 0%, transparent 60%),
      radial-gradient(ellipse at 70% 80%, rgba(180,160,200,0.1) 0%, transparent 60%),
      repeating-linear-gradient(
        45deg,
        transparent,
        transparent 5px,
        rgba(0,0,0,0.025) 5px,
        rgba(0,0,0,0.025) 10px
      );
    min-height: 100vh;
  }
  body {
    max-width: 680px;
    margin: 0 auto;
    min-height: 100vh;
    box-shadow:
      0 0 0 1px rgba(0,0,0,0.14),
      0 8px 48px rgba(0,0,0,0.3),
      0 2px 8px rgba(0,0,0,0.15);
    position: relative;
  }
  /* 底部导航跟随 body 居中 */
  .bottom-nav {
    max-width: 680px;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }
  /* 导航字号稍大 */
  .nav-item { font-size: 13px; padding: 5px 0; }
  /* 分类网格：6列 */
  .cats-grid {
    grid-template-columns: repeat(6, 1fr);
    padding: 14px 20px 8px;
    gap: 10px;
  }
  .cat-grid-icon { font-size: 28px; }
  .cat-grid-label { font-size: 12px; }
  /* 周末卡片加宽 */
  .wknd-card { width: 300px; }
  .wknd-card-img { height: 174px; }
  /* 精选卡片加宽 */
  .featured-card { width: 262px; }
  .featured-img, .featured-img-bg { height: 162px; }
  /* 列表卡片改双列 grid */
  .cards-wrap {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    padding: 0 20px;
    gap: 14px;
  }
  /* 方格卡片加间距 */
  .cards-grid { padding: 0 20px; gap: 12px; }
  /* 区块标题 */
  .section-label { padding: 14px 20px 4px; font-size: 14px; }
  /* 筛选行 */
  .filters-wrap { padding: 0 20px 12px; }
  .filter-row { padding-left: 20px; padding-right: 20px; }
  /* Hero 区域 */
  .hero { padding: 22px 20px 0; }
  .hero-slogan { font-size: 26px; }
  /* 详情页英雄图加高 */
  .detail-hero { height: 320px; }
}

/* ── 大平板 (iPad Pro / Surface, 1024px+) ── */
@media (min-width: 1024px) {
  body { max-width: 800px; }
  .bottom-nav { max-width: 800px; }
  /* 分类网格：8列 */
  .cats-grid { grid-template-columns: repeat(8, 1fr); }
  /* 卡片再加宽 */
  .wknd-card { width: 330px; }
  .wknd-card-img { height: 188px; }
  .featured-card { width: 290px; }
  .featured-img, .featured-img-bg { height: 178px; }
  /* 详情页英雄图更高 */
  .detail-hero { height: 380px; }
}

/* ── 电脑 (MacBook 13" / 1080p 笔记本, 1280px+) ── */
@media (min-width: 1280px) {
  body { max-width: 960px; }
  .bottom-nav { max-width: 960px; }
  /* 卡片列表改三列 */
  .cards-wrap { grid-template-columns: repeat(3, 1fr); gap: 16px; }
  /* 方格卡片也加间距 */
  .cards-grid { gap: 14px; }
  /* 周末/精选卡片继续加宽 */
  .wknd-card { width: 360px; }
  .wknd-card-img { height: 200px; }
  .featured-card { width: 310px; }
  .featured-img, .featured-img-bg { height: 190px; }
  /* Hero 更大气 */
  .hero { padding: 28px 24px 0; }
  .hero-slogan { font-size: 28px; }
  /* 区块标题 */
  .section-label { padding: 16px 24px 4px; font-size: 15px; }
  .filters-wrap { padding: 0 24px 12px; }
  .filter-row { padding-left: 24px; padding-right: 24px; }
  .cards-wrap, .cards-grid { padding: 0 24px; }
  /* 详情页英雄图 */
  .detail-hero { height: 420px; }
}

/* ── 宽屏 (MacBook Pro 14/16" / 1440p 显示器, 1440px+) ── */
@media (min-width: 1440px) {
  body { max-width: 1080px; }
  .bottom-nav { max-width: 1080px; }
  /* 三列更宽松 */
  .cards-wrap { gap: 18px; }
  .wknd-card { width: 390px; }
  .wknd-card-img { height: 214px; }
  .featured-card { width: 330px; }
  .featured-img, .featured-img-bg { height: 202px; }
  .hero-slogan { font-size: 30px; }
  .detail-hero { height: 460px; }
}

/* ── 小屏手机适配 (≤360px，如iPhone SE一代/小屏安卓) ── */
@media (max-width: 360px) {
  .hero-slogan { font-size: 19px; }
  .hero-sub { font-size: 10px; }
  .weather-chip { min-width: 62px; padding: 6px 8px; }
  .weather-chip .w-temp { font-size: 14px; }
  .weather-chip .w-desc { font-size: 8.5px; }
  .hero-top { margin-bottom: 10px; }
  .wknd-card { width: 232px; }
  .wknd-card-img { height: 140px; }
  .featured-card { width: 192px; }
  .featured-img, .featured-img-bg { height: 120px; }
  .cats-grid { gap: 6px; padding: 10px 12px 4px; }
  .cat-grid-icon { font-size: 20px; }
  .cat-grid-item { padding: 8px 4px 6px; }
  .cat-grid-label { font-size: 10px; }
  .cards-grid { gap: 8px; padding: 0 12px; }
  .cards-wrap { padding: 0 12px; gap: 10px; }
  .card-accent { width: 60px; min-width: 60px; }
  .card-emoji { font-size: 22px; }
  .section-label { padding: 8px 12px 2px; font-size: 12px; }
  .filter-row, .filters-wrap { padding-left: 12px; padding-right: 12px; }
}

/* ── iPhone SE 2nd gen / 13 mini (375px) ── */
@media (min-width: 361px) and (max-width: 375px) {
  .featured-card { width: 210px; }
  .featured-img, .featured-img-bg { height: 132px; }
  .wknd-card { width: 252px; }
  .wknd-card-img { height: 150px; }
}

/* ── 主流大屏手机 iPhone 11/12/XR/Plus (414px+) ── */
@media (min-width: 415px) {
  .featured-card { width: 240px; }
  .featured-img, .featured-img-bg { height: 148px; }
  .wknd-card { width: 284px; }
  .wknd-card-img { height: 164px; }
  .hero-slogan { font-size: 24px; }
  .cards-grid { gap: 12px; }
  .cat-grid-label { font-size: 12px; }
  .cat-grid-icon { font-size: 26px; }
}

/* ── 横屏模式（手机横放，高度不足500px）── */
@media (orientation: landscape) and (max-height: 500px) {
  .hero { padding: 8px 16px 0; }
  .hero-slogan { font-size: 18px; }
  .hero-top { margin-bottom: 8px; }
  .weather-tip { margin-bottom: 6px; padding: 6px 12px; font-size: 11px; }
  .bottom-nav { padding: 2px 0 calc(2px + env(safe-area-inset-bottom)); }
  .wknd-card { width: 230px; }
  .wknd-card-img { height: 120px; }
  .detail-hero { height: 180px; }
}

.nav-item{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  font-size:11px;font-weight:500;color:var(--text-l);
  cursor:pointer;padding:4px 0;
  transition:color .2s,transform .15s;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  user-select:none;
}
.nav-item:active{transform:scale(0.9)}
.nav-item.active{color:var(--coral-d);font-weight:800}
.nav-item.active .nav-icon{
  background:var(--coral-l);
  border-radius:14px;
  padding:2px 16px;
}
.nav-icon{
  font-size:20px;line-height:1;
  padding:3px 10px;
  border-radius:12px;
  transition:background .2s,padding .2s;
  display:flex;align-items:center;justify-content:center;
}

/* ── 互动动画 ─────────── */
@keyframes starBurst{
  0%{transform:scale(0) rotate(0deg);opacity:1}
  60%{transform:scale(1.4) rotate(20deg);opacity:1}
  100%{transform:scale(0.8) rotate(-10deg);opacity:0}
}
@keyframes heartFloat{
  0%{transform:translateY(0) scale(0);opacity:1}
  40%{transform:translateY(-30px) scale(1.3);opacity:1}
  100%{transform:translateY(-80px) scale(0.6);opacity:0}
}
@keyframes stampIn{
  0%{transform:scale(2.5) rotate(-8deg);opacity:0}
  60%{transform:scale(0.85) rotate(4deg);opacity:1}
  80%{transform:scale(1.05) rotate(-2deg);opacity:1}
  100%{transform:scale(1) rotate(0deg);opacity:0}
}
@keyframes confettiBurst{
  0%{transform:translate(0,0) scale(1) rotate(0deg);opacity:1}
  100%{transform:translate(var(--cx,20px),var(--cy,-60px)) scale(0) rotate(var(--cr,180deg));opacity:0}
}
@keyframes popBounce{
  0%{transform:scale(1)}
  30%{transform:scale(0.88)}
  60%{transform:scale(1.18)}
  80%{transform:scale(0.95)}
  100%{transform:scale(1)}
}
.anim-pop{animation:popBounce .4s cubic-bezier(.36,.07,.19,.97) both}
.anim-particle{position:fixed;pointer-events:none;z-index:9999;font-size:18px;user-select:none}

/* ── Section 标题 ─────── */
.section-header{
  padding:6px 16px 4px;
  display:flex;align-items:center;justify-content:space-between;
}
.section-h{font-size:14px;font-weight:800;color:var(--text-d)}
.section-sub{font-size:11px;color:var(--text-m)}

/* ── 已收藏提示 ─────── */
.saved-banner{
  margin:0 16px 10px;
  background:var(--coral-l);
  border-radius:14px;
  padding:10px 14px;
  display:flex;align-items:center;justify-content:space-between;
}
.saved-banner-text{font-size:12px;font-weight:700;color:var(--coral-d)}
.saved-clear{font-size:11px;color:var(--text-m);text-decoration:underline;cursor:pointer}

/* ── 加载动画 ─────── */
@keyframes bounce-scroll{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes bounce-hint{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
@keyframes hint-pulse{0%,100%{box-shadow:0 4px 18px rgba(176,90,128,.22),0 0 0 4px rgba(176,90,128,.08)}50%{box-shadow:0 6px 24px rgba(176,90,128,.38),0 0 0 8px rgba(176,90,128,.15)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
.loading-dot{
  display:inline-block;width:8px;height:8px;border-radius:50%;
  background:var(--coral);margin:0 3px;
  animation:pulse 1.2s ease-in-out infinite;
}
.loading-dot:nth-child(2){animation-delay:.2s}
.loading-dot:nth-child(3){animation-delay:.4s}

/* 周末加载状态 */
.weekly-load-btn{
  margin:0 16px 16px;
  background:var(--card);
  border-radius:var(--r-card);
  padding:36px 24px;
  text-align:center;
  box-shadow:var(--shadow);
}
.wl-icon{font-size:40px;margin-bottom:12px}
.wl-title{font-size:15px;font-weight:800;color:var(--text-d);margin-bottom:5px}
.wl-sub{font-size:11px;color:var(--text-m);line-height:1.6;margin-bottom:16px}
.wl-btn{
  display:inline-flex;align-items:center;gap:6px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  color:white;border-radius:var(--r-btn);
  padding:12px 22px;font-size:13px;font-weight:800;
  box-shadow:0 4px 16px rgba(255,139,118,0.3);
}


/* ── 评分星标 ─────── */
.rating-row{display:flex;align-items:center;gap:5px;margin-bottom:5px}
.stars{color:#F5C245;font-size:12px;letter-spacing:1px}
.rating-num{font-size:12px;font-weight:800;color:var(--text-d)}
.review-count{font-size:12px;color:var(--text-l)}
.pop-badge{height:18px;padding:0 7px;border-radius:9px;font-size:11px;font-weight:800;display:inline-flex;align-items:center;gap:2px}

/* ── 位置功能 ─────── */
.location-banner{
  background:linear-gradient(135deg,var(--coral-l),var(--mint-l));
  border-radius:16px;margin:10px 16px 6px;
  padding:12px 14px;
  display:flex;align-items:center;gap:10px;
  box-shadow:var(--shadow-sm);
}
.loc-icon{font-size:24px}
.loc-text{flex:1}
.loc-title{font-size:13px;font-weight:800;color:var(--text-d)}
.loc-sub{font-size:12px;color:var(--text-m);margin-top:1px}
.loc-btn{
  background:var(--coral);color:white;
  border-radius:10px;padding:7px 12px;
  font-size:11px;font-weight:800;
  white-space:nowrap;
  box-shadow:0 2px 8px rgba(255,139,118,0.3);
}
.dist-badge{
  height:18px;padding:0 7px;border-radius:9px;
  background:#E3F4F8;color:#2880A0;
  font-size:9px;font-weight:700;
  display:inline-flex;align-items:center;gap:2px;
}
.dist-filter-row{
  display:flex;gap:6px;padding:0 16px 8px;
  overflow-x:auto;scrollbar-width:none;
}
.dist-filter-row::-webkit-scrollbar{display:none}
.dist-pill{
  height:30px;padding:0 12px;
  border-radius:var(--r-pill);
  font-size:11px;font-weight:600;
  background:var(--card);color:var(--text-m);
  border:1.5px solid #EBEBEB;
  white-space:nowrap;flex-shrink:0;
  transition:all .15s;
}
.dist-pill.active{background:var(--sky-l);color:#2880A0;border-color:#7AC5D8}
.nav-link-btn{
  display:flex;align-items:center;gap:4px;
  color:var(--mint);font-size:10px;font-weight:700;
  padding:4px 0;
}
/* ── 排序按钮 ─────── */
.sort-row{padding:0 16px 8px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.sort-row::-webkit-scrollbar{display:none}
.sort-pill{
  height:34px;padding:0 11px;
  border-radius:var(--r-pill);
  font-size:11px;font-weight:700;
  background:var(--card);color:var(--text-m);
  border:1.5px solid #E8E8E8;
  white-space:nowrap;flex-shrink:0;transition:all .15s;
}
.sort-pill.active{background:var(--coral-d);color:white;border-color:var(--coral-d);box-shadow:0 2px 8px rgba(212,130,106,.35)}


/* ── 分享功能 ─────── */
.share-sheet{
  position:fixed;inset:0;z-index:1001;
  display:flex;flex-direction:column;justify-content:flex-end;
}
.share-backdrop{
  position:absolute;inset:0;background:rgba(0,0,0,0.45);
  backdrop-filter:blur(3px);
}
.share-panel{
  position:relative;z-index:1;
  background:var(--card);
  border-radius:24px 24px 0 0;
  padding:20px 20px calc(20px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 40px rgba(0,0,0,0.15);
  animation:slideUp .25s ease-out;
}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.share-handle{
  width:36px;height:4px;border-radius:2px;
  background:#E0E0E0;margin:0 auto 18px;
}
.share-title{font-size:16px;font-weight:900;color:var(--text-d);margin-bottom:4px}
.share-sub{font-size:12px;color:var(--text-m);margin-bottom:16px}
.share-url-box{
  background:var(--cream);border-radius:12px;
  padding:10px 12px;margin-bottom:14px;
  display:flex;align-items:center;gap:8px;
  border:1.5px solid #EBEBEB;
}
.share-url-text{
  flex:1;font-size:11px;color:var(--text-m);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.share-copy-btn{
  background:var(--coral);color:white;
  border-radius:8px;padding:6px 12px;
  font-size:11px;font-weight:800;
  flex-shrink:0;white-space:nowrap;
}
.share-copied{background:var(--mint)!important}
.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.share-action-btn{
  padding:12px 8px;border-radius:14px;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  font-size:11px;font-weight:700;color:var(--text-d);
  background:var(--cream);border:1.5px solid #EBEBEB;
  transition:all .15s;
}
.share-action-btn:active{transform:scale(0.96)}
.share-action-icon{font-size:22px}
.share-preview{
  background:var(--cream);border-radius:12px;
  padding:10px 12px;margin-bottom:12px;
}
.share-preview-title{font-size:11px;font-weight:700;color:var(--text-m);margin-bottom:7px}
.share-preview-items{display:flex;gap:6px;flex-wrap:wrap}
.share-preview-tag{
  background:var(--card);border-radius:8px;
  padding:4px 8px;font-size:10px;color:var(--text-d);font-weight:600;
  border:1px solid #EBEBEB;
  white-space:nowrap;
}
.share-close-btn{
  width:100%;padding:12px;border-radius:14px;
  background:#F5F5F5;color:var(--text-m);
  font-size:13px;font-weight:700;
}

/* 收藏页面分享按钮 */
.saved-share-btn{
  display:flex;align-items:center;gap:5px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  color:white;border-radius:var(--r-pill);
  padding:7px 14px;font-size:11px;font-weight:800;
  box-shadow:0 3px 10px rgba(255,139,118,0.3);
}

/* 收到分享的横幅 */
.shared-banner{
  margin:8px 16px;
  background:linear-gradient(135deg,var(--coral-l),var(--mint-l));
  border-radius:16px;padding:12px 14px;
  border:1.5px solid var(--coral-m);
}
.shared-banner-title{font-size:13px;font-weight:900;color:var(--text-d);margin-bottom:2px}
.shared-banner-sub{font-size:11px;color:var(--text-m)}
.shared-banner-btns{display:flex;gap:8px;margin-top:10px}
.shared-import-btn{
  flex:1;padding:9px;border-radius:10px;
  background:var(--coral);color:white;
  font-size:12px;font-weight:800;text-align:center;
}
.shared-dismiss-btn{
  padding:9px 14px;border-radius:10px;
  background:#F5F5F5;color:var(--text-m);
  font-size:12px;font-weight:600;
}


/* ── Firebase 评论系统 ─────── */
.review-section{
  margin-top:14px;
  border-top:1px solid #F5F5F5;
  padding-top:12px;
}
.review-section-title{
  font-size:12px;font-weight:800;color:var(--text-d);
  margin-bottom:10px;display:flex;align-items:center;gap:6px;
}
.login-prompt{
  background:var(--cream);border-radius:12px;
  padding:12px 14px;
  display:flex;align-items:center;gap:10px;margin-bottom:10px;
}
.login-prompt-text{font-size:11px;color:var(--text-m);flex:1}
.google-login-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  width:100%;
  background:white;
  border:1.5px solid #DADCE0;
  border-radius:14px;padding:13px 20px;
  font-size:14px;font-weight:700;color:#3C4043;
  cursor:pointer;
  box-shadow:0 2px 8px rgba(0,0,0,0.08);
  transition:all .2s;
  margin-top:4px;
}
.google-login-btn:hover{box-shadow:0 4px 16px rgba(0,0,0,0.15);transform:translateY(-1px)}
.google-login-btn:active{transform:translateY(0)}
.google-icon{width:20px;height:20px}
.user-bar{
  display:flex;align-items:center;gap:8px;margin-bottom:10px;
}
.user-avatar{
  width:28px;height:28px;border-radius:50%;
  object-fit:cover;border:2px solid var(--coral-m);
}
.user-name{font-size:11px;font-weight:700;color:var(--text-d);flex:1}
.logout-btn{font-size:10px;color:var(--text-l);cursor:pointer;text-decoration:underline;background:none;border:none}

/* 写评论区 */
.write-review{
  background:var(--cream);border-radius:14px;
  padding:12px;margin-bottom:10px;
}
.star-input{display:flex;gap:3px;margin-bottom:8px}
.star-input span{
  font-size:22px;cursor:pointer;
  transition:transform .1s;
  filter:grayscale(1);opacity:0.4;
}
.star-input span.active{filter:none;opacity:1;transform:scale(1.15)}
.review-textarea{
  width:100%;min-height:70px;
  background:white;border:1.5px solid #EBEBEB;
  border-radius:10px;padding:8px 10px;
  font-family:var(--font);font-size:12px;color:var(--text-d);
  resize:none;outline:none;
  transition:border-color .15s;
  box-sizing:border-box;
}
.review-textarea:focus{border-color:var(--coral)}
.review-textarea::placeholder{color:var(--text-l)}
.submit-review-btn{
  width:100%;margin-top:8px;padding:10px;
  border-radius:10px;border:none;
  background:var(--coral);color:white;
  font-size:12px;font-weight:800;cursor:pointer;
  transition:opacity .15s;
}
.submit-review-btn:disabled{opacity:0.5;cursor:not-allowed}

/* 评论列表 */
.reviews-list{display:flex;flex-direction:column;gap:8px}
.review-item{
  background:var(--cream);border-radius:12px;padding:10px 12px;
}
.review-header{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.review-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}
.review-user{font-size:11px;font-weight:700;color:var(--text-d)}
.review-date{font-size:10px;color:var(--text-l);margin-left:auto}
.review-stars{display:flex;gap:1px}
.review-star{font-size:12px}
.review-text{font-size:12px;color:var(--text-m);line-height:1.6;margin-top:4px}
.reviews-avg{
  display:flex;align-items:center;gap:8px;
  background:white;border-radius:12px;padding:10px 12px;
  margin-bottom:8px;border:1.5px solid #F0F0F0;
}
.avg-score{font-size:28px;font-weight:900;color:var(--text-d);line-height:1}
.avg-stars{display:flex;gap:2px;margin-bottom:2px}
.avg-count{font-size:10px;color:var(--text-l)}
.no-reviews{text-align:center;padding:14px;font-size:11px;color:var(--text-l)}
.reviews-loading{text-align:center;padding:12px;font-size:11px;color:var(--text-l)}


/* ── 新版大图列表卡片 ─────── */
.big-card{
  background:var(--card);
  border-radius:var(--r-card);
  overflow:hidden;
  box-shadow:var(--shadow-card);
  border:1.5px solid rgba(255,158,128,0.07);
  cursor:pointer;
  transition:transform .15s,box-shadow .15s;
  -webkit-tap-highlight-color:transparent;
}
.big-card:active{transform:scale(0.98)}
.big-card-img{
  position:relative;
  height:120px;
  overflow:hidden;
  background:#F0EEE8;
}
.big-card-img img{filter:saturate(1.2) contrast(1.05);
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .3s;
  z-index:1;
}
.big-card-img-fallback{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-size:60px;
}
.big-card-gradient{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,0.72) 0%,rgba(0,0,0,0.15) 55%,transparent 100%);
  z-index:2;
}
.big-card-cat-badge{
  position:absolute;top:12px;left:12px;z-index:3;
  background:rgba(255,255,255,0.22);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,0.3);
  border-radius:20px;
  padding:4px 10px;
  display:flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;color:white;
}
.big-card-save{
  position:absolute;top:10px;right:12px;z-index:3;
  width:34px;height:34px;border-radius:50%;
  background:rgba(255,255,255,0.22);
  backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,0.3);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;cursor:pointer;
  transition:background .15s;
}
.big-card-save.saved{background:rgba(255,139,118,0.7)}
.big-card-emoji{
  position:absolute;
  right:16px;bottom:44px;z-index:3;
  font-size:44px;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,0.3));
  line-height:1;
  pointer-events:none;
}
.big-card-title-area{
  position:absolute;bottom:0;left:0;right:0;
  padding:12px 14px 10px;
  z-index:3;
}
.big-card-name{
  font-size:18px;font-weight:900;color:white;
  text-shadow:0 1px 4px rgba(0,0,0,0.4);
  margin-bottom:3px;line-height:1.2;
}
.big-card-rating-row{
  display:flex;align-items:center;gap:6px;
  margin-bottom:2px;
}
.big-card-stars{color:#F5C245;font-size:13px;letter-spacing:1px}
.big-card-rating{font-size:13px;font-weight:800;color:white}
.big-card-review-count{font-size:11px;color:rgba(255,255,255,0.8)}
.big-card-meta{
  font-size:11px;color:rgba(255,255,255,0.85);
  display:flex;align-items:center;gap:6px;
}
.big-card-body{
  padding:10px 14px 4px;
}
.big-card-tags{
  display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-bottom:8px;
}
.big-card-tag{
  height:20px;padding:0 8px;border-radius:10px;
  font-size:10px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;gap:2px;
  white-space:nowrap;line-height:1;
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}


/* ── 新版详情展开页 ─────── */
.detail-page{
  background:var(--card);
  border-radius:22px;
  overflow:hidden;
  box-shadow:0 8px 32px rgba(0,0,0,0.12);
}
.detail-hero{
  position:relative;
  height:260px;
  overflow:hidden;
  background:#F0EEE8;
}
.detail-hero img{
  width:100%;height:100%;object-fit:cover;display:block;
}
.detail-hero-fallback{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;font-size:72px;
}
.detail-hero-gradient{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,0.75) 0%,rgba(0,0,0,0.1) 60%,transparent 100%);
}
.detail-hero-close{
  position:absolute;top:12px;left:12px;
  width:36px;height:36px;border-radius:50%;
  background:rgba(0,0,0,0.35);backdrop-filter:blur(8px);
  border:none;color:white;font-size:16px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.detail-hero-save{
  position:absolute;top:12px;right:12px;
  width:36px;height:36px;border-radius:50%;
  background:rgba(0,0,0,0.35);backdrop-filter:blur(8px);
  border:none;font-size:18px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.detail-hero-bottom{
  position:absolute;bottom:0;left:0;right:0;padding:14px 16px;
}
.detail-hero-name{
  font-size:20px;font-weight:900;color:white;
  text-shadow:0 1px 6px rgba(0,0,0,0.5);
  margin-bottom:4px;line-height:1.2;
}
.detail-hero-name-cn{
  font-size:14px;color:rgba(255,255,255,0.88);margin-bottom:6px;
  font-weight:600;letter-spacing:0.3px;
}
.detail-hero-rating{
  display:flex;align-items:center;gap:6px;
}
.detail-hero-stars{color:#F5C245;font-size:14px}
.detail-hero-score{font-size:14px;font-weight:800;color:white}
.detail-hero-count{font-size:11px;color:rgba(255,255,255,0.75)}
.detail-hero-loc{font-size:11px;color:rgba(255,255,255,0.85);display:flex;align-items:center;gap:3px}

/* 三按钮操作区 */
.detail-actions{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:8px;padding:14px 16px 10px;
}
.detail-action-btn{
  background:var(--cream);border-radius:14px;
  padding:10px 8px;border:1.5px solid #EBEBEB;
  display:flex;flex-direction:column;align-items:center;gap:4px;
  cursor:pointer;transition:all .15s;text-decoration:none;
}
.detail-action-btn:active{transform:scale(0.96)}
.detail-action-btn.primary{background:var(--sky-l);border-color:rgba(122,197,216,0.4)}
.detail-action-btn.green{background:var(--mint-l);border-color:rgba(110,198,160,0.4)}
.detail-action-icon{font-size:22px;line-height:1}
.detail-action-label{font-size:10px;font-weight:800;color:var(--text-d);text-align:center}
.detail-action-sub{font-size:9px;color:var(--text-m);text-align:center}

/* 标签行 */
.detail-tags{
  display:flex;gap:6px;flex-wrap:wrap;
  padding:0 16px 12px;
}
.detail-tag{
  height:26px;padding:0 10px;border-radius:13px;
  font-size:11px;font-weight:700;
  display:flex;align-items:center;gap:4px;
  background:var(--cream);color:var(--text-d);
  border:1.5px solid #EBEBEB;
}

/* 小编点评 — 更有质感的奶油色底块 */
.editor-review{
  margin:0 16px 20px;
  background:linear-gradient(135deg,#FFFDF5,#FFF8E8);
  border-radius:20px;
  padding:16px;
  border:1.5px solid rgba(245,194,69,0.25);
  box-shadow:0 4px 16px rgba(245,194,69,0.1);
}
.editor-emoji{font-size:40px;line-height:1;flex-shrink:0;margin-top:2px}
.editor-body{flex:1}
.editor-title{
  font-size:12px;font-weight:900;color:#C07820;
  margin-bottom:6px;letter-spacing:.5px;
}
.editor-text{
  font-size:13px;color:var(--text-d);line-height:1.7;
  margin-bottom:10px;
}
.editor-stars-row{
  display:flex;align-items:center;gap:8px;
}
.editor-stars{font-size:16px;color:#F5C245;letter-spacing:3px}
.editor-endorsement{
  font-size:10px;color:#A07030;font-weight:700;
  background:rgba(245,194,69,0.15);padding:2px 8px;border-radius:10px;
}

/* 地图卡片 — 点击展开，不显示空灰框 */
.map-card{
  margin:0 16px 20px;
  border-radius:16px;overflow:hidden;
  border:1.5px solid #EBEBEB;
  background:var(--cream);
  cursor:pointer;
}
.map-card-collapsed{
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;
}
.map-card-icon{
  width:42px;height:42px;border-radius:12px;
  background:var(--ocean-l);
  display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;
}
.map-card-expanded{
  height:200px;position:relative;
}
.map-card-expanded iframe{
  width:100%;height:100%;border:none;pointer-events:none;
}

/* 地图 */
.map-preview{
  margin:0 16px 12px;
  border-radius:16px;overflow:hidden;
  position:relative;height:150px;
  background:#E8F0E8;border:1.5px solid #EBEBEB;
  cursor:pointer;
}
.map-preview img{width:100%;height:100%;object-fit:cover;display:block}
.map-preview-overlay{
  position:absolute;inset:0;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:10px;
}
.map-preview-label{
  background:rgba(255,255,255,0.92);backdrop-filter:blur(4px);
  border-radius:10px;padding:5px 10px;
  font-size:11px;font-weight:800;color:var(--text-d);
  align-self:flex-start;
}
.map-preview-dist{
  font-size:10px;color:var(--text-m);margin-top:2px;font-weight:500;
}
.map-nav-btn{
  width:44px;height:44px;border-radius:50%;
  background:var(--sky);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;align-self:flex-end;
  box-shadow:0 3px 12px rgba(90,184,208,0.4);
  text-decoration:none;
}

/* 周边横向滑动 */
.nearby-scroll{
  display:flex;gap:10px;
  overflow-x:auto;padding:4px 16px 12px;
  scrollbar-width:none;-ms-overflow-style:none;
}
.nearby-scroll::-webkit-scrollbar{display:none}
.nearby-scroll-item{
  flex-shrink:0;width:120px;
  background:white;border-radius:14px;
  border:1.5px solid #F0EAF0;
  overflow:hidden;cursor:pointer;
  box-shadow:0 2px 8px rgba(0,0,0,.05);
}

/* 模块间距加大 — 呼吸感 */
.detail-section{
  margin-bottom:24px;
}
.detail-section-title{
  font-size:14px;font-weight:900;color:var(--text-d);
  margin:0 16px 10px;display:flex;align-items:center;gap:6px;
}

/* 底部导航固定栏 */
.detail-bottom-bar{
  padding:10px 14px 10px;
  border-top:1px solid #F0EBF0;
  display:flex;align-items:center;gap:10px;
  background:transparent;
}
.detail-share-btn{
  width:44px;height:44px;border-radius:50%;
  background:var(--cream);border:1.5px solid #EBEBEB;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;cursor:pointer;flex-shrink:0;
}
.detail-nav-cta{
  flex:1;padding:14px;
  background:linear-gradient(135deg,var(--coral) 0%,#F5A080 100%);
  color:white;border-radius:16px;border:none;
  font-size:14px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;
  box-shadow:0 4px 16px rgba(255,139,118,0.35);
  text-decoration:none;
}


/* ── 编辑精选区 ─────── */
.picks-section{padding:10px 0 0}
.picks-headline{
  margin:0 16px 12px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  border-radius:18px;padding:14px 16px;
  color:white;
  box-shadow:0 4px 16px rgba(255,139,118,0.3);
}
.picks-headline-label{
  font-size:10px;font-weight:800;opacity:0.85;
  letter-spacing:1px;text-transform:uppercase;
  margin-bottom:4px;
}
.picks-headline-text{font-size:15px;font-weight:900;line-height:1.4}
.picks-headline-meta{font-size:10px;opacity:0.8;margin-top:4px}
.pick-card{
  margin:0 16px 10px;
  background:var(--card);border-radius:18px;
  box-shadow:var(--shadow);overflow:hidden;
}
.pick-card-top{
  position:relative;height:130px;overflow:hidden;
}
.pick-card-top img{width:100%;height:100%;object-fit:cover;display:block}
.pick-card-top-fallback{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;font-size:48px;
}
.pick-card-top-overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,0.6) 0%,transparent 60%);
}
.pick-card-top-badge{
  position:absolute;top:10px;left:10px;z-index:2;
  background:var(--coral);color:white;
  border-radius:8px;padding:3px 9px;
  font-size:10px;font-weight:800;
}
.pick-card-top-title{
  position:absolute;bottom:10px;left:12px;right:12px;z-index:2;
  font-size:15px;font-weight:900;color:white;
  text-shadow:0 1px 4px rgba(0,0,0,0.4);
}
.pick-card-body{padding:10px 14px 12px}
.pick-why{
  font-size:12px;color:var(--text-d);line-height:1.6;
  margin-bottom:8px;
}
.pick-highlight{
  background:var(--gold-l);border-radius:8px;
  padding:6px 10px;margin-bottom:8px;
  font-size:11px;color:#7A6010;font-weight:600;
}
.pick-meta{
  display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;
}
.pick-tip{
  font-size:11px;color:var(--text-m);
  background:var(--cream);border-radius:8px;padding:6px 10px;
  margin-bottom:10px;
}
.pick-cta{
  display:flex;gap:8px;
}
.pick-btn-nav{
  flex:1;padding:10px;
  background:linear-gradient(135deg,var(--coral),#F5A080);
  color:white;border-radius:12px;border:none;
  font-size:12px;font-weight:800;cursor:pointer;
  text-align:center;text-decoration:none;
  display:flex;align-items:center;justify-content:center;
}
.pick-btn-web{
  padding:10px 14px;
  background:var(--cream);border:1.5px solid #EBEBEB;
  color:var(--text-m);border-radius:12px;
  font-size:12px;font-weight:700;cursor:pointer;
  text-decoration:none;
  display:flex;align-items:center;justify-content:center;
}

/* 滚动条美化 */
::-webkit-scrollbar{width:3px;height:3px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--coral-m);border-radius:10px}

/* 动画 */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.fade-in{animation:fadeIn .25s ease-out}
@keyframes _toastIn{from{opacity:0;transform:translateX(-50%) translateY(10px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ── 便利标签 ────────────────────────── */
.amenity-tags{display:flex;gap:4px;flex-wrap:wrap;padding:0 16px 10px}
.amenity-tag{
  height:20px;padding:0 7px;border-radius:10px;font-size:9.5px;font-weight:600;
  display:inline-flex;align-items:center;gap:2px;white-space:nowrap;
  background:rgba(245,245,245,.9);color:var(--text-m);border:1px solid rgba(0,0,0,.07);
}
.amenity-tag.parking{background:#EAF4FF;color:#2060A0;border-color:#C0D8F0}
.amenity-tag.stroller{background:#EBF7EF;color:#2A7050;border-color:#B0DEC8}
.amenity-tag.nursing{background:#FFF0F5;color:#A03060;border-color:#F0C0D0}
.amenity-tag.indoor-rain{background:#EDE8F7;color:#6030A0;border-color:#D0C0F0}
.amenity-tag.picnic{background:#FFFBE6;color:#806000;border-color:#F0DC90}

/* ── 年龄滑块 ────────────────────────── */
.age-slider-wrap{
  margin:6px 16px 10px;background:var(--card);border-radius:16px;
  padding:14px 16px 12px;box-shadow:var(--shadow-sm);
}
.age-slider-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.age-slider-label{font-size:12px;font-weight:800;color:var(--text-d)}
.age-slider-value{
  background:var(--coral);color:white;border-radius:20px;
  padding:3px 12px;font-size:12px;font-weight:800;
}
.age-slider-track{position:relative;height:6px;background:#EBEBEB;border-radius:3px;margin:8px 0 4px}
.age-slider-fill{
  position:absolute;height:100%;background:linear-gradient(90deg,var(--mint),var(--coral));
  border-radius:3px;pointer-events:none;transition:width .1s;
}
.age-slider-input{
  position:absolute;inset:0;width:100%;height:100%;
  opacity:0;cursor:pointer;margin:0;
  -webkit-appearance:none;
}
.age-slider-ticks{display:flex;justify-content:space-between;font-size:9px;color:var(--text-l);margin-top:2px}
.age-filter-active{border:2px solid var(--coral)!important}

/* ── Parent Pro-Tips ─────────────────── */
.pro-tips-section{margin:12px 16px}
.pro-tips-header{font-size:12px;font-weight:800;color:var(--text-d);display:flex;align-items:center;gap:6px;margin-bottom:8px}
.pro-tip-item{
  display:flex;gap:10px;padding:10px 12px;background:var(--cream);
  border-radius:12px;margin-bottom:6px;
}
.pro-tip-icon{font-size:18px;flex-shrink:0;line-height:1.2}
.pro-tip-text{font-size:12px;color:var(--text-d);line-height:1.5}
.pro-tip-tag{
  display:inline-block;font-size:9px;font-weight:800;padding:1px 6px;
  border-radius:6px;margin-right:4px;vertical-align:middle;
}
.pro-tip-tag.must{background:#FFF0EE;color:#C04030}
.pro-tip-tag.save{background:#EBF7EF;color:#2A7050}
.pro-tip-tag.avoid{background:#FFF8E0;color:#A07000}
.pro-tip-tag.info{background:#EBF4FF;color:#1A5EB8}
/* 亲子设施小标签（合并在家长贴士内）*/
.insight-tag-row{display:flex;gap:5px;margin-top:5px;flex-wrap:wrap}
.insight-stroller-ok{font-size:9px;font-weight:800;color:#2A7050;background:#EBF7EF;padding:2px 7px;border-radius:6px}
.insight-stroller-mid{font-size:9px;font-weight:800;color:#806000;background:#FFF8E0;padding:2px 7px;border-radius:6px}
.insight-stroller-bad{font-size:9px;font-weight:800;color:#C04030;background:#FFF0EE;padding:2px 7px;border-radius:6px}
.insight-nursing{font-size:9px;font-weight:800;padding:2px 7px;border-radius:6px}
.insight-nursing.yes{color:#1A5EB8;background:#EBF4FF}

/* ── 年卡值不值买 ────────────────────── */
.pass-card{
  margin:10px 14px 0;
  background:linear-gradient(135deg,#F0F8FF 0%,#E8F4FF 100%);
  border-radius:18px;border:1.5px solid rgba(30,100,200,.14);
  overflow:hidden;
}
.pass-card-header{
  padding:12px 14px 8px;
  display:flex;align-items:center;justify-content:space-between;
}
.pass-card-title{font-size:12px;font-weight:900;color:#1040A0;display:flex;align-items:center;gap:6px}
.pass-card-body{padding:0 14px 12px;display:flex;flex-direction:column;gap:8px}
.pass-roi-row{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;background:white;border-radius:12px;
  border:1px solid rgba(30,100,200,.10);
}
.pass-roi-col{flex:1;min-width:0}
.pass-roi-label{font-size:9px;color:#6080C0;font-weight:700;margin-bottom:2px}
.pass-roi-value{font-size:14px;font-weight:900;color:#1040A0;line-height:1.2}
.pass-roi-sub{font-size:9px;color:#8090B0;margin-top:1px}
.pass-covers{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.pass-covers-label{font-size:9px;color:#5070A0;font-weight:700;margin-bottom:4px}
.pass-cover-tag{
  font-size:9px;font-weight:700;padding:2px 7px;border-radius:7px;
  background:rgba(30,100,200,.08);color:#1040A0;
}
.pass-tip{font-size:10px;color:#4060A0;line-height:1.45;padding:6px 8px;background:rgba(30,100,200,.06);border-radius:9px}

/* ── 增强版距离显示 ───────────────────── */
.drive-pill{
  display:inline-flex;align-items:center;gap:3px;
  background:var(--sky-l);color:#1870A0;
  border-radius:10px;padding:2px 7px;font-size:10px;font-weight:700;
}
.walk-pill{
  display:inline-flex;align-items:center;gap:3px;
  background:#EBF7EF;color:#2A7050;
  border-radius:10px;padding:2px 7px;font-size:10px;font-weight:700;
}




/* ════════════════════════════════════════════════
   🧠  遛娃大脑 推荐区
   ════════════════════════════════════════════════ */
.brain-container{
  padding:0 0 8px;
}
/* 只有初次加载时播放淡入动画（通过 .init-fadein class 控制）*/
.brain-container.init-fadein{
  animation:content-fadein .22s ease forwards;
}
@keyframes content-fadein{
  from{opacity:.88}
  to{opacity:1}
}

.brain-section{margin:0 0 16px}
.brain-section-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px 10px;
}
.brain-section-title{font-size:17px;font-weight:900;color:var(--text-d)}
.brain-section-sub{font-size:11px;color:var(--text-m);margin-top:2px}
.brain-score-legend{
  display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-l);
}
.brain-legend-dot{
  width:8px;height:8px;border-radius:4px;display:inline-block;
}
.brain-legend-dot.high{background:linear-gradient(135deg,#FF8B76,#C060E0)}
.brain-legend-dot.mid{background:#E0E0E0}

.brain-more-btn{
  height:36px;padding:0 12px;border-radius:18px;
  background:var(--cream);border:1.5px solid #EBEBEB;
  font-size:11px;font-weight:700;color:var(--text-m);cursor:pointer;
}
.weekly-all-btn{
  height:30px;padding:0 14px;border-radius:15px;
  background:linear-gradient(135deg,var(--coral),#E0507A);
  border:none;font-size:12px;font-weight:800;color:white;
  cursor:pointer;box-shadow:0 2px 8px rgba(255,100,120,.3);
}

/* 横向滚动卡片 */
.brain-cards-scroll{
  display:flex;gap:10px;overflow-x:auto;padding:0 16px 4px;
  scrollbar-width:none;
}
.brain-cards-scroll::-webkit-scrollbar{display:none}

/* 推荐卡片 */
.brain-card{
  flex-shrink:0;width:148px;
  background:var(--card);border-radius:18px;
  overflow:hidden;cursor:pointer;
  border:1.5px solid transparent;
  box-shadow:var(--shadow-card);
  transition:transform .15s,border-color .15s;
}
.brain-card:active{transform:scale(0.96);border-color:var(--coral)}
.brain-card-img{
  height:92px;position:relative;overflow:hidden;
  background:linear-gradient(90deg,#F0F0F0 25%,#F8F8F8 50%,#F0F0F0 75%);
  background-size:200% 100%;
  animation:img-shimmer 1.4s infinite linear;
}
@keyframes img-shimmer{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}
.img-loaded{animation:none!important;background:#F0F0F0!important}

/* ── 今日推荐"再试一次"卡片 ────────────────────────────────── */
.try-again-card{
  border-radius:18px;
  cursor:pointer;
  border:1.5px dashed rgba(180,120,220,.35);
  background:linear-gradient(145deg,#FFF5F3 0%,#FEF0FF 55%,#F0F4FF 100%);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding:14px 10px 16px;
  text-align:center;
  transition:transform .15s,box-shadow .15s;
  position:relative;overflow:hidden;
}
.try-again-card:active{transform:scale(.96)}
.try-again-card::before{
  content:'';position:absolute;top:-30px;right:-30px;
  width:90px;height:90px;border-radius:50%;
  background:radial-gradient(circle,rgba(200,150,255,.18) 0%,transparent 70%);
  pointer-events:none;
}
.try-again-scene{font-size:32px;margin-bottom:6px;position:relative;
  display:flex;align-items:center;justify-content:center;gap:2px;height:42px}
.ta-bear{display:inline-block;animation:ta-bounce 1.8s ease-in-out infinite}
.ta-star1{display:inline-block;font-size:14px;animation:ta-twinkle 2.2s ease-in-out infinite}
.ta-star2{display:inline-block;font-size:11px;animation:ta-twinkle 1.8s ease-in-out infinite .5s;position:relative;top:-4px}
.ta-star3{display:inline-block;font-size:10px;animation:ta-twinkle 2.5s ease-in-out infinite .9s;position:relative;top:4px}
@keyframes ta-bounce{
  0%,100%{transform:translateY(0) rotate(-4deg)}
  30%{transform:translateY(-8px) rotate(4deg)}
  60%{transform:translateY(-3px) rotate(-2deg)}
}
@keyframes ta-twinkle{
  0%,100%{opacity:.35;transform:scale(.65) rotate(-15deg)}
  50%{opacity:1;transform:scale(1.2) rotate(15deg)}
}
.ta-title{font-size:15px;font-weight:900;color:#8030A8;margin-bottom:4px;line-height:1.35;
  letter-spacing:.5px;
  font-family:"PingFang SC","Hiragino Sans GB",-apple-system,sans-serif}
.ta-sub{font-size:12px;color:rgba(110,55,155,.6);line-height:1.6;margin-bottom:11px;
  letter-spacing:.3px;
  font-family:"PingFang SC","Hiragino Sans GB",-apple-system,sans-serif}
.ta-btn{
  background:linear-gradient(135deg,#C870E0,#8050C0);
  color:white;font-size:11.5px;font-weight:900;
  border:none;border-radius:20px;
  padding:7px 16px;cursor:pointer;
  box-shadow:0 3px 12px rgba(180,100,220,.35);
  letter-spacing:.5px;
  font-family:"PingFang SC","Hiragino Sans GB",-apple-system,sans-serif;
}
/* 洗牌动画 */
@keyframes ta-card-out{
  0%{opacity:1;transform:translateY(0) scale(1)}
  100%{opacity:0;transform:translateY(22px) scale(.9)}
}
@keyframes ta-card-in{
  0%{opacity:0;transform:translateY(-18px) scale(.91)}
  65%{transform:translateY(3px) scale(1.025)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
.ta-out{animation:ta-card-out .25s ease-in forwards!important}
.ta-in{opacity:0;animation:ta-card-in .32s ease-out forwards}
/* 再试按钮旋转发光效果 */
@keyframes ta-spin{
  0%{transform:scale(1) rotate(0)}
  40%{transform:scale(1.08) rotate(180deg)}
  100%{transform:scale(1) rotate(360deg)}
}
.ta-spinning .ta-bear{animation:ta-spin .45s ease-in-out!important}
.brain-card-score{
  position:absolute;top:6px;right:6px;
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
}
.brain-card-score svg{position:absolute;inset:0;width:100%;height:100%}
.brain-card-score-num{
  font-size:9px;font-weight:900;
  line-height:1;text-align:center;position:relative;z-index:1;
}
.brain-card-score-label{font-size:7px;font-weight:600;display:block;margin-top:1px;opacity:.8}
.brain-card-body{padding:8px 10px 10px}
.brain-card-name{
  font-size:12px;font-weight:800;color:var(--text-d);
  line-height:1.35;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.brain-card-meta{
  display:flex;align-items:center;justify-content:space-between;
  font-size:10px;color:var(--text-m);margin-top:3px;
}
.brain-card-reasons{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}
.brain-reason-tag{
  font-size:8.5px;font-weight:600;padding:1.5px 5px;border-radius:6px;
  background:rgba(160,64,176,.08);
  color:#9030A0;white-space:nowrap;
  border:none;letter-spacing:.01em;
}
.brain-card-price{font-size:9px;color:var(--text-l);margin-top:4px}



/* ── 今日推荐富卡片（2列）─────── */
.home-grid-rich{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
  padding:0 14px 4px;
}
.rich-card{
  background:var(--card);
  border-radius:18px;
  overflow:hidden;
  cursor:pointer;
  border:1px solid rgba(0,0,0,.07);
  box-shadow:0 2px 10px rgba(0,0,0,.05);
  transition:transform .15s,box-shadow .15s;
}
.rich-card:active{transform:scale(0.97);box-shadow:0 1px 4px rgba(0,0,0,0.05)}
.rich-card-img{
  height:130px;
  position:relative;
  overflow:hidden;
  background:linear-gradient(90deg,#F0F0F0 25%,#F8F8F8 50%,#F0F0F0 75%);
  background-size:200% 100%;
  animation:img-shimmer 1.4s infinite linear;
}
.rich-card-img img{width:100%;height:100%;object-fit:cover;display:block}
/* 车程徽章 - 右上角 */
.rich-drive-badge{
  position:absolute;top:6px;right:6px;
  background:rgba(0,0,0,0.62);
  color:white;
  font-size:9px;font-weight:800;
  padding:3px 6px;border-radius:8px;
  backdrop-filter:blur(4px);
  display:flex;align-items:center;gap:2px;
  white-space:nowrap;
  z-index:2;
}
/* 室内/室外徽章 - 左上角 */
.rich-env-badge{
  position:absolute;top:6px;left:6px;
  font-size:9px;font-weight:800;
  z-index:2;
  padding:3px 7px;border-radius:8px;
}
.rich-card-body{padding:9px 10px 10px}
.rich-card-name{
  font-size:13px;font-weight:900;
  color:var(--text-d);
  line-height:1.3;
  margin-bottom:5px;
  display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;
}
.rich-card-row{
  display:flex;align-items:center;
  gap:5px;margin-bottom:4px;
  flex-wrap:wrap;
}
.rich-tag{
  font-size:9.5px;font-weight:700;
  padding:2px 7px;border-radius:7px;
  white-space:nowrap;
}
.rich-card-reason{
  font-size:10px;color:var(--text-m);
  line-height:1.5;margin-top:5px;
  display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;
}
.rich-card-stars{
  display:flex;align-items:center;gap:3px;
  margin-top:5px;
}

/* ── 主页网格布局 ─────── */
.home-grid-3{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  padding:0 14px 4px;
}
.home-grid-2{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
  padding:0 14px 4px;
}
/* 网格模式下的brain-card要全宽 */
.home-grid-3 .brain-card,
.home-grid-2 .brain-card{
  width:auto;
  flex-shrink:unset;
}
.home-grid-3 .brain-card-img{height:76px;}
.home-grid-2 .brain-card-img{height:90px;}
/* 本周末2列卡片内文字稍大 */
.home-grid-2 .brain-card-name{font-size:13px;}

/* 三维评分条（详情页）*/
.brain-score-bar-wrap{margin:12px 16px;background:var(--cream);border-radius:14px;padding:12px 14px}
.brain-score-bar-title{font-size:11px;font-weight:800;color:var(--text-d);margin-bottom:10px}
.brain-score-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.brain-score-label{font-size:10px;color:var(--text-m);width:52px;flex-shrink:0}
.brain-score-track{flex:1;height:6px;background:#E8E8E8;border-radius:3px;overflow:hidden}
.brain-score-fill{height:100%;border-radius:3px;transition:width .6s ease}
.brain-score-val{font-size:10px;font-weight:800;color:var(--text-d);width:24px;text-align:right}

/* "为你推荐" Tab 标签 */
.tab-btn-brain{
  background:linear-gradient(135deg,rgba(255,139,118,.15),rgba(192,96,224,.15));
  color:#A040B0!important;border-color:rgba(192,96,224,.3)!important;
}
.tab-btn-brain.active{
  background:linear-gradient(135deg,#FF8B76,#C060E0)!important;
  color:white!important;border-color:transparent!important;
}


/* ── 盲盒惊喜卡片 ─────────────────────────────────────── */
.mystery-card{
  margin:0 16px 12px;
  border-radius:20px;
  overflow:hidden;
  cursor:pointer;
  position:relative;
  min-height:80px;
  background:linear-gradient(135deg,#1A0A3C 0%,#2D1060 35%,#0D2B6E 70%,#1C0A40 100%);
  box-shadow:0 8px 32px rgba(80,40,180,0.35);
  animation:mystery-entrance .4s cubic-bezier(.2,.8,.3,1);
}
@keyframes mystery-entrance{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}
@keyframes bounce-hint{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
@keyframes bounce-scroll{0%,100%{transform:translateY(0);opacity:1}50%{transform:translateY(7px);opacity:0.6}}

/* 流光扫过效果 */
.mystery-card::before{
  content:"";
  position:absolute;inset:0;
  background:linear-gradient(105deg,
    transparent 30%,
    rgba(255,255,255,.18) 50%,
    transparent 70%);
  background-size:200% 100%;
  animation:mystery-sheen 3.2s ease-in-out infinite;
  pointer-events:none;z-index:1;
}
@keyframes mystery-sheen{
  0%{background-position:200% 0}
  60%,100%{background-position:-200% 0}
}

/* 装饰图案层 */
.mystery-deco{
  position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;
}
.mystery-deco-circle{
  position:absolute;border-radius:50%;
  background:rgba(255,255,255,.08);
}

/* 内容层 */
.mystery-content{
  position:relative;z-index:2;
  padding:18px 18px 16px;
  display:flex;flex-direction:column;gap:0;
}
.mystery-chips{
  display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;
}
.mystery-chip{
  height:36px;padding:0 11px;border-radius:18px;
  background:rgba(255,255,255,.2);
  color:white;font-size:11px;font-weight:700;
  border:1.5px solid rgba(255,255,255,.35);
  cursor:pointer;backdrop-filter:blur(4px);
  transition:background .15s,border-color .15s;
  display:inline-flex;align-items:center;gap:4px;
}
.mystery-chip.active{
  background:rgba(255,255,255,.42);
  border-color:rgba(255,255,255,.7);
}
.mystery-box{
  font-size:36px;line-height:1;margin-bottom:6px;
  display:inline-block;
  animation:box-bounce 2.4s ease-in-out infinite;
}
@keyframes box-bounce{
  0%,100%{transform:translateY(0) rotate(-2deg)}
  45%{transform:translateY(-5px) rotate(2deg)}
  55%{transform:translateY(-5px) rotate(2deg)}
}
.mystery-title{
  font-size:20px;font-weight:900;color:white;
  line-height:1.2;margin-bottom:4px;
  text-shadow:0 2px 8px rgba(0,0,0,.18);
}
.mystery-sub{
  font-size:12px;color:rgba(255,255,255,.85);
  margin-bottom:14px;
}
.mystery-btn{
  align-self:flex-start;
  height:38px;padding:0 20px;border-radius:19px;
  background:rgba(255,255,255,.22);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1.5px solid rgba(255,255,255,.5);
  color:white;font-size:13px;font-weight:800;
  cursor:pointer;font-family:var(--font);
  display:flex;align-items:center;gap:6px;
  transition:background .15s,transform .1s;
}
.mystery-btn:active{background:rgba(255,255,255,.35);transform:scale(.97)}
.mystery-result-overlay{
  position:fixed;inset:0;z-index:1002;
  background:rgba(0,0,0,.55);
  display:flex;align-items:flex-end;justify-content:center;
  animation:fadeIn .2s ease;
}
.mystery-result-panel{
  background:var(--card);
  width:100%;max-width:480px;
  border-radius:24px 24px 0 0;
  padding:20px 20px calc(32px + env(safe-area-inset-bottom) + 72px);
  animation:slideUp .3s cubic-bezier(.2,.8,.3,1);
}
.mystery-result-header{
  display:flex;align-items:center;gap:10px;margin-bottom:16px;
}
.mystery-result-icon{font-size:40px;line-height:1;animation:box-bounce 1.5s ease-in-out infinite}
.mystery-result-title{font-size:17px;font-weight:900;color:var(--text-d)}
.mystery-result-sub{font-size:11px;color:var(--text-m);margin-top:2px}
.mystery-result-place{
  background:var(--cream);border-radius:16px;overflow:hidden;
  margin-bottom:14px;cursor:pointer;
}
.mystery-result-img{height:120px;position:relative;overflow:hidden}
.mystery-result-img img{width:100%;height:100%;object-fit:cover}
.mystery-result-body{padding:12px 14px}
.mystery-result-name{font-size:15px;font-weight:900;color:var(--text-d);margin-bottom:4px}
.mystery-result-meta{font-size:11px;color:var(--text-m);margin-bottom:8px}
.mystery-result-tags{display:flex;gap:5px;flex-wrap:wrap}
.mystery-result-btns{display:flex;gap:8px;margin-top:14px}
.mystery-go-btn{
  flex:1;height:44px;border-radius:14px;
  background:linear-gradient(135deg,#FF8B76,#C060E0);
  color:white;border:none;font-size:14px;font-weight:800;
  cursor:pointer;font-family:var(--font);
}
.mystery-again-btn{
  height:44px;padding:0 16px;border-radius:14px;
  background:var(--cream);border:1.5px solid #EBEBEB;
  color:var(--text-m);font-size:12px;font-weight:700;
  cursor:pointer;font-family:var(--font);
}
.mystery-close-btn{
  height:44px;padding:0 16px;border-radius:14px;
  background:var(--cream);border:1.5px solid #EBEBEB;
  color:var(--text-m);font-size:12px;font-weight:700;
  cursor:pointer;font-family:var(--font);
}


.card-grid-mystery-wrap{
  grid-column: 1 / -1;  /* 跨越全部列 */
}


/* ── 偏好引导面板 ─────────────────────────────────────── */
.pref-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:600;
  display:flex;align-items:flex-end;justify-content:center;
  animation:fadeIn .2s ease;
}
.pref-panel{
  background:var(--card);width:100%;max-width:480px;
  border-radius:24px 24px 0 0;padding:24px 20px 36px;
  animation:slideUp .32s cubic-bezier(.2,.8,.3,1);
}
.pref-handle{width:36px;height:4px;background:#E0E0E0;border-radius:2px;margin:0 auto 18px}
.pref-title{font-size:18px;font-weight:900;color:var(--text-d);text-align:center;margin-bottom:4px}
.pref-sub{font-size:12px;color:var(--text-m);text-align:center;margin-bottom:20px}
.pref-section{margin-bottom:18px}
.pref-section-label{font-size:12px;font-weight:800;color:var(--text-d);margin-bottom:10px}
.pref-chips{display:flex;gap:8px;flex-wrap:wrap}
.pref-chip{
  height:40px;padding:0 14px;border-radius:20px;
  background:var(--cream);border:1.5px solid #EBEBEB;
  font-size:12px;font-weight:600;color:var(--text-m);
  cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:5px;
}
.pref-chip.active{
  background:var(--coral-l);border-color:var(--coral);color:var(--coral-d);font-weight:800;
}
.pref-age-row{display:flex;align-items:center;gap:12px;margin-top:4px}
.pref-age-num{
  font-size:22px;font-weight:900;color:var(--coral);
  min-width:44px;text-align:center;flex-shrink:0;
}
.pref-start-btn{
  width:100%;height:50px;border-radius:18px;
  background:linear-gradient(135deg,#FF8B76,#C060E0);
  color:white;border:none;font-size:15px;font-weight:900;
  cursor:pointer;font-family:var(--font);margin-top:6px;
  box-shadow:0 4px 20px rgba(192,96,224,.35);
}
.pref-skip{
  display:block;text-align:center;font-size:11px;color:var(--text-l);
  margin-top:12px;cursor:pointer;text-decoration:underline;
}

/* ── 推荐原因条 ──────────────────────────────────────── */
.brain-why-row{
  display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;padding:0 10px 10px;
}
.brain-why-pill{
  height:18px;padding:0 7px;border-radius:9px;font-size:8.5px;font-weight:700;
  display:inline-flex;align-items:center;gap:2px;
  background:rgba(0,0,0,.05);color:var(--text-m);
}

/* ════════════════════════════════════════════════════════
   🗺️  遛娃护照系统
   ════════════════════════════════════════════════════════ */

/* ── 护照入口 Tab ─────────────────────────────────────── */
.passport-badge-count{
  position:absolute;top:-4px;right:-4px;
  background:var(--coral);color:white;
  font-size:8px;font-weight:900;
  border-radius:8px;padding:1px 4px;
  border:1.5px solid white;min-width:16px;text-align:center;
}

/* ── 护照主页面 ──────────────────────────────────────── */
.passport-page{padding:0 0 100px}

.passport-cover{
  margin:12px 16px;
  background:linear-gradient(135deg,#1a2744 0%,#243660 50%,#1a2744 100%);
  border-radius:20px;padding:24px 20px 20px;
  position:relative;overflow:hidden;
  box-shadow:0 8px 32px rgba(26,39,68,.45);
}
.passport-cover::before{
  content:"";position:absolute;inset:0;
  background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Ccircle cx='30' cy='30' r='20'/%3E%3Ccircle cx='30' cy='30' r='15'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.passport-cover-title{
  font-size:11px;font-weight:700;color:rgba(255,220,150,.8);
  letter-spacing:2px;text-transform:uppercase;margin-bottom:4px;
  position:relative;z-index:1;
}
.passport-cover-name{
  font-size:22px;font-weight:900;color:white;
  margin-bottom:2px;position:relative;z-index:1;
}
.passport-cover-sub{
  font-size:11px;color:rgba(255,255,255,.6);
  position:relative;z-index:1;
}
.passport-cover-seal{
  position:absolute;right:20px;top:50%;transform:translateY(-50%);
  width:72px;height:72px;border-radius:50%;
  border:3px solid rgba(255,220,150,.4);
  display:flex;align-items:center;justify-content:center;
  font-size:32px;z-index:1;
  background:rgba(255,255,255,.05);
}
.passport-stats-row{
  display:flex;gap:0;margin:12px 16px 0;
  background:var(--card);border-radius:16px;overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.passport-stat{
  flex:1;padding:14px 8px;text-align:center;
  border-right:1px solid rgba(0,0,0,.06);
}
.passport-stat:last-child{border-right:none}
.passport-stat-num{font-size:22px;font-weight:900;color:var(--coral)}
.passport-stat-label{font-size:9px;color:var(--text-l);font-weight:600;margin-top:2px}

/* ── 段位卡片 ─────────────────────────────────────────── */
.rank-card{
  margin:12px 16px;border-radius:16px;overflow:hidden;
  background:var(--card);box-shadow:var(--shadow-sm);
}
.rank-header{
  padding:14px 16px 12px;
  background:linear-gradient(135deg,var(--coral-l),rgba(192,96,224,.12));
  display:flex;align-items:center;gap:12px;
}
.rank-badge-big{font-size:36px;line-height:1}
.rank-title{font-size:15px;font-weight:900;color:var(--text-d)}
.rank-subtitle{font-size:11px;color:var(--text-m);margin-top:2px}
.rank-xp-bar-wrap{padding:12px 16px 14px}
.rank-xp-label{
  display:flex;justify-content:space-between;
  font-size:10px;color:var(--text-m);margin-bottom:6px;font-weight:600;
}
.rank-xp-track{height:8px;background:#EBEBEB;border-radius:4px;overflow:hidden}
.rank-xp-fill{
  height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--coral),#C060E0);
  transition:width .8s cubic-bezier(.2,.8,.3,1);
}

/* ── 区域印章墙 ──────────────────────────────────────── */
.stamps-section{margin:0 16px 12px}
.stamps-title{font-size:13px;font-weight:800;color:var(--text-d);margin-bottom:10px}
.stamps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stamp-item{
  background:var(--card);border-radius:14px;
  padding:14px 8px;text-align:center;
  border:1.5px solid #EBEBEB;position:relative;
  transition:all .2s;
}
.stamp-item.earned{
  border-color:rgba(255,139,118,.4);
  background:linear-gradient(135deg,rgba(255,139,118,.06),rgba(192,96,224,.06));
}
.stamp-item.locked{opacity:.55}
.stamp-icon-wrap{
  width:52px;height:52px;margin:0 auto 8px;
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:26px;position:relative;
  border:2.5px solid #EBEBEB;background:#F8F8F8;
}
.stamp-item.earned .stamp-icon-wrap{
  border-color:var(--coral);background:var(--coral-l);
  box-shadow:0 0 12px rgba(255,139,118,.3);
}
.stamp-check{
  position:absolute;bottom:-2px;right:-2px;
  width:18px;height:18px;border-radius:50%;
  background:var(--coral);color:white;
  font-size:10px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  border:2px solid white;
}
.stamp-name{font-size:10px;font-weight:700;color:var(--text-d)}
.stamp-progress{font-size:9px;color:var(--text-l);margin-top:2px}

/* ── 成就徽章 ─────────────────────────────────────────── */
.badges-section{margin:0 16px 12px}
.badges-title{font-size:13px;font-weight:800;color:var(--text-d);margin-bottom:10px;
  display:flex;align-items:center;justify-content:space-between}
.badges-grid{display:flex;gap:8px;flex-wrap:wrap}
.badge-item{
  display:flex;flex-direction:column;align-items:center;
  width:calc(25% - 6px);padding:10px 4px;
  background:var(--card);border-radius:12px;border:1.5px solid #EBEBEB;
  position:relative;
}
.badge-item.earned{
  border-color:rgba(192,96,224,.35);
  background:linear-gradient(135deg,rgba(255,220,0,.05),rgba(192,96,224,.08));
}
.badge-item.locked{filter:grayscale(.8);opacity:.5}
.badge-item.hidden.locked{background:#1a1a1a;border-color:#333}
.badge-emoji{font-size:26px;margin-bottom:4px}
.badge-name{font-size:8.5px;font-weight:700;color:var(--text-d);text-align:center;line-height:1.2}
.badge-new{
  position:absolute;top:-4px;right:-4px;
  background:var(--coral);color:white;font-size:7px;font-weight:900;
  border-radius:6px;padding:1px 4px;border:1.5px solid white;
}
.badge-item.hidden.locked .badge-emoji{filter:blur(4px)}
.badge-item.hidden.locked .badge-name{color:#666}

/* ── 打卡按钮（详情页）────────────────────────────────── */
.checkin-btn{
  width:100%;height:48px;border-radius:16px;border:none;
  font-size:14px;font-weight:900;cursor:pointer;
  font-family:var(--font);margin-top:8px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:all .2s;
}
.checkin-btn.available{
  background:linear-gradient(135deg,#FF8B76,#C060E0);
  color:white;box-shadow:0 4px 16px rgba(192,96,224,.35);
}
.checkin-btn.done{
  background:var(--mint-l);color:#2A7050;
  border:1.5px solid rgba(110,198,160,.4);
}
.checkin-btn.far{
  background:var(--cream);color:var(--text-l);
  border:1.5px solid #EBEBEB;cursor:not-allowed;
}

/* ── 打卡盖章动效 ─────────────────────────────────────── */
.stamp-anim-overlay{
  position:fixed;inset:0;z-index:1000;pointer-events:none;
  display:flex;align-items:center;justify-content:center;
}
.stamp-anim{
  font-size:120px;line-height:1;
  animation:stamp-drop .6s cubic-bezier(.2,.8,.2,1) forwards;
  opacity:0;transform:scale(2) rotate(-20deg);
}
@keyframes stamp-drop{
  0%{opacity:0;transform:scale(2) rotate(-15deg)}
  40%{opacity:1;transform:scale(.95) rotate(3deg)}
  60%{transform:scale(1.05) rotate(-1deg)}
  80%{transform:scale(.98) rotate(1deg)}
  100%{opacity:1;transform:scale(1) rotate(0)}
}
.stamp-anim-text{
  position:absolute;bottom:30%;font-size:16px;font-weight:900;
  color:white;text-shadow:0 2px 8px rgba(0,0,0,.5);
  animation:stamp-text .6s .3s ease forwards;opacity:0;
}
@keyframes stamp-text{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}

/* ── 积分浮动动画气泡 ─────────────────────────────────── */
.pts-float-bubble{
  position:fixed;
  left:50%;transform:translateX(-50%);
  bottom:100px;
  z-index:9999;pointer-events:none;
  display:flex;align-items:center;gap:8px;
  background:linear-gradient(135deg,#ff6b6b,#ffa94d);
  border-radius:40px;
  padding:12px 28px;
  box-shadow:0 6px 24px rgba(255,107,107,0.45);
  animation:pts-bubble-up 2.2s cubic-bezier(0.25,0.46,0.45,0.94) forwards;
  white-space:nowrap;
}
.pts-float-bubble .pts-bubble-icon{font-size:26px;line-height:1;}
.pts-float-bubble .pts-bubble-text{
  font-size:20px;font-weight:900;color:#fff;
  text-shadow:0 2px 6px rgba(0,0,0,0.2);letter-spacing:1px;
}
@keyframes pts-bubble-up{
  0%  {opacity:0;transform:translateX(-50%) scale(0.6) translateY(0);}
  15% {opacity:1;transform:translateX(-50%) scale(1.15) translateY(-12px);}
  30% {transform:translateX(-50%) scale(1.0) translateY(-24px);}
  70% {opacity:1;transform:translateX(-50%) scale(1.0) translateY(-80px);}
  100%{opacity:0;transform:translateX(-50%) scale(0.9) translateY(-130px);}
}

/* ── 分享海报预览 ─────────────────────────────────────── */
.poster-btn{
  width:100%;height:44px;border-radius:14px;
  background:linear-gradient(135deg,#1a2744,#243660);
  color:rgba(255,220,150,.9);border:none;font-size:13px;font-weight:800;
  cursor:pointer;font-family:var(--font);margin-top:8px;
}
.poster-modal{
  position:fixed;inset:0;z-index:1003;background:rgba(0,0,0,.7);
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.poster-wrap{border-radius:16px;overflow:hidden;max-width:360px;width:100%}


/* ── 统一返回栏 ─────── */
.page-back-bar{
  display:flex;align-items:center;gap:8px;
  padding:10px 16px 4px;
  background:transparent;
}
/* 固定返回按钮：悬浮在左上角，不随页面滚动 */
.fixed-back-btn{
  position:fixed;
  top:12px;left:12px;
  z-index:1004;
  display:flex;align-items:center;gap:5px;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  border:1.5px solid rgba(0,0,0,.08);
  border-radius:22px;
  padding:7px 14px 7px 10px;
  font-size:13px;font-weight:700;
  color:var(--coral-d);
  cursor:pointer;
  box-shadow:0 2px 12px rgba(0,0,0,.12);
}
.fixed-back-btn:active{opacity:.7}
.page-back-btn{
  display:flex;align-items:center;gap:4px;
  background:none;border:none;
  font-size:13px;font-weight:700;
  color:var(--coral-d);cursor:pointer;padding:4px 0;
}
.page-title-bar{font-size:14px;font-weight:800;color:var(--text-d)}
.page-count-label{font-size:11px;color:var(--text-m);margin-left:4px}

/* ── 遛娃浮标小鸡（设计图原版）────────────────────────────────── */
#cb-btn{
  position:fixed;bottom:148px;right:16px;
  width:68px;height:68px;border-radius:50%;
  background:transparent;
  box-shadow:0 10px 32px rgba(200,60,120,.38),0 2px 8px rgba(0,0,0,.08);
  cursor:grab;z-index:9990;
  display:flex;align-items:center;justify-content:center;
  animation:cb-float 4.8s ease-in-out infinite;
  transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s;
  user-select:none;-webkit-user-select:none;
  overflow:visible;
}
#cb-btn::before,#cb-btn::after{display:none}
#cb-btn:hover{
  transform:scale(1.1) translateY(-5px);
  box-shadow:0 18px 44px rgba(200,60,120,.48),0 3px 10px rgba(0,0,0,.10);
}
#cb-btn:active{transform:scale(.90)!important}
@keyframes cb-float{
  0%,100%{transform:translateY(0) scaleX(1) scaleY(1)}
  28%{transform:translateY(-5px) scaleX(1.02) scaleY(.98)}
  55%{transform:translateY(-13px) scaleX(.98) scaleY(1.02)}
  78%{transform:translateY(-5px) scaleX(1.02) scaleY(.98)}
}
.cb-btn-active{animation:none!important;transform:scale(1.05)!important}
.cb-dragging{
  animation:none!important;cursor:grabbing!important;
  transform:scale(1.1) rotate(-6deg)!important;
  box-shadow:0 22px 48px rgba(195,65,125,.56)!important;
}
/* ── Chick wrap ─────────────────────────────────────────── */
.chick-wrap{
  position:relative;width:68px;height:68px;
  display:flex;align-items:center;justify-content:center;
  z-index:1;
}
.ck-svg{display:block;overflow:visible;position:relative;z-index:1}
.ck-img{display:block;width:68px;height:68px;border-radius:50%;object-fit:contain;position:relative;z-index:1}
.ck-emoji-fb{position:absolute;font-size:40px;z-index:0;pointer-events:none;line-height:1}
/* ── 自动循环星光 ─────────────────────────────────────── */
.ck-sparkles{
  position:absolute;top:-20px;right:-16px;
  pointer-events:none;z-index:20;
  animation:ck-sp-show 6s ease-in-out infinite;
}
@keyframes ck-sp-show{
  0%,30%,100%{opacity:0;transform:scale(.7)}
  42%,75%{opacity:1;transform:scale(1)}
}
.ck-sp{
  position:absolute;color:#FFE020;
  animation:ck-sparkle 1.2s ease-in-out infinite;
  text-shadow:0 0 6px rgba(255,210,0,.60);
  font-style:normal;line-height:1;
}
.ck-sp1{top:0;right:12px;font-size:14px;animation-delay:0s}
.ck-sp2{top:16px;right:0;font-size:9px;animation-delay:.26s}
.ck-sp3{top:-10px;right:24px;font-size:7px;animation-delay:.52s}
@keyframes ck-sparkle{
  0%,100%{transform:scale(1) rotate(0deg);opacity:.70}
  50%{transform:scale(1.45) rotate(25deg);opacity:1}
}
/* ── 自动摇摆 ─────────────────────────────────────────── */
.ck-wiggle{animation:ck-wiggle-anim .55s ease-in-out forwards!important}
@keyframes ck-wiggle-anim{
  0%,100%{transform:rotate(0deg) scale(1)}
  20%{transform:rotate(-9deg) scale(1.07)}
  45%{transform:rotate(8deg) scale(1.07)}
  65%{transform:rotate(-4deg) scale(1.02)}
  82%{transform:rotate(2deg)}
}
.cb-badge{
  position:absolute;top:-3px;right:-3px;
  width:21px;height:21px;
  background:#F06090;color:#fff;
  border-radius:50%;font-size:11px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  border:2.5px solid #fff;
  animation:cb-ping .6s ease-in-out infinite alternate;
}
@keyframes cb-ping{from{transform:scale(1)}to{transform:scale(1.18)}}
#cb-panel{
  position:fixed;bottom:164px;right:16px;
  width:320px;
  background:#FFFDF9;
  border-radius:24px;
  box-shadow:0 14px 44px rgba(200,140,110,.24),0 2px 8px rgba(0,0,0,.06);
  display:none;flex-direction:column;overflow:hidden;
  z-index:9991;
  transform:scale(.88) translateY(22px);transform-origin:bottom right;
  opacity:0;transition:transform .28s cubic-bezier(.34,1.56,.64,1),opacity .2s;
}
#cb-panel.cb-open{transform:scale(1) translateY(0);opacity:1}
.cb-header{
  background:linear-gradient(135deg,#F4A58A 0%,#D4826A 100%);
  padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;
}
.cb-header-info{display:flex;align-items:center;gap:10px}
.cb-header-mascot{
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;
  font-size:22px;overflow:hidden;padding:0;
}
.cb-header-mascot img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.cb-header-name{font-size:14px;font-weight:900;color:#fff;letter-spacing:.02em}
.cb-header-sub{font-size:10px;color:rgba(255,255,255,.82);margin-top:2px}
.cb-close{
  background:rgba(255,255,255,.22);color:#fff;border:none;
  border-radius:50%;width:28px;height:28px;font-size:15px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.cb-close:hover{background:rgba(255,255,255,.34)}
.cb-messages{
  flex:1;overflow-y:auto;padding:14px;
  display:flex;flex-direction:column;gap:10px;
  min-height:0;max-height:280px;
}
.cb-messages::-webkit-scrollbar{width:4px}
.cb-messages::-webkit-scrollbar-track{background:transparent}
.cb-messages::-webkit-scrollbar-thumb{background:#FCDDD0;border-radius:4px}
.cb-msg{display:flex;align-items:flex-end;gap:8px;animation:cb-fadein .22s ease}
@keyframes cb-fadein{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
.cb-msg-bot{flex-direction:row}
.cb-msg-user{flex-direction:row-reverse}
.cb-avatar{
  width:30px;height:30px;border-radius:50%;
  background:linear-gradient(135deg,#F5D98A,#F4A58A);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;flex-shrink:0;overflow:hidden;padding:0;
}
.cb-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.cb-bubble{
  max-width:210px;padding:10px 13px;
  border-radius:18px 18px 18px 4px;
  font-size:13px;line-height:1.55;color:#3A3835;
  background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.06);
}
.cb-bubble-user{
  border-radius:18px 18px 4px 18px;
  background:linear-gradient(135deg,#F4A58A,#D4826A);
  color:#fff;box-shadow:0 3px 10px rgba(212,130,106,.32);
}
.cb-quick-replies{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0}
.cb-qr-btn{
  background:#FEF5F1;color:#D4826A;
  border:1.5px solid #FCDDD0;border-radius:20px;
  padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;
  transition:background .15s,border-color .15s;
  font-family:var(--font);
}
.cb-qr-btn:hover{background:#FCDDD0;border-color:#F4A58A}
.cb-qr-btn:active{transform:scale(.95)}
.cb-typing .cb-bubble{
  display:flex;align-items:center;gap:5px;padding:13px 16px;
}
.cb-dot{
  width:6px;height:6px;border-radius:50%;background:#D4826A;
  animation:cb-dots .85s ease-in-out infinite;
}
.cb-dot:nth-child(2){animation-delay:.17s}
.cb-dot:nth-child(3){animation-delay:.34s}
@keyframes cb-dots{0%,80%,100%{transform:translateY(0);opacity:.35}40%{transform:translateY(-6px);opacity:1}}
.cb-footer{
  display:flex;align-items:flex-end;gap:8px;
  padding:12px 14px;
  border-top:1px solid #F5EDE8;background:#FFFDF9;
}
.cb-input{
  flex:1;border:1.5px solid #FCDDD0;border-radius:16px;
  padding:10px 14px;font-size:13px;
  resize:none;outline:none;
  background:#fff;color:#3A3835;
  font-family:var(--font);line-height:1.4;
  max-height:80px;transition:border-color .15s;
}
.cb-input:focus{border-color:#F4A58A}
.cb-input::placeholder{color:#C0BCB8}
.cb-send{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,#F4A58A,#D4826A);
  color:#fff;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:transform .1s,opacity .1s;
  box-shadow:0 3px 10px rgba(212,130,106,.35);
}
.cb-send:hover{transform:scale(1.07)}
.cb-send:active{transform:scale(.91)}
.cb-send:disabled{opacity:.45;cursor:not-allowed;transform:none}
@media(max-width:360px){
  #cb-panel{width:calc(100vw - 24px);right:12px}
  #cb-btn{right:12px}
}

/* ═══════════════════════════════════════════════════
   约Playdate + 消息 Playdate & Messaging UI
   ═══════════════════════════════════════════════════ */

/* ── 社区外层 tabs (横向滚动，4个) ── */
.cm-outer-tabs-scroll{
  background:#fff;
  border-bottom:1px solid #EBEBEB;
  position:sticky;top:0;z-index:20;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.cm-outer-tabs-scroll::-webkit-scrollbar{display:none}
.cm-outer-tabs{
  display:flex;
  min-width:100%;
  width:max-content;
}
.cm-outer-tab{
  flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  padding:14px 20px 12px;
  background:none;border:none;
  font-size:14px;font-weight:600;
  color:#888;
  cursor:pointer;position:relative;
  white-space:nowrap;
  transition:color .15s;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.cm-outer-tab.active{
  color:var(--coral-d);
  font-weight:700;
}
.cm-outer-tab.active::after{
  content:'';position:absolute;left:16%;right:16%;bottom:0;
  height:2.5px;border-radius:2px;background:var(--coral-d);
}

/* 分类筛选条 */
.cm-cat-bar{
  display:flex;gap:8px;padding:12px 16px 8px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;
}
.cm-cat-bar::-webkit-scrollbar{display:none}
.cm-cat-btn{
  flex-shrink:0;
  padding:5px 14px;
  border-radius:50px;border:1.5px solid #E8E4E0;
  background:#fff;color:var(--text-m);
  font-size:12px;font-weight:600;cursor:pointer;
  transition:all .12s;
}
.cm-cat-btn.active{
  background:var(--coral-d);border-color:var(--coral-d);color:#fff;
}

/* 通用社区卡片 */
.cm-card{
  background:#fff;border-radius:18px;
  margin:8px 16px;
  box-shadow:0 1px 6px rgba(0,0,0,.06);
  overflow:hidden;
  border:1px solid rgba(0,0,0,.04);
}
.cm-card-head{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 14px 0;
}
.cm-card-icon{
  width:42px;height:42px;border-radius:12px;flex-shrink:0;
  background:var(--coral-l);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;
}
.cm-card-info{flex:1;min-width:0}
.cm-card-title{font-size:15px;font-weight:800;color:var(--text-d);line-height:1.3;margin-bottom:5px}
.cm-card-sub{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:4px}
.cm-card-price{font-size:13px;font-weight:800;color:var(--coral-d)}
.cm-card-loc{font-size:12px;color:var(--text-m)}
.cm-card-date{font-size:12px;color:#2196F3;font-weight:600}
.cm-card-cat{
  font-size:11px;font-weight:700;
  padding:3px 9px;border-radius:50px;
  flex-shrink:0;margin-top:2px;
}
.cm-card-note{
  padding:8px 14px 10px;
  font-size:13px;color:var(--text-m);
  font-style:italic;line-height:1.5;
}
.cm-card-foot{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 14px 12px;
  border-top:1px solid #F5F2EE;
}
.cm-card-creator{display:flex;align-items:center;gap:6px}
.cm-card-avatar{
  width:24px;height:24px;border-radius:50%;
  background:linear-gradient(135deg,var(--coral-m),var(--coral));
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:#fff;
  flex-shrink:0;
}
.cm-card-creator span{font-size:12px;font-weight:600;color:var(--text-d)}
.cm-card-time{font-size:11px;color:var(--text-l);font-weight:400}
.cm-del-btn{
  padding:4px 10px;border-radius:50px;
  border:1.5px solid #F0EBE4;background:#fff;
  color:var(--text-l);font-size:11px;cursor:pointer;
  flex-shrink:0;transition:all .12s;
}
.cm-del-btn:hover{border-color:#E03050;color:#E03050}

.pd-page{
  padding:0 0 100px;
  background:#F5F5F5;
  min-height:100vh;
}

/* ── 顶部英雄区 ── */
.pd-hero{
  display:flex;align-items:center;
  padding:20px 16px 22px;
  position:relative;
  overflow:hidden;
  min-height:180px;
}
.pd-hero-left{flex:1;z-index:1}
.pd-hero-badge{
  display:inline-flex;align-items:center;gap:5px;
  background:rgba(96,56,180,.12);color:#5C40A0;
  font-size:11px;font-weight:800;
  padding:4px 10px 4px 8px;border-radius:50px;
  margin-bottom:10px;
}
.pd-hero-h1{
  font-size:26px;font-weight:900;color:#1A1A2E;
  line-height:1.2;margin-bottom:6px;letter-spacing:-.02em;
}
.pd-hero-sub-text{font-size:12px;color:#888;margin-bottom:14px;line-height:1.4}
.pd-hero-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:10px 20px;
  background:linear-gradient(135deg,#FF8E5C,#F06030);
  color:#fff;font-size:14px;font-weight:800;
  border-radius:50px;border:none;cursor:pointer;
  box-shadow:0 4px 14px rgba(240,96,48,.3);
  transition:transform .15s,box-shadow .15s;
}
.pd-hero-btn:active{transform:scale(.95)}
.pd-hero-illus{
  width:150px;height:140px;flex-shrink:0;
  position:relative;z-index:1;
  overflow:visible;
}

/* iOS-style 分段控制器 */
.pd-seg-ctrl{
  display:flex;
  background:#EBEBF0;
  border-radius:10px;
  padding:2px;
  margin:12px 16px 0;
  gap:0;
}
.pd-seg-btn{
  flex:1;padding:8px 4px;border-radius:8px;border:none;
  background:transparent;color:var(--text-m);
  font-size:13px;font-weight:600;cursor:pointer;
  transition:all .15s;white-space:nowrap;
  font-family:var(--font);
  -webkit-tap-highlight-color:transparent;
}
.pd-seg-btn.active{
  background:#fff;color:var(--text-d);font-weight:700;
  box-shadow:0 1px 4px rgba(0,0,0,.12);
}

/* 区块标题带徽章 */
.pd-section-hdr{
  display:flex;align-items:center;gap:7px;
  padding:18px 20px 8px;
  font-size:16px;font-weight:800;color:var(--text-d);
}
.pd-section-hdr-icon{font-size:17px;line-height:1}
.pd-section-badge{
  min-width:22px;height:22px;border-radius:11px;
  font-size:12px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;
  padding:0 6px;
}
.pd-section-badge.green{background:#E4F5EC;color:#1E7A45}
.pd-section-badge.gray{background:#EBEBF0;color:#888}
.pd-section-badge.coral{background:var(--coral-l);color:var(--coral-d)}

/* ── Sub-tab pills ── */
.pd-subtabs{
  display:flex;gap:6px;
  padding:14px 16px 14px;
  overflow-x:auto;
  scrollbar-width:none;
  background:#fff;
  border-bottom:1px solid #F0F0F0;
}
.pd-subtabs::-webkit-scrollbar{display:none}
.pd-subtab{
  flex-shrink:0;padding:7px 16px;
  border-radius:50px;
  background:#F2F2F7;
  color:var(--text-m);font-size:13px;font-weight:600;
  border:none;cursor:pointer;
  transition:background .15s,color .15s;
  position:relative;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  font-family:var(--font);
}
.pd-subtab.active{
  background:#7050C0;color:#fff;font-weight:700;
}
.pd-subtab-badge{
  position:absolute;top:-4px;right:-4px;
  min-width:17px;height:17px;
  background:#E03050;color:#fff;
  font-size:10px;font-weight:900;
  border-radius:50px;
  display:flex;align-items:center;justify-content:center;
  padding:0 4px;
  border:2px solid #FFFDF9;
}

/* ── 约Playdate卡片 ── */
.pd-card{
  margin:12px 14px 0;
  background:#fff;
  border-radius:20px;
  box-shadow:0 2px 12px rgba(0,0,0,.06);
  overflow:hidden;
  border:1px solid rgba(0,0,0,.05);
  transition:transform .15s,box-shadow .15s;
}
.pd-card:active{transform:scale(.985);box-shadow:0 1px 6px rgba(0,0,0,.06)}
.pd-card-head{
  padding:14px 16px 10px;
  display:flex;align-items:flex-start;gap:12px;
}
.pd-card-place-icon{
  width:46px;height:46px;border-radius:14px;
  background:linear-gradient(135deg,var(--coral-l),var(--coral-m));
  display:flex;align-items:center;justify-content:center;
  font-size:22px;flex-shrink:0;
}
.pd-card-info{flex:1;min-width:0}
.pd-card-place{
  font-size:14px;font-weight:800;color:var(--text-d);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pd-card-meta{
  font-size:11px;color:var(--text-m);margin-top:3px;
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;
}
.pd-card-tag{
  padding:2px 8px;border-radius:50px;
  font-size:10px;font-weight:700;
  background:#F2EDE8;color:var(--text-m);
}
.pd-card-tag.age{background:var(--lav-l);color:var(--lav-d)}
.pd-card-tag.date{background:var(--honey-l);color:#8A6A00}
.pd-card-tag.spots{background:var(--mint-l);color:var(--matcha-d)}
.pd-card-tag.full{background:#FEF0F0;color:#C03050}

/* 参与者头像 + 操作 */
.pd-card-foot{
  padding:10px 16px 14px;
  display:flex;align-items:center;gap:10px;
  border-top:1px solid rgba(0,0,0,.05);
}
.pd-avatar-stack{display:flex;align-items:center}
.pd-avatar-stack .pa{
  width:30px;height:30px;border-radius:50%;
  border:2px solid #fff;
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;font-size:12px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  margin-left:-8px;flex-shrink:0;overflow:hidden;
}
.pd-avatar-stack .pa:first-child{margin-left:0}
.pd-avatar-stack .pa img{width:100%;height:100%;object-fit:cover}
.pd-avatar-stack .pa-more{
  background:#F2EDE8;color:var(--text-m);font-size:10px;
}
.pd-card-creator{
  flex:1;min-width:0;
}
.pd-card-creator-name{
  font-size:11px;color:var(--text-m);font-weight:600;
}
.pd-card-note{
  font-size:12px;color:var(--text-d);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* 约Playdate按钮 */
.pd-join-btn{
  padding:8px 16px;border-radius:50px;
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;font-size:12px;font-weight:800;
  border:none;cursor:pointer;
  white-space:nowrap;flex-shrink:0;
  box-shadow:0 3px 10px rgba(212,130,106,.3);
  transition:transform .15s,opacity .15s;
}
.pd-join-btn:active{transform:scale(.93)}
.pd-join-btn.joined{
  background:#F2EDE8;color:var(--text-m);
  box-shadow:none;
}
.pd-cancel-btn{
  padding:8px 16px;border-radius:50px;
  background:#F2EDE8;color:var(--text-m);
  font-size:12px;font-weight:700;
  border:none;cursor:pointer;white-space:nowrap;flex-shrink:0;
}

/* 创建约Playdate按钮（FAB）*/
.pd-fab{
  position:fixed;bottom:90px;right:20px;z-index:1800;
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;font-size:24px;
  border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 24px rgba(212,130,106,.45);
  transition:transform .2s,box-shadow .2s;
}
.pd-fab:active{transform:scale(.88)}

/* ── 创建约Playdate底部抽屉 ── */
.pd-sheet-overlay{
  position:fixed;inset:0;z-index:9992;
  background:rgba(0,0,0,.45);
  animation:fadeIn .2s ease;
}
.pd-sheet{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:680px;z-index:9993;
  background:#FFFDF9;
  border-radius:24px 24px 0 0;
  padding:0 0 calc(20px + env(safe-area-inset-bottom));
  max-height:92vh;overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  animation:slideUp .25s cubic-bezier(.4,0,.2,1);
}
html:has(.pd-sheet-overlay){overflow:hidden}
@keyframes slideUp{from{transform:translateX(-50%) translateY(100%)}to{transform:translateX(-50%) translateY(0)}}
.pd-sheet-handle{
  width:36px;height:4px;border-radius:2px;
  background:#E0DDD8;margin:12px auto 0;
}
.pd-sheet-title{
  font-size:17px;font-weight:900;color:var(--text-d);
  padding:14px 20px 0;
}
.pd-field{
  padding:12px 20px 0;
}
.pd-field-label{
  font-size:12px;font-weight:700;color:var(--text-m);
  margin-bottom:6px;letter-spacing:.04em;text-transform:uppercase;
}
.pd-field-input{
  width:100%;padding:12px 14px;
  border-radius:14px;border:1.5px solid #E8E4E0;
  background:#fff;color:var(--text-d);
  font-size:16px;font-family:inherit;
  outline:none;transition:border-color .15s;
  touch-action:manipulation;box-sizing:border-box;
  -webkit-appearance:none;
}
.pd-field-input:focus{border-color:var(--coral)}
.pd-field-textarea{
  width:100%;padding:12px 14px;
  border-radius:14px;border:1.5px solid #E8E4E0;
  background:#fff;color:var(--text-d);
  font-size:16px;font-family:inherit;
  outline:none;resize:none;min-height:80px;
  transition:border-color .15s;
  touch-action:manipulation;box-sizing:border-box;
  -webkit-user-select:text;user-select:text;
}
.pd-field-textarea:focus{border-color:var(--coral)}
/* 快速日期/时间选择 chip 行 */
.pd-quick-chips{
  display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.pd-quick-chips::-webkit-scrollbar{display:none}
.pd-quick-chip{
  flex-shrink:0;padding:7px 13px;
  border-radius:20px;border:1.5px solid #E8E4E0;
  background:#fff;color:var(--text-m);
  font-size:13px;font-weight:600;font-family:inherit;
  cursor:pointer;white-space:nowrap;
  touch-action:manipulation;transition:all .15s;
  -webkit-appearance:none;
}
.pd-quick-chip.active{
  background:var(--coral);border-color:var(--coral);color:#fff;
}
.pd-quick-chip:active{opacity:.75}
.pd-date-other-input{
  margin-top:8px;font-size:14px;
  color:var(--text-m);background:#FAFAFA;
  border-color:#F0EDEA;padding:10px 14px;
}
.pd-field-row{display:flex;gap:10px}
.pd-field-row .pd-field{flex:1;padding-left:0;padding-right:0}
.pd-field-row .pd-field:first-child{padding-left:20px}
.pd-field-row .pd-field:last-child{padding-right:20px}
.pd-sheet-submit{
  margin:16px 20px 0;
  width:calc(100% - 40px);
  padding:14px;border-radius:14px;
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;font-size:15px;font-weight:800;
  border:none;cursor:pointer;
  box-shadow:0 6px 20px rgba(212,130,106,.35);
  transition:opacity .15s,transform .15s;
}
.pd-sheet-submit:active{transform:scale(.97)}
.pd-sheet-submit:disabled{opacity:.5;cursor:not-allowed}

/* 地点选择器下拉 */
.pd-place-options{
  position:absolute;top:100%;left:0;right:0;z-index:10;
  background:#fff;border-radius:14px;
  box-shadow:0 8px 30px rgba(0,0,0,.12);
  border:1.5px solid #E8E4E0;
  max-height:220px;overflow-y:auto;
  margin-top:4px;
}
.pd-place-opt{
  padding:10px 14px;font-size:13px;color:var(--text-d);
  cursor:pointer;border-bottom:1px solid #F5F2EE;
}
.pd-place-opt:last-child{border-bottom:none}
.pd-place-opt:hover,.pd-place-opt:active{background:var(--coral-l)}
.pd-place-wrap{position:relative}

/* ── 消息 UI ── */
.msg-page{padding:0}

/* 会话列表 */
.msg-conv-list{padding:0 0 8px}
.msg-conv-item{
  display:flex;align-items:center;gap:12px;
  padding:13px 16px;
  border-bottom:1px solid rgba(0,0,0,.05);
  cursor:pointer;transition:background .1s;
}
.msg-conv-item:active{background:var(--coral-l)}
.msg-conv-avatar{
  width:46px;height:46px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--coral-m),var(--coral));
  display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:800;color:#fff;overflow:hidden;
  position:relative;
}
.msg-conv-avatar img{width:100%;height:100%;object-fit:cover}
.msg-conv-avatar.system{
  background:linear-gradient(135deg,#8868A8,#6848A0);
}
.msg-conv-avatar.playdate{
  background:linear-gradient(135deg,var(--sage),var(--matcha-d));
}
.msg-conv-body{flex:1;min-width:0}
.msg-conv-name{
  font-size:14px;font-weight:700;color:var(--text-d);
  display:flex;align-items:center;justify-content:space-between;
}
.msg-conv-time{font-size:11px;color:var(--text-l);font-weight:400}
.msg-conv-preview{
  font-size:12px;color:var(--text-m);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.msg-conv-unread{
  min-width:20px;height:20px;
  background:#E03050;color:#fff;
  font-size:10px;font-weight:900;
  border-radius:50px;
  display:flex;align-items:center;justify-content:center;
  padding:0 5px;margin-top:2px;
  flex-shrink:0;
}

/* 聊天界面 — 全屏固定浮层，确保输入栏始终可见 */
.msg-chat{
  position:fixed;top:0;left:0;right:0;bottom:0;
  z-index:2500;
  display:flex;flex-direction:column;
  background:#FFFDF9;
}
.msg-chat-head{
  padding:12px 16px;
  padding-top:calc(12px + env(safe-area-inset-top));
  display:flex;align-items:center;gap:10px;
  border-bottom:1px solid rgba(0,0,0,.07);
  background:#FFFDF9;
  flex-shrink:0;
}
.msg-chat-back{
  width:36px;height:36px;border-radius:50%;
  border:none;background:#F2EDE8;
  color:var(--text-d);font-size:16px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.msg-chat-title{
  flex:1;font-size:15px;font-weight:800;color:var(--text-d);
}
.msg-chat-body{
  flex:1;overflow-y:auto;
  padding:12px 14px;
  display:flex;flex-direction:column;gap:8px;
}
.msg-bubble-wrap{display:flex;align-items:flex-end;gap:8px}
.msg-bubble-wrap.me{flex-direction:row-reverse}
.msg-bubble-wrap .bub-avatar{
  width:28px;height:28px;border-radius:50%;
  background:linear-gradient(135deg,var(--coral-m),var(--coral));
  color:#fff;font-size:11px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;overflow:hidden;
}
.msg-bubble-wrap .bub-avatar img{width:100%;height:100%;object-fit:cover}
.msg-bubble{
  max-width:72%;padding:10px 13px;
  border-radius:18px;
  font-size:13px;line-height:1.5;
  word-break:break-word;
}
.msg-bubble.them{
  background:#fff;color:var(--text-d);
  border-radius:4px 18px 18px 18px;
  box-shadow:0 1px 4px rgba(0,0,0,.07);
}
.msg-bubble.me{
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;
  border-radius:18px 4px 18px 18px;
}
.msg-bubble.system{
  background:var(--lav-l);color:var(--lav-d);
  border-radius:12px;font-size:12px;text-align:center;
  max-width:90%;align-self:center;padding:8px 14px;
}
.msg-bubble-time{
  font-size:10px;color:var(--text-l);
  text-align:right;margin-top:3px;
}

/* 消息输入框 */
.msg-chat-input{
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  border-top:1px solid rgba(0,0,0,.07);
  background:#FFFDF9;
  display:flex;align-items:flex-end;gap:10px;
}
.msg-input{
  flex:1;padding:10px 14px;
  border-radius:20px;border:1.5px solid #E8E4E0;
  background:#fff;color:var(--text-d);
  font-size:14px;font-family:inherit;
  outline:none;resize:none;
  max-height:100px;min-height:40px;
  transition:border-color .15s;
  line-height:1.4;
}
.msg-input:focus{border-color:var(--coral)}
.msg-send-btn{
  width:40px;height:40px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--coral),var(--coral-d));
  color:#fff;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(212,130,106,.35);
  transition:transform .1s,opacity .1s;
}
.msg-send-btn:active{transform:scale(.88)}
.msg-send-btn:disabled{opacity:.4;cursor:not-allowed}

/* 导航栏消息徽章 */
.nav-msg-badge{
  position:absolute;top:2px;right:8px;
  min-width:16px;height:16px;
  background:#E03050;color:#fff;
  font-size:9px;font-weight:900;border-radius:50px;
  display:flex;align-items:center;justify-content:center;
  padding:0 3px;
  border:1.5px solid #FFFDF9;
}

/* 空状态 */
.pd-empty{
  text-align:center;padding:48px 24px;
}
.pd-empty-icon{font-size:48px;margin-bottom:12px}
.pd-empty-title{font-size:16px;font-weight:800;color:var(--text-d);margin-bottom:6px}
.pd-empty-sub{font-size:13px;color:var(--text-m);line-height:1.5}

/* 区域标题 */
.pd-section-header{
  padding:16px 16px 4px;
  font-size:12px;font-weight:700;
  color:var(--text-l);letter-spacing:.06em;text-transform:uppercase;
}

/* 约Playdate详情页 */
.pd-detail-head{
  padding:16px;
  border-bottom:1px solid rgba(0,0,0,.06);
}
.pd-detail-place{
  font-size:18px;font-weight:900;color:var(--text-d);margin-bottom:6px;
}
.pd-detail-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.pd-detail-note{
  font-size:14px;color:var(--text-d);line-height:1.6;
  padding:10px 12px;background:#F8F5F2;border-radius:12px;
}
.pd-participants-title{
  font-size:13px;font-weight:700;color:var(--text-m);
  padding:14px 16px 6px;
}
.pd-participant-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 16px;border-bottom:1px solid rgba(0,0,0,.05);
}
.pd-participant-avatar{
  width:38px;height:38px;border-radius:50%;
  background:linear-gradient(135deg,var(--coral-m),var(--coral));
  color:#fff;font-size:14px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.pd-participant-name{font-size:13px;font-weight:700;color:var(--text-d)}
.pd-participant-sub{font-size:11px;color:var(--text-m);margin-top:1px}

/* 加载指示器 */
.pd-loading{
  text-align:center;padding:32px 16px;
  color:var(--text-l);font-size:13px;
}

/* ── 登录/注册弹窗 ── */
.auth-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.5);
  z-index:10002;display:flex;align-items:flex-end;
  animation:fadeIn .2s ease;
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.auth-panel{
  width:100%;background:var(--bg,#FFFDF9);
  border-radius:28px 28px 0 0;
  padding:24px 20px calc(48px + env(safe-area-inset-bottom));
  animation:slideUp .3s cubic-bezier(.2,.8,.3,1);
  max-height:85vh;overflow-y:auto;
}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.auth-tabs{
  display:flex;background:#F5F0EA;border-radius:14px;
  padding:4px;margin-bottom:24px;
}
.auth-tab{
  flex:1;padding:9px;border-radius:10px;border:none;
  font-size:13px;font-weight:700;cursor:pointer;
  background:transparent;color:var(--text-m,#888);
  transition:all .2s;
}
.auth-tab.active{
  background:white;color:var(--coral-d,#D4826A);
  box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.auth-benefit{
  display:flex;align-items:flex-start;gap:10px;
  background:#FFF8F5;border-radius:14px;
  padding:12px 14px;margin-bottom:20px;
}
.auth-field{
  width:100%;padding:13px 14px;border-radius:14px;
  border:1.5px solid #EEE;font-size:16px;
  font-family:var(--font,-apple-system,sans-serif);
  background:white;color:var(--text-d,#2A2A2A);
  box-sizing:border-box;outline:none;
  transition:border-color .2s;
  margin-bottom:10px;
}
.auth-field:focus{border-color:var(--coral,#F4A58A);}
.auth-submit-btn{
  width:100%;padding:15px;border-radius:16px;border:none;
  font-size:16px;font-weight:800;cursor:pointer;
  background:linear-gradient(135deg,#FF8B76,#F06090);
  color:white;margin-top:4px;
  box-shadow:0 4px 16px rgba(255,139,118,.35);
  transition:opacity .15s;
}
.auth-submit-btn:active{opacity:.85}
.auth-submit-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-divider{
  display:flex;align-items:center;gap:10px;
  margin:16px 0;color:var(--text-l,#BBB);font-size:12px;
}
.auth-divider::before,.auth-divider::after{
  content:'';flex:1;height:1px;background:#EBEBEB;
}
.auth-error{
  background:#FFF0EE;border:1px solid #FFD0C8;
  border-radius:10px;padding:10px 12px;
  font-size:12px;color:#C04030;margin-bottom:12px;
  display:none;
}
.auth-error.show{display:block;}

/* ── Playdate 筛选栏 ── */
.pd-filter-bar{padding:10px 16px 0;background:white;border-bottom:1px solid #F0F0F0;position:sticky;top:0;z-index:10}
.pd-filter-row{display:flex;align-items:center;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:10px}
.pd-filter-row::-webkit-scrollbar{display:none}
.pd-filter-chip{flex-shrink:0;padding:6px 14px;border-radius:20px;border:1.5px solid rgba(160,120,220,.2);background:white;color:#777;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:all .15s}
.pd-filter-chip.active{background:linear-gradient(135deg,#F0E8FF,#E8E0FF);color:#6030B0;border-color:rgba(140,100,200,.5);font-weight:800}
.pd-filter-chip:active{opacity:.7}
.pd-filter-sep{color:#E0E0E0;font-size:16px;flex-shrink:0;user-select:none}

/* ════════════════════════════════════════════════════════════════
   遛娃翻翻书 (Flipbook) — js/flipbook.js
   ════════════════════════════════════════════════════════════════ */

/* ── 悬浮入口按钮 ── */
#fb-fab{
  position:fixed;
  bottom:calc(74px + env(safe-area-inset-bottom));
  right:14px;
  z-index:2400;
  display:flex;align-items:center;gap:5px;
  padding:10px 16px;border:none;border-radius:24px;
  background:linear-gradient(135deg,var(--coral),#E8906E);
  color:#fff;font-size:14px;font-weight:900;
  font-family:inherit;cursor:pointer;
  box-shadow:0 4px 16px rgba(212,130,106,.45),0 1px 4px rgba(0,0,0,.12);
  animation:fbFabIn .5s cubic-bezier(.3,1.4,.5,1);
  transition:transform .15s;
}
#fb-fab:active{transform:scale(.93)}
@keyframes fbFabIn{from{transform:translateY(20px) scale(.8);opacity:0}to{transform:none;opacity:1}}
@media (min-width:768px){
  #fb-fab{right:calc(50% - 340px + 14px)}
}

/* ── 全屏 overlay ── */
#fb-overlay{
  position:fixed;inset:0;z-index:9000;
  display:flex;flex-direction:column;
  background:
    radial-gradient(ellipse at 25% 12%,rgba(244,165,138,.16) 0%,transparent 55%),
    radial-gradient(ellipse at 78% 90%,rgba(216,200,232,.18) 0%,transparent 55%),
    linear-gradient(170deg,#4A4440,#36312D);
  animation:fbOvIn .25s ease;
}
@keyframes fbOvIn{from{opacity:0}to{opacity:1}}
@media (min-width:768px){
  #fb-overlay{left:50%;right:auto;transform:translateX(-50%);width:680px}
}

/* ── 顶栏 ── */
.fb-top{
  display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top)) 14px 8px;
}
.fb-top-title{font-size:15px;font-weight:900;color:#FFF8F0;letter-spacing:.5px}
.fb-top-counter{
  margin-left:auto;font-size:11px;font-weight:800;color:rgba(255,248,240,.85);
  background:rgba(255,255,255,.12);border-radius:12px;padding:3px 10px;min-width:48px;text-align:center;
}
.fb-top-map,.fb-top-close{
  width:32px;height:32px;border:none;border-radius:50%;
  background:rgba(255,255,255,.12);color:#FFF8F0;
  font-size:14px;font-weight:700;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.fb-top-close{font-size:16px}
.fb-top-map:active,.fb-top-close:active{background:rgba(255,255,255,.28)}

/* ── 进度条 ── */
.fb-progress{height:3px;margin:0 14px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden}
.fb-progress-in{height:100%;width:0;border-radius:2px;background:linear-gradient(90deg,var(--coral),var(--honey));transition:width .45s cubic-bezier(.4,.1,.2,1)}

/* ── 模式切换 chips ── */
.fb-chips-row{
  display:flex;gap:7px;padding:10px 14px 6px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.fb-chips-row::-webkit-scrollbar{display:none}
.fb-mode{
  flex-shrink:0;padding:6px 13px;border-radius:18px;
  border:1.5px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);
  color:rgba(255,248,240,.85);font-size:12px;font-weight:800;font-family:inherit;
  cursor:pointer;white-space:nowrap;transition:all .15s;
}
.fb-mode.on{
  background:linear-gradient(135deg,var(--coral),#E8906E);
  border-color:transparent;color:#fff;
  box-shadow:0 2px 10px rgba(212,130,106,.4);
}

/* ── 书台 ── */
.fb-stage{
  flex:1;min-height:0;position:relative;
  display:flex;align-items:center;justify-content:center;
  padding:10px 8px 6px;
  perspective:1800px;
}
.fb-book{
  position:relative;
  width:min(100%,400px);height:100%;max-height:600px;
  transform-style:preserve-3d;
}
.fb-arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:20;
  width:34px;height:56px;border:none;cursor:pointer;
  background:rgba(255,255,255,.1);color:rgba(255,248,240,.9);
  font-size:26px;font-weight:300;line-height:1;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.fb-arrow-l{left:0;border-radius:0 14px 14px 0}
.fb-arrow-r{right:0;border-radius:14px 0 0 14px}
.fb-arrow:active{background:rgba(255,255,255,.26)}

/* ── 书页 ── */
.fb-page{
  position:absolute;inset:0;
  border-radius:18px;overflow:hidden;
  background:var(--cream);
  box-shadow:0 12px 40px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.25);
}
.fb-page.fb-pop{animation:fbPop .3s cubic-bezier(.3,1.3,.5,1)}
@keyframes fbPop{from{transform:scale(.94);opacity:.4}to{transform:none;opacity:1}}

/* 翻动中的纸张 */
.fb-sheet{
  position:absolute;inset:0;z-index:10;
  transform-style:preserve-3d;
  transform-origin:left center;
  border-radius:18px;
}
.fb-face{
  position:absolute;inset:0;
  -webkit-backface-visibility:hidden;backface-visibility:hidden;
  border-radius:18px;overflow:hidden;
  background:var(--cream);
  box-shadow:0 12px 40px rgba(0,0,0,.4);
}
.fb-face-back{
  transform:rotateY(180deg);
  background:
    linear-gradient(105deg,rgba(0,0,0,.08) 0%,transparent 18%),
    repeating-linear-gradient(0deg,transparent,transparent 26px,rgba(180,160,140,.07) 27px),
    linear-gradient(160deg,#FBF6EE,#F2EADF);
  display:flex;align-items:center;justify-content:center;
}
.fb-paperback{
  font-size:18px;font-weight:900;letter-spacing:3px;
  color:rgba(180,160,140,.35);transform:rotate(-12deg);
  user-select:none;
}
.fb-flip-next{animation:fbFlipNext .6s cubic-bezier(.45,.05,.25,1) forwards}
.fb-flip-prev{transform:rotateY(-180deg);animation:fbFlipPrev .6s cubic-bezier(.45,.05,.25,1) forwards}
@keyframes fbFlipNext{
  0%{transform:rotateY(0)}
  100%{transform:rotateY(-180deg)}
}
@keyframes fbFlipPrev{
  0%{transform:rotateY(-180deg)}
  100%{transform:rotateY(0)}
}

/* ── 页面内容 ── */
.fb-pg{
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  background:
    repeating-linear-gradient(0deg,transparent,transparent 31px,rgba(180,160,140,.05) 32px),
    var(--cream);
}
.fb-pg-photo{position:relative;height:44%;min-height:150px;flex-shrink:0;background:var(--coral-l)}
.fb-pg-photo img{width:100%;height:100%;object-fit:cover;display:block}
.fb-pg-photo-grad{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.18) 0%,transparent 30%,transparent 65%,rgba(0,0,0,.32) 100%);
  pointer-events:none;
}
.fb-pg-badge{
  position:absolute;top:10px;left:10px;
  padding:4px 10px;border-radius:14px;
  background:rgba(255,253,249,.94);color:var(--text-d);
  font-size:11px;font-weight:900;
  box-shadow:0 1px 6px rgba(0,0,0,.18);
}
.fb-pg-stop{
  position:absolute;top:10px;right:10px;
  padding:4px 10px;border-radius:14px;
  background:linear-gradient(135deg,var(--coral),#E8906E);
  color:#fff;font-size:11px;font-weight:900;
  box-shadow:0 1px 6px rgba(0,0,0,.2);
}
.fb-pg-body{flex:1;min-height:0;padding:12px 16px 6px;display:flex;flex-direction:column;overflow:hidden}
.fb-pg-name{
  font-size:18px;font-weight:900;color:var(--text-d);line-height:1.3;
  margin-bottom:8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.fb-pg-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.fb-chip{
  padding:3px 9px;border-radius:12px;
  background:#fff;border:1.5px solid #EFE8DF;
  font-size:11px;font-weight:700;color:var(--text-m);
}
.fb-chip-star{background:var(--honey-l);border-color:#F2E2B0;color:#A07818}
.fb-chip-dist{background:var(--ocean-l);border-color:#CCE6F4;color:var(--ocean-d)}
.fb-pg-free{
  padding:6px 10px;border-radius:10px;margin-bottom:8px;
  background:var(--mint-l);border:1.5px dashed var(--mint);
  font-size:12px;font-weight:800;color:#2A8060;
}
.fb-pg-notes{
  font-size:12.5px;line-height:1.65;color:var(--text-m);
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;
  margin-bottom:8px;
}
.fb-pg-actions{margin-top:auto;display:flex;gap:8px;padding-bottom:4px}
.fb-act{
  border:none;border-radius:14px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  text-decoration:none;transition:transform .12s;
}
.fb-act:active{transform:scale(.94)}
.fb-act-save{width:44px;height:40px;background:#fff;border:1.5px solid #F0E4DC;font-size:17px}
.fb-act-save.on{background:var(--rose-l);border-color:var(--rose)}
.fb-act-main{
  flex:1;height:40px;color:#fff;
  background:linear-gradient(135deg,var(--coral),#E8906E);
  box-shadow:0 3px 10px rgba(212,130,106,.35);
}
.fb-act-nav{width:44px;height:40px;background:var(--sky-l);border:1.5px solid #CCE6F4;font-size:16px}
.fb-pg-foot{
  flex-shrink:0;display:flex;justify-content:space-between;
  padding:4px 16px 9px;
  font-size:9.5px;font-weight:700;letter-spacing:1px;color:#C8BFB4;
}

/* ── 封面 / 封底 ── */
.fb-cover{
  align-items:center;justify-content:center;text-align:center;
  padding:28px 24px;
  background:
    radial-gradient(circle at 30% 18%,rgba(244,165,138,.25) 0%,transparent 50%),
    radial-gradient(circle at 75% 85%,rgba(245,217,138,.3) 0%,transparent 50%),
    repeating-linear-gradient(45deg,transparent,transparent 14px,rgba(212,130,106,.04) 15px),
    linear-gradient(165deg,#FFF6EE,#FCEADD);
}
.fb-cover-deco{font-size:58px;margin-bottom:14px;animation:fbBob 2.6s ease-in-out infinite}
@keyframes fbBob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}
.fb-cover-kicker{font-size:10px;font-weight:900;letter-spacing:3px;color:var(--coral-d);margin-bottom:8px}
.fb-cover-title{font-size:32px;font-weight:900;color:var(--text-d);letter-spacing:2px;margin-bottom:12px}
.fb-cover-line{width:48px;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--coral),var(--honey));margin:0 auto 14px}
.fb-cover-sub{font-size:14px;font-weight:800;color:var(--text-m);margin-bottom:6px}
.fb-cover-date{font-size:11.5px;font-weight:700;color:#B8AEA2;margin-bottom:26px}
.fb-cover-hint{
  font-size:12px;font-weight:800;color:var(--coral-d);
  padding:8px 16px;border-radius:18px;
  background:rgba(255,255,255,.75);border:1.5px dashed var(--coral-m);
  animation:fbHint 1.8s ease-in-out infinite;
}
@keyframes fbHint{0%,100%{opacity:.75}50%{opacity:1}}
.fb-end-btns{display:flex;flex-direction:column;gap:10px;width:min(100%,220px);margin-top:6px}
.fb-btn{
  height:42px;border:1.5px solid #EFDFD2;border-radius:16px;
  background:#fff;color:var(--text-d);
  font-family:inherit;font-size:13.5px;font-weight:900;cursor:pointer;
  transition:transform .12s;
}
.fb-btn:active{transform:scale(.95)}
.fb-btn-primary{
  background:linear-gradient(135deg,var(--coral),#E8906E);
  color:#fff;border:none;
  box-shadow:0 3px 12px rgba(212,130,106,.35);
}

/* ── 底部小地图（翻页联动）── */
.fb-mapwrap{
  position:relative;flex-shrink:0;
  height:146px;margin:8px 14px calc(12px + env(safe-area-inset-bottom));
  border-radius:16px;overflow:hidden;
  box-shadow:0 4px 18px rgba(0,0,0,.35);
  border:2px solid rgba(255,255,255,.16);
  transition:height .3s ease,margin .3s ease,opacity .3s ease;
}
.fb-mapwrap.hidden{height:0;margin-top:0;margin-bottom:calc(4px + env(safe-area-inset-bottom));opacity:0;border-width:0}
#fb-map{position:absolute;inset:0;background:#E8E4DD}
.fb-map-hint{
  position:absolute;left:8px;bottom:7px;z-index:500;
  padding:3px 9px;border-radius:11px;
  background:rgba(255,253,249,.92);color:var(--text-m);
  font-size:10px;font-weight:800;
  box-shadow:0 1px 5px rgba(0,0,0,.15);
  pointer-events:none;
}

/* 矮屏适配：地图缩小，留足书页空间 */
@media (max-height:640px){
  .fb-mapwrap{height:104px}
  .fb-pg-photo{height:38%}
}

/* ── First-visit language confirmation bar (data/i18n.js _maybeShowLangBar) ── */
#lang-bar{
  position:fixed; left:50%; bottom:16px; transform:translateX(-50%);
  z-index:99999; display:flex; align-items:center; gap:10px;
  max-width:calc(100vw - 24px);
  padding:10px 12px 10px 16px; border-radius:14px;
  background:rgba(33,33,38,.94); color:#fff;
  font-size:13px; font-weight:600; line-height:1.3;
  box-shadow:0 8px 28px rgba(0,0,0,.28);
  -webkit-backdrop-filter:saturate(180%) blur(8px);
  backdrop-filter:saturate(180%) blur(8px);
  animation:langBarIn .35s cubic-bezier(.16,1,.3,1);
}
@keyframes langBarIn{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
#lang-bar .lang-bar-msg{white-space:nowrap}
#lang-bar button{
  border:none; cursor:pointer; font-weight:700; font-size:13px;
  padding:7px 12px; border-radius:10px; white-space:nowrap;
}
#lang-bar .lang-bar-switch{background:var(--coral); color:#fff;}
#lang-bar .lang-bar-switch:hover{background:var(--coral-d);}
#lang-bar .lang-bar-keep{background:rgba(255,255,255,.16); color:#fff;}
#lang-bar .lang-bar-keep:hover{background:rgba(255,255,255,.28);}
@media (max-width:380px){
  #lang-bar{flex-wrap:wrap; bottom:10px; gap:8px; font-size:12px;}
  #lang-bar .lang-bar-msg{flex-basis:100%; text-align:center;}
}
