/* ============================================================
   产品详情页 - 前台样式
   桌面：纵向流 + 右侧悬浮预订卡
   移动：全单列 + 底部吸底 CTA
   ============================================================ */

.pd-wrap { max-width: 1280px; margin: 0 auto; padding: 0 20px 90px; }

/* ===== 内容宽度与头部严格对齐（PC + 手机都生效）=====
   头部：.site-container  max-width 1280 + padding 20  → 内容 1240
   内容：main.container   max-width 1280 + padding 20
         └ .pd-wrap      max-width 1280 + padding 20  → 内容 1200（每侧多 20px，共窄 40px）
   去掉 main 那一层，只由 .pd-wrap 提供 20px，左右边缘就与头部一致了。
   手机端另有覆盖（总内边距压到 12px，与参考站一致），见文件末尾媒体查询。 */
.page-product main.container,
.page-product main.container-fluid { padding-left: 0; padding-right: 0; }

/* 头部 → 面包屑 之间的间距：<main> 带 Bootstrap 类 py-3 / py-lg-4
   （≥992px 时上内边距 1.5rem = 24px），详情页这里收到 12px，别让面包屑离头部太远。
   注意：Bootstrap 的 .py-* 工具类带 !important，这里必须同样用 !important 才能覆盖。 */
.page-product main { padding-top: 12px !important; }

/* 面包屑 .p-crumb 在 .pd-wrap 之外（是 main 的直接子元素）。
   main 的内边距去掉后它会贴到 main 的内容边缘 → 比下面内容区靠左 20px。
   这里给它和 .pd-wrap 相同的外框与左右内边距，保证「首页」与内容左对齐。
   竖向内边距由 2px / 14px 收到 0 / 6px：面包屑整块高度 42px → 32px */
.page-product .p-crumb {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 20px 6px;
}

/* 面包屑文字不加粗：portal.css 里 .p-crumb > span:last-child 是 font-weight:600，
   这里覆盖回常规字重（限定详情页，其他页面的面包屑保持原样） */
.page-product .p-crumb > span:last-child { font-weight: 400; }

/* ================= Hero ================= */
.pd-hero {
    position: relative;
    height: 380px;
    margin: 0 calc(50% - 50vw) 0;
    background-color: #2b2b2b;
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: flex-end;
}

/* ===== 手机端标题区（参考站手机端把标题放在大图【上方】独立展示，图上不压文字）=====
   仅移动端显示；PC 端用 .pd-hero 里的文案 */
.pd-m-head { display: none; }

/* ===== 手机端主图轮播（小红书风格：左右滑动 + 右下角页码 + 圆点，不自动播放）=====
   桌面端默认隐藏，只有移动端媒体查询里才显示 */
.pd-hero-carousel {
    display: none;
    position: relative;
    /* 高度由图片决定（不裁切，同参考站 product-gallery 的 width:100%/height:auto） */
    margin: 0 calc(50% - 50vw) 0;
    overflow: hidden;
    background: #2b2b2b;
}
.pd-hero-track {
    display: flex;
    transition: transform .28s ease;
    will-change: transform;
}
.pd-hero-slide {
    flex: 0 0 100%;
}
.pd-hero-slide img {
    display: block;
    width: 100%;
    height: auto;
}
/* 右下角「1/3」页码 */
.pd-hero-count {
    position: absolute;
    right: 12px; bottom: 12px; z-index: 3;
    background: rgba(0, 0, 0, .45);
    color: #fff;
    font-size: .72rem;
    line-height: 1.9;
    padding: 0 10px;
    border-radius: 20px;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}
/* 底部圆点指示 */
.pd-hero-dots {
    position: absolute;
    left: 0; right: 0; bottom: 12px; z-index: 3;
    display: flex;
    justify-content: center;
    gap: 5px;
}
.pd-hero-dots i {
    width: 5px; height: 5px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .5);
    transition: width .2s, background .2s;
}
.pd-hero-dots i.on { width: 14px; border-radius: 3px; background: #fff; }
/* ===== 左右箭头：明示「这张图可以左右滑」=====
   半透明黑底 + 白箭头 + 毛玻璃（与上面「1/3」页码同一套质感），垂直居中。
   首张时左箭头、末张时右箭头淡出（.is-off）—— 既省得点了没反应，也提示还能往哪边滑。
   这里用淡出而不是 display:none，避免箭头忽隐忽现造成跳动。
   父级 .pd-hero-carousel 在 PC 端是 display:none，所以箭头只出现在手机端。 */
.pd-hero-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 4;
    width: 34px; height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(0, 0, 0, .42);
    color: #fff;
    font-size: .9rem;
    line-height: 1;
    cursor: pointer;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .22);
    transition: opacity .22s ease, transform .22s ease, background .22s ease;
    -webkit-tap-highlight-color: transparent;
}
.pd-hero-arrow.prev { left: 10px; }
.pd-hero-arrow.next { right: 10px; }
.pd-hero-arrow:active { background: rgba(0, 0, 0, .62); transform: translateY(-50%) scale(.9); }
.pd-hero-arrow.is-off { opacity: 0; pointer-events: none; }
/* 首次进来轻轻呼吸 3 下吸引注意，用户一交互就停（.is-hint 由脚本移除） */
.pd-hero-arrow.is-hint { animation: pdArrowHint 1.6s ease-in-out 3; }
@keyframes pdArrowHint {
    0%, 100% { transform: translateY(-50%) scale(1); }
    50%      { transform: translateY(-50%) scale(1.1); }
}
@media (prefers-reduced-motion: reduce) {
    .pd-hero-arrow.is-hint { animation: none; }
}
/* 遮罩统一「左暗右亮」：文字直接压在图上（面板不加背景），左侧要压得够暗才读得清，
   右侧渐隐为零把横幅图露出来 */
.pd-hero-mask {
    position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(0,0,0,.68) 0%, rgba(0,0,0,.36) 45%, rgba(0,0,0,0) 78%);
}
/* ===== PC 横幅：与首页横幅同尺寸（1280×400 = 16:5）=====
   ① 传了「PC 横幅大图」→ 整幅 cover
   ② 没传 → 「渐变底 + 海报卡片」：竖版海报当卡片摆着，不拉伸、不裁字
   两种模式的信息都收在【左侧面板】里（.pd-hero-panel），所以面板居中、右侧留给图片 */
.pd-hero-pc {
    /* 尺寸与首页轮播区（.hero-wrap）完全一致：同一个 1280 容器 + 同样的 400px 高，
       这样同一张横幅大图在两处显示得一像素不差（见 portal.css 的 .hero-wrap） */
    max-width: 1280px;
    margin: 0 auto;
    height: 400px;
    overflow: hidden;
    align-items: center;        /* 信息面板垂直居中（原来是贴底） */
}
.pd-hero-bg {
    position: absolute; inset: 0;
    background: var(--pd-hero-src) center / cover no-repeat;
}
/* 兜底：底层是同图重模糊（提高饱和、别压太暗，保留海报的色感当渐变底） */
.pd-hero-pc.is-card .pd-hero-bg {
    filter: blur(46px) saturate(1.55) brightness(.72);
    transform: scale(1.2);
}
.pd-hero-card {
    position: absolute; top: 6%; right: 6%; height: 88%;
    border-radius: 10px;
    box-shadow: 0 22px 50px -14px rgba(0, 0, 0, .7);
}
.pd-hero-inner {
    position: relative; z-index: 2;
    max-width: 1280px; margin: 0 auto; width: 100%;
    padding: 0 20px;
    color: #fff;
}

/* ===== PC 横幅【左侧信息面板】（2026-10-14 需求）=====
   列车名 / 列车方向 / XXXX元 起 / 收藏·转发 —— 直接压在图上，【不加底色】，
   靠左侧遮罩压暗保证可读；有横幅图、没横幅图（兜底海报）都是这一套，位置与内容完全一致。 */
