@charset "utf-8";
/* ===================================================================
   m.thyoo.com · 手机站样式（唯一一份外链 CSS）
   变量来源：docs/mobile/design-spec.md §2；类名对齐 docs/mobile/preview/*
   纪律：本文件不出现硬编码色值，一律走 :root 变量（#fff / rgba 遮罩除外）
   =================================================================== */
:root{
  /* ---- 沿用 PC（gen/templates/_base.css，值不改） ---- */
  --forest:#23402f;--green:#2f6b45;--green-2:#4f8a63;
  --sage:#e9f1e7;--sage-2:#f3f7f0;--cream:#fbfaf6;
  --clay:#c96f3f;--clay-d:#a8552a;
  --ink:#1b241f;--body:#4b554e;--muted:#8a948c;--muted-2:#5f6b63;
  --line:#eceee8;--line-2:#e2e9e1;--white:#fff;
  --r:18px;
  /* ---- 手机站新增（design-spec §2.1） ---- */
  --price:#23402f;
  --veil:rgba(16,38,26,.62);--veil-2:rgba(16,38,26,.42);
  --ok:#2f6b45;--warn:#a15c1e;--warn-bg:#fdf4ea;
  --danger:#b03a2e;--danger-bg:#fdeeec;--info:#40657d;--info-bg:#eef3f7;
  --skel:#eef1ec;
  --r-xs:4px;--r-s:8px;--r-m:12px;--r-l:14px;--r-xl:18px;--r-full:999px;
  --sh-1:0 1px 2px rgba(27,36,31,.04);
  --sh-2:0 6px 18px rgba(27,36,31,.08);
  --sh-3:0 12px 40px rgba(27,36,31,.16);
  /* ---- 字号阶梯（§2.2，6 档不多不少） ---- */
  --t1:22px;--t2:17px;--t3:15px;--t4:14px;--t5:12.5px;--t6:11px;
  /* ---- 布局 ---- */
  --pad:16px;--top-h:44px;--bar-h:56px;
  --kf:0px;   /* 53kf 底栏占位（由 m.js 检测后写入） */
  /* ---- z-index 分层（§2.6，只用这 7 层） ---- */
  --z-stick:30;--z-top:40;--z-bar:45;--z-tab:50;--z-top-top:55;--z-modal:70;--z-toast:90;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;
  color:var(--body);background:var(--cream);-webkit-font-smoothing:antialiased;
  padding-bottom:calc(12px + env(safe-area-inset-bottom));
  overflow-x:hidden;
}
/* 底栏留白：has-nav / has-bar 可叠加（§2.3：底栏总高 + 12px） */
body.has-nav{padding-bottom:calc(var(--bar-h) + var(--kf) + 12px + env(safe-area-inset-bottom))}
body.has-bar{padding-bottom:calc(var(--bar-h) + var(--kf) + 12px + env(safe-area-inset-bottom))}
body.has-nav.has-bar{padding-bottom:calc(var(--bar-h) * 2 + var(--kf) + 12px + env(safe-area-inset-bottom))}

a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
img{max-width:100%;border:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pad{padding:0 var(--pad)}

/* ---------- 焦点可见（§6.3：全站禁止裸 outline:none） ---------- */
:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:inherit}
[id]{scroll-margin-top:calc(var(--top-h) + 8px)}

/* ---------- 顶栏 44 吸顶 ---------- */
.topbar{position:sticky;top:0;z-index:var(--z-top);height:var(--top-h);
  display:flex;align-items:center;gap:8px;padding:0 var(--pad);
  background:rgba(251,250,246,.94);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(236,238,232,.8)}
.topbar.is-scrolled{box-shadow:var(--sh-1)}
.topbar .logo{height:22px;width:auto;flex:0 0 auto;display:block}
.topbar .brand{font-size:15px;font-weight:700;color:var(--forest);letter-spacing:-.2px}
.tel{margin-left:auto;display:flex;align-items:center;gap:5px;min-height:44px;
  color:var(--forest);font-size:14px;font-weight:700;letter-spacing:-.2px}
