/* =============== Reset & Base =============== */* {  margin: 0;  padding: 0;  box-sizing: border-box;  font-family: "PingFang SC";}::-webkit-scrollbar { display: none; }html { scrollbar-width: none; }body {  margin: 0;  padding: 0;  background-color: #EFEEF3;  background: linear-gradient(168deg, #FCF1FB 0%, #FFDED4 50.64%, #F9D2FF 99.39%);  background-repeat: no-repeat;  /* 去掉这一行：  background-attachment: fixed;  */  background-size: cover;  -ms-overflow-style: none;}/* ===== 可调参数（一处总控） ===== */:root{  --search-block-margin-y: 8px;  --search-pad-y: 6px;  --search-pad-x: 12px;  --search-radius: 18px;  --search-col-left: clamp(275px, 71vw, 624px);  --search-gap: 12px;  --gap-filter-to-features: 8px;  --filter-btn-h: 44px;  --filter-btn-fs: 15px;  --filter-btn-radius: 22px;  --filter-btn-padx: 18px;  --filter-btn-minw: 120px;  --filter-btn-maxw: 150px;  --actions-gap: 18px;  --actions-edge-pad: 15px;  --area-actions-gap: 12px;  --area-actions-edge-pad: 32px;  --tag-item-minh: 20px;  --tag-item-pady: 8px;  --tag-item-fs: 14px;  --tag-item-maxw: 85px;  --tag-grid-min: 110px;  --tags-buttons-gap-top: 5px;  /* ===== 置顶徽标（左上贴边） ===== */  --pin-size: 40px;  --pin-gap-x: -1px;  --pin-gap-y: -1px;}html, body {  overflow-y: scroll;  height: 100%;}.container { margin-bottom: 50px; }/* =============== 顶部搜索（输入框与图标分离） =============== */.search-container {  display: grid;  grid-template-columns: var(--search-col-left) auto;  align-items: center;  column-gap: var(--search-gap);  margin: var(--search-block-margin-y) 10px var(--search-block-margin-y);}.search-container .search-bar {  display: flex;  align-items: center;  background-color: #fff;  border-radius: var(--search-radius);  padding: var(--search-pad-y) var(--search-pad-x);  box-shadow: 0 1px 3px rgba(0,0,0,0.1);  cursor: text;}.search-container input {  flex: 1;  min-width: 0;  border: none;  outline: none;  font-size: 14px;  background: transparent;}.search-container .search-icon {  margin-right: 8px;  color: #666;  line-height: 0;}.search-container .links {  display: inline-flex;  align-items: center;  justify-content: flex-end;  gap: 12px;  margin: 0;}.search-container .links .search-link-img {  flex: 0 0 auto;  line-height: 0;  overflow: visible;}.search-container .links .search-link-img img {  width: 33px;  height: 33px;  border-radius: 10px;  object-fit: cover;}#iconGroup, #iconChannel{  width: 35px !important;  height: 33px !important;  display: block;  object-fit: contain !important;  border-radius: 0 !important;}@media (max-width: 360px){  .search-container{    grid-template-columns: clamp(200px, 56vw, 460px) auto;    column-gap: 10px;  }}/* =============== 顶部分类按钮 =============== */.filter-buttons {  display: flex;  flex-wrap: wrap;  gap: 10px;  margin: 6px 8px var(--gap-filter-to-features);}.filter-button {  display: inline-flex;  align-items: center;  justify-content: center;  padding: 4px 11px;  min-height: 32px;  border-radius: 20px;  font-size: 14px;  cursor: pointer;  transition: all 0.3s;  border-style: none;  background-color: #fff;  color: #333;  flex: 1 1 20%;  box-sizing: border-box;}.filter-button.active { background-color: #FFB84D; color: #fff; }/* =============== 顶部筛选条 & 下拉容器 =============== */.filter-container { position: relative; }.filter-dropdown {  display: flex;  flex-wrap: wrap;  gap: 10px;  margin: 2px 8px 2px;  padding: 5px;  justify-content: space-between;  border-radius: 7px;  background-color: #fff;}.dropdown-item {  cursor: pointer;  display: flex;  align-items: center;  gap: 10px;  font-size: 12px;}.dropdown-item .title span{ color: #999; font-size: 12px; }.dropdown-item .title .name{ margin-right: 1px; }.dropdown-item select{  border-style: none;  background-color: #fff;  font-size: 12px;  color: #ccc;}/* ======= 新：SVG 箭头（默认↑，激活后↓） ======= */.dropdown-item .arrow-svg{  display:inline-block;  transform: rotate(180deg);  transition: transform .2s ease;}.dropdown-item.active .arrow-svg{ transform: rotate(0deg); }/* 通用下拉容器（贴紧状态栏，覆盖页面） */.dropdown-container{  padding: 20px 15px;  background-color: #fff;  border-radius: 0 0 15px 15px;  margin-top: 5px;  display: none;  position: absolute;  width: 100%;  z-index: 9999;  font-size: 12px;  left: 0;  right: 0;}/* =============== 灰色遮罩（top 由 JS 动态设为面板底部） =============== */.dropdown-mask{  position: fixed;  top: 0;  left: 0; right: 0; bottom: 0;  background: rgba(0,0,0,.35);  z-index: 9990;  display: none;}.dropdown-mask::before{  content:"";  position:absolute;  left:0; right:0;  top:-15px;  height:15px;  background: rgba(0,0,0,.35);  border-top-left-radius: 15px;  border-top-right-radius: 15px;}/* =============== 地区抽屉（50% 高度，可滚动） =============== */.area-container {  padding: 0;  height: 50vh;  max-height: 50vh;  overflow: hidden;  display: none;}.area-drawer{  display: grid;  grid-template-rows: 1fr auto;  height: 50vh;  background: #fff;  border-radius: 0 0 15px 15px;}.area-list{  overflow: auto;  padding: 12px 8px 8px;}.area-item{  display: flex;  align-items: center;  justify-content: space-between;  gap: 12px;  padding: 12px 10px;  margin: 0 4px 8px;  background: #F7F8FC;  border-radius: 12px;  cursor: pointer;  transition: .18s ease;}.area-item.active{  background: #FFEFD6;  box-shadow: inset 0 0 0 2px #FFB84D;}.area-item .area-item-name{ color:#333; }.area-item .selected{ color:#FFB84D; }/* —— 上海（地区）按钮条 —— */.area-actions{  display: flex;  justify-content: space-between;  gap: 5px;  padding: 10px var(--area-actions-edge-pad) 20px;  border-top: 1px dashed #f0f0f0;  background: #fff;}.area-actions .btn{  flex: 0 1 var(--filter-btn-maxw);  min-width: var(--filter-btn-minw);  height: var(--filter-btn-h);  border-radius: var(--filter-btn-radius);  font-size: var(--filter-btn-fs);  cursor: pointer;  transition: .18s ease;  display: inline-flex;  align-items: center;  justify-content: center;  padding: 0 var(--filter-btn-padx);  line-height: calc(var(--filter-btn-h) - 2px);}.area-actions .btn-reset{  border: 2px solid #ffaa00;  background: #fff;  color: #ffaa00;}.area-actions .btn-ok{  border: 0;  background: #ffaa00;  color: #fff;}/* =============== 特点（标签） =============== */.tags-container .tags-list{  display: grid;  grid-template-columns: repeat(auto-fit, minmax(var(--tag-grid-min), 1fr));  gap: 12px 14px;  justify-items: center;}.tags-container .tags-list .tag-item {  display: flex;  align-items: center;  justify-content: center;  min-height: var(--tag-item-minh);  padding: var(--tag-item-pady) 10px;  width: 100%;  max-width: var(--tag-item-maxw);  border-radius: 18px;  text-align: center;  cursor: pointer;  transition: all 0.2s ease;  background-color: #F7F8FC;  color: #333;  font-size: var(--tag-item-fs);}.tags-container .tags-list .tag-item.active {  background-color: #ffaa00;  color: #fff;}.tags-container .tags-list .tag-item:hover:not(.active) { background-color: #f0f0f0; }.tags-container.dropdown-container { padding-bottom: 7px; }.tags-container { padding-bottom: 5px; }.tags-container .tags-buttons{  display: flex;  justify-content: space-between;  gap: var(--actions-gap);  margin-top: var(--tags-buttons-gap-top);  padding: 12px var(--actions-edge-pad) 12px;  background-color: #fff;  border-radius: 12px;}.tags-container .tags-buttons .tags-button {  flex: 0 1 var(--filter-btn-maxw);  min-width: var(--filter-btn-minw);  height: var(--filter-btn-h);  line-height: calc(var(--filter-btn-h) - 2px);  border-radius: var(--filter-btn-radius);  font-size: var(--filter-btn-fs);  display: inline-flex;  align-items: center;  justify-content: center;  padding: 0 var(--filter-btn-padx);  cursor: pointer;  transition: all 0.3s ease;}.tags-container .tags-buttons .reset-btn {  border: 2px solid #ffaa00;  color: #ffaa00;  background-color: transparent;}.tags-container .tags-buttons .confirm-btn {  background-color: #ffaa00;  color: #fff;  border: 0;}/* =============== 推荐（按钮风格与标签一致） =============== */.recommend-container .recommend-list{  display: grid;  grid-template-columns: repeat(auto-fit, minmax(var(--tag-grid-min), 1fr));  gap: 12px 14px;  justify-items: center;}.recommend-container .recommend-list .recommend-item{  display: flex;  align-items: center;  justify-content: center;  min-height: var(--tag-item-minh);  padding: var(--tag-item-pady) 10px;  width: 100%;  max-width: var(--tag-item-maxw);  border-radius: 18px;  text-align: center;  cursor: pointer;  transition: all 0.2s ease;  background-color: #F7F8FC;  color: #333;  font-size: var(--tag-item-fs);}.recommend-container .recommend-list .recommend-item.active{  background-color: #ffaa00;  color: #fff;}.recommend-container .recommend-list .recommend-item:hover:not(.active){  background-color: #f0f0f0;}/* =============== 列表卡片 =============== */.service-list {  display: grid;  padding: 10px;  grid-template-columns: 1fr 1fr;  gap: 10px;}.service-card {  position: relative;  border-radius: 10px;  background-color: #fff;  overflow: hidden;  box-shadow: 0 2px 4px rgba(0,0,0,0.1);  padding-bottom: 5px;  margin-bottom: 10px;}.service-card .avatar { position: relative; }/* 仅封面图铺满，角标不拉伸 */.service-card .avatar img.cover{  border-radius: 10px;  width: 100%;  height: 200px;  object-fit: cover;}.service-card .top{ position:absolute; top:0; left:0; color:#E1A581; display:inline-block; }.service-card .top::before{ content:''; position:absolute; inset:0; background-color:orange; z-index:-1; }.service-card .top span{ font-size:40px; z-index:1; }/* 名字上移：减小信息块上内边距 */.service-info { padding: 6px 10px 10px; }.service-name { font-size: 16px; font-weight: bold; margin-bottom: 5px; }.service-id { display:flex; align-items:center; margin-bottom:5px; gap: 1px; }.service-id .num {  background-color: #FFB84D;  color: white;  padding: 3px 8px;  border-radius: 15px;  font-size: 12px;}/* SVG 徽章（行内徽章，非置顶角标） */.service-id .badge-svg {  display: inline-flex;  align-items: center;  line-height: 0;  vertical-align: middle;}.service-id .badge-svg img {  width: 54px;  height: 18px;  display: block;}/* 旧文字徽章（兜底） */.service-id span.tag { color:#fff; padding:2px 8px 3px; border-radius:15px; font-size:12px; }.service-id span.tag span{ background:none; margin-right:3px; color:#fff; font-size:12px; }.service-id span.recommend { background-color: #2AB7F8; }.service-id span.wangpai   { background: linear-gradient(180deg, #FF5D01 0%, #FF7E01 100%); }.service-id span.hongpai   { background-color: #FF4848; }.service-id span.haoping   { background-color: #F27CFF; }.service-id span.xinren    { background-color: #0FD4B4; }.location { display:flex; align-items:center; margin-bottom:5px; font-size:14px; color:#9D9D9D; }.location i { margin-right: 5px; color: #f0f0f0; }.location i span{ color:#9D9D9D; }.tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:5px; }.tags .tag { padding:3px 8px; border-radius:15px; font-size:12px; }/* 价格角标（默认右上） */.price-tag {  position: absolute;  top: 0;  right: 0;  background-color: #333;  opacity: 0.5;  color: white;  padding: 3px 8px;  border-radius: 0 0 0 10px;  font-size: 12px;}.price-tag .qianbao{ color: #FBD97C; }/* 距离角标 */.distance {  position: absolute;  bottom: 5px;  left: 0;  background-color: #333;  opacity: 0.5;  color: white;  padding: 3px 8px;  border-radius: 0 5px 0 10px;  font-size: 12px;  /* NEW: 距离图标与文字对齐 */  display: inline-flex;  align-items: center;  gap: 4px;}.distance .jl{  height: 1em;  width: auto;  display: inline-block;  vertical-align: -1px;}/* ===== 置顶角标：左上贴边 ===== */.service-card .pin-badge-svg{  position: absolute;  top: var(--pin-gap-y);  left: var(--pin-gap-x);  right: auto;  width: var(--pin-size);  height: var(--pin-size);  z-index: 4;  pointer-events: none;  display: block;}/* 回到顶部按钮 */.action-button {  position: fixed;  bottom: 80px;  right: 20px;  width: 50px;  height: 50px;  background: linear-gradient(to right, #FE756E, #FB5679);  color: white;  border-radius: 50%;  display: flex;  align-items: center;  justify-content: center;  font-size: 24px;  cursor: pointer;  box-shadow: 0 4px 8px rgba(0,0,0,0.2);  z-index: 500;}.action-button span{ font-size: 24px; }.ml-10{ margin-left: 10px; }/* Toast */.toast-container {  position: fixed;  top: 0; left: 0;  width: 100%; height: 100%;  pointer-events: none;  z-index: 12000;}.toast {  position: absolute;  top: 10%; left: 50%;  transform: translate(-50%, -50%);  background-color: rgba(0,0,0,0.8);  color: white;  padding: 15px 25px;  border-radius: 8px;  font-size: 16px;  text-align: center;  min-width: 200px;  opacity: 0;  transition: opacity 0.3s ease;}.toast.show { opacity: 0.6; }.footer a {  text-decoration: none;  color: #666;  display: flex;  flex-direction: column;  align-items: center;  padding: 3px 32px 2px;}.footer a:hover,.footer a.active { color: #FFA500; }.footer img { width: 20px; height: 20px; margin-bottom: 5px; }/* =============== 距离面板（统一按钮规格） =============== */.distance-container { }/* 行布局 */.distance-panel .row {  display: flex;  align-items: center;  gap: 10px;  padding: 10px 0;}.distance-panel .row.between { justify-content: space-between; }.distance-panel .label { color: #333; min-width: 64px; font-size: 16px; font-weight: 600; }/* 输入 + 放大镜图标 */.input-with-icon {  flex: 1;  position: relative;  display: flex;  align-items: center;}.input-with-icon .search-svg{  position: absolute;  left: 12px;  width: 16px;  height: 16px;  display: block;  pointer-events: none;}.input-with-icon input {  flex: 1;  height: 38px;  padding: 0 12px 0 34px; /* 给放大镜留出空间 */  border: 1px solid #eee;  border-radius: 20px;  outline: none;  background: #F7F8FC;  font-size: 14px;  /* ★ 防止 iOS 聚焦时整页放大 */}/* 联想抽屉 */#place-suggest {  position: absolute;  left: 0;  right: 0;  top: calc(100% + 6px);  background: #fff;  border: 1px solid #eef0f3;  border-radius: 10px;  overflow: auto;  max-height: 50vh;  display: none;  z-index: 10000;  box-shadow: 0 6px 18px rgba(0,0,0,.08);}.tips-item {  padding: 10px 12px;  border-bottom: 1px dashed #f0f0f0;  cursor: pointer;}.tips-item:last-child { border-bottom: none; }.tips-item .name {  font-size: 13px;  color: #111;  white-space: nowrap;  overflow: hidden;  text-overflow: ellipsis;}/* —— 距离面板按钮条 —— */.distance-actions{  display: flex;  justify-content: space-between;  gap: 3px;  margin-top: 10px;  padding: 0 var(--actions-edge-pad);  padding-bottom: 0px;}.distance-actions .btn{  flex: 0 1 var(--filter-btn-maxw);  min-width: var(--filter-btn-minw);  height: var(--filter-btn-h);  border-radius: var(--filter-btn-radius);  font-size: var(--filter-btn-fs);  cursor: pointer;  transition: .18s ease;  display: inline-flex;  align-items: center;  justify-content: center;  padding: 0 var(--filter-btn-padx);  line-height: calc(var(--filter-btn-h) - 2px);}.distance-actions .btn-reset {  border: 2px solid #ffaa00;  background: #fff;  color: #ffaa00;}.distance-actions .btn-ok {  border: 0;  background: #ffaa00;  color: #fff;}/* 叠层优先级 */.dropdown-container { z-index: 11000; }#distance-container { z-index: 11000; }.dropdown-mask { z-index: 10990; }.footer { z-index: 800; }/* —— 角标兜底：不拉伸 —— */.service-card .avatar img.pin-badge-svg{  width: var(--pin-size) !important;  height: var(--pin-size) !important;  object-fit: contain;  border-radius: 0 !important;}/* ========================================================= * ANDROID 专属紧凑样式（iOS 保持现状不变） * 通过 <html class="is-android"> 选择器生效 * =======================================================*//* 1) 全局排版与溢出控制 */html.is-android, html.is-android body {  overflow-x: hidden; /* 杜绝横向滚动 */}html.is-android body {  font-size: 14px;         /* Android 更紧凑；iOS 保持原样 */  line-height: 1.35;  text-size-adjust: 100%;  -webkit-text-size-adjust: 100%;}/* 2) 图片与视频绝不出框（缩小但不放大） */html.is-android img,html.is-android video,html.is-android canvas {  max-width: 100%;  height: auto;}/* 3) 变量级收紧：按钮/搜索区/封面图等 */html.is-android :root{  --search-block-margin-y: 6px;  --search-pad-y: 5px;  --search-pad-x: 10px;  --search-radius: 16px;  --search-col-left: clamp(240px, 66vw, 560px);  --filter-btn-h: 40px;  --filter-btn-fs: 14px;  --filter-btn-radius: 20px;  --filter-btn-padx: 14px;  --filter-btn-minw: 98px;  --filter-btn-maxw: 132px;  --pin-size: 34px;  --pin-gap-x: -1px;  --pin-gap-y: -1px;  --tag-item-fs: 13px;  --tag-item-maxw: 80px;  --tag-grid-min: 100px;}html.is-android .search-container .search-icon { margin-right: 6px; }html.is-android #iconGroup,html.is-android #iconChannel{  width: 30px !important;  height: 30px !important;}/* 卡片封面更矮，避免首屏挤出 */html.is-android .service-card .avatar img.cover{  height: 168px;}/* 价格/距离角标更紧凑 */html.is-android .price-tag,html.is-android .distance{  font-size: 11px;  padding: 2px 6px;}/* 抽屉按钮更紧凑，减少遮罩被迫滚动 */html.is-android .area-actions .btn,html.is-android .distance-actions .btn{  height: 38px;  line-height: 36px;  font-size: 14px;}/* 顶部分类按钮在窄屏避免断词与外溢 */html.is-android .filter-buttons{  gap: 8px;  margin: 4px 6px var(--gap-filter-to-features);}html.is-android .filter-button{  min-height: 30px;  font-size: 13px;  padding: 3px 10px;}/* 联想抽屉在 Android 上略降高度，配合软键盘 */html.is-android #place-suggest{ max-height: 42vh; }/* 兜底：任何容器不允许超出视口宽度 */html.is-android .container,html.is-android .service-list,html.is-android .filter-container{  max-width: 100vw;  overflow-x: hidden;}/* ========================================================= * ANDROID · 窄屏自适配补丁（iOS 完全不受影响） * 触发条件：<html class="is-android"> 且 视口宽度 ≤ 360px * 目标：避免横向挤压；卡片改为单列；封面改为自适应比例；标签更紧凑 * =======================================================*/@media (max-width: 360px) {  html.is-android, html.is-android body { overflow-x: hidden; }  /* 顶部搜索：左列更窄、整体更紧凑 */  html.is-android .search-container{    grid-template-columns: clamp(200px, 58vw, 480px) auto;    column-gap: 8px;    margin: 6px 8px;  }  html.is-android .search-container .search-bar{    padding: 5px 10px;    border-radius: 16px;  }  html.is-android .search-container input{ font-size: 13px; }  html.is-android #iconGroup,  html.is-android #iconChannel{ width: 28px !important; height: 28px !important; }  /* 顶部分类按钮更小，间距更小 */  html.is-android .filter-buttons{    gap: 8px;    margin: 4px 6px 6px;  }  html.is-android .filter-button{    min-height: 30px;    font-size: 13px;    padding: 3px 10px;    flex: 1 1 22%;  }  /* 状态栏：行内元素更紧凑 */  html.is-android .filter-dropdown{    gap: 8px;    margin: 2px 6px;    padding: 5px 6px;  }  html.is-android .dropdown-item{ gap: 6px; font-size: 12px; }  html.is-android .dropdown-item .title span{ font-size: 12px; }  /* —— 列表改“单列” + 避免两列挤压 —— */  html.is-android .service-list{    grid-template-columns: 1fr;     /* 从 2 列切换到 1 列 */    gap: 8px;    padding: 8px;  }  /* 让 left/right 两列的子卡片按文档流合并到单列里 */  html.is-android .service-list .left,  html.is-android .service-list .right{    display: contents;  }  /* 卡片整体更紧凑 */  html.is-android .service-card{    margin-bottom: 8px;    border-radius: 10px;    box-shadow: 0 2px 4px rgba(0,0,0,.08);  }  /* 名字上移同步：窄屏也降低上内边距 */  html.is-android .service-info{ padding: 5px 10px 8px; }  html.is-android .service-name{ font-size: 18px; }  /* —— 封面图：不要固定 200px，高度用比例，避免被挤 —— */  @supports (aspect-ratio: 3 / 2) {    html.is-android .service-card .avatar img.cover{      height: auto;            /* 覆盖原来的固定高度 */      aspect-ratio: 16 / 11;   /* 稍矮一些，减少首屏占用 */      object-fit: cover;    }  }  /* 无 aspect-ratio 支持的兜底：用视口宽度近似高度 */  @supports not (aspect-ratio: 3 / 2) {    html.is-android .service-card .avatar img.cover{      height: 58vw;            /* 单列下以屏宽估高 */      object-fit: cover;    }  }  /* 置顶角标与价格/距离角标更小，避免遮挡 */  html.is-android .service-card .pin-badge-svg{    width: 32px; height: 32px;  }  html.is-android .price-tag,  html.is-android .distance{    font-size: 11px;    padding: 2px 6px;    border-radius: 0 5px 0 10px;  }  /* 编号徽章 + 标签更紧凑，避免“彩色豆”把一行撑爆 */  html.is-android .service-id .num{    font-size: 11px;    padding: 2px 6px;  }  html.is-android .tags{ gap: 4px; }  html.is-android .tags .tag{    font-size: 12px;    padding: 2px 6px;    max-width: 44%;    white-space: nowrap;    overflow: hidden;    text-overflow: ellipsis;  }  /* 底部导航更贴边更小，避免遮挡内容 */  html.is-android .footer{    height: 48px;    font-size: 11px;    padding: 4px 0;  }  html.is-android .footer a{ padding: 2px 24px 2px; }  html.is-android .footer img{ width: 18px; height: 18px; }    /* 距离面板/联想抽屉：键盘顶起时别太高 */  html.is-android #place-suggest{ max-height: 42vh; }  html.is-android .distance-panel .label{ font-size: 15px; }  html.is-android .input-with-icon input{ height: 36px; font-size: 13px; }}/* （可选兜底）确保 ≥361px 的安卓强制两列，避免其它样式误改 */@media (min-width: 361px){  html.is-android .service-list{    grid-template-columns: 1fr 1fr;    gap: 10px;    padding: 10px;  }  html.is-android .service-list .left,  html.is-android .service-list .right{    display: block;  }}/* 名字上移：安卓常规屏也减小上内边距 */html.is-android .service-info{ padding: 6px 10px 10px; }/* ========================================================= * ANDROID · 超窄屏也保持双列（强制收紧版） * 直接放在 base.css 最底部，覆盖前面规则 * =======================================================*/@media (max-width: 360px) {  html.is-android .service-list{    /* 原来此处是 1fr (单列)，改回双列并收紧间距 */    grid-template-columns: 1fr 1fr !important;    gap: 6px !important;    padding: 6px !important;  }  /* 防止 left/right 容器把内容拆成单列 */  html.is-android .service-list .left,  html.is-android .service-list .right{    display: block !important;  }  /* 卡片整体更紧凑 */  html.is-android .service-card{    margin-bottom: 6px !important;    border-radius: 8px !important;    box-shadow: 0 2px 4px rgba(0,0,0,.06) !important;  }  /* 名字上移同步：强制更小的上内边距 */  html.is-android .service-info{ padding: 4px 10px 8px !important; }  html.is-android .service-name{ font-size: 18px !important; }  /* 封面图降低高度，给两列腾空间 */  html.is-android .service-card .avatar img.cover{    height: 150px !important;  }  /* 角标更小更贴边 */  html.is-android .service-card .pin-badge-svg{    width: 30px !important; height: 30px !important;  }  html.is-android .price-tag,  html.is-android .distance{    font-size: 10.5px !important;    padding: 2px 5px !important;    border-radius: 0 5px 0 8px !important;  }  /* 编号徽章与标签缩一号，避免换行把卡片拉高 */  html.is-android .service-id .num{    font-size: 11px !important;    padding: 2px 6px !important;  }  html.is-android .tags{ gap: 4px !important; }  html.is-android .tags .tag{    font-size: 11.5px !important;    padding: 2px 6px !important;    max-width: 48% !important;  /* 防止单个标签太宽把布局撑裂 */    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;  }  /* 顶部搜索与分类再收一点，给网格让路 */  html.is-android .search-container{    grid-template-columns: clamp(190px, 56vw, 420px) auto !important;    column-gap: 8px !important;    margin: 6px 6px !important;  }  html.is-android .filter-buttons{    gap: 8px !important;    margin: 4px 6px 6px !important;  }  html.is-android .filter-button{    min-height: 28px !important;    font-size: 13px !important;    padding: 3px 8px !important;    flex: 1 1 24% !important;   /* 每排更易排满 */  }}/* 保险：≥361px 的安卓强制两列，避免被其他样式意外覆盖 */@media (min-width: 361px){  html.is-android .service-list{    grid-template-columns: 1fr 1fr !important;    gap: 10px !important;    padding: 10px !important;  }}/* ========================================================= * 顶部分类按钮修复：四等分 + 防止错位/折行 * 放在 base.css 最底部，覆盖前面样式 * =======================================================*//* 默认：四等分网格，按钮等宽对齐 */.filter-buttons{  display: grid !important;  grid-template-columns: repeat(4, 1fr) !important;  gap: 10px !important;  margin: 6px 8px var(--gap-filter-to-features) !important;}.filter-button{  /* 取消之前的 flex 自动伸缩，改为占满格子 */  flex: none !important;  width: 100% !important;  min-width: 0 !important;  /* 文本不换行，超出省略，避免把行撑高 */  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;  /* 视觉微调，防止高度过大 */  min-height: 32px !important;  padding: 4px 10px !important;  font-size: 14px !important;  border-radius: 20px !important;}/* 激活态保持不变（颜色不灰） */.filter-button.active{  background-color: #FFB84D !important;  color: #fff !important;  border: 0 !important;}/* 安卓：整体再紧凑一点，确保四个刚好一排 */html.is-android .filter-buttons{  gap: 8px !important;}html.is-android .filter-button{  min-height: 30px !important;  padding: 3px 8px !important;  font-size: 13px !important;}/* 超窄屏（≤360px）：仍保持四等分，不折行不抖动 */@media (max-width: 360px){  .filter-buttons{    grid-template-columns: repeat(4, 1fr) !important;    gap: 8px !important;    margin: 4px 6px 6px !important;  }  .filter-button{    min-height: 28px !important;    padding: 2px 8px !important;    font-size: 12.5px !important;  }}/* 兜底：如果有历史样式把按钮设成灰或边框，把它们清掉 */.filter-button{  background-color: #fff;  color: #333;  border: none;}/* === 卡片名字上移（全局）=== */.service-info{  /* 原来是 6px 10px 10px；把顶部内边距压小一点 */  padding: 10px 10px 10px !important;}.service-name{  /* 再微调 1~2 像素的视觉上移 */  margin-top: -3px !important;}/* === 安卓端再紧一点（如果你有 html.is-android 标识）=== */html.is-android .service-info{  padding: 3px 10px 8px !important;}html.is-android .service-name{  margin-top: -2px !important;}/* === 超窄屏（≤360px）兜底，避免抖动与换行拉高 === */@media (max-width: 360px){  .service-info{    padding: 3px 10px 8px !important;  }  .service-name{    margin-top: -1px !important;    line-height: 1.15; /* 名字两行时也更紧凑 */  }}/* 名字固定单行，不换行不抖动（JS 已截断，这里兜底） */.service-name{  white-space: nowrap;  overflow: hidden;  text-overflow: ellipsis;}/* === 编号胶囊更紧凑（统一生效）=== */.service-id .num{  display: inline-flex;           /* 垂直居中稳 */  align-items: center;  height: 20px;                   /* 固定高度（原来依赖 padding）*/  padding: 0 6px !important;      /* 横向留白 */  font-size: 11px !important;     /* 字体略小 */  line-height: 1 !important;      /* 去掉行高撑高 */  border-radius: 12px !important; /* 胶囊圆角随高度 */}/* 安卓常规屏再收一点点 */html.is-android .service-id .num{  height: 17px !important;  padding: 0 5px !important;  font-size: 10.5px !important;}/* 超窄屏（≤360px）兜底：避免撑高卡片 */@media (max-width: 360px){  .service-id .num{    height: 16px !important;    padding: 0 5px !important;    font-size: 10.5px !important;  }}/* === 认证徽章统一 20px 高（SVG 与文字版）=== *//* ① SVG 图片徽章：容器与图片统一高度，行高归零避免撑高 */.service-id .badge-svg{  display: inline-flex !important;  align-items: center !important;  height: 20px !important;  line-height: 0 !important;  vertical-align: middle !important;  /* 与编号胶囊基线对齐 */}.service-id .badge-svg img{  height: 20px !important;   /* 统一高度 */  width: auto !important;    /* 保持原始宽高比 */  display: block !important;}/* ② 文字版徽章：统一成 20px 胶囊风格，和编号胶囊一致 */.service-id span.tag{  display: inline-flex !important;  align-items: center !important;  height: 20px !important;         /* 固定 20px */  padding: 0 6px !important;       /* 横向留白 */  font-size: 11px !important;      /* 和编号一致 */  line-height: 1 !important;       /* 去掉行高撑高 */  border-radius: 12px !important;  /* 跟随 20px 的圆角 */  white-space: nowrap;             /* 防止自动换行拉高 */}/* （可选）安卓和 ≤360px 的屏幕再轻微收一点点 */html.is-android .service-id span.tag{ height: 19px !important; padding: 0 5px !important; }@media (max-width: 360px){  .service-id span.tag{ height: 18px !important; padding: 0 5px !important; }}/* 放到 base.css 最后几行，覆盖更稳 */.location .addr-svg{  /* 变成灰色：去饱和 + 调亮度，确保在深色背景也清晰 */  filter: grayscale(1) brightness(0.6) contrast(1.05);  opacity: 0.95;             /* 可按需 0.8 ~ 1 调整 */}/* 可选：图标和文字都统一灰色语义 */.location{ color:#9D9D9D; }.location span{ color:#9D9D9D; }/* 尽量把彩色/黑色图标洗成 #9D9D9D，近似值 */.location .addr-svg{  filter: grayscale(1) brightness(0) invert(62%) sepia(0%) saturate(0%) hue-rotate(0deg);  opacity: .9;}/* ========================= * 特点胶囊（卡片内）紧凑版覆盖 * 放在 base.css 最底部，覆盖原有规则 * ========================= *//* 间距更紧凑 */.tags{  gap: 4px !important;}/* 胶囊更矮、更短、字体小一号；单行省略 */.tags .tag{  padding: 4px 7px !important;         /* 高度更矮、横向更短 */  font-size: 11px !important;          /* 小一号 */  line-height: 1.1 !important;         /* 贴一点，避免撑高 */  border-radius: 12px !important;      /* 圆角随高度收一点 */  max-width: 42% !important;           /* 限宽更短，避免把一行撑爆 */  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;}/* 安卓常规屏：再收一点点 */html.is-android .tags .tag{  padding: 2px 5px !important;  font-size: 10.5px !important;  max-width: 44% !important;}/* 超窄屏（≤360px）：继续收紧，确保两列不抖动 */@media (max-width: 360px){  .tags .tag{    padding: 2px 5px !important;    font-size: 10.5px !important;    max-width: 45% !important;         /* 给字多的腾一丢丢空间 */  }}/* ========== 资料卡片底部更紧凑（让底部边框“往上移”） ========== *//* 1) 卡片底部内/外边距收紧 */.service-card{  padding-bottom: 2 !important;  /* 原 5px，贴近底边 */  margin-bottom: 6px !important; /* 原 10px，列表更紧凑一点 */}/* 2) 信息区再压一点底部内边距，避免留白拉低视觉边框 */.service-info{  padding-bottom: 6px !important; /* 原 10px */}/* 3) 距离角标稍微上提，避免压住更靠上的底边 */.service-card .distance{  bottom: 3px !important;       /* 原 5px */  border-radius: 0 5px 0 8px !important; /* 贴边时更自然 */}/* 4) 超窄屏再紧一点，防止两列卡片底部留白明显 */@media (max-width: 360px){  .service-card{ margin-bottom: 6px !important; }  .service-info{ padding-bottom: 5px !important; }  .service-card .distance{ bottom: 2px !important; }}/* ========== 资料卡片 · 名字大一号（含端内细调） ========== */.service-name{  font-size: 16px !important;   /* 默认从 16px → 18px */  line-height: 1.2 !important;  /* 放大后更紧致 */  margin-bottom: 4px !important;/* 保持行距稳 */}/* Android 常规屏略收一档，避免挤高卡片 */html.is-android .service-name{  font-size: 17px !important;}/* 超窄屏（≤360px）再收一丢丢，保证两列不抖动 */@media (max-width: 360px){  .service-name{ font-size: 17px !important; }  html.is-android .service-name{ font-size: 16px !important; }}/* ========== 编号与认证整体下移（与名字拉开一点） ========== */.service-name{  margin-bottom: 7px !important;   /* 原 4~5px → 8px，先给名字留空 */}.service-id{  margin-top: 6px !important;      /* 在名字下再垫一点间距 */}/* Android：略紧凑，避免卡片增高太多 */html.is-android .service-name{ margin-bottom: 6px !important; }html.is-android .service-id{   margin-top: 5px !important; }/* ≤360px 超窄屏：再收一点，保证双列不抖动 */@media (max-width: 360px){  .service-name{ margin-bottom: 6px !important; }  .service-id{   margin-top: 4px !important; }}/* ========== 卡片内“特点标签”上下间距加大（不影响筛选面板） ========== */.service-card .tags{  margin-top: 0px !important;     /* 原 5px → 10px */  margin-bottom: 0px !important;  /* 新增：卡片信息区与下方留空 */  gap: 6px !important;             /* 标签之间稍微松一点（原 4~5px） */}/* Android：略紧凑，避免卡片变高太多 */html.is-android .service-card .tags{  margin-top: 8px !important;  margin-bottom: 8px !important;  gap: 5px !important;}/* ≤360px 超窄屏：再收一丢丢，确保双列不抖动 */@media (max-width: 360px){  .service-card .tags{    margin-top: 6px !important;    margin-bottom: 6px !important;    gap: 5px !important;  }}/* 价格角标（右上）— 白底 + 深色文字 + 图标对齐 */.price-tag {  position: absolute;  top: 0;  right: 0;  background-color: #FFFFFF;     /* ✅ 改成白底 */  color: #333;                   /* ✅ 文字深色 */  padding: 3px 8px;  border-radius: 0 0 0 10px;  font-size: 12px;  opacity: 1;                    /* ✅ 去掉半透明 */  display: inline-flex;          /* ✅ 图标与文字水平对齐 */  align-items: center;  gap: 4px;}/* 新图标尺寸（可按需微调） */.price-tag .icon-jgvs {  width: 14px;  height: 14px;  display: block;}/* 旧的“钱包”配色不再需要，可保留不影响；如要彻底清掉可删除这行 *//* .price-tag .qianbao{ color: #FBD97C; } *//* 价格角标（右上）— 小一号 + 不换行 */.price-tag{  position: absolute;  top: 0;  right: 0;  background: rgba(0,0,0,.5);  color: #fff;  padding: 2px 6px;          /* 原 3px 8px → 收紧 */  border-radius: 0 0 0 10px;  font-size: 11px;           /* 原 12px → 小一号 */  font-weight: 600;          /* 略减粗，避免显大 */  letter-spacing: 0;         /* 让“168P”更紧凑 */  line-height: 1;  display: inline-flex;  align-items: center;  justify-content: center;  gap: 2px;                  /* 图标与文字间距更小 */  white-space: nowrap;       /* 避免极窄屏换行 */}/* 图标也缩一号，整体更精致 */.price-tag .icon-jgvs{  width: 12px;               /* 原 14px */  height: 12px;  display: block;}/* Android 更紧凑（含 ≤360px） */html.is-android .price-tag{  font-size: 10.5px;  padding: 2px 5px;  border-radius: 0 5px 0 10px;}@media (max-width: 360px){  .price-tag{ font-size: 10.5px; padding: 2px 5px; }}/* ===== 统一收紧资料卡片圆角＋封面图一致 ===== */:root{  /* 你想要的“没那么圆”的程度：6~8px 很耐看 */  --card-radius: 7px;}/* 卡片主体圆角变小，溢出裁切保持 */.service-card{  border-radius: var(--card-radius) !important;  overflow: hidden !important; /* 确保内部元素跟随裁切 */  box-shadow: 0 2px 4px rgba(0,0,0,0.1); /* 可保留原阴影 */}/* 封面图圆角与卡片同步（避免出现不同弧度） */.service-card .avatar img.cover{  border-radius: var(--card-radius) !important;}/* 右上价格角标：底左角跟随卡片圆角 */.price-tag{  border-radius: 0 0 0 var(--card-radius) !important;}/* 左下距离角标：右上与左下跟随卡片圆角 */.distance{  border-radius: 0 var(--card-radius) 0 var(--card-radius) !important;}/* 可选：置顶角标不需要圆角，维持图形本体 */.service-card .pin-badge-svg{  /* 无需变更，如需更贴合也可保持不变 */}/* 可选：卡片内其他图片（若有）也跟卡片一致 */.service-card img{  border-radius: var(--card-radius);}/* === 价格角标 · 定位/高度/居中 · 最终覆盖版（贴在 base.css 最后）=== */:root{  /* 可按需微调 */  --price-top-offset: -4px;      /* 距离卡片顶部：0=完全贴顶；2px=稍微往下 */  --price-right-offset: -4px;    /* 距离右侧边缘 */  --price-pad-y: 6px;           /* 上下内边距：数值越大越“厚” */  --price-pad-x: 8px;           /* 左右内边距 */  --price-font-size: 12px;      /* 字号 */}.price-tag{  position: absolute !important;  top: var(--price-top-offset) !important;    /* ✅ 微微下移 */  right: var(--price-right-offset) !important;/* ✅ 依然贴右上角，可设 0 完全贴边 */  z-index: 5 !important;  display: inline-flex !important;            /* ✅ 水平垂直居中 */  align-items: center !important;  justify-content: center !important;  gap: 4px !important;  padding: var(--price-pad-y) var(--price-pad-x) !important; /* ✅ 提升上下高度 */  min-height: calc(2 * var(--price-pad-y) + 14px) !important;  background: rgba(0,0,0,.55) !important;    /* ✅ 灰/深灰背景（半透明） */  color: #fff !important;  font-size: var(--price-font-size) !important;  line-height: 1 !important;  letter-spacing: 0 !important;  white-space: nowrap !important;  border-radius: 0 0 0 var(--card-radius) !important; /* ✅ 左下角跟随卡片圆角 */  box-shadow: none !important; /* 如需更凸显可改为 0 1px 2px rgba(0,0,0,.12) */}/* 图标尺寸与基线对齐：更稳更居中 */.price-tag .icon-jgvs{  width: 14px !important;  height: 14px !important;  flex: 0 0 14px !important;  display: block !important;}/* 安卓更紧凑版（可选） */html.is-android .price-tag{  --price-top-offset: 2px;  /* 安卓也保持微下移 */  --price-pad-y: 5px;       /* 稍微薄一点避免遮挡 */  font-size: 11px !important;}/* ===== 价格角标 · 永远居中 & 抗大位移（最终覆盖版）===== */:root{  /* 可按需微调 */  --price-top-offset: -5px;   /* 往上拉就调更负；0 = 贴顶 */  --price-right-offset: -5px; /* 往右拉就调更负；0 = 贴右 */  --price-height: 0px;       /* 角标“厚度”（高度）*/  --price-minw: 4px;         /* 最小宽度，防止内容太挤 */  --price-pad-x: 10px;        /* 左右内边距 */  --price-font-size: 12px;    /* 字号 */  --price-radius: var(--card-radius, 7px);}.price-tag{  /* 定位与偏移：随便拉，内容都在中间 */  position: absolute !important;  top: var(--price-top-offset) !important;  right: var(--price-right-offset) !important;  z-index: 5 !important;  /* 尺寸与排版：格子居中法 */  display: grid !important;  place-items: center !important;      /* ✅ 水平+垂直永远居中 */  height: var(--price-height) !important;  min-width: var(--price-minw) !important;  padding: 0 var(--price-pad-x) !important;  box-sizing: border-box !important;  white-space: nowrap !important;  /* 视觉：半透明深灰背景 + 白字 + 圆角跟随卡片 */  background: rgba(0,0,0,.55) !important;  color: #fff !important;  font-size: var(--price-font-size) !important;  line-height: 1 !important;  border-radius: 0 0 0 var(--price-radius) !important;  /* 内容间距（图标与文字） */  column-gap: 6px !important; /* grid 下用列间距更稳 */  grid-auto-flow: column !important;   /* 图标-文字一行排 */}/* 图标尺寸与对齐：跟随居中 */.price-tag .icon-jgvs{  width: 14px !important;  height: 14px !important;  display: block !important;}/* 安卓端：更紧凑但依旧绝对居中 */html.is-android .price-tag{  --price-height: 26px;  --price-minw: 50px;  --price-pad-x: 8px;  --price-font-size: 11px;  --price-top-offset: 0px;    /* 也可设 2px，按你观感微调 */}/* ≤360px 超窄屏再收一点点 */@media (max-width: 360px){  .price-tag{    --price-height: 26px;    --price-minw: 50px;    --price-pad-x: 8px;    --price-font-size: 11px;  }}/* ===== 价格角标 · 文字微下移 + 图标更贴近（最终覆盖）===== *//* 你可以微调下面两个变量来控制“下移”和“间距” */:root{  --price-text-down: 2px;  /* 价格文字下移量（1~2px） */  --price-gap-tight: 1px;    /* 图标与文字间距（越小越靠近） */}/* 角标容器维持你之前的居中与尺寸逻辑，这里只覆盖间距 */.price-tag{  /* 若你在上文用 grid： */  column-gap: var(--price-gap-tight) !important;  /* 若你在别处还是用了 flex，这里也同时收紧 */  gap: var(--price-gap-tight) !important;}/* 图标尺寸保持不变（按需可再微调） */.price-tag .icon-jgvs{  width: 14px !important;  height: 14px !important;  display: block !important;}/* —— 文字微下移（尽量不用改 HTML）—— * 1) 常见：价格文字包在 <span>/<b>/<strong> 里 → 精准下移 * 2) 极端：文字是“裸文本节点” → 用万能选择器兜底，但不影响图片 */.price-tag :where(span, b, strong){  display: inline-block !important;  transform: translateY(var(--price-text-down)) !important;}/* 兜底：如果文字没有标签包裹，常见图标是 <img>，把“非图片”都轻微下移 */.price-tag > :not(img):not(.icon-jgvs){  transform: translateY(var(--price-text-down)) !important;  display: inline-block !important;}/* 安卓端继续更紧凑（可选） */html.is-android .price-tag{  --price-gap-tight: 1.5px;  --price-text-down: 1.6px;}/* 超窄屏（≤360px）再收一丢丢（可选） */@media (max-width: 360px){  .price-tag{    --price-gap-tight: 1.5px;    --price-text-down: 1.6px;  }}/* ================================ * A) 页面背景：可调“大小/位置” *    - --page-bg-size: cover | contain | 1200px auto | 100% 100% ... *    - --page-bg-pos : center top | right 10px top 20px | 30% 0 ... * =================================*/:root{  --page-bg-size: cover;     /* 背景大小 */  --page-bg-pos: center top; /* 背景位置 */}body{  background-size: var(--page-bg-size) !important;  background-position: var(--page-bg-pos) !important;}/* ================================== * B) 价格角标：仅允许调背景“大小/位置” *    —— 不再让价格文字/图标做下移 *    用变量调：位置/高度/左右内边距/最小宽 * ==================================*/:root{  --price-top:   0px;   /* 角标距顶部 */  --price-right: 0px;   /* 角标距右侧 */  --price-h:     -15px;  /* 角标高度（背景厚度）*/  --price-minw:  50px;  /* 角标最小宽度 */  --price-padx:  2px;   /* 左右内边距 */  --price-fs:    11px;  /* 字号 */  --price-radius: var(--card-radius, 7px);}/* 角标容器：网格居中，不做 Y 方向位移 */.price-tag{  position: absolute !important;  top: var(--price-top) !important;  right: var(--price-right) !important;  height: var(--price-h) !important;  min-width: var(--price-minw) !important;  padding: 0 var(--price-padx) !important;  display: grid !important;  place-items: center !important;  grid-auto-flow: column !important;  column-gap: 4px !important;  background: rgba(0,0,0,.55) !important;  color: #fff !important;  font-size: var(--price-fs) !important;  line-height: 1 !important;  white-space: nowrap !important;  border-radius: 0 0 0 var(--price-radius) !important;  z-index: 5 !important;}/* 图标尺寸（不下移） */.price-tag .icon-jgvs{  width: 14px !important;  height: 14px !important;  display: block !important;}/* —— 关键：彻底取消之前的“下移”规则 —— */.price-tag > *{ transform: none !important; }.price-tag :where(span, b, strong){ transform: none !important; }.price-tag > :not(img):not(.icon-jgvs){ transform: none !important; }/* Android 可选更紧凑（不影响上下位置逻辑） */html.is-android .price-tag{  --price-h: 24px;  --price-minw: 46px;  --price-padx: 7px;  --price-fs: 11px;}/* ================================ * 距离角标（左下）— 跟价格角标同体系 * 仅调背景的位置/大小，不下移文字/图标 * ================================*/:root{  /* 可按需改数值：位置/高度/左右内边距/最小宽/字号 */  --dist-bottom: 5px;     /* 角标距底部 */  --dist-left:   0px;     /* 角标距左侧 */  --dist-h:      20px;    /* 角标高度（背景厚度）*/  --dist-minw:   50px;    /* 最小宽度 */  --dist-padx:   8px;     /* 左右内边距 */  --dist-fs:     12px;    /* 字号 */}/* 容器：左下固定 + 网格居中，风格与价格角标一致 */.service-card .distance{  position: absolute !important;  bottom: var(--dist-bottom) !important;  left: var(--dist-left) !important;  height: var(--dist-h) !important;  min-width: var(--dist-minw) !important;  padding: 0 var(--dist-padx) !important;  display: grid !important;  place-items: center !important;       /* 水平+垂直永远居中 */  grid-auto-flow: column !important;  column-gap: 4px !important;  background: rgba(0,0,0,.55) !important;  color: #fff !important;  font-size: var(--dist-fs) !important;  line-height: 1 !important;  white-space: nowrap !important;  /* 左下角跟卡片圆角一致（右上/左下都圆） */  border-radius: 0 var(--card-radius) 0 var(--card-radius) !important;  z-index: 5 !important;  opacity: 1 !important;                /* 去掉半透明老规则 */}/* 图标尺寸：与价格角标统一，不做基线下移 */.service-card .distance .jl{  width: 14px !important;  height: 14px !important;  display: block !important;}/* 关键：彻底取消任何“下移文字”的旧规则 */.service-card .distance > *{ transform: none !important; }.service-card .distance :where(span, b, strong){ transform: none !important; }.service-card .distance > :not(img):not(.jl){ transform: none !important; }/* Android 更紧凑（可选） */html.is-android .service-card .distance{  --dist-h: 24px;  --dist-minw: 46px;  --dist-padx: 7px;  --dist-fs: 11px;}/* ≤360px 更紧凑（可选） */@media (max-width: 360px){  .service-card .distance{    --dist-h: 24px;    --dist-minw: 46px;    --dist-padx: 7px;    --dist-fs: 11px;  }}/* ========================= * 卡片偶发“溢出容器”终极补丁（iOS/高倍屏） * 直接贴在 base.css 最后 * ========================= *//* 1) 网格列用 minmax(0,1fr) 防止子像素累计导致右侧超 1px */.service-list{  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;  /* 某些内嵌 WebView 会出现横向滚动条，这里彻底关掉 */  overflow-x: hidden !important;  -webkit-overflow-scrolling: touch;}/* 2) 卡片自己“兜住一切”：裁剪 + 独立渲染层，避免阴影/角标外溢 */.service-card{  overflow: hidden !important;           /* 再次确保裁剪 */  contain: layout paint size style;      /* 独立布局/绘制上下文，隔离子像素 */  will-change: transform;                /* 提前上 GPU 避免抖动 */  transform: translateZ(0);              /* 某些 WebView 需要这个 */  -webkit-mask-image: -webkit-radial-gradient(white, black); /* iOS 圆角裁剪更稳 */}/* 3) 封面图彻底消掉 0.5px 外溢（display:block + 统一半径） */.service-card .avatar img.cover{  display: block !important;  width: 100% !important;  border-radius: var(--card-radius) !important;  image-rendering: -webkit-optimize-contrast;}/* 4) 角标不要负偏移，确保永远在卡片内被裁剪到 */:root{  --price-top-offset: 0px !important;  --price-right-offset: 0px !important;  --price-height: 26px !important;   /* 给足高度但不外溢 */  --price-pad-x: 8px !important;  --dist-bottom: 0px !important;  --dist-left: 0px !important;  --dist-h: 24px !important;  --dist-padx: 8px !important;}/* 统一角标为“网格居中”且绝不往外推 */.price-tag{  position: absolute !important;  top: var(--price-top-offset) !important;  right: var(--price-right-offset) !important;  height: var(--price-height) !important;  min-width: 48px !important;  padding: 0 var(--price-pad-x) !important;  display: grid !important;  place-items: center !important;  grid-auto-flow: column !important;  column-gap: 4px !important;  border-radius: 0 0 0 var(--card-radius) !important;}.service-card .distance{  position: absolute !important;  bottom: var(--dist-bottom) !important;  left: var(--dist-left) !important;  height: var(--dist-h) !important;  min-width: 46px !important;  padding: 0 var(--dist-padx) !important;  display: grid !important;  place-items: center !important;  grid-auto-flow: column !important;  column-gap: 4px !important;  border-radius: 0 var(--card-radius) 0 var(--card-radius) !important;}/* 5) 修正可能来自旧样式的负 margin/偏移（强力兜底） */.price-tag, .service-card .distance, .service-card .pin-badge-svg{  margin: 0 !important;  /* 若早期样式给过 transform 位移，这里把它清零 */  transform: none !important;}/* 6) iOS 安全区 + 全局横向禁止，彻底杜绝“探出边界” */html, body{  overflow-x: hidden !important;  width: 100% !important;  max-width: 100vw !important;  padding-left: env(safe-area-inset-left, 0) !important;  padding-right: env(safe-area-inset-right, 0) !important;}/* 7) 高倍屏 0.5px 边界毛边修正（可选） */@supports (-webkit-touch-callout: none) {  .service-card{    /* iOS 特有的像素对齐微调，防止半像素阴影外溢 */    outline: 1px solid transparent;  }}/* === 修复卡片被压扁（移除 size containment）=== */.service-card{  contain: paint !important;         /* 或者：contain: layout paint; */  /* 保留 overflow:hidden / will-change / translateZ(0) 都没问题 */}/* 顺手把一个无单位的声明补成 px，避免浏览器忽略 */.service-card{  padding-bottom: 2px !important;    /* 你现有代码里是 2（无单位），会被丢弃 */}/* ========================================================= * 终极不越界 + 状态栏永不换行（贴在 base.css 最底部） * =======================================================*//* 0) 系统级“横向溢出保险丝” */html, body {  width: 100% !important;  max-width: 100vw !important;  overflow-x: hidden !important;  -webkit-text-size-adjust: 100%;  text-size-adjust: 100%;}/* 1) 所有主要容器禁止把内容“探出屏外” */.container,.search-container,.filter-buttons,.filter-container,.filter-dropdown,.dropdown-container,.area-drawer,.service-list,.service-card {  max-width: 100vw !important;  overflow-x: hidden !important;}/* 2) 所有媒体元素永远不超过屏宽 */img, video, canvas, svg {  max-width: 100% !important;  height: auto;}/* 3) 网格列使用 minmax(0,1fr) 防止 0.5px 累积溢出 */.service-list {  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;}/* 4) 顶部「状态栏」：永远单行、禁止换行、可横向滑动 */.filter-dropdown {  display: flex !important;  flex-wrap: nowrap !important;          /* ✅ 不换行 */  overflow-x: auto !important;           /* ✅ 超出时横向滚动 */  overflow-y: hidden !important;  -webkit-overflow-scrolling: touch;     /* ✅ iOS 惯性滑动 */  gap: clamp(6px, 2vw, 10px) !important; /* ✅ 间距自动收放 */  padding: 6px clamp(6px, 2vw, 12px) !important;  scrollbar-width: none;                 /* Firefox 隐藏滚动条 */}.filter-dropdown::-webkit-scrollbar { display: none; } /* WebKit 隐藏滚动条 *//* 5) 状态栏内每一项固定为“行内块”，不被压到下一行 */.dropdown-item {  flex: 0 0 auto !important;             /* ✅ 保持在同一行 */  display: inline-flex !important;  align-items: center;  gap: clamp(6px, 1.8vw, 10px) !important;  white-space: nowrap !important;        /* ✅ 文本不换行 */}/* 6) 标题/文本在窄屏自动“微缩”，但不至于太小 */.dropdown-item .title,.dropdown-item .title span,.dropdown-item .name,.dropdown-item select {  font-size: clamp(12px, 3.3vw, 14px) !important; /* ✅ 自适应字号 */  line-height: 1.2 !important;}/* 7) 若仍然过长，文本改为省略显示（不撑出容器） */.dropdown-item .title,.dropdown-item .name {  max-width: 48vw;                         /* ✅ 单项最长不超半屏 */  overflow: hidden !important;  text-overflow: ellipsis !important;}/* 8) 搜索区同理：单行不换行，极窄屏自动缩字 */.search-container {  overflow: hidden !important;}.search-container .search-bar {  min-width: 0;                            /* 允许压缩 */}.search-container input {  min-width: 0;  white-space: nowrap;  text-overflow: ellipsis;  overflow: hidden;  font-size: clamp(13px, 3.4vw, 14px) !important;}/* 9) 顶部分类按钮区域：网格四等分已启用，这里再防溢出 */.filter-buttons {  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;  overflow: hidden !important;}.filter-button {  min-width: 0 !important;  white-space: nowrap !important;  text-overflow: ellipsis !important;  overflow: hidden !important;  font-size: clamp(12px, 3.2vw, 14px) !important;}/* 10) 卡片内易溢出的文字统统省略号 + 禁止换行 */.service-name,.location,.tags .tag,.service-id .num,.service-id .badge-svg,.service-id span.tag {  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;  max-width: 100% !important;}/* 11) 角标绝不越界（右上价签 / 左下距离） */.price-tag,.service-card .distance,.service-card .pin-badge-svg {  max-width: 100% !important;  transform: none !important;  margin: 0 !important;  /* 统一在卡片内部裁切，避免负偏移推出边界 */  position: absolute !important;}.price-tag {  top: 0 !important;  right: 0 !important;}.service-card .distance {  left: 0 !important;  bottom: 0 !important;}/* 12) 安卓超窄屏特护：状态栏更紧凑但仍不换行 */@media (max-width: 360px) {  html.is-android .filter-dropdown {    gap: 6px !important;    padding: 4px 6px !important;  }  html.is-android .dropdown-item {    gap: 6px !important;  }  html.is-android .dropdown-item .title,  html.is-android .dropdown-item .title span,  html.is-android .dropdown-item .name,  html.is-android .dropdown-item select {    font-size: clamp(11.5px, 3.6vw, 13px) !important;  }}/* ==== 弹层统一样式补丁（覆盖默认） ==== */.dropdown-container{  position: fixed;           /* 保证脱离文档流，不被 body 滚动影响 */  left: 0; right: 0;  max-height: 70vh;          /* 防止过长超出屏幕 */  overflow: auto;  background: #fff;          /* 避免“看起来像空白” */  z-index: 1001;             /* 一定要高于遮罩 999 */  display: none;             /* 默认隐藏，JS 再显示 */  box-shadow: 0 10px 24px rgba(0,0,0,.08);  border-radius: 0 0 12px 12px;  -webkit-overflow-scrolling: touch;}/* 距离面板容器（可选：细化标识） */#distance-container.distance-container{  z-index: 1002;             /* 进一步保证距离面板永远在最前 */}/* 遮罩保持在面板之下 */#dropdown-mask.dropdown-mask{  z-index: 999;}/* 联想下拉 给个背景和前景层级，避免“看不见” */#place-suggest{  background: #fff;  z-index: 1003;             /* 在面板里的子层，确保盖住面板内其它元素 */  position: relative;}/* 简单的空白态/列表项可见性优化（可选） */.tips-item{padding:10px 12px;border-bottom:1px solid #f2f3f5}.tips-item:last-child{border-bottom:none}/* === 统一字号 · 最终覆盖补丁（请放在 base.css 最底部）=== */:root{  /* 分类四按钮文字大小（可按需微调）*/  --cat-btn-fs: 15px;  /* 状态栏（上海 / 全部 / 区名 / 下拉）统一字号 */  --status-fs: 13px;}/* ① 顶部四个分类按钮放大 */.filter-buttons .filter-button{  font-size: var(--cat-btn-fs) !important;  /* 仅文本放大，不改变其它配色与交互 */}/* ② 状态栏文本全部同字号（“上海”、“全部/区名”、下拉选择） */.filter-dropdown,.filter-dropdown .dropdown-item,.filter-dropdown .dropdown-item .title,.filter-dropdown .dropdown-item .title span,.filter-dropdown .dropdown-item .name,.filter-dropdown select{  font-size: var(--status-fs) !important;  line-height: 1.2 !important;}/* ③ 安卓与超窄屏也保持一致，不再被早前规则压小 */html.is-android .filter-buttons .filter-button{  font-size: var(--cat-btn-fs) !important;}html.is-android .filter-dropdown,html.is-android .filter-dropdown .dropdown-item,html.is-android .filter-dropdown .dropdown-item .title,html.is-android .filter-dropdown .dropdown-item .title span,html.is-android .filter-dropdown .dropdown-item .name,html.is-android .filter-dropdown select{  font-size: var(--status-fs) !important;}@media (max-width: 360px){  .filter-buttons .filter-button{    font-size: var(--cat-btn-fs) !important;  }  .filter-dropdown,  .filter-dropdown .dropdown-item,  .filter-dropdown .dropdown-item .title,  .filter-dropdown .dropdown-item .title span,  .filter-dropdown .dropdown-item .name,  .filter-dropdown select{    font-size: var(--status-fs) !important;  }}/* ========================================================= * 资料卡片 · 右上角价格角标（.price-tag）背景框 · 最终覆盖补丁 * —— 放在 base.css 最底部 ——  * 你主要会改下面这些变量： *   1) --price-h       → 背景“高度”（上下厚度） *   2) --price-minw    → 背景“最小宽度”（左右长度的基线） *   3) --price-padx    → 左右内边距（会一起影响“宽度”） *   4) --price-fs      → 文字字号（可选） *   5) --price-icon    → 图标大小（可选） * =======================================================*/:root{  /* ====== 你常改的三件事 ====== */  --price-h:    0px;  /* ← 高度（上下厚度）  推荐 20~26px */  --price-minw: 0px;  /* ← 宽度基线（最小宽度） 推荐 42~56px */  --price-padx: 4px;   /* ← 左右内边距（同时影响宽度） 推荐 4~8px */  /* 可选：字体与图标（不想动就保持现值） */  --price-fs:   11px;  /* 角标内文字大小 */  --price-icon: 15px;  /* 图标边长 */  /* 位置与圆角（通常不需要改） */  --price-top:   0px;  /* 与卡片上边的距离 */  --price-right: 0px;  /* 与卡片右边的距离 */  --price-radius: var(--card-radius, 7px); /* 左下圆角跟卡片一致 */}/* ====== 右上价格角标：更小、更紧凑，但始终在卡片内 ====== */.price-tag{  position: absolute !important;  top: var(--price-top) !important;  right: var(--price-right) !important;  /* —— 背景“尺寸” —— */  height: var(--price-h) !important;                 /* 高度=上下厚度（你最常改） */  min-width: var(--price-minw) !important;           /* 宽度=最小宽度（你最常改） */  padding: 0 var(--price-padx) !important;           /* 宽度附加=左右内边距（你最常改） */  /* 排版：始终水平+垂直居中，内容不换行 */  display: grid !important;  place-items: center !important;  grid-auto-flow: column !important;  column-gap: 4px !important;  white-space: nowrap !important;  /* 视觉：半透明深灰背景 + 白字；左下角跟卡片圆角 */  background: rgba(0,0,0,.55) !important;  color: #fff !important;  font-size: var(--price-fs) !important;  line-height: 1 !important;  border-radius: 0 0 0 var(--price-radius) !important;  z-index: 5 !important;  /* 清理历史样式的位移/阴影，确保“框变小”只按上面变量走 */  margin: 0 !important;  transform: none !important;  box-shadow: none !important;}/* 图标尺寸（保持与文字协调） */.price-tag .icon-jgvs{  width: var(--price-icon) !important;  height: var(--price-icon) !important;  display: block !important;}/* 兜底：把任何可能残留的“文字下移”类覆盖掉，避免错位 */.price-tag > *{ transform: none !important; }.price-tag :where(span,b,strong){ transform: none !important; }/* ====== 安卓与超窄屏的更紧凑默认（按需保留） ====== */html.is-android .price-tag{  --price-h:    20px;  /* 高度再薄一点 */  --price-minw: 44px;  /* 宽度再短一点 */  --price-padx: 5px;   /* 左右再收一点 */  --price-fs:   10.5px;  --price-icon: 11px;}@media (max-width: 360px){  .price-tag{    --price-h:    20px;    --price-minw: 44px;    --price-padx: 5px;    --price-fs:   10.5px;    --price-icon: 11px;  }}/* ===== 价格角标 · 字重最终覆盖（放在 base.css 最底部）===== */:root{  /* 如需更细，可把 400 改为 300（部分设备会回退为 Regular） */  --price-fw: 550;}.price-tag{  font-weight: var(--price-fw) !important;  /* 覆盖早先的 600/加粗 */  letter-spacing: 0;                        /* 紧一点更显“纤细” */}/* 安卓端也保持一致（可选） */html.is-android .price-tag{  font-weight: var(--price-fw) !important;}/* ===== 价格角标 & 距离角标 · 背景统一加深（最终覆盖）===== */.price-tag,.service-card .distance{  background: rgba(0, 0, 0, 0.5) !important;}/* ===== 距离角标 · 图标再小一号（最终覆盖）===== *//* 默认尺寸：可按需把 11px 改成 10~12px 微调 */:root{  --dist-icon-size: 13px;}/* 安卓上更紧凑一点（可调） */html.is-android{  --dist-icon-size: 10.5px;}/* 超窄屏（≤360px）再小一丢丢（可调） */@media (max-width: 360px){  html.is-android{    --dist-icon-size: 10px;  }}/* 统一用变量控制实际尺寸，强制覆盖之前的 14px 设定 */.service-card .distance .jl{  width: var(--dist-icon-size) !important;  height: var(--dist-icon-size) !important;  display: block !important;  /* 如果你想让文字更贴近图标，可解注下一行 */  /* margin-right: 2px !important; */}/* 可选：图标与文字的间距略收紧（按需） */.service-card .distance{  column-gap: 3px !important;  /* 你之前是 4px */}/* ===== 价格角标 · 图标与数字更贴（最终覆盖）===== */:root{  /* 想再更近就把 1px 改成 0.5px 或 0 */  --price-gap-tight: 1px;}.price-tag{  /* 你前面有多处 column-gap / gap，这里统一压到最小 */  column-gap: var(--price-gap-tight) !important;  gap: var(--price-gap-tight) !important;  letter-spacing: 0 !important;      /* 数字更紧凑 */}/* 清掉任何可能的内边距/外边距，防止“看起来还在撑距” */.price-tag > *{  margin: 0 !important;  padding-inline: 0 !important;      /* 有些标签会有左右内边距 */}/* 图标不额外占缝隙 */.price-tag .icon-jgvs{  margin: 0 !important;  /* 如果还是觉得有点远，可以解开下一行再微贴 1px */  /* transform: translateX(-0.5px); */}/* 安卓与超窄屏也同一标准（可选：再更近一点点） */html.is-android .price-tag{ --price-gap-tight: 0.5px; }@media (max-width: 360px){  .price-tag{ --price-gap-tight: 0.5px; }}/* ===== 状态栏整体上移（最终覆盖）===== *//* 放在 base.css 最底部，确保覆盖前面所有 margin/padding 设定 */:root{  --status-nudge-y: 4px;          /* 调整量：负值=往上，正值=往下 */  --status-top-gap: 4px;           /* 状态栏与上方区域的最小安全间距 */}/* 1) 直接把状态栏往上“挪” */.filter-dropdown{  margin-top: var(--status-nudge-y) !important;}/* 2) 同时把上方分类区与状态栏之间的距离略收紧，避免显得松散 */.filter-buttons{  /* 原来是：margin: 6px 8px var(--gap-filter-to-features); */  margin-bottom: var(--status-top-gap) !important;}/* 3) 超窄屏与安卓再微调 1～2px，防止过度挤压视觉 */@media (max-width: 360px){  .filter-dropdown{ margin-top: calc(var(--status-nudge-y) - 1px) !important; }  .filter-buttons{  margin-bottom: max(2px, calc(var(--status-top-gap) - 1px)) !important; }}html.is-android .filter-dropdown{  margin-top: calc(var(--status-nudge-y) - 1px) !important;}/* ========================================================= * 地址图标更小 + 基线更稳（最终覆盖补丁，贴在 base.css 最底部） * 可调参数： *   --addr-icon-size  图标边长 *   --addr-icon-gap   图标与文字的间距 *   --addr-icon-dy    文字基线微调（正值=图标略下沉） * =======================================================*/:root{  --addr-icon-size: 14px;   /* 默认从 ~14px → 12px，更精致 */  --addr-icon-gap:  2px;    /* 与文字的间距 */  --addr-icon-dy:   1px;    /* 基线微下移，数值 0~2 之间可微调 */}/* 主规则：适配 <img class="addr-svg"> / <svg class="addr-svg"> / iconfont */.location .addr-svg,.location img.addr-svg,.location svg.addr-svg,.location .icon-location,.location i .iconfont,.location i[class*="icon-"] {  width:  var(--addr-icon-size) !important;  height: var(--addr-icon-size) !important;  flex: 0 0 var(--addr-icon-size) !important;  display: inline-block !important;  margin-right: var(--addr-icon-gap) !important;  vertical-align: middle !important;  transform: translateY(var(--addr-icon-dy)) !important; /* 让图标与文字更贴齐 */}/* 继续保留你之前的灰度/亮度处理，让图标语义保持“地址灰” */.location .addr-svg,.location img.addr-svg,.location svg.addr-svg,.location .icon-location,.location i .iconfont {  filter: grayscale(1) brightness(0) invert(62%) sepia(0%) saturate(0%) hue-rotate(0deg);  opacity: .9;}/* 防止被父级的 font-size 影响图标排版高度 */.location {  line-height: 1.2 !important;}/* ANDROID 更紧凑（可按需微调） */html.is-android{  --addr-icon-size: 11px;  --addr-icon-dy:   0.5px;}/* 超窄屏（≤360px）再小半号（不影响其它样式） */@media (max-width: 360px){  :root{ --addr-icon-size: 11px; }}/* ===== 资料卡片整体上移 · 贴近状态栏（最终覆盖补丁）===== */:root{  /* 上移量（推荐 6–14px 之间微调）*/  --cards-nudge-up: 6px;  /* 状态栏与卡片之间的最小安全间距 */  --status-bottom-gap: 2px;}/* 压缩状态栏（筛选条）与列表之间的间距 */.filter-container{  margin-bottom: var(--status-bottom-gap) !important;}/* 让卡片整体往上贴一些（不影响下方内容与遮罩层层级） */.service-list{  margin-top: calc(-1 * var(--cards-nudge-up)) !important;}/* Android & 超窄屏：略再紧一点，视觉更贴合 */html.is-android .service-list{  margin-top: calc(-1 * (var(--cards-nudge-up) + 2px)) !important;}@media (max-width: 360px){  .service-list{    margin-top: calc(-1 * (var(--cards-nudge-up) + 2px)) !important;  }}/* ========================================================= * 卡片左右留白（两侧“贴边距离”）统一加大 · 最终覆盖 * 放在 base.css 最底部 * 可调参数： *   --cards-gutter-x        默认左右留白 *   --cards-gutter-x-android  Android 默认 *   --cards-gutter-x-narrow   超窄屏（≤360px） * =======================================================*/:root{  --cards-gutter-x: 8px;            /* 默认 18px（原来大多为 10px）*/  --cards-gutter-x-android: 16px;    /* Android 稍紧凑 */  --cards-gutter-x-narrow: 14px;     /* 极窄屏（≤360px） */}/* 基础：列表两侧留白加大（不改变列数与卡片间距） */.service-list{  padding-left:  var(--cards-gutter-x) !important;  padding-right: var(--cards-gutter-x) !important;}/* Android 调整 */html.is-android .service-list{  padding-left:  var(--cards-gutter-x-android) !important;  padding-right: var(--cards-gutter-x-android) !important;}/* 超窄屏（≤360px）再收一点，避免挤压内容 */@media (max-width: 360px){  .service-list{    padding-left:  var(--cards-gutter-x-narrow) !important;    padding-right: var(--cards-gutter-x-narrow) !important;  }}/* 保险：保持不横向溢出（你前面已有，重复无害） */.service-list{  max-width: 100vw !important;  overflow-x: hidden !important;}/* ========================================================= * 卡片之间的间距更紧凑（不改变左右留白） * 放在 base.css 最底部；覆盖前面所有 gap 设置 * =======================================================*/:root{  /* 你可以按需微调这两个变量 */  --cards-gap-x: 8px;   /* 横向间距（列与列之间），原来常见是 10px */  --cards-gap-y: 10px;   /* 纵向间距（行与行之间），原来常见是 8~10px */}/* 只改网格间距，不改两侧 padding（左右留白保持你当前设置） */.service-list{  column-gap: var(--cards-gap-x) !important;  /* 列间距 */  row-gap:    var(--cards-gap-y) !important;  /* 行间距 */  gap: var(--cards-gap-y) var(--cards-gap-x) !important; /* 兜底统一 */}/* 让行距由 grid 控制，避免卡片自身再额外撑高 */.service-card{  margin-bottom: 0 !important;}/* Android 与超窄屏再紧一点（可选） */html.is-android .service-list{  --cards-gap-x: 5px;  --cards-gap-y: 5px;}@media (max-width: 360px){  .service-list{    --cards-gap-x: 5px;    --cards-gap-y: 5px;  }}/* 让 .left/.right 不再阻断网格，gap 直达卡片 */.service-list .left,.service-list .right{  display: contents !important;}/* 统一用变量控制行距（随便改大小） */:root{ --cards-gap-y: 16px !important; }.service-list{  row-gap: var(--cards-gap-y) !important;  gap: var(--cards-gap-y) var(--cards-gap-x) !important;}/* 确保不被 margin 影响 */.service-card{ margin-bottom: 0 !important; }/* ========================================================= * 卡片纵向间距 · 加大版（覆盖现有变量） * 贴在 base.css 最底部，确保生效 * =======================================================*/:root{  /* 默认从 10px → 16px（你可改 14~18 之间微调） */  --cards-gap-y: 7px !important;}/* Android 稍微克制一点，避免列表过长 */html.is-android .service-list{  --cards-gap-y: 12px !important;}/* 超窄屏（≤360px）再收一丢丢，保持双列不拥挤 */@media (max-width: 360px){  .service-list{    --cards-gap-y: 12px !important;  }}/* 绑定关系兜底（多数你已配好，这里再强覆盖一次） */.service-list{  row-gap: var(--cards-gap-y) !important;  gap: var(--cards-gap-y) var(--cards-gap-x) !important;}/* 确保不被旧的 margin-bottom 抢权（你前面已清 0，这里稳一手） */.service-card{  margin-bottom: 0 !important;}/* ========================================================= * Footer 导航图标放大 + 高度自适配（最终覆盖补丁） * 直接贴在 base.css 最底部即可生效 * =======================================================*/:root{  --footer-h: 60px;                              /* 底栏高度（原 50px） */  --footer-icon: 29px;                           /* 图标边长（原 20px） */  --footer-fs: 12px;                             /* 文字字号 */  --footer-pad-y: 6px;                           /* 底栏上下内边距 */  --footer-safe-b: env(safe-area-inset-bottom);  /* iOS 安全区 */}/* 调整底栏高度与排版 */.footer{  height: var(--footer-h) !important;  padding: var(--footer-pad-y) 5px calc(var(--footer-pad-y) + var(--footer-safe-b)) !important;  font-size: var(--footer-fs) !important;}/* 图标变大：统一强制覆盖 */.footer img{  width: var(--footer-icon) !important;  height: var(--footer-icon) !important;  display: block;}/* 页面内容底部留白跟随底栏高度，避免被遮住 */.container{  margin-bottom: calc(var(--footer-h) + 16px + var(--footer-safe-b)) !important;}/* —— Android 更紧凑一档（可按需微调）—— */html.is-android{  --footer-h: 52px;  --footer-icon: 22px;}/* —— 超窄屏（≤360px）再收半号，保持排版稳定 —— */@media (max-width: 360px){  :root{    --footer-h: 52px;    --footer-icon: 22px;  }}/* ========================================================= * Footer 导航：文字上移更贴近图标（不改变图标位置） * 放在 base.css 最底部 * 可调参数：--footer-text-gap 数值越小越贴（建议 0~4px） * =======================================================*/:root{  --footer-text-gap: 1px;  /* 默认 2px；想更贴可设 1 或 0 */}.footer img{  margin-bottom: var(--footer-text-gap) !important; /* 覆盖早先的 5px */}/* 安卓更紧凑半格（可选）*/html.is-android .footer img{  margin-bottom: max(0px, calc(var(--footer-text-gap) - 1px)) !important;}/* ========================================================= * Footer 导航 · 图标+文字整体上移（不改 footer 定位/高度） * 放在 base.css 最底部 * 可调参数：--footer-raise-y 数值越大越往上（建议 2~10px） * =======================================================*/:root{  --footer-raise-y: 6px;              /* 默认上移 6px */}/* 核心：把每个入口 <a> 的内容整体上移（transform 不影响点击面积）*/.footer a{  transform: translateY(calc(-1 * var(--footer-raise-y))) !important;}/* 安卓与超窄屏建议略收一点，避免显得过挤 */html.is-android{  --footer-raise-y: 5px;}@media (max-width: 360px){  :root{    --footer-raise-y: 5px;  }}/* 若图标与文字间距也想更贴，可继续配合你已有的变量一起用 */:root{  --footer-text-gap: 1px;  /* 你之前已加，这里再次明确保持 */}.footer img{  margin-bottom: var(--footer-text-gap) !important;}/* 收藏页 / 全局卡片整体上移幅度调节（覆盖前面的 6px） */:root{  --cards-nudge-up: 14px;  /* 原来是 6px，先试 12，看感觉再调 10 / 14 */}/* === 洋酒页：搜索框与“上海”状态栏距离缩小 === *//* 调整：搜索区域下边距稍微收一点 */.search-container{  /* 保持原来的上边距 8px，两侧 10px，只把底部从 8px → 4px */  margin: var(--search-block-margin-y) 10px 4px !important;}/* 调整：分类按钮整体再贴紧一点（从 6px → 2px） */:root{  --search-filter-gap-top: 1px;   /* 想再更紧可以改成 1 或 0 */}.filter-buttons{  /* 只改顶部的间距，底部仍然用你前面设的 --status-top-gap */  margin-top: var(--search-filter-gap-top) !important;}/* ============================================ * 顶部整体下移微调补丁（放在 base.css 最底部） * - 四个分类按钮往下 * - 「上海 / 全部 / 区名」状态栏往下 * - 下面的资料卡片整体也往下 * ========================================== */:root{  /* 搜索框 → 四个分类按钮：中间缝隙稍微大一点 */  --search-filter-gap-top: 4px;   /* 想更远就调大，比如 10 / 12 */  /* 四个分类按钮 → 状态栏（上海那一行）的间距 */  --status-top-gap: 4px;          /* 原来比较紧，这里拉开一点 */  /* 状态栏本身的下移量 */  --status-nudge-y: 4px;          /* 数值越大，状态栏越往下 */  /* 取消之前把卡片整体往上拉太多的设置 */  --cards-nudge-up: 0px;}/* 四个大分类按钮：离搜索框远一点、下面留一点空间给状态栏 */.search-container{  /* 上 维持原样，左右 10px，只调“底部”间距 */  margin: var(--search-block-margin-y) 10px 8px !important;}.filter-buttons{  /* 顶部缝隙用上面的变量，底部给状态栏一点呼吸空间 */  margin-top:  var(--search-filter-gap-top) !important;  margin-bottom: var(--status-top-gap) !important;}/* 「上海 / 全部 / 区名」这一条状态栏：整体下移一点 */.filter-dropdown{  margin-top: var(--status-nudge-y) !important;}/* 资料卡片：不再向上“负 margin”顶太紧，保持从状态栏下面自然开始 */.service-list{  margin-top: 0 !important;}/* 状态栏（上海这一行） 到 卡片列表之间的距离微调 */:root{  --status-bottom-gap: -4px !important;  /* 想大一点就改 12 / 14，都行 */}/* ========================================================= * 顶部状态栏（上海 / 全部 / 区名）与卡片列表的间距 · 最终版 * 通过 --status-bottom-gap 统一控制： *   - 默认：所有页面通用 *   - page-home：首页单独一档 *   - page-wine：洋酒页单独一档 * =======================================================*//* 全站默认间距（比如 6px，看起来比较自然） */:root{  --status-bottom-gap: 6px;   /* 通用默认间距 */}/* 首页：想更紧一点，就调小 */body.page-home{  --status-bottom-gap: 4px;   /* 首页：状态栏离卡片更近一些 */}/* 洋酒页：想离“上海”更远一点，就调大 */body.page-wine{  --status-bottom-gap: 0px;  /* 洋酒页：卡片比首页拉开一点 */  /* 你可以根据肉眼感觉改成 8 / 12 / 14 都行 */}/* 真正控制间距的地方：状态栏下面到卡片列表上面 */.filter-container{  margin-bottom: var(--status-bottom-gap) !important;}/* 防止前面老规则再乱拉 service-list */.service-list{  margin-top: 0 !important;}/* === 筛选弹层：去掉内容上方那条灰色背景，只保留下方遮罩 === */.dropdown-mask::before{  content: none !important;  display: none !important;  background: transparent !important;}/* ========================================================= * 地址联想列表 · 分隔线 + 全黑字体（最终覆盖） * =======================================================*//* 联想结果整体外框 */#place-suggest{  background: #fff !important;  border-radius: 10px !important;  border: 1px solid #e5e5e5 !important;  /* 外边框一圈淡灰 */  overflow: auto !important;}/* 每一条结果：上下有内边距，底部一条线隔开 */.tips-item{  padding: 8px 12px !important;  border-bottom: 1px solid #e5e5e5 !important;  /* 像图2那样的分隔线 */  cursor: pointer;  font-size: 13px !important;  color: #000 !important;                      /* 字体默认黑色 */  background: #fff !important;}/* 最后一条不要底部线 */.tips-item:last-child{  border-bottom: none !important;}/* 里面所有文字都统一黑色，防止被旧样式染成灰/黄 */.tips-item *,.tips-item .name{  color: #000 !important;}/* ========================================================= * 地址联想列表 · 一条一条有分隔线 + 全黑文字（强制版） * 放在 base.css 最底部 * =======================================================*//* 整个联想列表外观 */#place-suggest{  background: #fff !important;  border-radius: 10px !important;  border: 1px solid #e5e5e5 !important;  overflow: auto !important;  max-height: 50vh !important;}/* 如果里面有 ul，先把默认缩进和小圆点干掉 */#place-suggest ul{  list-style: none !important;  margin: 0 !important;  padding: 0 !important;}/* ✅ 关键：不管子元素是 div / li / p，统统用这一条规则 */#place-suggest > *,#place-suggest ul > *{  padding: 8px 12px !important;  border-bottom: 1px solid #e5e5e5 !important;  /* 每条之间用线隔开 */  font-size: 13px !important;  color: #000 !important;                        /* 字体统一黑色 */  background: #fff !important;  cursor: pointer;}/* 最后一条不要底部线 */#place-suggest > *:last-child,#place-suggest ul > *:last-child{  border-bottom: none !important;}/* 再兜一层：里面所有文字都用黑色，防止被旧样式染色 */#place-suggest,#place-suggest *{  color: #000 !important;}/* ========================================================= * 筛选遮罩仅作为视觉背景，不再拦截滑动/点击 * =======================================================*//* 确保真正的弹层照常可点、可滚 */.dropdown-container{  pointer-events: auto !important;}.dropdown-mask{  pointer-events: auto !important;}/* ========================================================= * 全局滚动锁定：body 加 .scroll-locked 时，背景彻底不能滑 * =======================================================*/html.scroll-locked,body.scroll-locked{  overflow: hidden !important;  height: 100% !important;}/* iOS / WebView 兜底：防止横向、竖向都乱滚 */html.scroll-locked{  position: relative;}/* 弹层本身继续可滚（你前面已经有 overflow: auto，这里强调一下） */.dropdown-container{  overflow: auto !important;  -webkit-overflow-scrolling: touch;  /* iOS 惯性滑动 */}/* 地区列表 / 标签列表 / 距离面板内部可滚 */.area-list,.tags-container,.distance-panel{  -webkit-overflow-scrolling: touch;}body {  margin: 0;  padding: 0;  background-color: #EFEEF3;  background: linear-gradient(168deg, #FCF1FB 0%, #FFDED4 50.64%, #F9D2FF 99.39%);  background-repeat: no-repeat;  /* 去掉这一行：  background-attachment: fixed;  */  background-size: cover;  -ms-overflow-style: none;}/* ========================================================= * 距离面板底部间距 & 按钮下移微调 * =======================================================*//* 只针对“距离”这一个弹层，减小底部留白 */#distance-container.dropdown-container{  padding-bottom: 20px !important;   /* 原来通用是 20px，这里减小一点 */}/* 距离面板里的“重置 / 确定” 按钮整体往下挪一点 */#distance-container .distance-actions{  margin-top: 18px !important;      /* 往下移：数值越大越靠下 */}/* ========================================================= * 洋酒页（body.page-wine）顶部整体上移 * - 只影响洋酒页，不动首页 * =======================================================*//* ========================================================= * 洋酒页（page-wine）专属：状态栏和资料卡片整体上移 * - 首页 / 其他页面不受影响 * =======================================================*//* 1）洋酒页：搜索框下面的间距缩小一点 */body.page-wine .search-container{  /* 只改“底部”这一个值，保持你全局的上/左右不变 */  margin-bottom: 10px !important;   /* 想更近可以改成 2 或 0 */}/* 2）洋酒页：筛选状态栏（上海 / 全部 / 区名）整体往上贴一点 */body.page-wine .filter-dropdown{  margin-top: 0 !important;        /* 全局是 4px，这里拉回到 0 */}/* 3）洋酒页：状态栏与资料卡片之间的缝隙再压一压 */body.page-wine .filter-container{  margin-bottom: 2px !important;   /* 默认是用 --status-bottom-gap，这里单独收紧 */}/* 4）洋酒页：卡片整体再往上挪一点点，和状态栏更贴近 */body.page-wine .service-list{  margin-top: -4px !important;     /* 想再贴一点就改 -6 / -8，看眼缘 */}/* ========================================================= * 距离面板里「获取位置」按钮胶囊放大一档 * —— 放在 base.css 最底部 ——  * =======================================================*//* 按钮本体：胶囊更大，高度更厚，字体略大一点 */.distance-panel .btn-locate{  display: inline-flex;  align-items: center;  justify-content: center;  padding: 6px 12px;          /* ← 左右 & 上下空间都加大 */  min-height: 30px;           /* ← 胶囊高度（原来如果偏小，这里统一抬高） */  border-radius: 999px;       /* ← 真·胶囊弧度 */  font-size: 13px;            /* ← 比周围文字略大半号 */  gap: 4px;                   /* 图标与文字间距 */  /* 如果之前有边框/背景，保留也行；你想统一风格可以用下面两行： */  /* background: #F7F8FC;     border: 1px solid #E5E5E5; */}/* 图标也跟着稍微放大一点，并保证垂直居中 */.distance-panel .btn-locate img,.distance-panel .btn-locate svg{  width: 16px;  height: 16px;  display: block;}/* ========================================================= * 上海地区弹层：确认 / 重置按钮整体下移一点 * 只影响「上海」地区筛选弹窗，不动其它弹层 * =======================================================*/#area-container .area-actions,.area-container .area-actions{  margin-top: 4px !important;   /* 往下移的距离，想再低一点就改大一点 */}/* ========================= * 上海地区弹窗底部按钮条：去掉顶部那条分割线 * 只影响「上海地区」筛选弹窗 * ========================= */#area-container .area-actions,.area-container .area-actions{  border-top: none !important;}/* === 安卓资料卡片左右更靠边（减小左右留白） === */html.is-android{  --cards-gutter-x-android: 6px;   /* 想更靠边可以改成 6 */}/* === 底部导航文字强制一行，不允许换行 === */.footer a span{  white-space: nowrap !important;}/* ========================================================= * ANDROID · 资料卡片封面改成正方形（仅安卓生效） * =======================================================*/html.is-android .service-card .avatar img.cover{  width: 100% !important;  height: auto !important;          /* 先让浏览器按宽度算 */  aspect-ratio: 1 / 1 !important;   /* 强制 1:1 正方形 */  object-fit: cover !important;     /* 居中裁剪，保证好看 */  display: block !important;}/* ========================================================= * Footer 导航：四个按钮始终一排 + 文本单行 * =======================================================*/.footer{  display: flex !important;  flex-wrap: nowrap !important;          /* 不允许换行 */  justify-content: space-around !important;  align-items: center !important;}/* 每个入口平均分配宽度，避免因为 padding 太大而折行或溢出 */.footer a{  flex: 1 1 0 !important;  min-width: 0 !important;  text-align: center !important;  padding: 4px 0 2px !important;         /* 去掉左右 32px 的大 padding */}/* 图标 + 文字垂直方向保持紧凑 */.footer img{  display: block;  margin-bottom: var(--footer-text-gap, 1px) !important;}/* 文本必须单行显示，太长就用省略号 */.footer a span{  display: block;  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;}/* ========================================================= * Footer 导航四个图标统一尺寸（首页/洋酒/收藏/群组） * 放在 base.css 最底部，作为最终覆盖 * =======================================================*/:root{  /* 这里就是你想要的图标大小，按视觉调：22~30px 都可以 */  --footer-icon-final: 26px;}.footer img{  width: var(--footer-icon-final) !important;  height: var(--footer-icon-final) !important;  display: block;  object-fit: contain;              /* 保证不被强行拉伸变形 */}/* 文字保持单行省略，防止挤到两行导致高度看起来不一致 */.footer a span{  display: block;  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;}/* ========================================================= * 全局底部安全留白 · 防止内容被固定 footer 遮挡（最终兜底） * =======================================================*//* 统一一个“页面底部安全距离”变量 */:root{  /*    * 说明：   * - var(--footer-h, 52px)：底部导航高度，读取你前面设置的 --footer-h，   *   没取到时默认 52px   * - 24px：额外加一点空隙，防止不同机型/浏览器计算误差   * - env(safe-area-inset-bottom, 0)：iOS 刘海机底部安全区   */  --page-safe-bottom: calc(    var(--footer-h, 52px) + 24px + env(safe-area-inset-bottom, 0px)  );}/* 1) 给 body 兜一个大底：所有页面都预留出 footer 的高度 */body{  padding-bottom: var(--page-safe-bottom) !important;}/* 2) 把之前对 .container 的 margin-bottom 统一收口，避免重复叠加奇怪效果 */.container{  margin-bottom: 0 !important;}/* ========================================================= * 底部导航 · 全页面统一最终版 * - 永远吸底 * - 四个图标等大、等高、对称 * - 干掉所有 transform / 各页小偏移 * =======================================================*//* 可以按自己喜好微调这几个参数的数值 */:root{  --footer-h: 56px;                          /* 底部导航总高度 */  --footer-icon: 26px;                       /* 图标边长 */  --footer-fs: 12px;                         /* 文案字号 */  --footer-safe-b: env(safe-area-inset-bottom, 0px);}/* 1) 导航条：永远固定在页面最底部 */.footer{  position: fixed !important;  left: 0;  right: 0;  bottom: 0 !important;  height: var(--footer-h) !important;  display: flex !important;  flex-wrap: nowrap !important;  justify-content: space-around !important;  align-items: center !important;  padding: 4px 0 calc(4px + var(--footer-safe-b)) !important;  z-index: 800 !important;}/* 2) 每个按钮平均分宽度，禁止各种奇怪的上移/下移 */.footer a{  flex: 1 1 0 !important;  min-width: 0 !important;  display: flex !important;  flex-direction: column;  align-items: center;  justify-content: center;  text-align: center;  padding: 0 !important;  margin: 0 !important;  transform: none !important;   /* ★ 清掉之前所有 translateY 调整 */}/* 3) 图标统一大小，四个页面完全一致 */.footer img{  width: var(--footer-icon) !important;  height: var(--footer-icon) !important;  display: block;  margin-bottom: 2px !important;}/* 4) 文案单行、省略号，防止挤成两行导致看起来不对称 */.footer a span{  display: block;  font-size: var(--footer-fs) !important;  line-height: 1.1 !important;  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;}/* 5) 内容区域统一给 footer 腾出空间，避免最后一屏被遮住 */body{  padding-bottom: calc(var(--footer-h) + 12px + var(--footer-safe-b)) !important;}:root{  --footer-h: 56px;  --footer-icon: 26px;  --footer-fs: 12px;  --footer-safe-b: env(safe-area-inset-bottom, 0px);}.footer{  position: fixed !important;  left: 0;  right: 0;  bottom: 0 !important;  height: var(--footer-h) !important;  display: flex !important;  flex-wrap: nowrap !important;  justify-content: space-around !important;  align-items: center !important;  padding: 4px 0 calc(4px + var(--footer-safe-b)) !important;  z-index: 800 !important;}.footer a{  flex: 1 1 0 !important;  min-width: 0 !important;  display: flex !important;  flex-direction: column;  align-items: center;  justify-content: center;  text-align: center;  padding: 0 !important;  margin: 0 !important;  transform: none !important;}.footer img{  width: var(--footer-icon) !important;  height: var(--footer-icon) !important;  display: block;  margin-bottom: 2px !important;}.footer a span{  display: block;  font-size: var(--footer-fs) !important;  line-height: 1.1 !important;  white-space: nowrap !important;  overflow: hidden !important;  text-overflow: ellipsis !important;}body{  padding-bottom: calc(var(--footer-h) + 12px + var(--footer-safe-b)) !important;}