.pd-hero-panel {
    max-width: 470px;       /* 只用来限制换行宽度，不再有背景 */
    /* 整体右移：原来文字直接顶在容器 20px 内边距上，看着贴左边 —— 再让出 36px */
    padding-left: 36px;
}
/* 列车名：块里最重的一行（1.6rem + 字距，比正文明显但不臃肿） */
.pd-hero-panel .pd-title {
    font-size: 1.6rem;
    line-height: 1.35;
    letter-spacing: .5px;
    margin-bottom: 6px;
}
.pd-hero-panel .pd-subtitle { font-size: .9rem; color: rgba(255, 255, 255, .88); }
/* 档位标签（豪华型 / 舒适型 / 经济型…）：列车名下方一枚小胶囊，底色用档位自己的颜色 */
.pd-hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}
.pd-hero-tag {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 40px;
    font-size: .78rem;
    font-weight: 500;
    line-height: 1.65;
    color: #fff;
    background: var(--g, #c9a959);
    box-shadow: 0 2px 10px -5px rgba(0, 0, 0, .6);
}
/* 列车方向（出发地 → 目的地） */
.pd-hero-route {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 14px 0 0;
    font-size: .95rem;
    letter-spacing: .3px;
    color: rgba(255, 255, 255, .92);
    text-shadow: 0 1px 8px rgba(0, 0, 0, .45);   /* 无底色，靠投影保可读 */
}
.pd-hero-route i { font-size: .9rem; opacity: .75; }
.pd-hero-route em { font-style: normal; margin: 0 2px; opacity: .55; }
/* 咨询 + 收藏 / 转发：一行三个，间距 10px */
.pd-hero-acts {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 20px;
}
/* 咨询：金色实心胶囊，与页面里各处的「咨询」按钮同一套颜色 */
.pd-hero-ask {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 30px;
    padding: 0 16px;
    border-radius: 40px;
    background: #c9a959;
    color: #fff;
    font-size: .86rem;
    font-weight: 500;
    text-decoration: none;
    transition: background .2s, transform .2s;
}
.pd-hero-ask:hover { background: #d8bb72; color: #fff; }
.pd-hero-ask:active { transform: scale(.96); }
.pd-hero-ask i { font-size: .9rem; }
/* 收藏 / 转发：透明小图标 —— 白描边 + 白图标，压在图上不抢眼；悬停才淡填一层白 */
.pd-hero-acts .act-group { gap: 10px; }
.pd-hero-acts .act-btn {
    width: 30px;
    height: 30px;
    font-size: .85rem;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .55);
    color: rgba(255, 255, 255, .95);
    box-shadow: none;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}
.pd-hero-acts .act-btn:hover {
    background: rgba(255, 255, 255, .18);
    border-color: #fff;
    color: #fff;
}
/* 已收藏：填白 + 红心，状态一眼可辨 */
.pd-hero-acts .act-btn.is-on {
    background: rgba(255, 255, 255, .92);
    border-color: transparent;
    color: #e0475b;
}
.pd-badge {
    display: inline-block;
    background: rgba(184,146,63,.92);
    color: #fff;
    font-size: .78rem;
    padding: 4px 12px;
    border-radius: 40px;
    margin-bottom: 12px;
}
.pd-title {
    font-size: 2.1rem;
    font-weight: 700;
    margin: 0 0 8px;
    line-height: 1.3;
    text-shadow: 0 2px 12px rgba(0,0,0,.5);
}
.pd-subtitle {
    font-size: 1.05rem;
    color: rgba(255,255,255,.9);
    margin: 0;
    text-shadow: 0 1px 8px rgba(0,0,0,.5);
}

/* ================= 列车 Tab 条（合并展示模式，吸顶） ================= */
.trip-bar {
    background: #fff;
    border-bottom: 1px solid #f0ede6;
    position: sticky;
    top: 0;
    z-index: 800;
    box-shadow: 0 4px 14px -12px rgba(31, 42, 54, .45);
}
.trip-bar-inner {
    max-width: 1280px;   /* 与头部 / .pd-wrap 一致 */
    margin: 0 auto;
    padding: 12px 20px;
    display: flex;
    align-items: center;
    gap: 16px;
}
.trip-bar-train {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: .92rem;
    font-weight: 700;
    color: var(--c-primary-dark);
    white-space: nowrap;
}
.trip-bar-train i { color: var(--c-primary); }
.trip-tabs {
    flex: 1;
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: thin;
}
.trip-tab {
    flex: 0 0 auto;
    min-width: 170px;
    padding: 9px 16px;
    border-radius: 10px;
    background: #faf9f6;
    border: 1px solid #f0ede6;
    text-decoration: none;
    color: inherit;
    transition: background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.trip-tab b { display: block; font-size: .92rem; font-weight: 700; color: var(--c-text); }
.trip-tab small { display: block; font-size: .74rem; color: var(--c-text-3); margin-top: 2px; }
.trip-tab:hover { border-color: rgba(184, 146, 63, .5); background: #fdfbf6; }
.trip-tab.is-active {
    background: linear-gradient(135deg, #c9a45c 0%, #a8863a 100%);
    border-color: transparent;
    box-shadow: 0 8px 18px -10px rgba(168, 134, 58, .8);
}
.trip-tab.is-active b { color: #fff; }
.trip-tab.is-active small { color: rgba(255, 255, 255, .9); }
#pdPanel { transition: opacity .2s ease; }

/* ================= 同列车多行程切换 ================= */
.pd-trips-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.pd-trips-label {
    font-size: .95rem;
    font-weight: 700;
    color: var(--c-text);
    display: flex;
    align-items: center;
    gap: 7px;
}
.pd-trips-label i { color: var(--c-primary); }
.pd-trips-count { font-size: .8rem; color: var(--c-text-3); }

.pd-trips {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 14px;
}
.pd-trip {
    position: relative;
    display: block;
    padding: 16px 20px 34px;
    border-radius: 14px;
    background: #fff;
    border: 1px solid #eceae4;
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.pd-trip:hover {
    transform: translateY(-2px);
    border-color: rgba(184, 146, 63, .5);
    box-shadow: 0 10px 22px -12px rgba(184, 146, 63, .6);
}
.pd-trip .rt-name {
    display: block;
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--c-text);
    line-height: 1.4;
    padding-right: 46px;
}
.pd-trip .rt-desc {
    display: block;
    margin-top: 5px;
    font-size: .82rem;
    color: var(--c-text-3);
    line-height: 1.55;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.pd-trip .rt-badge {
    position: absolute;
    right: 14px;
    top: 14px;
    font-style: normal;
    font-size: .68rem;
    line-height: 1.6;
    padding: 1px 9px;
    border-radius: 40px;
    background: rgba(184, 146, 63, .12);
    color: var(--c-primary);
    white-space: nowrap;
}
.pd-trip .rt-go,
.pd-trip .rt-cur {
    position: absolute;
    left: 20px;
    right: 20px;
    bottom: 12px;
    font-size: .76rem;
    display: flex;
    align-items: center;
    gap: 4px;
}
.pd-trip .rt-go { color: var(--c-primary); }
.pd-trip:hover .rt-go i { transform: translateX(3px); }
.pd-trip .rt-go i { transition: transform .2s; }
/* 当前行程：金色渐变实底 + 左侧白条（参考站 route-tab 风格） */
.pd-trip.is-active {
    background: linear-gradient(135deg, #c9a45c 0%, #a8863a 100%);
    border-color: transparent;
    box-shadow: 0 12px 26px -12px rgba(168, 134, 58, .7);
}
.pd-trip.is-active::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: rgba(255, 255, 255, .92);
}
.pd-trip.is-active .rt-name { color: #fff; }
.pd-trip.is-active .rt-desc { color: rgba(255, 255, 255, .9); }
.pd-trip.is-active .rt-badge { background: #fff; color: #a8863a; font-weight: 600; }
.pd-trip.is-active .rt-cur { color: rgba(255, 255, 255, .95); }

/* ================= 同列车行程切换（照搬参考站 .route-switch / .route-tab 规范）=================
   位置：紧贴大横幅下方的一条独立横条（不套白卡）
   特点：每个行程一个实色渐变卡，各自主题色；激活项加深 + 左侧白色竖条
*/
.route-switch {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
    /* 上边距 22px：与上方大横幅拉开。
       下边距改为 0：与下方内容（列车编号信息卡）的间距统一由 .info-tag-grid 的
       margin-top 负责，这样「有 / 没有行程切换」两种情况间距才一致
       （三角箭头向下探出 11px，仍由那 20px 的间距留出空隙） */
    margin: 22px 0 0;
}
.route-tab {
    /* 默认主题（金），会被下方主题类覆盖 */
    --tc: #c9a45c;
    --tc-deep: #a8863a;
    --tc-on: #b8923f;
    --tc-on-deep: #96762d;
    --tc-shadow: rgba(168, 134, 58, .5);
    box-sizing: border-box;
    position: relative;
    display: block;
    text-decoration: none;
    border-radius: 12px;
    /* 未选中：实色渐变（原色），保持清晰可读，不做压暗 */
    background: linear-gradient(135deg, var(--tc), var(--tc-deep));
    /* 预留 2px 边框：选中时变白，尺寸不跳动 */
    border: 2px solid transparent;
    padding: 14px 18px;
    transition: transform .22s ease, box-shadow .22s ease, background .22s ease,
                border-color .22s ease;
    color: #fff;
    box-shadow: 0 2px 8px -6px var(--tc-shadow);
}
.route-tab:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 22px -12px var(--tc-shadow);
    color: #fff;
}
/* ===== 当前行程：加深一档渐变 + 左侧白色竖条 + 底部三角箭头（不加白色边框）=====
   注意：箭头要溢出卡片，所以这里不能设 overflow:hidden */
.route-tab.active {
    background: linear-gradient(135deg, var(--tc-on), var(--tc-on-deep));
    box-shadow: 0 14px 28px -10px var(--tc-shadow);
    cursor: default;
    transform: none;
}
.route-tab.active:hover { transform: none; }
/* 左侧白色竖条（加圆角以贴合卡片圆角） */
.route-tab.active::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: rgba(255, 255, 255, .9);
    border-radius: 9px 0 0 9px;
}
/* 底部三角箭头：明确指示「当前看的就是这一条」 */
.route-tab.active::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -11px;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 11px solid var(--tc-on-deep);
    z-index: 3;
}
.route-tab .rt-name {
    display: block;
    font-size: 1.05rem;
    font-weight: 700;
    color: #fff;
    letter-spacing: .3px;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .18);
}
.route-tab .rt-desc {
    display: block;
    margin-top: 5px;
    font-size: .82rem;
    color: rgba(255, 255, 255, .88);
    line-height: 1.5;
}
.route-tab .rt-badge {
    position: absolute;
    right: 16px;
    top: 14px;
    font-style: normal;
    font-size: .68rem;
    line-height: 1.6;
    padding: 1px 9px;
    border-radius: 20px;
    background: rgba(255, 255, 255, .25);
    color: #fff;
    font-weight: 600;
}
.route-tab.active .rt-badge {
    background: #fff;
    color: var(--tc-on);
    box-shadow: 0 2px 6px rgba(0, 0, 0, .15);
}
/* 主题色（按行程顺序循环分配） */
.route-tab.rt-gold   { --tc:#c9a45c; --tc-deep:#a8863a; --tc-on:#b8923f; --tc-on-deep:#96762d; --tc-shadow:rgba(168,134,58,.5); }
.route-tab.rt-blue   { --tc:#4a92cf; --tc-deep:#3079b8; --tc-on:#0a67b1; --tc-on-deep:#07508c; --tc-shadow:rgba(10,103,177,.5); }
.route-tab.rt-orange { --tc:#eb9a55; --tc-deep:#e0782f; --tc-on:#d96e23; --tc-on-deep:#bd5a15; --tc-shadow:rgba(217,110,35,.5); }
.route-tab.rt-green  { --tc:#4caf7d; --tc-deep:#2f8f5f; --tc-on:#22946a; --tc-on-deep:#187a56; --tc-shadow:rgba(34,148,106,.5); }
.route-tab.rt-purple { --tc:#9186d4; --tc-deep:#6f63b8; --tc-on:#7a6ecb; --tc-on-deep:#5d52a3; --tc-shadow:rgba(122,110,203,.5); }

/* ================= 通用区块：统一白卡（对齐参考站 room-price-card / schedule-card / detail-section） ================= */
/* 内容宽度必须与头部 .site-container（1280px / padding 20px）严格一致，否则左右边缘对不齐 */
.pd-wrap { max-width: 1280px; }
.pd-block {
    background: #fff;
    border: 1px solid #f1eee7;
    border-radius: 14px;
    padding: 28px 30px;
    margin-bottom: 22px;
    box-shadow: 0 10px 30px -20px rgba(31, 42, 54, .28);
}
/* 一级栏目标题：统一 1.3rem / 700 / 带金色图标（对齐参考站 1.4rem 标题体系） */
.pd-h2 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--c-text);
    margin: 0 0 20px;
    display: flex;
    align-items: center;
    gap: 9px;
    line-height: 1.4;
}
.pd-h2 i { color: var(--c-primary); font-size: 1.22rem; flex: 0 0 auto; }
.pd-h2-sub {
    font-size: .8rem;
    font-weight: 400;
    color: var(--c-text-3);
    margin-left: auto;
    white-space: nowrap;
}

/* ================= 基本信息 4 宫格（逐值照抄参考站 .info-tag-grid / .info-card） ================= */
.info-tag-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    /* 顶部间距：横幅（PC 大图 / 手机轮播）与它之间必须留白。
       原来只写了 margin-bottom，导致
       ① 手机端（横幅是紧贴它的那个轮播）② 桌面端没有「同列车行程切换」的产品
       这两种情况下，列车编号这排信息卡会直接贴在横幅上。 */
    margin: 20px 0 22px;
}
.info-card {
    background: #ffffff;
    border-radius: 8px;
    padding: 20px;
    box-shadow: 0 10px 30px -10px rgba(31, 42, 54, .28);
    display: flex;
    align-items: center;
    gap: 16px;
}
.info-icon {
    flex: 0 0 auto;
    width: 50px;
    height: 50px;
    background-color: rgba(201, 169, 89, 0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #c9a959;
    font-size: 24px;
}
.info-content { min-width: 0; flex: 1; }
.info-content h4 {
    font-size: 0.9rem;
    font-weight: 500;
    color: #8f9aa8;
    margin: 0 0 4px;
}
.info-content .info-value {
    font-size: 1.0rem;
    font-weight: 400;   /* 不加粗（原 700）：列车编号 / 列车方向 / 旅游天数 / 上车地点 的值 */
    color: #1e1e1e;
    margin: 0;
    line-height: 1.35;
    word-break: break-word;
}

/* ================= 价格区（逐值照抄参考站 .room-price-card / .room-item / .room-row） ================= */
.room-price-card {
    background: #ffffff;
    border-radius: 8px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(31, 42, 54, .28);
    margin-bottom: 22px;
}
/* 价格区「参考价」提示：产品档期内已无可预订班次时，用最近一班的价格展示（2026-11-09） */
.pd-price-ref {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin: 0 0 16px;
    padding: 9px 12px;
    background: #fff8e6;
    border: 1px solid #f0dfb4;
    border-radius: 8px;
    font-size: .8rem;
    line-height: 1.6;
    color: #8a6a1f;
}
.pd-price-ref i { flex: 0 0 auto; margin-top: 2px; }
.room-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--c-text);
    margin: 0 0 20px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.room-note {
    font-size: .88rem;
    font-weight: 400;
    color: #8f9aa8;
}
.room-grid {
    display: grid;
    /* 列数由 PHP 按「实际房型数 + 后台配置」算出（1/2/3/2），避免出现空网格 */
    grid-template-columns: repeat(var(--room-cols, 2), minmax(0, 1fr));
    gap: 20px;
}
.room-item {
    position: relative;
    background: #f9f9f9;
    border-radius: 8px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.room-name {
    font-size: 1.05rem;      /* 原 1.2rem，房型名小一号（2026-11-09） */
    font-weight: 700;
    color: var(--c-primary-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}
.room-name i { color: #c9a959; font-size: 1.15rem; }
/* 房型前的床形图标：内联 SVG（取 fas fa-bed 的路径，前台未加载 FontAwesome） */
.room-name .room-ico {
    width: 1.3em;
    height: 1.3em;
    flex: 0 0 auto;
    color: #c9a959;
}
.room-detail {
    font-size: .85rem;
    color: #5f6b7a;
    line-height: 1.6;
}
.room-rows {
    display: grid;
    grid-template-columns: repeat(var(--row-cols, 1), minmax(0, 1fr));
    gap: 8px 16px;
}
.room-row {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    align-items: center;
    gap: 8px;
    padding: 6px 0;
    border-top: 1px dashed #e8e3d6;
}
.room-row:first-child { border-top: none; }

/* 正好两个铺位（上铺 / 下铺）时，PC 端并排成一行 */
.room-rows.is-2col { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.room-rows.is-2col .room-row {
    display: flex;
    /* 原来是 space-between：标签贴左、价格贴右，中间空出一大截；
       改成跟随排列，让「上铺 ¥16,980 / 人」靠在一起（2026-11-09） */
    justify-content: flex-start;
    /* baseline → center：中文字（上铺）与数字字号不同，按基线对齐时看着一高一低 */
    align-items: center;
    gap: 6px;
    padding: 2px 0;
    border-top: none;
}
/* 铺位行（上铺 / 下铺）：字号与单价格模式（.room-price）统一，避免
   双人间一个大数字、四人间一排小字（2026-11-09） */
.room-row .rr-left { color: #5f6b7a; font-size: .9rem; }
.room-row .rr-right {
    color: var(--c-primary-dark);
    font-weight: 400;          /* 数字不加粗（2026-11-09） */
    font-size: .95rem;         /* 原 1.05rem，铺位价小一号 */
    text-align: right;
}
/* 档位卡片：一行三列「房型 | 上铺价 | 下铺价 / 整间价」
   逐值照抄参考站 .room-row（grid-template-columns: 1.1fr 0.9fr 0.9fr）
   —— 包括只有整间价的房型（该行显示「— / ¥x,xxx」），三列始终对齐 */
.room-row.is-3col { grid-template-columns: 1.1fr 0.9fr 0.9fr; }
.room-row.is-3col .rr-mid,
.room-row.is-3col .rr-right {
    color: var(--c-primary-dark);
    font-weight: 400;          /* 数字不加粗（2026-11-09） */
    font-size: .95rem;         /* 原 1.05rem，与铺位价统一小一号 */
    text-align: right;
}
/* 单价格（¥xx,xxx 起）：颜色与铺位价格保持同一色系。
   字号从 1.3rem 降到 1.05rem，与「上铺 / 下铺」行的价格数字统一（2026-11-09） */
.room-price {
    font-size: 1.05rem;
    font-weight: 400;          /* 原 700，双人间主价也不加粗（2026-11-09） */
    color: var(--c-primary-dark);
    line-height: 1.2;
    white-space: nowrap;
}
.room-price small {
    font-size: .8rem;
    font-weight: 400;
    color: #8f9aa8;
}
/* 平铺模式的「/人」：与主价数字同字号（原 .8rem，用户要求一样大，2026-11-09），不加粗 */
.room-price-unit {
    font-size: 1em;
    font-weight: 400;
}
.room-price-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: auto;
}
/* 咨询按钮独占一行时靠右 */
.room-price-row.is-end { justify-content: flex-end; }
.room-btn {
    background: transparent;
    border: 1px solid #c9a959;
    color: #c9a959;
    padding: 6px 18px;
    border-radius: 40px;
    font-weight: 500;
    font-size: .86rem;
    cursor: pointer;
    transition: .2s;
    text-decoration: none;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.room-btn:hover { background: #c9a959; color: #fff; }
.room-btn i { font-size: .9rem; }

/* ===== 内容图带（逐值照抄参考站 kunminghao 的 .gallery-strip）=====
   1 列＝通栏大图（圆角+阴影）；2/3 列＝并排（每图各自圆角+阴影，保持原始比例） */
.gallery-strip {
    margin: 30px 0;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
}
.gallery-strip img {
    display: block;
    width: 100%;
    height: auto;
    /* 注意：参考站的 max-height:80vh 只在 @media print 里，屏幕端不需要。
       若在这里限高，竖图会被等比缩小、宽度占不满容器，看起来「比例不对」。 */
}
.gallery-strip.split-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    box-shadow: none;
}
.gallery-strip.split-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    box-shadow: none;
}
.gallery-strip.split-2 img,
.gallery-strip.split-3 img {
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
}

/* ---- 房型角标（后台可配文字与颜色）---- */
.room-badge {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
    font-style: normal;
    font-size: .68rem;
    line-height: 1.75;
    padding: 0 9px;
    border-radius: 20px;
    font-weight: 500;
    white-space: nowrap;
}
.room-badge.is-red    { background: #fdecec; color: #cf3b3b; }
.room-badge.is-gold   { background: #fbf3e0; color: #a8863a; }
.room-badge.is-blue   { background: #e9f1fd; color: #2b6cb0; }
.room-badge.is-green  { background: #e9f7ee; color: #2f855a; }
.room-badge.is-purple { background: #f2edfd; color: #6b46c1; }
.room-badge.is-gray   { background: #f0f1f3; color: #6b7280; }

/* ---- 单价格 + 悬停明细气泡 ---- */
.room-price-wrap { position: relative; display: inline-flex; align-items: center; }
.room-price-wrap.has-tip { cursor: help; }
.room-price-wrap.has-tip::after {
    content: '';
    display: inline-block;
    width: 0; height: 0;
    margin-left: 7px;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid #c9a959;
    opacity: .7;
}
.room-tbd { font-size: .9rem; font-weight: 400; color: #a8b0ba; }

.room-tip {
    position: absolute;
    left: 0;
    bottom: calc(100% + 10px);
    z-index: 30;
    min-width: 180px;
    background: #fff;
    border: 1px solid #eee7d6;
    border-radius: 8px;
    box-shadow: 0 12px 26px -12px rgba(31, 42, 54, .42);
    padding: 9px 12px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(4px);
    transition: opacity .18s ease, transform .18s ease, visibility .18s;
    pointer-events: none;
}
.room-tip::after {
    content: '';
    position: absolute;
    left: 16px; bottom: -5px;
    width: 9px; height: 9px;
    background: #fff;
    border-right: 1px solid #eee7d6;
    border-bottom: 1px solid #eee7d6;
    transform: rotate(45deg);
}
.room-price-wrap:hover .room-tip,
.room-price-wrap:focus-within .room-tip {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.room-tip-h {
    font-size: .7rem;
    color: #8f9aa8;
    padding-bottom: 5px;
    margin-bottom: 5px;
    border-bottom: 1px dashed #f0ece2;
}
.room-tip-row {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    font-size: .78rem;
    color: #5f6b7a;
    padding: 2px 0;
    white-space: nowrap;
}
.room-tip-row b { color: #a8863a; font-weight: 600; }

/* ---- 儿童价小字 ----
   单价格模式：跟在「¥xxx 起」下方，左对齐
   铺位明细模式：位于卡片底部，右对齐（与铺位价格列对齐） */
.room-child {
    font-size: .76rem;
    color: #8f9aa8;
    margin-top: 3px;
}
/* 儿童价：单价格 / 铺位明细两种模式统一靠左 */
.room-child.is-single,
.room-child.is-rows { text-align: left; }
.room-child.is-rows { margin-top: 4px; }

/* ---- 版本价平铺（后台「平铺显示」模式：直接在卡片里列出各版本价格，不用悬停）---- */
.room-tier-list {
    margin-top: 7px;
    padding-top: 6px;
    border-top: 1px dashed #f0ece2;
}
.room-tier-row {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    font-size: .9rem;              /* 版本名与价格统一字号 */
    color: #5f6b7a;
    padding: 2px 0;
    white-space: nowrap;
}
.room-tier-row b {
    color: #a8863a;
    font-weight: 400;              /* 数字不加粗 */
    font-size: inherit;            /* 与版本名同大小 */
}

/* ================= 班次（逐值照抄参考站 .schedule-card / .date-list / .date-item） ================= */
.schedule-card {
    background: #ffffff;
    border-radius: 8px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(31, 42, 54, .28);
    margin-bottom: 22px;
}
.schedule-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 15px;
}
.schedule-header h3 {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--c-text);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}
.date-list { border-top: 1px solid #eee; }
.date-item {
    display: grid;
    /* 日期 / 状态 / 按钮（2026-10-25 去掉余位列）
       左右两列都是 1fr，中间状态列 auto —— 状态徽章天然落在整行水平正中，PC 与手机同一套 */
    grid-template-columns: 1fr auto 1fr;
    align-items: center;                    /* 三列内容垂直居中对齐 */
    padding: 12px 0;
    border-bottom: 1px solid #f0f0f0;
    gap: 10px;
}
.date-range {
    font-weight: 400;
    font-size: 1.0rem;
    color: var(--c-text);
    display: flex;
    align-items: center;
    gap: 6px;
}
.date-range i { color: #c9a959; font-size: 1.1rem; }
.date-price {
    font-size: 1.0rem;
    font-weight: 700;
    color: var(--c-primary-dark);
    text-align: center;
}
.date-stock {
    background-color: #f0f0f0;
    padding: 4px 8px;
    border-radius: 40px;
    font-size: 0.9rem;
    color: #5f6b7a;
    text-align: center;
    width: fit-content;
}
.date-available {
    background-color: #81c784;
    padding: 4px 8px;
    border-radius: 40px;
    font-size: 0.9rem;
    color: #ffffff;
    text-align: center;
    width: fit-content;
}
/* 余位紧张 / 已售罄（2026-10-25 三态：可订=绿、紧张=橙、售罄=灰） */
.date-tight {
    background-color: #ffb74d;
    padding: 4px 8px;
    border-radius: 40px;
    font-size: 0.9rem;
    color: #ffffff;
    text-align: center;
    width: fit-content;
}
.date-soldout {
    background-color: #c9ccd1;
    padding: 4px 8px;
    border-radius: 40px;
    font-size: 0.9rem;
    color: #ffffff;
    text-align: center;
    width: fit-content;
}
/* 三态徽章：水平居中于中间列、垂直与日期/按钮同一中线 */
.date-available, .date-tight, .date-soldout {
    justify-self: center;
    align-self: center;
    line-height: 1.2;
}
.date-btn {
    background-color: #c9a959;
    color: #ffffff;
    padding: 6px 16px;
    border-radius: 40px;
    justify-self: end;      /* 右列里靠右 */
    align-self: center;
    font-weight: 400;
    font-size: 0.9rem;
    cursor: pointer;
    transition: .2s;
    text-decoration: none;
    text-align: center;
    width: fit-content;
    justify-self: end;
    border: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.date-btn:hover { background-color: var(--c-primary-dark); color: #fff; }
.date-btn i { font-size: 0.9rem; }
.date-btn.is-disabled { background-color: #c9ccd1; cursor: default; }

/* ================= 按钮体系 =================
   实心金（主操作：预订） / 描边金（次操作：咨询） / 禁用 */
.pd-btn-solid {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    background: var(--c-primary);
    color: #fff;
    font-size: .88rem;
    font-weight: 400;
    padding: 8px 20px;
    border-radius: 40px;
    text-decoration: none;
    white-space: nowrap;
    border: 1px solid var(--c-primary);
    transition: background .2s ease, box-shadow .2s ease;
}
.pd-btn-solid:hover {
    background: var(--c-primary-dark);
    border-color: var(--c-primary-dark);
    color: #fff;
    box-shadow: 0 6px 16px -8px rgba(168, 134, 58, .8);
}
.pd-btn-solid i { font-size: .95rem; }

.pd-btn-ghost {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: transparent;
    color: var(--c-primary);
    font-size: .86rem;
    padding: 7px 20px;
    border-radius: 40px;
    border: 1px solid var(--c-primary);
    text-decoration: none;
    white-space: nowrap;
    transition: background .2s ease, color .2s ease;
}
.pd-btn-ghost:hover { background: var(--c-primary); color: #fff; }

.pd-btn-disabled {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #f1f2f4;
    color: #a8b0ba;
    font-size: .88rem;
    padding: 8px 20px;
    border-radius: 40px;
    white-space: nowrap;
}

/* ================= 行程亮点（照抄参考站 .highlight-grid / .highlight-card）================= */
.highlight-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);   /* PC 一行 2 个（参考站最终覆盖值） */
    gap: 20px;
    margin-bottom: 30px;
}
.highlight-card {
    background: linear-gradient(135deg, #fff9ef 0%, #fff5e6 100%);
    border-radius: 8px;
    padding: 18px 16px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .05);
    transition: transform .2s, box-shadow .2s;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.highlight-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, .1);
}
.highlight-card i:first-child {
    font-size: 1rem;
    color: var(--c-primary);
    flex-shrink: 0;
}
.highlight-card span {
    font-size: .95rem;
    font-weight: 600;
    color: #2d3e50;
    flex: 1;
    white-space: nowrap;
}
.highlight-card i:last-child {
    font-size: 1.2rem;
    color: var(--c-primary);
    flex-shrink: 0;
}

/* ================= 行程速览（对齐参考站 .itinerary-day-card：隔行变色卡） ================= */
.pd-itin-list { display: flex; flex-direction: column; gap: 8px; }
.pd-itin-item {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 16px 20px;
    border-radius: 10px;
    background: #fafafa;
    position: relative;
    transition: background .2s ease;
}
.pd-itin-item:nth-child(even) { background: #fffbf0; }
.pd-itin-item:hover { background: #f5f2eb; }
/* D1：纯文本金色加粗（对齐参考站 .day-no，无底色无边框） */
.pd-itin-no {
    flex: 0 0 auto;
    min-width: 34px;
    font-size: .95rem;
    font-weight: 700;
    color: var(--c-primary-dark);
    line-height: 1.55;
    letter-spacing: .2px;
    white-space: nowrap;
}
.pd-itin-body { flex: 1; min-width: 0; }
.pd-itin-title { font-size: 1rem; font-weight: 700; color: var(--c-text); margin-bottom: 8px; line-height: 1.55; }
.pd-itin-img {
    width: 100%;
    aspect-ratio: 16 / 9;
    background-size: cover;
    background-position: center;
    border-radius: 10px;
    margin: 10px 0 12px;
    background-color: #f3f1ec;
}
.pd-itin-desc { font-size: .88rem; color: #3a4a5a; line-height: 1.8; margin-bottom: 8px; }
.pd-itin-desc p { margin: 0 0 6px; }
/* 餐食 / 住宿：纯文本小字（对齐参考站 .meta-food / .meta-hotel） */
.pd-itin-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 3px 22px;
    font-size: .8rem;
    color: #8f9aa8;
}
.pd-itin-meta > span { display: inline-flex; align-items: flex-start; gap: 5px; }
.pd-itin-meta > span > i {
    flex: 0 0 auto;
    width: 1em;
    text-align: center;
    color: var(--c-primary);
    font-size: .82rem;
}
/* 餐食拆成条目后：PC 用 · 连成一行（手机端改为各占一行，见 media query） */
.pd-itin-meta .itin-meal-label,
.pd-itin-meta .itin-hotel-label { flex: 0 0 auto; min-width: 3em; white-space: nowrap; }
.pd-itin-meta .itin-meal-list { display: inline-flex; flex-wrap: wrap; }
.pd-itin-meta .itin-meal-list > span + span::before { content: ' · '; color: #c9c2b4; }
/* 行程小贴士 / 备注：虚线便签样式（2026-11-10 重做，原来只有左侧一条竖线，太空） */
.pd-itin-tips {
    margin-top: 10px;
    padding: 11px 14px 11px 13px;
    background: #fffdf6;
    border: 1px dashed #e8d6a8;
    border-radius: 8px;
    font-size: .82rem;
    color: #7d6a42;
    line-height: 1.78;
    overflow-wrap: break-word;
}
/* 图标由模板输出（<i class="bi bi-info-circle">），不再用伪元素写字 */
.pd-itin-tips > i {
    margin-right: 6px;
    color: #c9a441;
    font-size: .9rem;
    vertical-align: -1px;
}

/* ================= 费用包含 / 不含（对齐参考站 .cost-card：浅灰子卡 + 图标列表） =================
   两块的列表都很长（安逸号 7 条 / 4 条），并排会挤成窄条，改为上下各占一整行（2026-11-10） */
.pd-fee-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
.pd-fee-card {
    background: #f9f9f9;
    border-radius: 10px;
    padding: 22px 24px;
}
.pd-fee-card.is-exclude { background: #f9f9f9; }
.pd-fee-title { font-size: 1.05rem; font-weight: 700; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.pd-fee-title i { color: var(--c-primary); }
.pd-fee-card.is-exclude .pd-fee-title i { color: #b0b8c0; }
.pd-fee-list { list-style: none; margin: 0; padding: 0; }
.pd-fee-list li {
    display: flex;
    gap: 9px;
    font-size: .9rem;
    color: var(--c-text-2);
    line-height: 1.9;
}
.pd-fee-list li i { color: var(--c-primary); font-size: .82rem; flex: 0 0 auto; margin-top: .42em; }
.pd-fee-card.is-exclude .pd-fee-list li i { color: #b8bec7; }

/* ================= 预订须知（浅灰卡，对齐参考站 .notice-box） ================= */
.pd-note-list {
    list-style: none;
    counter-reset: n;
    margin: 0;
    padding: 18px 24px 18px 20px;
    background: #f9f9f9;
    border-radius: 10px;
}
.pd-note-list li {
    counter-increment: n;
    position: relative;
    padding: 10px 0 10px 38px;
    border-bottom: 1px dashed #e9e5db;
    font-size: .85rem;   /* 比正文小一号 */
    color: var(--c-text-2);
    line-height: 1.7;
}
.pd-note-list li:last-child { border-bottom: none; }
.pd-note-list li::before {
    content: counter(n);
    position: absolute; left: 0; top: 11px;
    width: 24px; height: 24px;
    border-radius: 50%;
    background: rgba(184,146,63,.14);
    color: var(--c-primary-dark);
    font-size: .76rem; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}

/* ================= 退改政策（对齐参考站 .refund-list 行式：时间 + 规则） ================= */
.pd-refund-list {
    list-style: none;
    margin: 0;
    padding: 18px 24px;
    background: #f9f9f9;
    border-radius: 10px;
}
.pd-refund-list li {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    border-bottom: 1px dashed #e6e1d6;
    font-size: .9rem;
}
.pd-refund-list li:last-child { border-bottom: none; }
.pd-refund-list .rf-time {
    flex: 0 0 210px;
    color: var(--c-primary-dark);
    font-weight: 400;      /* 时间段不加粗（2026-11-10，与参考站一致） */
}
.pd-refund-list .rf-rule { flex: 1; color: var(--c-text-2); }
/* 退改说明：后台可配的一行小字（2026-11-10） */
.pd-refund-note {
    margin: 0 0 12px;      /* 位于退改政策列表上方（2026-11-10） */
    padding: 12px 16px;
    background: #faf7f1;
    border-radius: 8px;
    color: var(--c-text-2);
    font-size: .84rem;
    line-height: 1.7;
}
.pd-refund-note i { color: var(--c-primary); margin-right: 4px; }

/* ================= 儿童说明（对齐参考站 .child-notice） ================= */
.pd-child-note {
    display: flex;
    gap: 10px;
    background: #fffbf0;
    border-left: 3px solid var(--c-primary);
    border-radius: 0 10px 10px 0;
    padding: 16px 20px;
    font-size: .9rem;
    color: #6b5a2a;
    line-height: 1.8;
}
.pd-child-note i { color: var(--c-primary); font-size: 1.05rem; flex: 0 0 auto; margin-top: 2px; }

/* ================= 温馨提示（PC 一行两列，手机单列） ================= */
.pd-tips-grid {
    list-style: none;
    margin: 0;
    padding: 20px 24px;
    background: #f9f9f9;
    border-radius: 10px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px 24px;
}
.pd-tips-grid li {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    font-size: .86rem;
    color: var(--c-text-2);
    line-height: 1.7;
}
.pd-tips-grid li i { color: var(--c-primary); font-size: .95rem; flex: 0 0 auto; margin-top: 2px; }

/* ================= 客服（对齐参考站 .consult-btn：大号金色渐变按钮） ================= */
.pd-consult { text-align: center; padding: 6px 0 2px; }
.pd-consult-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: linear-gradient(135deg, #c9a959 0%, #a8863a 100%);
    color: #fff;
    padding: 14px 46px;
    border-radius: 60px;
    font-weight: 700;
    font-size: 1.1rem;
    text-decoration: none;
    box-shadow: 0 10px 24px -12px rgba(168, 134, 58, .95);
    transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.pd-consult-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 30px -12px rgba(168, 134, 58, 1);
    color: #fff;
}
.pd-consult-btn i { font-size: 1.25rem; }

/* 客服信息条（二维码 + 电话）—— 二维码在上、文案在下，整体居中 */
.pd-contact {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    background: #f9f9f9;
    border-radius: 10px;
    padding: 26px 20px;
    margin-top: 20px;
    text-align: center;
}
.pd-contact img { width: 118px; height: 118px; border-radius: 8px; background: #fff; flex: 0 0 auto; }
.pd-contact-txt { min-width: 0; }
.pd-contact-txt h4 { font-size: 1.02rem; font-weight: 700; margin: 0 0 6px; color: var(--c-text); }
.pd-contact-txt p { margin: 0; font-size: .88rem; color: var(--c-text-2); line-height: 1.7; }

/* ================= 移动端吸底 CTA ================= */
.pd-bottom-bar { display: none; }

/* ================= 移动端 ================= */
@media (max-width: 767.98px) {
    /* 手机端不显示面包屑（参考站手机端没有面包屑） */
    .p-crumb { display: none !important; }

    /* 手机端内容宽度：对齐参考站 —— 参考站手机端只有 .container 一层 12px 内边距
       （内容宽 366px）。main 那层已在文件开头全局去掉，这里把 .pd-wrap 压到 12px。
       注意：头部 / 页脚【不跟随】这个压缩 —— 全站统一 20px（以首页为准），
       产品页只压缩正文宽度。原来这里有一条把头部也压到 12px 的规则，现已移除。 */
    /* 内容底部原留 84px（本意是躲吸底条，但吸底条只在视口底部浮动，
       这里留白只会把「内容 → 页脚」之间撑出一大块空档）→ 收到 16px，
       真正的避让交给下面 .site-footer 的底部内边距。 */
    .pd-wrap { padding: 0 12px 16px; }
    .pd-wrap > *:last-child { margin-bottom: 0; }
    /* main 上 Bootstrap 的底部内边距（16px）会和 .pd-wrap 的 16px 叠成 32px，
       手机端清零 → 「内容 → 页脚」的总间距就是 16px（PC 版已有同样处理） */
    body.page-product main { padding-bottom: 0 !important; }

    /* 手机端页脚：只做两件产品页特有的事（左右留白已是全站统一的 20px，不在这里改）
       ① 上外边距 30px → 0：紧贴内容，与上面的 16px 合计 16px
       ② 底部留出吸底条高度 + 安全区：最后一行备案信息不被浮动条压住
          （页面本身没有吸底条的页面无需这条，所以不做成全站规则） */
    .page-product .site-footer {
        margin-top: 0;
        padding-bottom: calc(76px + env(safe-area-inset-bottom));
    }

    /* 手机端：隐藏 PC 横幅，改用「标题区 + 行程Tab + 大图」的顺序（同参考站） */
    .pd-hero-pc { display: none; }
    /* 产品图容器：照参考站 .product-gallery —— 随容器内缩（不再通栏）、8px 圆角、
       图 width:100%/height:auto 不裁切、下方 40px 间距 */
    .pd-hero-carousel {
        display: block;
        margin: 0 0 40px;
        border-radius: 8px;
        background: transparent;
    }
    /* 左上角等级胶囊（舒适型 / 豪华型……）—— 右下角原来那个产品名胶囊已去掉：
       名字在下面标题区已经显示一次，重复。等级色由 PHP 用 --g 注入。 */
    .pd-hero-grade {
        position: absolute;
        left: 10px; top: 10px; z-index: 4;
        padding: 2px 11px;
        border-radius: 40px;
        font-size: .74rem;
        font-weight: 500;
        line-height: 1.7;
        color: #fff;
        /* 半透明黑 + 毛玻璃（2026-11-08：原来用档位实色，压在图上太重） */
        background: rgba(0, 0, 0, .42);
        backdrop-filter: blur(4px);
        -webkit-backdrop-filter: blur(4px);
        box-shadow: 0 2px 8px rgba(0, 0, 0, .16);
    }
    /* 页码在右上角（小红书风格），与左上角等级胶囊错开 */
    .pd-hero-count {
        right: 10px;
        bottom: auto;
        top: 10px;
        font-size: .68rem;
        line-height: 1.8;
        padding: 0 9px;
    }
    .pd-hero-dots { bottom: 14px; }

    /* 手机端标题区：参考站手机端样式（标题 1.25rem 加粗、副标题灰色小字） */
    .pd-m-head { display: block; padding: 2px 0 12px; }
    .pd-m-badge {
        display: inline-block;
        background: var(--c-primary);
        color: #fff;
        font-size: .68rem;
        line-height: 1.9;
        padding: 0 10px;
        border-radius: 20px;
        margin-bottom: 8px;
    }
    .pd-m-title {
        font-size: 1.25rem;
        font-weight: 700;
        color: var(--c-text);
        margin: 0;
        line-height: 1.35;
    }
    .pd-m-sub {
        font-size: .85rem;
        color: var(--c-text-2);
        margin: 6px 0 0;
        line-height: 1.5;
    }
    .pd-hero-inner { padding: 0 12px 22px; }
    .pd-title { font-size: 1.4rem; }
    .pd-subtitle { font-size: .9rem; }

    .pd-block { padding: 18px 16px; margin-bottom: 14px; border-radius: 12px; }
    .pd-h2 { font-size: 1.08rem; margin-bottom: 14px; gap: 7px; }
    .pd-h2 i { font-size: 1.02rem; }
    .pd-h2-sub { font-size: .72rem; }

    /* 列车 Tab 条：窄屏竖排 */
    .trip-bar-inner { padding: 10px 16px; gap: 8px; flex-direction: column; align-items: stretch; }
    .trip-bar-train { font-size: .84rem; }
    .trip-tab { min-width: 136px; padding: 8px 12px; }
    .trip-tab b { font-size: .84rem; }
    .trip-tab small { font-size: .68rem; }

    /* 行程切换单列 */
    .pd-trips { grid-template-columns: 1fr; gap: 10px; }
    .pd-trip { padding: 14px 16px 32px; }
    .pd-trip .rt-name { font-size: .96rem; }
    .pd-trips-label { font-size: .88rem; }

    /* 行程 Tab（手机端）：同参考站 —— 两个并排同一行、只显示线路标题、
       文字居中、border-radius 收成 8px、左侧白竖条收窄到 3px。
       唯一区别：参考站手机端连 .rt-badge 一起隐藏了，按需求这里【保留角标】，
       把它从「绝对定位在右上角」改成「与标题同一行的内联小胶囊」 */
    .route-switch { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0 0 16px; }
    .route-tab {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 5px;
        padding: 11px 6px;
        text-align: center;
        border-radius: 8px;
        border: none;        /* 参考站手机端无边框（PC 端保留 2px 占位边框） */
        box-shadow: none;    /* 参考站手机端未选中无投影（PC 端保留） */
        text-decoration: none;
    }
    .route-tab .rt-name {
        min-width: 0;
        font-size: .92rem;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .route-tab .rt-desc { display: none; }
    .route-tab .rt-badge {
        position: static;      /* 取消右上角绝对定位，改为内联 */
        flex: 0 0 auto;
        margin: 0;
        font-size: .62rem;
        line-height: 1.7;
        padding: 0 6px;
    }
    .route-tab.active::before { width: 3px; }
    /* 手机端行距小，箭头相应缩小，避免与下一行卡片重叠 */
    .route-tab.active::after {
        bottom: -8px;
        border-left-width: 7px;
        border-right-width: 7px;
        border-top-width: 8px;
    }
    /* 图带：手机端并排一律降为单列（同参考站），间距收紧 */
    .gallery-strip.split-2,
    .gallery-strip.split-3 {
        grid-template-columns: 1fr;
        gap: 10px;
    }
    /* 行程亮点：手机端一行一个（同参考站） */
    .highlight-grid { grid-template-columns: 1fr; gap: 10px; margin-bottom: 20px; }
    .highlight-card { padding: 13px 15px; gap: 10px; }
    .highlight-card span { white-space: normal; font-size: .9rem; }
    /* 档位卡片的价格行：窄屏字号收紧，三列不换行 */
    .room-row.is-3col { grid-template-columns: minmax(0, auto) 1fr 1fr; gap: 2px; padding: 5px 0; }
    /* 三列（版本卡片）在手机上空间紧：房型名仍小一号，价格跟随 PC 放大（2026-11-09） */
    .room-row.is-3col .rr-left { font-size: .8rem; white-space: nowrap; }
    .room-row.is-3col .rr-mid,
    .room-row.is-3col .rr-right { font-size: .88rem; white-space: nowrap; }

    /* 基本信息：单列（图标 + 标签左 / 值右） */
    .pd-info-grid { grid-template-columns: 1fr; gap: 10px; }
    /* 基本信息（列车编号 / 方向 / 天数 / 上车地点）：逐值照参考站 .info-card 手机端
       单列、图标缩到 32px、间距收紧，且「标题靠左 + 值靠右」排在同一行 */
    .info-tag-grid { grid-template-columns: 1fr; gap: 10px; margin-bottom: 20px; }
    .info-card { padding: 12px 15px; gap: 12px; }
    .info-icon { width: 32px; height: 32px; font-size: 16px; flex-shrink: 0; }
    .info-content {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: space-between;   /* 标题左、值右，同一行 */
        gap: 8px;
    }
    .info-content h4 {
        font-size: .85rem;
        margin: 0;
        white-space: nowrap;
    }
    .info-content .info-value {
        font-size: .85rem;
        font-weight: 400;
        color: #8f9aa8;
        margin: 0;
        text-align: right;
        white-space: nowrap;
        word-break: normal;
    }

    /* 价格区：单列 */
    .room-price-card { padding: 20px; margin-bottom: 20px; }
    /* 标题 + 说明在窄屏放不下会被挤断行（「列车价 / 格」），改为说明单独占一行 */
    .room-title { font-size: 1.1rem; margin-bottom: 14px; flex-wrap: wrap; }
    .room-title .room-note { display: block; font-size: .68rem; margin-top: 2px; letter-spacing: 0; }
    /* 房型：手机端一律单列，卡片内紧凑行式 */
    .room-grid { grid-template-columns: 1fr; gap: 12px; }
    .room-item { padding: 15px; }
    .room-name { font-size: .92rem; gap: 6px; }
    .room-badge { top: 10px; right: 10px; font-size: .64rem; }
    /* 悬停气泡在窄屏贴右，避免溢出屏幕 */
    .room-tip { left: auto; right: -4px; min-width: 166px; }
    .room-tip::after { left: auto; right: 22px; }
    .room-tip-row { font-size: .76rem; }
    /* 铺位：手机端还原成单列（PC 端的上/下铺并排在这里会挤） */
    .room-rows.is-2col { grid-template-columns: 1fr; gap: 8px; }
    /* 手机端同样让铺位名与价格靠在一起（原来两列 1.1fr/0.9fr 把价格推到行尾） */
    .room-rows.is-2col .room-row {
        display: flex;
        justify-content: flex-start;
        align-items: center;
        gap: 6px;
        padding: 6px 0;
        border-top: 1px dashed #e8e3d6;
    }
    .room-rows.is-2col .room-row:first-child { border-top: none; }
    .room-name i { font-size: 1rem; }
    .room-detail { font-size: .8rem; }

    /* 班次：逐值对齐参考站 .date-item 的手机端（字号整体缩小，四个元素确保一行） */
    .schedule-card { padding: 20px; margin-bottom: 20px; }
    .schedule-header { flex-direction: column; align-items: flex-start; margin-bottom: 12px; }
    .schedule-header h3 { font-size: 1.1rem; }
    .date-item {
        /* 与 PC 同一套：左右 1fr，状态列落在整行正中 */
        grid-template-columns: 1fr auto 1fr;
        gap: 6px;
        padding: 10px 0;
    }
    .date-range { font-size: .78rem; white-space: nowrap; }
    .date-range i { font-size: .7rem; }
    .date-price { text-align: right; font-size: .78rem; white-space: nowrap; }
    .date-stock, .date-available, .date-tight, .date-soldout { font-size: .66rem; padding: 2px 5px; white-space: nowrap; }
    .date-btn { padding: 3px 8px; font-size: .68rem; white-space: nowrap; }
    .date-btn i { font-size: .66rem; }

    /* 行程：两列网格——第一行「D1 + 标题」并排，其余内容（描述/配图/餐食/住宿/贴士）
       通栏左对齐，左边缘与 D1 齐平（2026-11-10）。用 display:contents 拆掉 body 这层盒子，
       让它的子元素直接参与父级网格，才能实现「标题在 D1 右侧、其余通栏」的排版。 */
    .pd-itin-item {
        display: grid;
        grid-template-columns: auto 1fr;
        column-gap: 5px;          /* D1 与标题之间只留一个空格的距离 */
        row-gap: 0;
        padding: 14px;
    }
    .pd-itin-body { display: contents; }
    .pd-itin-no { min-width: 0; font-size: .9rem; grid-column: 1; grid-row: 1; }
    .pd-itin-title { font-size: .96rem; grid-column: 2; grid-row: 1; margin-bottom: 6px; }
    .pd-itin-img { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
    .pd-itin-desc { grid-column: 1 / -1; font-size: .84rem; }
    /* 餐食 / 住宿：每条一行，与 D1 左对齐；早/午/晚 各占一行并缩进到「餐食：」下方 */
    .pd-itin-meta {
        grid-column: 1 / -1;
        display: block;
        font-size: .76rem;
        margin-top: 2px;
    }
    .pd-itin-meta > span { display: flex; align-items: flex-start; gap: 5px; margin-bottom: 3px; }
    .pd-itin-meta .itin-meal-list { display: flex; flex-direction: column; }
    .pd-itin-meta .itin-meal-list > span + span::before { content: none; }
    .pd-itin-tips { grid-column: 1 / -1; font-size: .78rem; padding: 10px 12px; }
    .pd-itin-tips > i { font-size: .84rem; margin-right: 5px; }

    /* 费用上下堆叠 */
    .pd-fee-grid { grid-template-columns: 1fr; gap: 12px; }
    .pd-fee-card { padding: 18px 18px; }
    .pd-fee-list li { font-size: .86rem; }

    /* 提示单列 */
    .pd-tips-grid { grid-template-columns: 1fr; gap: 10px; padding: 16px 18px; }
    .pd-tips-grid li { font-size: .84rem; }

    /* 退改：手机上改为「时间段一行 + 说明一行」的上下结构（2026-11-10）
       原来用 white-space: nowrap 强制单行，「①列车发车前15-30天（含） 订单总金额的50%作为取消费。」
       这类长句在 375px 宽度下必然超出容器，把卡片撑破。 */
    .pd-refund-list { padding: 14px 16px; }
    .pd-refund-list li {
        flex-direction: column;
        align-items: flex-start;
        gap: 2px;
        padding: 9px 0;
        white-space: normal;
        word-break: break-word;
    }
    .pd-refund-list .rf-time { flex: none; font-size: .74rem; font-weight: 400; }
    .pd-refund-list .rf-rule { flex: none; font-size: .76rem; line-height: 1.7; }

    /* 退改说明小字同步收紧，避免同样溢出 */
    .pd-refund-note { margin: 0 0 10px; padding: 10px 14px; font-size: .78rem; }

    /* 须知 / 费用 内边距收紧 */
    .pd-note-list { padding: 14px 18px 14px 14px; }
    .pd-fee-card { padding: 18px; }

    /* 客服：按钮通栏（信息条已是纵向居中，这里只收紧内边距） */
    .pd-consult-btn { width: 100%; justify-content: center; padding: 13px 20px; font-size: 1rem; }
    .pd-contact { padding: 20px 16px; }
    .pd-contact img { width: 104px; height: 104px; }
    .pd-contact-txt h4 { font-size: .98rem; }

    /* 吸底 CTA */
    .pd-bottom-bar {
        display: flex;
        align-items: center;
        gap: 8px;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 900;
        background: #fff;
        border-top: 1px solid #eceae4;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
        box-shadow: 0 -4px 16px rgba(0,0,0,.06);
    }
    /* 价格 + 出发地（2026-11-08 定稿版）
       「¥78,880」在 HTML 里拆成 ¥ / 数字 / 起 三段，用 2 列 inline-grid 排：
         · 第 1 行第 1 列 = ¥，第 1 行第 2 列 = 数字 + 行内小字「起」（同基线）
         · 第 2 行第 2 列 = 出发地，左对齐 → 左端正好落在第一个数字（7）的左边
       之前「起」用绝对定位会跟数字上下错位，现已回到行内，基线天然对齐。 */
    .pd-bb-price {
        flex: 0 1 auto;
        min-width: 0;
        display: inline-flex;
        flex-direction: column;
        align-items: stretch;
    }
    .pd-bb-price.has-price {
        display: inline-grid;
        grid-template-columns: auto auto;
        grid-template-rows: auto auto;
        align-items: baseline;
        row-gap: 1px;
    }
    /* 价格：1.15rem → 1rem 并禁止换行（2026-11-08）。
       六位数的价格（¥128,888）加上后面的「起」，在 1.15rem 下挤不下会断成两行 */
    .pd-bb-price b {
        display: block;
        font-size: .92rem;
        color: var(--c-primary-dark);
        line-height: 1.3;
        white-space: nowrap;
    }
    /* ¥：与数字同字号同字重，靠 grid 的 baseline 对齐连成一行 */
    .pd-bb-price .pd-cur {
        grid-area: 1 / 1;
        font-size: .92rem;
        font-weight: 700;
        line-height: 1.3;
        color: var(--c-primary-dark);
        white-space: nowrap;
    }
    /* 数字段：不放 overflow:hidden —— 一旦裁切，grid 基线会退化成底边，
       ¥ 和数字就会上下错位 */
    .pd-bb-price .pd-num {
        grid-area: 1 / 2;
        min-width: 0;
    }
    /* 紧跟在数字后的「起」：普通行内元素 → 与数字同基线；
       top:-1px 是肉眼微调（汉字重心偏下，跟数字同基线时看着略低） */
    .pd-bb-price .pd-qi {
        position: relative;
        top: -1px;
        margin-left: 3px;
        font-size: .72rem;
        font-weight: 400;
    }
    .pd-bb-price small {
        display: block;
        font-size: .7rem;
        color: var(--c-text-3);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        text-align: left;
    }
    /* 出发地进第 2 列第 2 行：左端与第一个数字对齐（不含 ¥） */
    .pd-bb-price.has-price small { grid-area: 2 / 2; min-width: 0; }
    /* 价格块不再撑满，右侧按钮组靠 margin-left 顶到最右 */
    .pd-bottom-bar .act-group { margin-left: auto; }
    .pd-bb-btn {
        flex: 0 0 auto;
        background: var(--c-primary);
        color: #fff;
        font-size: .84rem;
        padding: 8px 14px;
        border-radius: 40px;
        text-decoration: none;
        white-space: nowrap;
        border: none;
    }
    .pd-bb-btn:hover { color: #fff; }
    .pd-bb-btn.is-disabled { background: #c9ccd1; }
    .pd-bb-kf {
        flex: 0 0 auto;
        width: 34px; height: 34px;
        border-radius: 50%;
        background: #f8f6f1;
        color: var(--c-primary);
        display: flex; align-items: center; justify-content: center;
        font-size: 1rem;
        text-decoration: none;
    }
}

/* ================= PC 吸底预订条 =================
   手机端用上面的 .pd-bottom-bar（窄，只有价格 + 预订）；
   PC 屏宽，多给三个联动下拉：出行日期 / 房型 / 版本。 */
.pd-book-bar { display: none; }

@media (min-width: 768px) {
    .pd-book-bar {
        display: block;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 900;
        background: rgba(255, 255, 255, .97);
        border-top: 1px solid #eceae4;
        box-shadow: 0 -6px 24px rgba(0, 0, 0, .08);
    }
    .pd-book-inner {
        max-width: 1200px;
        margin: 0 auto;
        padding: 12px 20px;
        display: flex;
        align-items: flex-end;
        gap: 16px;
    }
    /* 价格区：上行「价格」，下行小字「房型 · 版本」
       —— 高度撑满右侧「标签行 + 下拉行」（align-self:stretch），两行紧挨着、整体垂直居中；
          并【右对齐】：下行的右端与上行的价格右端对齐（align-items: flex-end）。 */
    .pd-book-price {
        flex: 0 0 auto;
        min-width: 132px;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: flex-end;
        gap: 2px;
        align-self: stretch;
        line-height: 1.2;
        white-space: nowrap;
    }
    .pd-book-num { font-size: 1.4rem; font-weight: 700; color: var(--c-primary-dark); }
    .pd-book-unit { font-size: .78rem; font-weight: 400; color: var(--c-text-3); }
    .pd-book-sub { font-size: .7rem; color: var(--c-text-3); }   /* 与右侧标签同字号 */
    .pd-book-field { flex: 1 1 0; min-width: 0; }
    .pd-book-field label { display: block; font-size: .7rem; color: var(--c-text-3); margin-bottom: 3px; }
    .pd-book-sel {
        width: 100%;
        height: 38px;
        padding: 0 10px;
        font-size: .86rem;
        color: var(--c-text);
        background: #fff;
        border: 1px solid #e3e0d8;
        border-radius: 8px;
    }
    .pd-book-sel:focus { outline: none; border-color: var(--c-primary); }
    /* 只有一个版本时不给选择框，灰底当文字看 */
    .pd-book-sel.is-static { background: #f8f6f1; color: var(--c-text-2); }
    .pd-book-kf {
        flex: 0 0 auto;
        width: 38px; height: 38px;
        border-radius: 50%;
        background: #f8f6f1;
        color: var(--c-primary);
        display: flex; align-items: center; justify-content: center;
        font-size: 1.05rem;
        text-decoration: none;
    }
    .pd-book-btn {
        flex: 0 0 auto;
        background: var(--c-primary);
        color: #fff;
        font-size: .96rem;
        font-weight: 600;
        padding: 11px 34px;
        border-radius: 40px;
        text-decoration: none;
        white-space: nowrap;
    }
    .pd-book-btn:hover { color: #fff; opacity: .92; }
    .pd-book-btn.is-disabled { background: #c9ccd1; }
    /* PC 端固定预订条（.pd-book-bar，实测 82px）的避让。
       用【页脚自身的底部内边距】让深色页脚一直铺到条底下，最后一行也躲开这条 ——
       原来这里是 `body.page-product { padding-bottom: 82px }`：靠页脚下方留 82px 空白、
       刚好被不透明的条盖住，效果凑合但很脆弱（条一改高度就露浅色空档）。
       改成页脚内边距后：滚到底时深色页脚铺到视口底，最后一行距条顶还有 8px 余量。 */
    .page-product .site-footer { padding-bottom: calc(82px + 8px); }

    /* ---- 竖向留白压缩（仅 PC；手机端保持原样）----
       原来：尾部 166px / 各区块 padding 28~30px / 区块间距 22px / 班次行 58px 高。
       这里把「外层留白」收一档，正文与卡片内容不动。 */
    .pd-wrap { padding-bottom: 0; }                       /* 原 90px */
    .pd-wrap > *:last-child { margin-bottom: 0; }         /* 最后一块不再留 22px */
    /* main 上带着 Bootstrap 的 .py-lg-4（padding-bottom:1.5rem !important），只能用 !important 覆盖 */
    body.page-product main { padding-bottom: 0 !important; }   /* 原 24px */
    /* 列车编号这一排信息卡：上下都拉开（2026-11-09，按参考站 kunminghao 的留白）。
       原来是压缩值 14/14，挨得比较紧 */
    .info-tag-grid { margin-top: 26px; margin-bottom: 30px; }
    .info-card { padding-top: 20px; padding-bottom: 20px; }
    .room-price-card, .schedule-card {
        padding-top: 22px; padding-bottom: 22px;          /* 原 30 / 30 */
        margin-bottom: 14px;                              /* 原 22 */
    }
    .room-title, .schedule-header { margin-bottom: 14px; }      /* 原 20 */
    .room-item { padding-top: 16px; padding-bottom: 16px; }     /* 原 20 / 20 */
    .date-item { padding-top: 9px; padding-bottom: 9px; }       /* 原 12 / 12 */
    .pd-block {
        padding-top: 20px; padding-bottom: 20px;          /* 原 28 / 28 */
        margin-bottom: 14px;                              /* 原 22 */
    }
    .pd-contact { padding-top: 20px; padding-bottom: 20px; }    /* 原 26 / 26 */
}