.tel svg{width:15px;height:15px;flex:0 0 15px;fill:none;stroke:currentColor;
  stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* ---------- 面包屑 32（不吸顶） ---------- */
.crumbs{display:flex;align-items:center;gap:0;min-height:32px;padding:2px var(--pad) 0;
  font-size:12px;color:var(--muted-2);flex-wrap:wrap}
.crumbs a{color:var(--muted-2)}
.crumbs i{font-style:normal;color:#c9d2c9;padding:0 6px}
.crumbs span{color:var(--body)}

/* ---------- 页头标题 ---------- */
.phead{padding:6px var(--pad) 0}
.phead h1{font-size:var(--t1);line-height:1.35;font-weight:700;letter-spacing:-.3px;color:var(--forest)}
.phead p{margin-top:6px;font-size:var(--t5);line-height:1.6;color:var(--muted-2)}

/* ---------- 区块 + 区块头 44 ---------- */
.sect{margin-top:20px}
.sect.gap{margin-top:32px}
.shead{display:flex;align-items:center;gap:6px;min-height:44px;padding:0 var(--pad)}
.shead h2{font-size:var(--t2);line-height:1.45;font-weight:700;color:var(--forest);letter-spacing:-.2px}
.shead em{font-style:normal;font-size:var(--t5);color:var(--muted-2)}
.shead .more{margin-left:auto;font-size:var(--t5);color:var(--muted-2);
  display:flex;align-items:center;min-height:44px;padding-left:12px}
.sbody{padding:0 var(--pad)}

/* ---------- 搜索框 40（首页 / 搜索页 / 404） ---------- */
.searchwrap{padding:10px var(--pad) 0}
.sbox{display:flex;align-items:center;gap:7px;height:40px;background:var(--white);
  border:1px solid var(--line-2);border-radius:var(--r-full);padding:0 4px 0 14px;
  box-shadow:var(--sh-1);transition:border-color .2s,box-shadow .2s}
.sbox:focus-within{border-color:var(--green-2);box-shadow:0 0 0 4px rgba(79,138,99,.10)}
.sbox svg{width:17px;height:17px;flex:0 0 17px;fill:none;stroke:var(--muted);
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sbox input{flex:1;min-width:0;height:36px;border:0;outline:0;background:none;
  font-size:13.5px;color:var(--ink);appearance:none}
.sbox input::placeholder{color:var(--muted)}
.sbox .go{flex:0 0 auto;height:32px;padding:0 14px;display:flex;align-items:center;
  border-radius:var(--r-full);background:var(--green);color:var(--white);
  font-size:13px;font-weight:600}
.sbox .go[aria-disabled="true"]{opacity:.6}
/* 404 用：整条搜索框就是一个链接 */
a.sbox{padding-right:14px}
a.sbox .ph{flex:1;min-width:0;font-size:13.5px;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- 金刚区 5 格 ---------- */
.kk{margin:12px var(--pad) 0;background:var(--white);border-radius:var(--r-xl);
  box-shadow:var(--sh-1);padding:14px 8px 12px;
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.kk a{min-width:0;display:flex;flex-direction:column;align-items:center;
  gap:5px;padding:2px 0 3px;min-height:64px}
.kk .ic{width:26px;height:26px;flex:0 0 26px;fill:none;stroke:var(--green);
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.kk b{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;line-height:1.2;
  max-width:100%;overflow:hidden;text-overflow:ellipsis}
.kk span{font-size:10.5px;color:var(--muted-2);white-space:nowrap;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;max-width:100%}
.kk a.fill{background:var(--forest);border-radius:var(--r-l);justify-content:center;padding:0;gap:4px}
.kk a.fill .ic{stroke:var(--white)}
.kk a.fill b{color:var(--white);font-size:12.5px}
.kk a.fill span{color:rgba(255,255,255,.72)}

/* ---------- 联系条 44（补回电话曝光） ---------- */
.contact{margin:12px var(--pad) 0;min-height:44px;display:flex;align-items:center;
  gap:8px;background:var(--sage);border-radius:var(--r-m);padding:6px 12px}
.contact .call{display:flex;align-items:center;gap:5px;color:var(--forest);
  font-size:13.5px;font-weight:700;letter-spacing:-.2px;white-space:nowrap;flex:0 0 auto}
.contact .call svg{width:15px;height:15px;fill:none;stroke:var(--forest);stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round}
.contact .hint{font-size:11px;color:var(--muted-2);margin-left:auto;display:flex;
  align-items:center;gap:8px;white-space:nowrap}
.contact .hint i{width:1px;height:12px;background:#cfdcc9;font-style:normal}
.contact .hint u{text-decoration:none;color:var(--green);font-weight:600;font-size:11.5px}

/* ---------- 首屏主视觉 16:9（不是轮播） ---------- */
.hero{position:relative;margin:12px var(--pad) 0;border-radius:var(--r-xl);overflow:hidden;
  aspect-ratio:16/9}
.hero>.pic{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero .veil{position:absolute;left:0;right:0;bottom:0;height:96px;
  background:linear-gradient(to top,var(--veil),transparent)}
.hero .txt{position:absolute;left:14px;right:14px;bottom:13px;color:var(--white)}
.hero h1{font-size:20px;line-height:1.35;font-weight:700;letter-spacing:-.3px;
  text-shadow:0 1px 8px rgba(16,38,26,.35)}
.hero p{margin-top:4px;font-size:12.5px;line-height:1.5;color:rgba(255,255,255,.88);
  text-shadow:0 1px 6px rgba(16,38,26,.3)}

/* ---------- 图片占位（无图线路是常态，零请求） ---------- */
.ph-g1{background:linear-gradient(150deg,#a9c9b0,#5f9469 52%,#35603f)}
.ph-g2{background:linear-gradient(150deg,#c8d3b6,#7e9a63 50%,#41603a)}
.ph-g3{background:linear-gradient(150deg,#b6c8cf,#6f929e 52%,#395a63)}
.ph-g4{background:linear-gradient(150deg,#d6c3ae,#a9805a 52%,#6b4a2b)}
.ph-g5{background:linear-gradient(150deg,#cbb9c2,#9c7484 52%,#5b3b4a)}
.ph-g6{background:linear-gradient(150deg,#b9cbc6,#7ba49a 52%,#3f6b62)}

/* ---------- 线路卡 变体 A 大卡 ---------- */
.carda{display:block;background:var(--white);border-radius:var(--r-xl);overflow:hidden;
  box-shadow:var(--sh-1);margin-bottom:8px;transition:transform 80ms}
.carda:active{transform:scale(.995)}
.carda .pic{position:relative;aspect-ratio:16/10;overflow:hidden}
.carda .pic>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.carda .pic .veil{position:absolute;left:0;right:0;bottom:0;height:58px;
  background:linear-gradient(to top,rgba(16,38,26,.55),transparent)}
.tag-days{position:absolute;left:10px;bottom:10px;height:20px;display:flex;align-items:center;
  padding:0 8px;border-radius:var(--r-full);background:rgba(255,255,255,.92);
  color:var(--forest);font-size:var(--t6);font-weight:700}
.pricecap{position:absolute;right:10px;bottom:10px;height:22px;display:flex;align-items:baseline;
  gap:1px;padding:0 9px;border-radius:var(--r-full);background:var(--forest);
  color:var(--white);font-size:12.5px;font-weight:700;
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.pricecap u{text-decoration:none;font-size:9.5px;font-weight:400;
  color:rgba(255,255,255,.8);margin-left:1px}
.carda .bd{padding:12px 14px 14px;position:relative}
.carda h3,.carda .bd .t{display:block;font-size:var(--t3);line-height:1.5;font-weight:600;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  padding-right:44px}
.carda .meta{margin-top:4px;font-size:var(--t5);color:var(--muted-2);display:flex;
  align-items:center;gap:5px}
.carda .meta i{width:3px;height:3px;border-radius:50%;background:#c9d2c9;font-style:normal}
.carda .mini{position:absolute;right:12px;bottom:12px;width:36px;height:36px;
  border-radius:50%;background:var(--sage);display:flex;align-items:center;justify-content:center}
.carda .mini::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px}
.carda .mini svg{width:16px;height:16px;fill:none;stroke:var(--green);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* ---------- 线路卡 变体 B 横滑小卡 ---------- */
.hscroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;
  margin:0 calc(var(--pad) * -1);padding:0 var(--pad) 2px;
  scroll-snap-type:x mandatory;scroll-padding-left:var(--pad);overflow-y:hidden}
.hscroll::-webkit-scrollbar{display:none}
.cardb{flex:0 0 260px;scroll-snap-align:start;background:var(--white);
  border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-2)}
.cardb .pic{position:relative;aspect-ratio:16/10;overflow:hidden}
.cardb .pic>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cardb .bd{padding:10px 12px 12px}
.cardb h3,.cardb .bd .t{display:block;font-size:var(--t4);line-height:1.5;font-weight:600;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:42px}
.cardb .foot{margin-top:6px;display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.cardb .foot .k{font-size:var(--t6);color:var(--muted-2);white-space:nowrap}
.cardb .foot .p{font-size:13.5px;font-weight:700;color:var(--price);white-space:nowrap;
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.cardb .foot .p u{text-decoration:none;font-size:10.5px;font-weight:400;
  color:var(--muted-2);margin-left:1px}

/* ---------- 线路卡 变体 C 紧凑列表项（分类/分页/搜索） ---------- */
.cardc{display:flex;align-items:center;gap:10px;background:var(--white);
  border-radius:var(--r-l);box-shadow:var(--sh-1);padding:10px;margin-bottom:8px;
  min-height:95px;transition:transform 80ms}
.cardc:active{transform:scale(.995)}
.cardc .pic{position:relative;flex:0 0 100px;width:100px;height:75px;border-radius:var(--r-s);
  overflow:hidden}
.cardc .pic>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cardc .pic em{position:absolute;left:5px;bottom:5px;height:18px;display:flex;align-items:center;
  padding:0 6px;border-radius:var(--r-full);background:rgba(255,255,255,.92);
  color:var(--forest);font-size:10.5px;font-weight:700;font-style:normal}
.cardc .mid{flex:1;min-width:0}
.cardc h3,.cardc .mid b{display:-webkit-box;font-size:14.5px;line-height:1.45;
  font-weight:600;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;word-break:break-word}
.cardc .meta,.cardc .mid i{display:block;margin-top:4px;font-size:12px;color:var(--muted-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:normal}
.cardc .bottom{margin-top:6px;display:flex;align-items:center;gap:8px}
.cardc .pr{font-size:16px;font-weight:800;color:var(--price);min-width:84px;
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}
.cardc .pr u{text-decoration:none;font-size:11px;font-weight:400;color:var(--muted-2)}
.cardc .ask{margin-left:auto;position:relative;height:28px;display:flex;align-items:center;
  padding:0 10px;border-radius:var(--r-full);background:var(--sage);color:var(--green);
  font-size:11.5px;font-weight:600;white-space:nowrap}
.cardc .ask::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;min-width:100%}

/* ---------- 价格组件（§3.7：自成一行/胶囊，容器给 min-width） ---------- */
.p1{display:flex;align-items:baseline;gap:2px;color:var(--price);min-width:96px;
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.p1 b{font-size:30px;line-height:1;font-weight:800;letter-spacing:-.6px}
.p1 i{font-style:normal;font-size:16px;font-weight:700}
.p1 u{text-decoration:none;font-size:12px;color:var(--muted-2);margin-left:2px}
.p4{font-size:13.5px;font-weight:700;color:var(--price)}
.p4 u{text-decoration:none;font-size:10.5px;font-weight:400;color:var(--muted-2)}

/* ---------- 筛选胶囊行 32 ---------- */
main{overflow-x:clip} /* 负 margin 通栏横滑条（.chips）不许撑破文档，滚动由条自身承担 */
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;
  margin:0 calc(var(--pad) * -1);padding:4px var(--pad) 4px;
  scroll-padding-left:var(--pad)}
.chips::-webkit-scrollbar{display:none}
.chips a{flex:0 0 auto;position:relative;height:32px;display:flex;align-items:center;
  gap:4px;padding:0 12px;border-radius:var(--r-full);background:var(--white);
  border:1px solid var(--line-2);color:var(--body);font-size:var(--t5);font-weight:500;
  white-space:nowrap}
.chips a::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;min-width:100%}
.chips a em{font-style:normal;font-size:10.5px;opacity:.65}
.chips a.on{background:var(--sage);border-color:#cfe2d0;color:var(--green);font-weight:600}

/* ---------- 资讯列表（纯文字） ---------- */
.news{border-top:1px solid var(--line)}
.news li{border-bottom:1px solid var(--line)}
.news a{display:block;padding:12px 0}
.news b{display:block;font-size:var(--t4);line-height:1.5;font-weight:500;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news i{display:block;margin-top:4px;font-size:var(--t5);color:var(--muted-2);font-style:normal}
.news i span{color:var(--green)}

/* ---------- 签证卡 ---------- */
.vcard{display:block;background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:12px 14px;margin-bottom:8px}
.vcard .vc-h{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.vcard .vc-h b{font-size:var(--t3);line-height:1.45;font-weight:600;color:var(--ink)}
.vcard .vc-h em{font-style:normal;font-size:10.5px;color:var(--muted-2);
  background:var(--sage-2);border-radius:var(--r-full);padding:1px 7px}
.vcard .vc-m{display:block;margin-top:6px;font-size:var(--t5);color:var(--muted-2)}
.vcard .vc-b{display:flex;align-items:baseline;gap:6px;margin-top:6px}
.vcard .vc-b em{font-style:normal;font-size:16px;font-weight:800;color:var(--price);
  font-variant-numeric:tabular-nums}
.vcard .vc-b i{font-style:normal;font-size:11px;color:var(--muted-2)}
.vcard .vc-b u{text-decoration:none;margin-left:auto;font-size:var(--t5);color:var(--green);
  font-weight:600}

/* ---------- 信息表 / 材料清单（签证详情） ---------- */
.vinfo{width:100%;border-collapse:collapse;background:var(--white);border-radius:var(--r-l);
  overflow:hidden;box-shadow:var(--sh-1)}
.vinfo th,.vinfo td{padding:10px 14px;font-size:var(--t4);line-height:1.6;text-align:left;
  vertical-align:top;border-bottom:1px solid var(--line)}
.vinfo th{width:88px;color:var(--muted-2);font-weight:400;white-space:nowrap}
.vinfo td{color:var(--ink)}
.vinfo tr:last-child th,.vinfo tr:last-child td{border-bottom:0}
.vmat{margin-top:16px}
.vmat h3{font-size:var(--t2);font-weight:700;color:var(--forest);margin-bottom:8px}
.vmat ul{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:6px 14px}
.vmat li{position:relative;padding:7px 0 7px 14px;font-size:var(--t4);line-height:1.75;
  color:var(--body);border-bottom:1px solid var(--line)}
.vmat li:last-child{border-bottom:0}
.vmat li::before{content:"";position:absolute;left:2px;top:16px;width:4px;height:4px;
  border-radius:50%;background:var(--green-2)}

/* ---------- 折叠（FAQ / 须知，用原生 details，零 JS） ---------- */
.fold{border-top:1px solid var(--line)}
.fold details{border-bottom:1px solid var(--line);background:var(--white)}
.fold summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:12px 0;
  font-size:var(--t4);font-weight:600;color:var(--ink);cursor:pointer;list-style:none}
.fold summary::-webkit-details-marker{display:none}
.fold summary::after{content:"+";margin-left:auto;color:var(--green);font-weight:700;
  font-size:16px;line-height:1}
.fold details[open] summary::after{content:"–"}
.fold .fa{padding:0 0 14px;font-size:var(--t4);line-height:1.8;color:var(--body)}

/* ---------- 定制页：卖点 / 步骤 / 类型 / 客户经理 ---------- */
.sell{display:flex;flex-direction:column;gap:8px}
.sell li{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:12px 14px}
.sell b{display:block;font-size:var(--t3);font-weight:600;color:var(--ink)}
.sell span{display:block;margin-top:4px;font-size:var(--t5);line-height:1.7;color:var(--muted-2)}
.steps{counter-reset:st;background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:6px 14px}
.steps li{position:relative;padding:11px 0 11px 30px;border-bottom:1px solid var(--line)}
.steps li:last-child{border-bottom:0}
.steps li::before{counter-increment:st;content:counter(st);position:absolute;left:0;top:12px;
  width:20px;height:20px;border-radius:50%;background:var(--sage);color:var(--green);
  font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.steps b{display:block;font-size:var(--t4);font-weight:600;color:var(--ink)}
.steps span{display:block;margin-top:2px;font-size:var(--t5);line-height:1.7;color:var(--muted-2)}
.kinds{display:grid;grid-template-columns:1fr;gap:8px}
.kinds li{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:11px 14px}
.kinds b{display:block;font-size:var(--t4);font-weight:600;color:var(--ink)}
.kinds span{display:block;margin-top:3px;font-size:var(--t5);line-height:1.7;color:var(--muted-2)}
.manager{margin-top:12px;background:var(--sage-2);border-radius:var(--r-l);padding:16px 14px}
.manager .t{font-size:var(--t5);color:var(--muted-2)}
.manager .n{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px}
.manager .n a{font-size:20px;font-weight:800;color:var(--forest);letter-spacing:-.4px;
  font-variant-numeric:tabular-nums;min-height:44px;display:flex;align-items:center}
.manager .h{margin-top:6px;font-size:var(--t5);line-height:1.7;color:var(--muted-2)}
.wechatcard{margin-top:12px;display:flex;align-items:center;gap:12px;
  background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:12px 14px}
.wechatcard .qr{width:72px;height:72px;border-radius:var(--r-s);flex:0 0 72px;object-fit:contain;
  background:var(--sage-2)}
.wechatcard .tx{flex:1;min-width:0}
.wechatcard .tx b{display:block;font-size:var(--t4);font-weight:600;color:var(--ink)}
.wechatcard .tx span{display:block;margin-top:4px;font-size:var(--t5);line-height:1.6;
  color:var(--muted-2)}

/* ---------- 404 大区按钮（2×2 胶囊栅格） ---------- */
.areagrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.areagrid a{min-height:44px;display:flex;align-items:center;justify-content:center;
  background:var(--white);border:1px solid var(--line-2);border-radius:var(--r-m);
  font-size:var(--t4);font-weight:600;color:var(--forest)}

/* ---------- 空态 ---------- */
.empty{min-height:220px;padding:40px 24px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center}
.empty svg{width:120px;height:96px;fill:var(--sage);stroke:var(--line-2);stroke-width:1.5;
  margin-bottom:14px}
.empty b{font-size:var(--t3);font-weight:600;color:var(--ink)}
.empty p{margin-top:6px;font-size:var(--t5);line-height:1.7;color:var(--muted-2);max-width:280px}
.empty .act{margin-top:16px;height:44px;display:inline-flex;align-items:center;padding:0 20px;
  border-radius:var(--r-full);background:var(--sage);color:var(--green);font-size:var(--t4);
  font-weight:600}

/* ---------- 分页 ---------- */
.pager{margin-top:24px;display:flex;align-items:center;justify-content:center;
  gap:6px;flex-wrap:wrap}
.pager a,.pager span{min-width:40px;height:40px;display:flex;align-items:center;
  justify-content:center;border-radius:var(--r-m);background:var(--white);
  border:1px solid var(--line);font-size:var(--t4);color:var(--body);
  font-variant-numeric:tabular-nums}
.pager .cur{background:var(--sage);border-color:transparent;color:var(--green);font-weight:700}
.pager .off{opacity:.4;pointer-events:none}
.pager .gap{border:0;background:none;color:var(--muted-2)}
.pager-tip{margin-top:10px;text-align:center;font-size:11.5px;color:var(--muted-2)}

/* ---------- 搜索页 ---------- */
.s-hot{display:flex;align-items:center;gap:8px;padding:10px var(--pad) 0;flex-wrap:wrap}
.s-hot span{font-size:var(--t5);color:var(--muted-2)}
.s-hot a{position:relative;height:28px;display:inline-flex;align-items:center;padding:0 11px;
  border-radius:var(--r-full);background:var(--sage-2);color:var(--green);
  font-size:var(--t5);font-weight:500}
.s-hot a::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;min-width:100%}
.s-sum{padding:12px var(--pad) 0;font-size:var(--t5);color:var(--muted-2)}
.s-sum b{color:var(--ink);font-weight:600}
.s-tip{margin:10px var(--pad) 0;padding:10px 12px;border-radius:var(--r-m);
  background:var(--warn-bg);color:var(--warn);font-size:var(--t5);line-height:1.7}
.s-tip.info{background:var(--info-bg);color:var(--info)}
.s-group{margin-top:20px}
.s-group h2{padding:0 var(--pad);font-size:var(--t2);font-weight:700;color:var(--forest);
  min-height:36px;display:flex;align-items:center}
.s-group h2 em{font-style:normal;font-size:var(--t5);color:var(--muted-2);margin-left:6px}
.s-more{display:block;padding:12px var(--pad);font-size:var(--t5);color:var(--green);
  font-weight:600;text-align:center}
.s-item{display:block;padding:12px var(--pad);border-bottom:1px solid var(--line)}
.s-item b{font-size:var(--t4);line-height:1.5;font-weight:500;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.s-item span{display:block;margin-top:4px;font-size:var(--t5);color:var(--muted-2)}
.s-line{padding:0}

/* ---------- 页脚 ---------- */
.footer{margin-top:32px;background:var(--white);border-top:1px solid var(--line);
  padding:18px var(--pad) 20px}
.footer p{font-size:11.5px;line-height:1.9;color:var(--muted-2)}
.footer .brand{color:var(--forest);font-weight:600;font-size:12px}
.footer .beian{margin-top:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.footer .beian a{display:inline-flex;align-items:center;gap:4px;color:var(--muted-2);
  font-size:11.5px;min-height:24px}
.footer .beian img{width:20px;height:20px}
.footer .note{margin-top:8px;color:var(--muted-2)}
.footer .pc{margin-top:10px;display:inline-flex;align-items:center;gap:4px;min-height:44px;
  font-size:11.5px;color:var(--green);font-weight:600}
.footer .mp{margin-top:4px}

/* ---------- tabbar 56 + 安全区 ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:var(--kf);z-index:var(--z-tab);
  height:calc(var(--bar-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);display:flex;
  background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);border-top:1px solid var(--line)}
.tabbar ul{display:flex;width:100%}
.tabbar li{flex:1;min-width:0;display:flex}
.tabbar a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:2px;min-height:56px;color:var(--muted-2)}
.tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.tabbar b{font-size:10px;font-weight:500;line-height:1.2}
.tabbar a.on{color:var(--green)}
.tabbar a.on b{font-weight:600}

/* ---------- 底部操作条 56（2/3 键） ---------- */
.actionbar{position:fixed;left:0;right:0;bottom:var(--kf);z-index:var(--z-bar);
  height:calc(var(--bar-h) + env(safe-area-inset-bottom));
  padding:6px 12px env(safe-area-inset-bottom);display:flex;gap:8px;align-items:center;
  background:var(--white);border-top:1px solid var(--line);
  box-shadow:0 -6px 18px rgba(27,36,31,.06)}
.has-nav .actionbar{bottom:calc(var(--kf) + var(--bar-h) + env(safe-area-inset-bottom))}
.actionbar a{height:44px;border-radius:var(--r-m);display:flex;align-items:center;
  justify-content:center;font-weight:600;font-size:14px;white-space:nowrap;gap:4px}
/* 页面内的同款按钮（定制页首屏/页尾）也复用这套外观，不依赖 .actionbar 上下文 */
.ab-main,.ab-kf,.ab-third{height:44px;border-radius:var(--r-m);display:flex;
  align-items:center;justify-content:center;font-weight:600;font-size:14px;
  white-space:nowrap;gap:5px;padding:0 12px}
.ab-main svg,.ab-kf svg,.ab-third svg{width:14px;height:14px;flex:0 0 14px;fill:none;
  stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ab-main{flex:1.7;background:var(--green);color:var(--white);
  font-size:14.5px!important;font-weight:700!important;letter-spacing:-.2px}
.ab-main svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.ab-two .ab-main{flex:1.2}
.ab-kf{flex:1;background:var(--sage-2);border:1px solid #d9e6d3;color:var(--green)}
/* Kf53On=0 时整块客服入口不渲染（用 body 上的数据属性驱动，避免模板写条件） */
body[data-kf53="0"] .js-kf{display:none!important}
.ab-third{flex:1;background:var(--clay-d);color:var(--white)}
.lb-short{display:none}

/* ---------- 返回顶部 44 ---------- */
.totop{position:fixed;right:12px;z-index:var(--z-top-top);width:44px;height:44px;
  border-radius:50%;background:var(--white);box-shadow:var(--sh-2);
  display:none;align-items:center;justify-content:center;
  bottom:calc(var(--kf) + var(--bar-h) + env(safe-area-inset-bottom) + 16px)}
.totop.show{display:flex}
.totop svg{width:18px;height:18px;fill:none;stroke:var(--forest);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* ---------- 微信弹层（抽屉） ---------- */
.mask{position:fixed;inset:0;z-index:var(--z-modal);background:var(--veil-2);
  opacity:0;pointer-events:none;transition:opacity .18s}
.mask.show{opacity:1;pointer-events:auto}
.wxmodal{position:fixed;left:0;right:0;bottom:0;z-index:calc(var(--z-modal) + 5);
  background:var(--white);border-radius:20px 20px 0 0;
  padding:20px 16px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(102%);transition:transform .18s;
  max-width:720px;margin:0 auto}
.wxmodal.show{transform:translateY(0)}
.wxmodal .bar{width:36px;height:4px;border-radius:2px;background:#e0e0dd;margin:0 auto 14px}
.wxmodal h2{font-size:16px;font-weight:700;color:var(--ink);text-align:center}
.wxmodal .mp{margin-top:6px;text-align:center;font-size:15px;font-weight:700;color:var(--green);
  border-bottom:1px dashed var(--line-2);padding-bottom:8px}
.wxmodal .qr{display:block;width:120px;height:120px;margin:14px auto 0;object-fit:contain}
.wxmodal .btn{display:flex;align-items:center;justify-content:center;height:44px;margin-top:14px;
  border-radius:var(--r-full);background:var(--green);color:var(--white);font-size:15px;
  font-weight:700;width:100%}
.wxmodal .tip{margin-top:10px;text-align:center;font-size:var(--t5);color:var(--muted-2)}
.wxmodal .close{display:flex;align-items:center;justify-content:center;height:44px;
  margin-top:4px;width:100%;color:var(--muted-2);font-size:var(--t4)}
body.m-modal-open{overflow:hidden}
body.m-modal-open .tabbar,body.m-modal-open .actionbar{visibility:hidden}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:calc(var(--bar-h) * 2 + env(safe-area-inset-bottom) + 24px);
  transform:translate(-50%,8px);z-index:var(--z-toast);background:rgba(27,36,31,.9);
  color:var(--white);font-size:var(--t5);padding:9px 16px;border-radius:var(--r-full);
  opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;white-space:nowrap}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- 53kf 浮标让位（design-spec §8.1；选择器需真机联调确认） ---------- */
#kf53-wrap,#kf5-online-wrap,.kf53-float,#kf_float{
  bottom:calc(var(--bar-h) + env(safe-area-inset-bottom) + 12px)!important;
  right:12px!important;width:44px!important;height:44px!important}
body.m-modal-open #kf53-wrap,body.m-modal-open #kf5-online-wrap,
body.m-modal-open .kf53-float,body.m-modal-open #kf_float{
  visibility:hidden!important;pointer-events:none!important}
body.has-bar .totop{bottom:calc(var(--kf) + var(--bar-h) + 68px + env(safe-area-inset-bottom))}

/* ---------- 响应式（§5：XS/S/M/L/平板 五档） ---------- */
@media (max-width:359px){
  :root{--pad:14px;--t1:20px}
  .hero h1{font-size:19px}
  .kk{padding:12px 6px 10px;gap:4px}
  .kk .ic{width:24px;height:24px;flex:0 0 24px}
  .kk b{font-size:12px}
  .kk a.fill b{font-size:11.5px}
  .contact{padding:6px 10px;gap:6px}
  .contact .call{font-size:12.5px}
  .p1 b{font-size:26px}
  .cardc .pic{flex:0 0 96px;width:96px;height:72px}
  .cardc h3{font-size:14px}
  .actionbar a{font-size:13.5px}
  .lb-full{display:none}
  .lb-short{display:inline}
}
@media (min-width:414px){
  .cardb{flex-basis:280px}
  .carda .pic{max-height:260px}
}
@media (min-width:768px){
  .topbar,.actionbar,.tabbar,.footer{max-width:720px;margin-left:auto;margin-right:auto}
  body{background:var(--sage-2)}
  .topbar,.actionbar,.tabbar{left:50%;right:auto;transform:translateX(-50%);width:100%}
  .wrap{max-width:720px;margin:0 auto;background:var(--cream);min-height:100vh}
  .phead h1{font-size:24px}
  .shead h2{font-size:18px}
  .hero{max-height:380px}
}

/* ---------- 动效偏好（§6.4） ---------- */
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ================================================================
   Batch B 组件（首页统计行 / 大区卡 / 详情页首屏 / 班期表 / 行程 / 费用）
   ================================================================ */
:root{--ph-grad:linear-gradient(150deg,var(--sage-2),var(--sage) 52%,var(--forest))}

/* 首页统计行（主视觉之下，金刚区之上） */
.stats{margin:10px var(--pad) 0;font-size:12.5px;color:var(--muted-2);
  font-variant-numeric:tabular-nums}
.stats b{color:var(--forest);font-weight:700}

/* 首页主视觉里的拨号按钮 */
.hero .txt .go{display:inline-flex;align-items:center;gap:6px;margin-top:10px;
  min-height:40px;padding:0 18px;border-radius:var(--r-full);background:var(--white);
  color:var(--forest);font-size:14px;font-weight:700}
.hero .txt .go svg{width:15px;height:15px;fill:none;stroke:var(--forest);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* 线路总览大区卡 */
.acard{display:block;background:var(--white);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:13px 14px;margin-bottom:8px}
.acard .row1{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.acard .row1 b{font-size:17px;font-weight:700;color:var(--forest)}
.acard .meta{font-size:12px;color:var(--muted-2);font-variant-numeric:tabular-nums;
  white-space:nowrap}
.acard .meta i{display:inline-block;width:1px;height:10px;background:var(--line-2);
  margin:0 6px;vertical-align:-1px}
.acard .row2{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:8px;flex-wrap:wrap}
.acard .hotchips{font-size:12px;color:var(--muted-2)}
.acard .hotchips em{font-style:normal;background:var(--sage-2);color:var(--green);
  border-radius:var(--r-full);padding:1px 8px;margin-left:4px}
.acard .more{font-size:12.5px;font-weight:600;color:var(--green);white-space:nowrap;
  min-height:36px;display:inline-flex;align-items:center}

/* 详情页首屏（不是 16:9 定高：内容多，min-height 保首屏） */
.dhero{position:relative;margin:12px var(--pad) 0;border-radius:var(--r-xl);
  overflow:hidden;background-size:cover;background-position:center;min-height:230px}
.dhero .veil{position:absolute;inset:0;
  background:linear-gradient(to top,var(--veil) 12%,var(--veil-2) 60%,transparent)}
.dhero .txt{position:relative;z-index:1;padding:18px 14px 14px;color:var(--white);
  display:flex;flex-direction:column;min-height:230px;justify-content:flex-end}
.dhero h1{font-size:19px;line-height:1.4;font-weight:700;letter-spacing:-.3px;
  text-shadow:0 1px 8px rgba(16,38,26,.35)}
.dhero .chips{margin-top:8px;flex-wrap:wrap}
.dhero .chips li{background:rgba(255,255,255,.16);color:var(--white);
  border:1px solid rgba(255,255,255,.35);font-size:11.5px}
.dhero .pricerow{margin-top:10px;display:flex;align-items:baseline;gap:8px}
.dhero .pricerow strong{font-size:24px;font-weight:800;color:var(--white);
  font-variant-numeric:tabular-nums;text-shadow:0 1px 6px rgba(16,38,26,.4)}
.dhero .pricerow span{font-size:12px;color:rgba(255,255,255,.85)}
.dhero .buyrow{display:flex;gap:8px;margin-top:12px}
.dhero .buyrow .go{flex:1;display:inline-flex;align-items:center;justify-content:center;
  gap:6px;min-height:44px;border-radius:var(--r-m);background:var(--white);
  color:var(--forest);font-size:14px;font-weight:700}
.dhero .buyrow .go svg{width:15px;height:15px;fill:none;stroke:var(--forest);
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dhero .buyrow .book{flex:1;display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;border-radius:var(--r-m);background:var(--green);color:var(--white);
  font-size:14px;font-weight:700}
.dhero .buyrow .book:active{background:var(--green-2)}

/* 多图缩略条 */
.thumbs{display:flex;gap:6px;overflow-x:auto;padding:8px var(--pad) 0;
  list-style:none;margin:0;scrollbar-width:none}
.thumbs::-webkit-scrollbar{display:none}
.thumbs .pic{display:block;width:96px;height:64px;border-radius:var(--r-s);
  background-size:cover;background-position:center}

/* 名称标签 chips / 产品编号 */
.chips.tags{margin:10px var(--pad) 0}
.chips.tags li{background:var(--sage-2);color:var(--green);border:0}
.lineno{margin:12px var(--pad) 0;background:var(--white);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:11px 14px;font-size:12.5px;color:var(--muted-2)}
.lineno b{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:2px}
.lineno i{display:block;font-style:normal;margin-top:3px;font-size:11.5px;color:var(--muted-2)}

/* 班期表 */
.ptable{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:6px 12px;overflow:hidden}
.ptable table{width:100%;border-collapse:collapse;font-size:13px}
.ptable th{font-weight:600;color:var(--muted-2);text-align:left;padding:8px 4px 6px;
  font-size:11.5px;border-bottom:1px solid var(--line)}
.ptable td{padding:9px 4px;border-bottom:1px solid var(--line);color:var(--body);
  font-variant-numeric:tabular-nums}
.ptable tr:last-child td{border-bottom:0}
.pt-more summary{list-style:none;cursor:pointer;min-height:44px;display:flex;
  align-items:center;justify-content:center;font-size:13px;font-weight:600;
  color:var(--green)}
.pt-more summary::-webkit-details-marker{display:none}
.pt-more table{margin-top:-4px}

/* 费用参考三行（复用 .vinfo 的表格观感） */
.vinfo.pkg{margin-top:8px}
.vinfo.pkg caption{text-align:left;font-size:11.5px;color:var(--muted-2);
  padding:6px 2px}
.vinfo.pkg th{width:64px;font-weight:600;color:var(--muted-2);text-align:left}

/* 行程特色 / 预订须知 / 费用包含不含 */
.sect .sbody.feature,.sect .sbody.notes{background:var(--white);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:12px 14px;font-size:14px;line-height:1.85;color:var(--body)}
.sect .sbody.feature p{margin:0 0 8px}
.fee .box{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:12px 14px;margin-bottom:8px}
.fee .box h3{font-size:14px;font-weight:700;color:var(--forest);margin:0 0 8px}
.fee .box ul{margin:0;padding-left:18px;font-size:13.5px;line-height:1.9;color:var(--body)}

/* 客户经理卡 */
.manager .mrow{display:flex;align-items:center;gap:8px;margin-top:6px;
  font-size:13.5px;flex-wrap:wrap}
.manager .mrow i{width:1px;height:12px;background:var(--line-2);font-style:normal}
.manager .mrow a{color:var(--green);font-weight:700;
  font-variant-numeric:tabular-nums}

/* 每日行程（PC 同源 DOM：.day/.dk/.meals） */
.days{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:4px 14px;margin:0 var(--pad) 8px}
.day{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.day:last-child{border-bottom:0}
.day .dk{flex:0 0 44px}
.day .dk b{display:block;font-size:15px;font-weight:800;color:var(--green)}
.day .dk span{font-size:11px;color:var(--muted-2);white-space:nowrap}
.day h4{margin:0;font-size:14px;font-weight:600;color:var(--ink);line-height:1.5}
.day .meals{margin-top:4px}
.day .meals b{font-weight:400;font-size:11.5px;color:var(--muted-2);margin-right:8px}
.day p{margin:6px 0 0;font-size:13px;line-height:1.8;color:var(--body)}

/* 详情页区块间距微调 */
.sect .sbody .ptable,.sect .sbody .vinfo.pkg{margin-left:0;margin-right:0}
.sect .sbody>div:empty,.sect .sbody>table:empty{display:none}

@media (max-width:359px){
  .dhero .buyrow .go,.dhero .buyrow .book{min-height:40px;font-size:13px}
  .acard .row1 b{font-size:15.5px}
}

/* ---------- 资讯详情 ---------- */
.nart{background:var(--white);border-radius:var(--r-l);box-shadow:var(--sh-1);
  padding:16px var(--pad) 18px;margin:12px var(--pad) 0}
.nart h1{font-size:19px;line-height:1.5;font-weight:700;color:var(--ink);
  letter-spacing:-.3px;margin:0}
.nmeta{margin:10px 0 0;font-size:12px;color:var(--muted-2);display:flex;gap:8px;
  flex-wrap:wrap;font-style:normal}
.nmeta i{font-style:normal}
.article{margin-top:14px;font-size:15px;line-height:1.9;color:var(--body);
  word-break:break-word}
.article p{margin:0 0 12px}
.article img{max-width:100%;height:auto;border-radius:var(--r-m)}
.article h2,.article h3{font-size:16px;color:var(--forest);margin:18px 0 8px}
.article table{max-width:100%;display:block;overflow-x:auto}
.pnav{margin:12px var(--pad) 0;display:flex;flex-direction:column;gap:8px}
.pnav .pn{display:flex;gap:8px;align-items:baseline;background:var(--white);
  border-radius:var(--r-l);box-shadow:var(--sh-1);padding:12px 14px;
  font-size:13.5px;color:var(--ink);line-height:1.5}
.pnav .pn span{flex:0 0 auto;font-size:11.5px;color:var(--muted-2)}
.pnav .pn.nx span{order:2}
