.public-site .service-packages-page{background:var(--site-surface);min-height:60vh}
.public-site .packages-hero{position:relative;overflow:hidden;padding:68px 0;background:linear-gradient(112deg,var(--site-deep),var(--site-navy));color:#fff}
.public-site .packages-hero:after{content:"";position:absolute;right:-90px;top:-170px;width:430px;height:430px;border:74px solid rgba(255,255,255,.055);border-radius:50%}
.public-site .packages-hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 350px;align-items:center;gap:64px}
.public-site .packages-hero h1{margin:0 0 14px;color:#fff;font-size:clamp(2.5rem,5vw,4.3rem);line-height:1.05}
.public-site .packages-hero p{max-width:650px;margin:0;color:#d7e8fb;font-size:1.05rem}
.public-site .packages-promise{display:flex;align-items:center;gap:16px;padding:20px 22px;border:1px solid rgba(255,255,255,.25);border-radius:12px;background:rgba(255,255,255,.08);backdrop-filter:blur(8px)}
.public-site .packages-promise>span{display:grid;place-items:center;width:48px;height:48px;flex:none;border-radius:50%;background:#fff;color:var(--site-red);font-size:1.4rem;font-weight:900}
.public-site .packages-promise p{display:flex;flex-direction:column;gap:3px;font-size:.92rem}.public-site .packages-promise strong{color:#fff}.public-site .packages-promise small{color:#c5dcf5;line-height:1.45}
.public-site .packages-content{padding:46px 0 84px}
.public-site .package-city-nav{display:flex;align-items:center;gap:26px;margin-bottom:42px;padding:15px 18px;border:1px solid #cdddea;border-left:4px solid var(--site-blue);border-radius:9px;background:#fff;box-shadow:0 8px 24px rgba(8,63,145,.06)}.public-site .package-city-nav>strong{flex:none;color:var(--site-navy);font-size:.86rem}.public-site .package-city-nav>div{display:flex;flex-wrap:wrap;gap:10px}.public-site .package-city-nav a{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 15px;border:1px solid #bad1e5;border-radius:5px;background:#f4f9fd;color:var(--site-navy);font-weight:800}.public-site .package-city-nav a:hover{border-color:var(--site-blue);background:#e9f4ff;color:var(--site-blue)}.public-site .package-city-nav a.is-active{border-color:var(--site-blue);background:var(--site-blue);box-shadow:0 6px 14px rgba(8,102,190,.18);color:#fff}.public-site .package-city-nav a:focus-visible{outline:3px solid rgba(8,102,190,.2);outline-offset:2px}
.public-site .package-city-groups{display:grid;gap:48px}.public-site .package-city-group{min-width:0}.public-site .package-city-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px;padding-bottom:13px;border-bottom:2px solid #d7e5f1}.public-site .package-city-heading>div{display:flex;align-items:center;gap:10px}.public-site .package-city-heading>div>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e9f4ff;color:var(--site-blue);font-size:1rem;font-weight:900}.public-site .package-city-heading h3{margin:0;color:var(--site-navy);font-size:1.55rem}.public-site .package-city-heading small{color:var(--site-muted);font-weight:700}

.public-site .package-divider--excludes{margin-top:20px;color:#8a6a6a}
.public-site .package-excludes li{color:#7b6a6a}.public-site .package-excludes li>span{background:#fdeeee;color:#a33}
.public-site .packages-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;align-items:stretch}
.public-site .package-card{position:relative;display:flex;min-width:0;flex-direction:column;padding:26px 24px;border:1px solid var(--site-line);border-top:5px solid var(--site-navy);border-radius:12px;background:#fff;box-shadow:0 12px 32px rgba(8,63,145,.07)}
.public-site .package-card-featured{border-color:#9ec4ed;border-top-color:var(--site-red);box-shadow:0 18px 44px rgba(8,63,145,.14);transform:translateY(-10px)}
.public-site .package-recommended{position:absolute;top:-5px;right:20px;padding:8px 13px;border-radius:0 0 7px 7px;background:var(--site-red);color:#fff;font-size:.75rem;font-weight:850;letter-spacing:.05em}
.public-site .package-card>header{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:start;column-gap:14px;row-gap:8px;min-height:116px}.public-site .package-sequence{align-self:start;padding-top:5px;color:#9db0c6;font:700 .78rem/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}.public-site .package-card h3{grid-column:2;margin:0;font-size:1.45rem}.public-site .package-card header p{grid-column:1/-1;margin:0;color:var(--site-muted);font-size:.9rem;line-height:1.65}
.public-site .package-price{display:flex;align-items:baseline;margin:18px 0 22px;color:var(--site-navy)}.public-site .package-price>span{margin-right:3px;font-size:1.2rem;font-weight:800}.public-site .package-price strong{font-size:2.75rem;line-height:1}.public-site .package-price small{margin-left:7px;color:var(--site-muted)}
.public-site .package-divider{display:flex;align-items:center;gap:12px;margin-bottom:18px;color:#75869b;font-size:.75rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.public-site .package-divider:after{content:"";height:1px;flex:1;background:var(--site-line)}
.public-site .package-card ul{display:grid;gap:12px;margin:0 0 24px;padding:0;list-style:none}.public-site .package-card li{display:grid;grid-template-columns:23px minmax(0,1fr);gap:8px;color:#344d6b;font-size:.92rem}.public-site .package-card li>span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#e8f4ff;color:var(--site-blue);font-size:.75rem;font-weight:900}
.public-site .package-extra{display:flex;justify-content:space-between;gap:16px;margin:auto 0 18px;padding:13px 0;border-top:1px dashed #cad7e5;color:var(--site-muted);font-size:.86rem}.public-site .package-extra strong{color:var(--site-ink)}
.public-site .package-action{display:flex;align-items:center;justify-content:space-between;min-height:48px;margin-top:auto;padding:0 18px;border:1px solid var(--site-red);border-radius:7px;background:var(--site-red);box-shadow:0 9px 20px rgba(241,39,47,.2);color:#fff;font-weight:850}.public-site .package-action:hover{border-color:var(--site-red-dark);background:var(--site-red-dark);box-shadow:0 11px 24px rgba(217,28,36,.28);transform:translateY(-1px)}.public-site .package-action:focus-visible{outline:3px solid rgba(241,39,47,.22);outline-offset:3px}.public-site .package-card-featured .package-action{background:var(--site-red)}.public-site .package-card-featured .package-action:hover{background:var(--site-red-dark)}
.public-site .packages-note{display:flex;align-items:center;gap:14px;margin-top:32px;padding:18px 22px;border:1px solid #cfe0f1;border-radius:10px;background:#edf6ff}.public-site .packages-note>span{display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:50%;background:var(--site-navy);color:#fff;font-weight:850}.public-site .packages-note p{display:flex;flex-direction:column;margin:0}.public-site .packages-note small{color:var(--site-muted);line-height:1.6}.public-site .packages-empty{grid-column:1/-1;padding:60px;border:1px dashed var(--site-line);background:#fff;text-align:center;color:var(--site-muted)}
.public-site .packages-city-coming-soon{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px;min-height:150px;padding:32px;border:1px dashed #b9cde0;border-radius:12px;background:linear-gradient(135deg,#fff,#f5f9fd);color:var(--site-navy);text-align:center}.public-site .packages-city-coming-soon>span{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#e8f3fd;color:var(--site-blue);font-size:1.1rem}.public-site .packages-city-coming-soon strong{font-size:1.05rem}
@media(max-width:1100px){.public-site .packages-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-site .package-card-featured{transform:none}.public-site .package-card>header{min-height:0}}
@media(max-width:980px){.public-site .packages-hero-inner{grid-template-columns:1fr}.public-site .packages-promise{max-width:470px}}
@media(max-width:680px){.public-site .packages-grid{grid-template-columns:1fr}.public-site .package-card-featured{transform:none}.public-site .package-card>header{min-height:0;row-gap:6px}.public-site .package-card h3{font-size:1.3rem}.public-site .package-city-heading{flex-wrap:wrap;gap:8px 14px}.public-site .package-city-heading h3{font-size:1.3rem}}
@media(max-width:600px){.public-site .packages-content{padding:28px 0 56px}.public-site .package-city-nav{align-items:stretch;flex-direction:column;gap:10px;padding:13px 14px;margin-bottom:26px}.public-site .package-city-nav>strong{flex:none}.public-site .package-city-nav>div{width:100%;flex-wrap:nowrap;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent)}.public-site .package-city-nav>div::-webkit-scrollbar{display:none}.public-site .package-city-nav a{flex:none;white-space:nowrap;min-height:36px;padding:0 14px;font-size:.86rem}.public-site .package-city-groups{gap:32px}.public-site .package-city-heading h3{font-size:1.3rem}.public-site .package-card{padding:22px 18px}.public-site .package-price strong{font-size:2.2rem}.public-site .packages-note{align-items:flex-start}}
.public-site .package-repeat-backdrop{position:fixed;z-index:1200;inset:0;display:grid;place-items:center;padding:20px;background:rgba(10,31,53,.58);backdrop-filter:blur(4px)}
.public-site .package-repeat-dialog{width:min(460px,100%);padding:30px;border:1px solid #d6e1ec;border-top:5px solid var(--site-red);border-radius:14px;background:#fff;box-shadow:0 28px 80px rgba(4,22,42,.3);text-align:center}
.public-site .package-repeat-icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 16px;border-radius:50%;background:#fff0f0;color:var(--site-red);font-size:1.35rem;font-weight:900}
.public-site .package-repeat-dialog h2{margin:0 0 10px;color:var(--site-navy);font-size:1.45rem}.public-site .package-repeat-dialog p{margin:0 0 14px;color:var(--site-muted);line-height:1.7}.public-site .package-repeat-dialog>strong{display:block;padding:12px;border-radius:8px;background:#f2f7fb;color:var(--site-ink)}
.public-site .package-repeat-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:12px;margin-top:22px}.public-site .package-repeat-actions form{margin:0}.public-site .package-repeat-cancel,.public-site .package-repeat-confirm{display:flex;align-items:center;justify-content:center;width:100%;min-height:46px;border-radius:7px;font-weight:800}.public-site .package-repeat-cancel{border:1px solid #cbd8e4;background:#fff;color:var(--site-muted)}.public-site .package-repeat-confirm{border:1px solid var(--site-red);background:var(--site-red);color:#fff;cursor:pointer}.public-site .package-repeat-confirm:hover{background:var(--site-red-dark)}
@media(max-width:480px){.public-site .package-repeat-dialog{padding:24px 20px}.public-site .package-repeat-actions{grid-template-columns:1fr}}

/* Paid service package order: a short handoff from checkout to consultation. */
.package-order-page{min-height:calc(100vh - 150px);padding:34px 0 64px;background:#f3f7f8}.package-order-shell{max-width:none}.package-order-back{display:inline-flex;margin-bottom:18px;color:#526f7b;font-size:.78rem;font-weight:750}.package-order-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px;padding:22px 24px;border-left:5px solid #237a65;background:#fff;box-shadow:0 8px 22px rgba(28,55,65,.06)}.package-order-head span,.package-order-label,.package-order-step{color:#347662;font:.75rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em}.package-order-head h1{margin:5px 0 4px;color:#233f4b;font-size:1.75rem}.package-order-head p{margin:0;color:#70818a;font-size:.84rem}.package-order-status{flex:none;padding:7px 10px;border:1px solid #cad8dd;background:#f4f7f8;color:#60727c;font-size:.72rem}.package-order-status.status-paid,.package-order-status.status-consultation_created{border-color:#b9d9cc;background:#edf7f2;color:#226d54}.package-order-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:18px}.package-order-summary,.package-order-next{border:1px solid #d6e0e4;background:#fff;padding:24px;box-shadow:0 5px 16px rgba(30,54,64,.045)}.package-order-summary{border-top:3px solid #7899a7}.package-order-summary h2,.package-order-next h2{margin:7px 0 18px;color:#294451;font-size:1.2rem}.package-order-summary dl{margin:0;border-top:1px solid #e0e7ea}.package-order-summary dl>div{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid #e5ebed}.package-order-summary dt{color:#7a8990;font-size:.74rem}.package-order-summary dd{margin:0;color:#334d59;font-size:.8rem;font-weight:750;text-align:right;overflow-wrap:anywhere}.package-order-summary .package-order-total{align-items:end;padding-top:20px;border-bottom:0}.package-order-total dd{color:#9d493e;font-size:1.55rem}.package-order-next{border-top:3px solid #237a65}.package-order-next>p{margin:-8px 0 20px;color:#6e7f87;font-size:.82rem;line-height:1.65}.package-order-primary{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;border:1px solid #1a6957;background:#237a65;color:#fff;font-weight:800}.package-order-primary:hover{background:#1a6957;color:#fff}.package-order-primary:disabled{border-color:#aab6ba;background:#aab6ba;cursor:not-allowed}.package-order-unavailable{display:block;margin-top:9px;color:#9b4c42;font-size:.72rem}.package-order-test{margin-top:18px;padding-top:16px;border-top:1px dashed #cfdadd}.package-order-test button{width:100%;min-height:40px;border:1px solid #9babb2;background:#f5f7f8;color:#435c67}.package-order-test small{display:block;margin-top:7px;color:#849198;font-size:.68rem;text-align:center}.package-order-page>.container>.alert{margin-bottom:16px}
@media(max-width:760px){.package-order-page{padding-top:20px}.package-order-head{align-items:flex-start;flex-direction:column;padding:18px}}

/* ── 服务订单详情页专属布局（仅 service-package-order.ftlh；用 .package-order-detail 作用域隔离，不影响下单页/微信支付页） ── */

/* 本页排版阶梯：字号只取 13 / 14 / 16 / 20 / 22 / 26 / 30 七档，下面所有规则一律引用变量。
   改之前是全页 0.68/0.7/0.72/0.74/0.76/0.78/0.8/0.82/0.84rem 十来个字号混用，相邻两档差不到 1px，
   既看不出层级、又整体偏小（最小 10.9px），所以「有些字大有些字小」。
   两个必须先说的坑：
   ① 全局有 `body.public-site main :is(h1, .hero-title)` / `:is(h2, .section-title)`（:is() 取参数最高权重，
      实际是 (0,2,2)），比本页两条 class 的规则还高 —— 打权重没用，直接覆盖它读取的变量即可（见下）。
   ② 全局还有 `main section[class*="hero"] :is(h1,h2){font-size:var(--type-hero-title) !important}`（32→48px 的营销大标题）。
      旧的类名 `package-order-hero` 会被 `[class*="hero"]` 命中，把订单标题顶到 48px，已改名 `package-order-banner` 避开。 */
.package-order-page.package-order-detail{
  --po-meta:.8125rem;      /* 13px 元信息·徽章·页脚说明（下限，再小就不可读了） */
  --po-support:.875rem;    /* 14px 次要文字·字段名·帮助 */
  --po-body:1rem;          /* 16px 正文·字段值·列表·按钮 */
  --po-subtitle:1rem;      /* 16px 卡内小标题（h3） */
  --po-section:1.25rem;    /* 20px 卡片/区块标题（h2） */
  --po-amount:1.375rem;    /* 22px 汇总金额 */
  --po-amount-xl:1.625rem; /* 26px 头部金额 */
  --po-title:clamp(1.5rem,2.3vw,1.875rem); /* 24→30px 页面标题（h1） */
  --po-ink:#334d59;        /* 正文色 */
  --po-ink-soft:#5f7078;   /* 次要文字：白底对比度 ≈5.1:1（原来的 #849198 只有 2.9:1，不达 AA） */
  --po-ink-amount:#9d493e;
  /* 同步站点标题变量，让上面①的全局规则算成我们的值 */
  --type-page-title:clamp(1.5rem,2.3vw,1.875rem);
  --type-section-title:1.25rem;
}
.package-order-detail .package-order-banner{margin-bottom:18px;border-left:5px solid #237a65;background:#fff;box-shadow:0 8px 22px rgba(28,55,65,.06)}
.package-order-detail .package-order-head{margin:0;align-items:flex-start;padding:26px 28px 20px;border-left:0;background:none;box-shadow:none}
.package-order-detail .package-order-head h1{margin:7px 0 6px;font-size:var(--po-title);line-height:1.25;letter-spacing:-.01em}
.package-order-detail .package-order-head p{margin:0;color:var(--po-ink-soft);font-size:var(--po-support);line-height:1.65}
.package-order-detail .package-order-head-side{display:flex;flex-direction:column;align-items:flex-end;gap:13px;flex:none}
.package-order-detail .package-order-status{padding:6px 11px;border:1px solid #cad8dd;background:#f4f7f8;color:#60727c;font-size:var(--po-meta);line-height:1.5}
.package-order-detail .package-order-status.status-paid,.package-order-detail .package-order-status.status-consultation_created{border-color:#b9d9cc;background:#edf7f2;color:#226d54}
.package-order-detail .package-order-status.status-in_service,.package-order-detail .package-order-status.status-completed{border-color:#9fcfba;background:#e7f6ef;color:#176448}
.package-order-detail .package-order-status.status-cancelled,.package-order-detail .package-order-status.status-refunding,.package-order-detail .package-order-status.status-refunded{border-color:#e3c6be;background:#fbf1ee;color:#a2472f}
.package-order-detail .package-order-amount{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.package-order-detail .package-order-amount small{color:var(--po-ink-soft);font-size:var(--po-meta);letter-spacing:.04em}
.package-order-detail .package-order-amount b{color:var(--po-ink-amount);font-size:var(--po-amount-xl);font-weight:800;line-height:1.05}
.package-order-detail .package-order-paid-flag{font-style:normal;color:#1a6954;font-size:var(--po-meta);font-weight:750;line-height:1.3}
.package-order-detail .package-order-grid{grid-template-columns:minmax(0,1.7fr) minmax(320px,1fr);align-items:start}
.package-order-detail .package-order-grid--single{grid-template-columns:minmax(0,1fr)}
.package-order-detail .package-order-card{border:1px solid #d6e0e4;background:#fff;padding:22px;box-shadow:0 5px 16px rgba(30,54,64,.045)}
.package-order-detail .package-order-card h2{margin:7px 0 14px;color:#294451;font-size:var(--po-section);line-height:1.35}
.package-order-detail .package-order-card>h2:first-child{margin-top:0}
.package-order-detail .package-order-card>p:last-child{margin-bottom:0}
.package-order-detail .package-order-card dl{margin:0;border-top:1px solid #e9eff1}
.package-order-detail .package-order-card dl>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid #eef3f4}
.package-order-detail .package-order-card dt{color:var(--po-ink-soft);font-size:var(--po-support)}
.package-order-detail .package-order-card dd{margin:0;color:var(--po-ink);font-size:var(--po-body);font-weight:600;text-align:right;overflow-wrap:anywhere}
.package-order-detail .package-order-summary{border-top:3px solid #7899a7}
/* 套餐详情：付款前把「买的是什么」摊开（描述 / 包含内容 / 费用不含），内容取套餐当前配置。 */
.package-order-detail .package-order-package-desc{margin:0 0 16px;color:var(--po-ink-soft);font-size:var(--po-body);line-height:1.75}
.package-order-detail .package-order-package-block{margin:0 0 16px;padding:14px 16px;border:1px solid #e2ebee;border-radius:9px;background:#fbfdfe}
.package-order-detail .package-order-package-block h3{margin:0 0 9px;color:#237a65;font-size:var(--po-subtitle);font-weight:800}
.package-order-detail .package-order-package-block--excludes{border-color:#e8ded9;background:#fdfbfa}
.package-order-detail .package-order-package-block--excludes h3{color:#8f4231}
.package-order-detail .package-order-package-list{display:grid;gap:7px;list-style:none;margin:0;padding:0}
.package-order-detail .package-order-package-list li{display:flex;gap:8px;color:var(--po-ink);font-size:var(--po-body);line-height:1.6}
.package-order-detail .package-order-package-list li span{flex:none;color:#237a65;font-weight:800}
.package-order-detail .package-order-package-block--excludes .package-order-package-list li span{color:#b4553f}
/* 支付页改单区（仅未支付时出现）：陪诊数量 + 加购项同一个表单，改完即重算总额 */
.package-order-detail .package-order-quantity{display:block;margin:0 0 10px;padding:12px 14px;border:1px solid #dbe7ea;border-radius:9px;background:#f8fbfc}
.package-order-detail .package-order-quantity-row{display:flex;align-items:center;gap:10px}
/* 注意：app.css 的全局 `select{width:100%}` 会让下拉抢光整行、把标签挤成两行，所以这里必须显式 width:auto */
.package-order-detail .package-order-quantity-row label{flex:0 0 auto;color:var(--po-ink);font-size:var(--po-body);font-weight:700;white-space:nowrap}
.package-order-detail .package-order-quantity-row select{flex:0 0 auto;width:auto;min-width:92px;min-height:42px;padding:0 10px;border:1px solid #cbdade;border-radius:7px;background:#fff;color:var(--po-ink);font-size:var(--po-body);font-weight:700;cursor:pointer}
.package-order-detail .package-order-quantity-submit{min-height:42px;padding:0 14px;border:1px solid #9babb2;border-radius:7px;background:#f5f7f8;color:#435c67;font-size:var(--po-support);font-weight:700;cursor:pointer}
/* 加购项：一行一个，勾选后立即提交重算（金额永远与勾选一致，不会「忘了点更新」） */
.package-order-detail .package-order-addons{margin-top:12px;padding-top:10px;border-top:1px dashed #d8e1e7}
.package-order-detail .package-order-addons-title{display:block;margin-bottom:6px;color:var(--po-ink-soft);font-size:var(--po-meta);font-weight:800;letter-spacing:.04em}
.package-order-detail .package-order-addon{width:100%;min-width:0;padding:7px 0;cursor:pointer}
.package-order-detail .package-order-addon span{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex:1;min-width:0}
.package-order-detail .package-order-addon b{color:var(--po-ink);font-size:var(--po-body);font-weight:700}
.package-order-detail .package-order-addon small{flex:none;color:#155675;font-size:var(--po-support);font-weight:800}
.package-order-detail .package-order-next .package-order-addons-help{margin:6px 0 0;color:var(--po-ink-soft);font-size:var(--po-meta);line-height:1.6}
.package-order-detail .package-order-next .package-order-quantity-note{margin:0 0 16px;color:var(--po-ink-soft);font-size:var(--po-support);line-height:1.65}
.package-order-detail .package-order-breakdown{margin:0;padding:0;border-top:0}
.package-order-detail .package-order-breakdown ul{list-style:none;margin:0;padding:0}
.package-order-detail .package-order-breakdown li{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #eef3f4;font-size:var(--po-body);color:var(--po-ink)}
.package-order-detail .package-order-breakdown em{font-style:normal;font-size:var(--po-meta);padding:.1rem .4rem;border-radius:4px;background:#eef1f3;color:var(--po-ink-soft);margin-right:.4rem}
.package-order-detail .package-order-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-top:14px;padding-top:14px;border-top:1px solid #e9eff1}
.package-order-detail .package-order-total-row span{color:var(--po-ink-soft);font-size:var(--po-support)}
.package-order-detail .package-order-total-row b{color:var(--po-ink-amount);font-size:var(--po-amount);font-weight:800}
.package-order-detail .package-order-next{border-top:3px solid #237a65}
.package-order-detail .package-order-next p{margin:0 0 18px;color:var(--po-ink-soft);font-size:var(--po-support);line-height:1.7}
.package-order-detail .package-order-next form{margin:0 0 10px}
.package-order-detail .package-order-next form:last-child{margin-bottom:0}
.package-order-detail .package-order-primary{border-radius:8px;font-size:var(--po-body)}
.package-order-detail .package-order-unavailable{display:block;margin:9px 0 0;color:#9b4c42;font-size:var(--po-meta);line-height:1.55}
.package-order-detail .package-order-test{margin-top:8px;padding-top:16px;border-top:1px dashed #cfdadd}
.package-order-detail .package-order-test button{width:100%;min-height:42px;border:1px solid #9babb2;border-radius:8px;background:#f5f7f8;color:#435c67;font-size:var(--po-support);cursor:pointer}
.package-order-detail .package-order-test small{display:block;margin-top:7px;color:var(--po-ink-soft);font-size:var(--po-meta);line-height:1.6;text-align:center}
.package-order-detail .package-order-fulfillment{margin:0 0 18px;border-top:3px solid #237a65}
.package-order-detail .package-order-fulfillment-note{margin-top:14px;padding:13px 15px;border:1px dashed #cfe0d8;border-radius:8px;background:#f4faf7;color:#3f6b5c;font-size:var(--po-support);line-height:1.65}
.package-order-detail .package-order-fulfillment-group{margin-top:16px;padding-top:14px;border-top:1px solid #eef3f4}
.package-order-detail .package-order-fulfillment-group h3{margin:0 0 10px;color:#237a65;font-size:var(--po-subtitle);font-weight:800}
.package-order-detail .package-order-fulfillment-group dl{margin:0}
.package-order-detail .package-order-fulfillment-group dl + .package-order-fulfillment-leg{margin-top:12px}
.package-order-detail .package-order-fulfillment-leg{margin:0 0 4px;padding:.18rem .5rem;border-radius:5px;background:#eef5f2;color:#3f6b5c;font-size:var(--po-meta);font-weight:700}
.package-order-detail .package-order-group-fold{border:1px solid #e2ebee;border-radius:9px;background:#fcfdfe;padding:0;margin-top:12px}
.package-order-detail .package-order-group-head{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;list-style:none;border-bottom:0}
.package-order-detail .package-order-group-head::-webkit-details-marker{display:none}
.package-order-detail .package-order-group-head h3{flex:none;margin:0;color:#237a65;font-size:var(--po-subtitle);font-weight:800}
.package-order-detail .package-order-group-summary{min-width:0;flex:1;text-align:right;color:var(--po-ink);font-size:var(--po-support);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.package-order-detail .package-order-group-arrow{flex:none;width:16px;height:16px;position:relative;color:#8a99a1}
.package-order-detail .package-order-group-arrow::after{content:"";position:absolute;left:3px;top:3px;width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg);transition:transform .16s ease}
.package-order-detail .package-order-group-fold[open] .package-order-group-head{border-bottom:1px solid #eef3f4}
.package-order-detail .package-order-group-fold[open] .package-order-group-arrow::after{transform:rotate(-135deg)}
.package-order-detail .package-order-group-body{padding:2px 14px 12px}
.package-order-detail .package-order-group-body dl{border-top:0}
.package-order-detail .package-order-group-body dd a{color:#237a65;font-weight:750;text-decoration:none}
.package-order-detail .package-order-group-body dd a:hover{text-decoration:underline}
/* 司机车辆照片画廊：在「行程司机」折叠块内、各段司机信息下方展示，复用履约分组绿色调。 */
.package-order-detail .package-order-fulfillment-photos{margin-top:12px;padding-top:12px;border-top:1px dashed #e2ebee}
.package-order-detail .package-order-fulfillment-photos-label{display:block;margin:0 0 8px;color:#3f6b5c;font-size:var(--po-meta);font-weight:700}
.package-order-detail .package-order-fulfillment-photos-grid{display:flex;flex-wrap:wrap;gap:9px}
.package-order-detail .package-order-fulfillment-photos-grid img{width:96px;height:72px;object-fit:cover;border-radius:8px;border:1px solid #e2ebee;background:#f4faf7;cursor:zoom-in;transition:transform .16s ease,box-shadow .16s ease}
.package-order-detail .package-order-fulfillment-photos-grid img:hover{transform:scale(1.04);box-shadow:0 4px 14px rgba(35,122,101,.18)}
@media(max-width:680px){.package-order-detail .package-order-fulfillment-photos-grid img{width:80px;height:60px}}
/* 未支付撤单入口：放在支付按钮下方，弱化处理（描边按钮），不跟主支付按钮抢注意力。 */
.package-order-detail .package-order-cancel-form{margin-top:16px;padding-top:16px;border-top:1px dashed #e2d8d4}
.package-order-detail .package-order-cancel-submit{width:100%;min-height:42px;border:1px solid #cbbdb8;border-radius:8px;background:#fdfbfa;color:#8f4231;font-size:var(--po-body);font-weight:700;cursor:pointer}
.package-order-detail .package-order-cancel-submit:hover{background:#f8efe9;border-color:#bfa79f}
.package-order-detail .package-order-cancel-form small{display:block;margin-top:8px;color:var(--po-ink-soft);font-size:var(--po-meta);line-height:1.6;text-align:center}
.package-order-detail .package-order-refund{display:block;margin-top:18px;padding:18px 22px;border:1px solid #e6d7d3;background:#fdfbfa;box-shadow:none}
.package-order-detail .package-order-refund h2{margin:0 0 6px;color:#8f4231;font-size:var(--po-section);line-height:1.35}
.package-order-detail .package-order-refund p{margin:0 0 14px;font-size:var(--po-support);color:var(--po-ink-soft);line-height:1.65}
/* 「取消原因」+ 下拉 + 「取消服务并退款」按钮整条排在一行：flex 单行、垂直居中，
   宽度不够时整组折行（下拉先占满一行，按钮跟到下一行）。
   选择器一律带 `.package-order-detail .package-order-refund` 三层前缀（(0,3,1) 起）：
   public-foundation.css 的 `.public-site button[type="submit"]` 是 (0,2,1) 且带 min-height:44px，
   页面级 CSS 先加载、平手必输 —— 之前按钮被刷成站点亮红、次按钮也变红、高度被 44px 顶掉，
   「取消原因」又是竖排标签（独占一行），于是看着就不在一行上。 */
.package-order-detail .package-order-refund .package-order-refund-form{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.package-order-detail .package-order-refund .package-order-refund-form label{display:flex;flex-direction:row;align-items:center;gap:9px;flex:1 1 240px;min-width:0;font-size:var(--po-support);color:var(--po-ink-soft)}
.package-order-detail .package-order-refund .package-order-refund-form label>span{flex:0 0 auto;white-space:nowrap;font-size:var(--po-support);color:var(--po-ink-soft)}
/* 下拉与按钮统一 42px 高 + 同一条中线，避免「取消原因」和按钮高低错位。 */
.package-order-detail .package-order-refund .package-order-refund-form input,
.package-order-detail .package-order-refund .package-order-refund-form select{flex:1 1 auto;width:auto;min-width:0;height:42px;min-height:42px;padding:0 11px;border:1px solid #dcd5d3;border-radius:8px;font-size:var(--po-body);background:#fff;color:var(--po-ink)}
.package-order-detail .package-order-refund .package-order-refund-form select{cursor:pointer}
.package-order-detail .package-order-refund .package-order-refund-actions{display:flex;flex:0 0 auto;flex-wrap:nowrap;gap:9px}
.package-order-detail .package-order-refund .package-order-refund-actions button{height:42px;min-height:42px;padding:0 16px;border-radius:8px;font-size:var(--po-body);font-weight:700;line-height:1;white-space:nowrap;box-shadow:none;transform:none;cursor:pointer}

/* 文件上方那组旧 `.package-order-*` 规则里还有两个没被本段覆盖的字号（返回链接、等宽小标签），一并收回本页阶梯。 */
.package-order-detail .package-order-back{color:var(--po-ink-soft);font-size:var(--po-support);font-weight:700}
.package-order-detail .package-order-head span,
.package-order-detail .package-order-label{font-size:var(--po-meta);line-height:1.5}
.package-order-detail .package-order-refund .package-order-refund-submit{border:1px solid #a94a37;background:#b4553f;color:#fff}
.package-order-detail .package-order-refund .package-order-refund-submit:hover{border-color:#a94a37;background:#a94a37;color:#fff;transform:none}
.package-order-detail .package-order-refund .package-order-refund-test{border:1px solid #9babb2;background:#f5f7f8;color:#435c67}
.package-order-detail .package-order-refund .package-order-refund-test:hover{border-color:#9babb2;background:#eceff0;color:#435c67;transform:none}
@media(max-width:980px){.package-order-detail .package-order-grid{grid-template-columns:1fr}}
@media(max-width:760px){.package-order-detail .package-order-head{flex-direction:column;gap:16px;padding:20px 20px 16px}.package-order-detail .package-order-head-side{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:16px}.package-order-detail .package-order-amount{align-items:flex-start}}
@media(max-width:680px){.package-order-detail .package-order-group-head{flex-wrap:wrap;padding:11px 13px}.package-order-detail .package-order-group-summary{flex-basis:100%;order:3;text-align:left;padding-left:24px;white-space:normal}.package-order-detail .package-order-group-body{padding:2px 13px 11px}}

/* Service package tags: filter bar above the list plus badges on each card. */
.public-site .package-tag-nav{display:flex;align-items:center;gap:26px;margin:-14px 0 34px;padding:14px 18px;border:1px dashed #c3d8ea;border-radius:9px;background:#fbfdff}.public-site .package-tag-nav>strong{flex:none;color:var(--site-navy);font-size:.86rem}.public-site .package-tag-nav>div{display:flex;flex-wrap:wrap;gap:9px}.public-site .package-tag-nav a{display:inline-flex;align-items:center;min-height:32px;padding:0 13px;border:1px solid #cfdeec;border-radius:999px;background:#fff;color:#3b5f80;font-size:.85rem;font-weight:800}.public-site .package-tag-nav a:hover{border-color:var(--site-blue);background:#eef6ff;color:var(--site-blue)}.public-site .package-tag-nav a.is-active{border-color:var(--site-blue);background:var(--site-blue);color:#fff}.public-site .package-tag-nav a:focus-visible{outline:3px solid rgba(8,102,190,.2);outline-offset:2px}
.public-site .package-tag-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:-2px}.public-site .package-tag{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:#eef4fb;color:#3d6c96;font-size:.76rem;font-weight:800;line-height:1.35}
@media(max-width:600px){.public-site .package-tag-nav{align-items:stretch;flex-direction:column;gap:9px;padding:12px 14px;margin:0 0 28px}.public-site .package-tag-nav>div{width:100%;flex-wrap:nowrap;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent)}.public-site .package-tag-nav>div::-webkit-scrollbar{display:none}.public-site .package-tag-nav a{flex:none;white-space:nowrap}}

/* ── 陪诊服务下单页（资料 + 加购 + 支付） ── */
.booking-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 1.75rem; align-items: start; }
.booking-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.25rem; }
.booking-fields label { display: flex; flex-direction: column; gap: 0.4rem; }
.booking-fields .span-all { grid-column: 1 / -1; }
.booking-fields small { color: var(--muted-text, #6b7280); font-size: 0.78rem; line-height: 1.5; }
.booking-summary { position: sticky; top: 1.5rem; background: var(--surface-2, #f7f8fa); border: 1px solid var(--border, #e5e7eb); border-radius: 12px; padding: 1.25rem; }
.booking-summary h2 { font-size: 1.05rem; margin: 0.25rem 0 1rem; }
.booking-city-hint { margin: 0 0 1.1rem; padding: 0.75rem 1rem; border-left: 4px solid var(--brand, #0f7fd4); border-radius: 0 8px 8px 0; background: #eef6ff; color: #235f96; font-size: 0.9rem; font-weight: 700; line-height: 1.5; }
.booking-includes { margin: 0 0 1rem; }
.booking-includes > .package-order-label { display: block; margin-bottom: 0.4rem; }
.booking-includes ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.booking-includes li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 8px; color: #344d6b; font-size: 0.88rem; line-height: 1.6; }
.booking-includes li > span { color: var(--site-blue, #0866be); font-weight: 900; }
.booking-lines { list-style: none; margin: 0 0 1rem; padding: 0; }
.booking-lines li { display: flex; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px dashed var(--border, #e5e7eb); }
.booking-addon-toggle { margin-bottom: 0.5rem; }
.booking-addon-list { border-top: 1px dashed var(--border, #e5e7eb); padding-top: 0.75rem; }
.booking-addon-list p { font-size: 0.8rem; color: var(--muted-text, #6b7280); margin: 0 0 0.5rem; }
.booking-total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 1rem; padding-top: 0.9rem; border-top: 2px solid var(--border, #e5e7eb); }
.booking-total strong { font-size: 1.5rem; }
.booking-note { font-size: 0.8rem; color: var(--muted-text, #6b7280); margin: 0.75rem 0 1rem; line-height: 1.6; }
.booking-summary button { width: 100%; }

/* ── 联系方式分组：三项至少填一项，布局上明确提示 ── */
.booking-contact-group { grid-column: 1 / -1; border: 1px solid var(--border, #e5e7eb); border-radius: 10px; padding: 0.9rem 1rem 1.1rem; margin: 0; }
.booking-contact-group legend { font-weight: 700; color: var(--ink, #1f2937); padding: 0 0.4rem; font-size: 0.95rem; }
.booking-contact-hint { font-size: 0.8rem; color: var(--muted-text, #6b7280); margin: 0 0 0.7rem; line-height: 1.55; }
.booking-contact-hint::before { content: "● "; color: var(--brand, #0f7fd4); }
.booking-contact-field { margin-bottom: 0.6rem; }
.booking-contact-field:last-child { margin-bottom: 0; }
.booking-contact-error { grid-column: 1 / -1; color: #c0392b; font-size: 0.82rem; font-weight: 600; margin: 0.5rem 0 0; }
.booking-contact-field input.invalid { border-color: #c0392b; box-shadow: 0 0 0 2px rgba(192,57,43,0.15); }
@media (max-width: 880px) {
  .booking-grid { grid-template-columns: 1fr; }
  .booking-fields { grid-template-columns: 1fr; }
  .booking-summary { position: static; }
}

/* ── 订单明细与微信支付二维码 ── */
.package-order-breakdown { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px dashed var(--border, #e5e7eb); }
.package-order-breakdown ul { list-style: none; margin: 0.4rem 0 0; padding: 0; }
.package-order-breakdown li { display: flex; justify-content: space-between; gap: 0.75rem; font-size: 0.85rem; padding: 0.3rem 0; }
.package-order-breakdown em { font-style: normal; font-size: 0.7rem; padding: 0.1rem 0.35rem; border-radius: 4px; background: var(--surface-3, #eceef1); margin-right: 0.35rem; }
.wechat-pay-panel { display: flex; gap: 1.5rem; flex-wrap: wrap; align-items: center; background: var(--surface-2, #f7f8fa); border: 1px solid var(--border, #e5e7eb); border-radius: 12px; padding: 1.5rem; }
.wechat-pay-qr { width: 220px; height: 220px; }
.wechat-pay-amount { font-size: 1.1rem; margin: 0 0 0.5rem; }
.wechat-pay-help { font-size: 0.82rem; color: var(--muted-text, #6b7280); line-height: 1.6; margin: 0 0 0.5rem; }
.package-order-edit { grid-column: 1 / -1; background: var(--surface, #fff); border: 1px solid var(--border, #e5e7eb); border-radius: 14px; padding: 22px; }
.package-order-edit h2 { margin: 0.35rem 0 0.4rem; }
.package-order-edit p { font-size: 0.85rem; color: var(--muted-text, #6b7280); margin: 0 0 1rem; line-height: 1.6; }
.package-order-edit-form { display: flex; flex-direction: column; gap: 1rem; }
.package-order-edit-form fieldset { border: 1px solid var(--border, #e5e7eb); border-radius: 10px; padding: 0.75rem 1rem; display: flex; flex-direction: column; gap: 0.4rem; }
.package-order-edit-form legend { font-size: 0.78rem; color: var(--muted-text, #6b7280); padding: 0 0.35rem; }
.package-order-edit-form label { display: flex; align-items: center; gap: 0.5rem; font-size: 0.88rem; }
.package-order-edit-form label > span { min-width: 5.5rem; color: var(--muted-text, #6b7280); }
.package-order-edit-form input[type="number"], .package-order-edit-form input[type="date"] { padding: 0.4rem 0.55rem; border: 1px solid var(--border, #e5e7eb); border-radius: 8px; }
.package-order-edit-form button { align-self: flex-start; }

/* ── 服务项折叠入口（列表卡片）：只平铺前 4 条，其余进详情页 ── */
.public-site .package-more { display: inline-flex; align-items: center; gap: 7px; margin: 0 0 20px; color: var(--site-blue); font-size: .85rem; font-weight: 800; }
.public-site .package-more:hover { color: var(--site-navy); text-decoration: underline; }
.public-site .package-more:focus-visible { outline: 3px solid rgba(8,102,190,.2); outline-offset: 2px; }

/* ── 服务套餐详情页 ── */
.service-package-detail { background: var(--site-surface, #f6f9fc); min-height: 60vh; }
.package-detail-content { padding: 40px 0 80px; }
.package-detail-back { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 18px; color: var(--site-blue, #0866be); font-size: .85rem; font-weight: 800; }
.package-detail-back:hover { color: var(--site-navy, #09263e); }
/* 详情卡片铺满 .container，两端与导航栏对齐（原先 max-width:880px 导致比导航栏窄） */
.package-detail-card { position: relative; padding: 38px clamp(20px, 4vw, 48px) 44px; border: 1px solid var(--site-line, #dbe6f0); border-top: 5px solid var(--site-navy, #09263e); border-radius: 14px; background: #fff; box-shadow: 0 18px 44px rgba(8,63,145,.10); }
.package-recommended--detail { right: 22px; }
.package-detail-kicker { display: block; margin-bottom: 8px; color: var(--site-blue, #0866be); font-size: .76rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.package-detail-head h1 { margin: 0 0 12px; color: var(--site-navy, #09263e); font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1.15; }
.package-detail-head > p { margin: 0 0 16px; color: var(--site-muted, #5b7a92); font-size: 1rem; line-height: 1.8; }
.package-detail-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.package-detail-type { display: inline-flex; align-items: center; padding: 4px 11px; border-radius: 999px; background: #e9f4ff; color: var(--site-blue, #0866be); font-size: .78rem; font-weight: 800; }
.package-detail-price { display: flex; align-items: baseline; margin: 22px 0 8px; color: var(--site-navy, #09263e); }
.package-detail-price > span { margin-right: 3px; font-size: 1.3rem; font-weight: 800; }
.package-detail-price strong { font-size: 3rem; line-height: 1; }
.package-detail-price small { margin-left: 8px; color: var(--site-muted, #5b7a92); }
.package-detail-block { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--site-line, #dbe6f0); }
.package-detail-block h2 { margin: 0 0 16px; color: var(--site-navy, #09263e); font-size: 1.15rem; }
.package-detail-features, .package-detail-excludes { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.package-detail-features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.package-detail-features li, .package-detail-excludes li { display: grid; grid-template-columns: 23px minmax(0, 1fr); gap: 9px; color: #344d6b; font-size: .94rem; line-height: 1.7; }
.package-detail-features li > span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: #e8f4ff; color: var(--site-blue, #0866be); font-size: .75rem; font-weight: 900; }
.package-detail-excludes li { color: #7b6a6a; }
.package-detail-excludes li > span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: #fdeeee; color: #a33; font-size: .75rem; font-weight: 900; }
.package-detail-card .packages-note { margin-top: 28px; }
/* 详情页底部 CTA：不再横跨整张卡片（原 justify-content:space-between 会把文字和箭头
   拉开上千像素），收敛成与正文左对齐的标准按钮；移动端仍占满整行便于点击。 */
.public-site .package-detail-card .package-action { display: flex; width: fit-content; min-width: 280px; min-height: 52px; margin-top: 26px; padding: 0 32px; justify-content: center; gap: 12px; border-radius: 9px; font-size: 1.02rem; }
.public-site .package-detail-card .package-action > span { transition: transform .18s ease; }
.public-site .package-detail-card .package-action:hover > span { transform: translateX(3px); }
@media (max-width: 760px) { .package-detail-features { grid-template-columns: 1fr; } .package-detail-card { padding: 26px 20px 32px; } .package-detail-price strong { font-size: 2.3rem; } .public-site .package-detail-card .package-action { width: 100%; min-width: 0; } }
/* 套餐页 → 购买教程互链：放在计价说明下方，弱化成一行文字链接 */
.public-site .packages-guide { margin: 14px 0 0; font-size: .92rem; }
.public-site .packages-guide a { display: inline-flex; align-items: center; color: var(--site-blue, #0f63c7); font-weight: 600; text-decoration: none; }
.public-site .packages-guide a:hover { text-decoration: underline; text-underline-offset: 3px; }
