:root{--bg:#f1f3f6;--panel:#fff;--ink:#17202f;--muted:#6b7587;--line:#e2e6ec;--soft:#f6f8fb;--accent:#1d5fd1;
 --flight:#2d5fb8;--train:#d9712f;--ground:#3a8c5a;--wait:#c7ced8;--hotel:#8a66c2;--ok:#1b7a5f;--okbg:#e6f4ee;--warn:#9a5312;--warnbg:#fdf1e4;--bad:#b3261e;--badbg:#fdecea}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",sans-serif}
a{color:var(--accent)}
.wrap{max-width:1180px;margin:0 auto;padding:22px 16px 70px}
h1{font-size:23px;margin:0 0 2px}h2{font-size:19px;margin:34px 0 12px;display:flex;align-items:center;gap:10px}
h2 .n{display:inline-flex;width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font-size:14px;align-items:center;justify-content:center}
h3{font-size:15.5px;margin:22px 0 6px}
.sub{color:var(--muted);font-size:13px;margin:0 0 16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:14px}
.step h2{margin:0 0 12px;font-size:17px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px}
.three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 16px}
label.f{display:block;font-size:12.5px;color:var(--muted);margin:10px 0 4px}label.f:first-child{margin-top:0}
input[type=text],input[type=date],input[type=number],select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:14px;background:#fff;color:var(--ink)}
input:focus,select:focus,button:focus{outline:2px solid var(--accent);outline-offset:1px}
input.bad,select.bad{border-color:var(--bad);background:var(--badbg)}
.hint{font-size:12.5px;color:var(--muted);margin-top:5px;min-height:18px}
.inwrap{position:relative}.inwrap input{padding-right:112px}
.mapbtn{position:absolute;right:5px;top:5px;bottom:5px;padding:0 10px 0 8px;border:0;border-radius:7px;background:#eef3fb;color:var(--accent);font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.mapbtn:hover{background:#dfe8f9}.mapbtn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
button{padding:9px 16px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-size:14px;cursor:pointer;color:var(--ink);white-space:nowrap}
button.primary{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600;padding:11px 26px}
button.small{padding:7px 11px;font-size:13px}
button[disabled]{opacity:.5;cursor:not-allowed}
/* 可折叠的候选 */
details.pick{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-top:6px;background:var(--soft)}
details.pick summary{cursor:pointer;font-size:13px;color:var(--ink);list-style:none;display:flex;justify-content:space-between;gap:10px;align-items:center}
details.pick summary::-webkit-details-marker{display:none}
details.pick summary .act{color:var(--accent);font-size:12.5px;white-space:nowrap}
details.pick[open] summary .act::after{content:"收起"}details.pick:not([open]) summary .act::after{content:"自己选"}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chips label{display:inline-flex;align-items:center;gap:5px;margin:0;padding:5px 10px;border:1px solid var(--line);border-radius:999px;font-size:12.5px;color:var(--ink);cursor:pointer;background:#fff}
.chips label.auto{border-style:dashed}.chips label.on{background:var(--ink);color:#fff;border-color:var(--ink)}.chips label.on .km{color:#cbd5e1}
.chips input{margin:0}.chips .km{color:var(--muted);font-size:11.5px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.seg label{margin:0;padding:8px 16px;font-size:14px;cursor:pointer;border-right:1px solid var(--line)}
.seg label:last-child{border-right:0}.seg input{display:none}.seg label.on{background:var(--ink);color:#fff}
/* 时间选择 */
.dt{display:grid;grid-template-columns:160px 78px 78px;gap:6px}
.dt select{padding:8px 6px;text-align:center}
.err{color:var(--bad);font-size:13px;margin-top:8px;min-height:18px}
.soft{color:var(--warn);font-size:13px;margin-top:6px}
.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:6px}
.status{font-size:13px;color:var(--muted)}
.log{background:#0f172a;color:#cbd5e1;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;border-radius:10px;padding:10px 12px;max-height:200px;overflow:auto;white-space:pre-wrap;margin-top:12px}
.empty{color:var(--muted);padding:34px 0;text-align:center}
details.adv summary{cursor:pointer;color:var(--muted);font-size:13px;margin-top:12px}
/* 地图弹窗 */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.55);display:none;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal.on{display:flex}
.modal .box{background:#fff;border-radius:14px;width:min(900px,100%);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.modal .bar{display:flex;gap:8px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}
.modal .bar input{flex:1}
#map{height:62vh;min-height:380px;background:#eef1f4}
.leaflet-container{font:12px/1.4 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
.leaflet-control-zoom a{border-radius:6px!important}
.modal .foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
/* 结果 */
.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 22px}
.summary .k{font-size:12px;color:var(--muted);margin-bottom:2px}.summary .v{font-size:14px}
.summary .v b{font-weight:600}.summary .v .m{display:block}.summary .km{color:var(--muted);font-size:12px}
.m{color:var(--muted);font-size:13px}
.tag{display:inline-block;padding:2px 9px;border-radius:6px;font-size:12px;background:var(--ok);color:#fff;margin-right:6px;vertical-align:2px;font-weight:600}
.tag.alt{background:#5b6475}.tag.money{background:#b06a12}.tag.fast{background:#1d5fd1}.tag.rank{background:var(--ink)}
.plan{padding:0;overflow:hidden}
.plan .head{padding:16px 20px 12px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start}
.plan .head .t{font-size:17px;font-weight:600}.plan .head .t .d{color:var(--muted);font-weight:500}
.plan .body{padding:14px 20px 16px}
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:0 0 12px}
.kpi div{background:var(--soft);border-radius:10px;padding:8px 12px}.kpi .k{font-size:11.5px;color:var(--muted)}.kpi .v{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25}.kpi .v small{font-size:12px;color:var(--muted);font-weight:500}
/* 路线条 */
.route{display:flex;flex-wrap:wrap;align-items:center;gap:6px 2px;margin:4px 0 14px;font-size:13.5px}
.route .st{display:inline-flex;align-items:center;gap:6px;padding:5px 11px 5px 8px;border-radius:999px;background:var(--soft);white-space:nowrap;border:1px solid var(--line)}
.route .st .e{font-size:17px;line-height:1}.route .st small{color:var(--muted)}
.route .st.flight{background:#e8eefb;border-color:#c9d8f5}.route .st.train{background:#fbeee4;border-color:#f3d3bc}.route .st.ground{background:#e8f4ec;border-color:#c5e3cf}.route .st.hotel{background:#efe9f8;border-color:#d9cdee}
.route .arr{color:#b8c0cc;padding:0 3px}
/* 时间轴 */
.tl{margin:2px 0 10px}
.bar{position:relative;height:34px;border-radius:8px;overflow:hidden;background:#f1f3f6;border:1px solid var(--line)}
.bar div{position:absolute;top:0;height:100%;display:flex;align-items:center;justify-content:center;gap:4px;border-right:1px solid rgba(255,255,255,.7);color:#fff;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden}
.bar div .e{font-size:15px}.bar div.wait{color:#3b4555}
.tlabels{position:relative;height:34px;font-size:11px;color:var(--muted);margin-top:2px}
.tlabels span{position:absolute;white-space:nowrap;transform:translateX(-50%);line-height:1.2;text-align:center}
.tlabels span b{display:block;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.tlabels span.lo{top:17px}.tlabels span.end{transform:translateX(-100%);text-align:right}.tlabels span:first-child{transform:none;text-align:left}
table{width:100%;border-collapse:collapse;font-size:13.5px}
td,th{padding:7px 8px;border-top:1px solid var(--line);vertical-align:top;font-variant-numeric:tabular-nums;text-align:left}
th{font-size:12.5px;color:var(--muted);font-weight:600;border-top:0;background:var(--soft);white-space:nowrap}
th.sort{cursor:pointer;user-select:none;color:var(--accent)}th.sort::after{content:" ⇅";opacity:.6}th.sort:hover{background:#eaf0fb}th.sort.asc::after{content:" ▲";opacity:1}th.sort.desc::after{content:" ▼";opacity:1}
td.t{white-space:nowrap;color:var(--muted)}td.r,th.r{text-align:right;white-space:nowrap}td.c,th.c{text-align:center}
td .ic{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}td .ic .e{font-size:16px}
.note{color:var(--muted);font-size:12px}
.warn{background:var(--warnbg);color:var(--warn);border-radius:8px;padding:6px 10px;font-size:13px;margin-top:8px}
.links{font-size:12.5px;color:var(--muted);margin-top:10px;line-height:1.9}.links a{margin-right:10px;white-space:nowrap}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin:4px 0 12px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
details.legs{margin-top:6px}details.legs summary{cursor:pointer;color:var(--accent);font-size:13px;margin-bottom:6px}
/* 往返组合 */
.combo{padding:0;overflow:hidden}
.combo .head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--soft)}
.combo .head .t{font-size:16px;font-weight:600}
.combo .total{text-align:right;font-variant-numeric:tabular-nums}.combo .total b{font-size:26px;display:block;line-height:1.1}
.combo .legs2{display:grid;grid-template-columns:1fr 1fr;gap:0}
.combo .leg{padding:14px 20px}.combo .leg+.leg{border-left:1px solid var(--line)}
.combo .leg .lb{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.combo .leg .t2{font-weight:600;font-size:15px}
.combo .leg .kv{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--muted)}.combo .leg .kv b{color:var(--ink);font-weight:600}
.combo .foot{padding:10px 20px 12px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}
/* 对比表 */
.explain{font-size:13.5px;color:var(--muted);margin:0 0 10px;line-height:1.6}
.explain b{color:var(--ink)}
.mini{display:flex;height:10px;border-radius:5px;overflow:hidden;background:#eef1f5;min-width:140px;margin-top:4px}
.mini i{display:block;height:100%}
.gridtbl td{text-align:center}.gridtbl td:first-child{text-align:left;white-space:nowrap}
.gridtbl .cell{display:block}.gridtbl .cell b{font-size:14px}.gridtbl .cell small{display:block;color:var(--muted);font-size:11.5px}
.gridtbl td.best{background:var(--okbg)}.gridtbl td.rowbest b{color:var(--ok)}
.gridtbl td.na{color:#c3cad4}
.hubtbl tr.best td{background:var(--okbg)}
.rowstbl tr.sel td{background:#eef3fb}.rowstbl td.rk{font-weight:700;font-variant-numeric:tabular-nums}
.rowstbl tr.top td.rk{color:var(--ok)}
.filters{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:0 0 8px;font-size:13px;color:var(--muted)}
.badge{display:inline-block;padding:1px 6px;border-radius:5px;background:var(--soft);font-size:11.5px;color:var(--muted);margin-left:4px}
.badge.split{background:#fdf1e4;color:#9a5312}
.more{text-align:center;padding:10px;font-size:13px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
@media (max-width:760px){.wrap{padding:12px 12px 40px}.two,.three,.combo .legs2{grid-template-columns:1fr}.combo .leg+.leg{border-left:0;border-top:1px solid var(--line)}.combo .total{text-align:left}.dt{grid-template-columns:1fr 70px 70px}.inwrap input{padding-right:40px}.mapbtn span{display:none}}
@media print{.noprint{display:none}body{background:#fff}.card{break-inside:avoid}}

/* SVG 图标 */
svg.ic{width:1.15em;height:1.15em;fill:currentColor;vertical-align:-0.2em;flex:none}
.route .st svg.ic{width:18px;height:18px}
.route .st.flight{color:#1f4c9e}.route .st.train{color:#b35a1f}.route .st.ground{color:#2a6f45}.route .st.hotel{color:#6a4ea3}
.bar div svg.ic{width:16px;height:16px;fill:#fff}.bar div.wait svg.ic{fill:#3b4555}
.tlabels svg.ic{width:12px;height:12px;fill:var(--muted);display:block;margin:0 auto}
.legend svg.ic{width:14px;height:14px}

/* 第七轮：初始态、进度条、logo、地图弹窗 */
details.pick.dim{opacity:.55}details.pick.dim summary .act{display:none}
details.pick summary .s b{font-weight:700;color:var(--ink)}
.chips.logos label{padding:5px 11px 5px 7px}.chips.logos img{width:16px;height:16px;border-radius:4px;object-fit:contain}
.chips.logos i.lg{display:inline-flex;width:16px;height:16px;border-radius:4px;background:var(--accent);color:#fff;font-size:10px;font-style:normal;align-items:center;justify-content:center}
.prog{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.pbar{height:10px;border-radius:5px;background:#e9edf3;overflow:hidden}
.pfill{height:100%;width:0;background:linear-gradient(90deg,#1d5fd1,#3a8c5a);border-radius:5px;transition:width .6s ease}
.plabel{display:flex;justify-content:space-between;font-size:13px;margin-top:8px}.plabel span:last-child{color:var(--muted);font-variant-numeric:tabular-nums}
.psteps{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.psteps span{font-size:12px;padding:3px 9px;border-radius:999px;background:#f1f3f6;color:var(--muted)}
.psteps span.done{background:var(--okbg);color:var(--ok)}.psteps span.cur{background:var(--ink);color:#fff}
.modal .box{border-radius:18px;box-shadow:0 20px 60px rgba(15,23,42,.35)}
.mhead{display:flex;justify-content:space-between;align-items:center;padding:14px 18px 10px}
.mhead .mtitle b{font-size:16px;display:block}.mhead .m{font-size:12.5px}
.xbtn{display:inline-flex;align-items:center;justify-content:center;flex:none;padding:0;line-height:0;border:0;background:#f1f3f6;border-radius:50%;width:32px;height:32px;font-size:14px;cursor:pointer;color:var(--muted)}.xbtn:hover{background:#e3e7ee;color:var(--ink)}
.mbar{display:flex;gap:8px;align-items:center;padding:0 18px 12px}
.msearch{position:relative;flex:1;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:#fff}
.msearch svg{width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;flex:none}
.msearch input{border:0;padding:9px 0;flex:1;font:inherit;font-size:14px;outline:none}
.mfoot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px 14px;border-top:1px solid var(--line)}
.mpick{font-size:14px;font-weight:600}
#map{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.leaflet-marker-icon{filter:drop-shadow(0 4px 6px rgba(0,0,0,.25))}
input::placeholder{color:#cfd5de;opacity:1}
input::-webkit-input-placeholder{color:#cfd5de}
/* 规划中按钮：禁止点击 + 跳动的省略号 */
button.primary.busy{opacity:.85;cursor:progress;background:#2b3444}
.dots i{display:inline-block;font-style:normal;animation:dot 1.2s infinite;margin-left:1px}
.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
@keyframes dot{0%,80%,100%{opacity:.15}40%{opacity:1}}

/* 第八轮 */
h2.sec{font-size:24px;font-weight:800;margin:40px 0 14px;padding-left:14px;border-left:6px solid var(--accent);letter-spacing:.02em}
.aplist{display:flex;flex-wrap:wrap;gap:4px 6px;font-size:12px;color:var(--muted);margin-top:4px}
.aplist span b{color:var(--ink);font-weight:600}.aplist i{color:#b8c0cc;font-style:normal}
.bar div.narrow{justify-content:center;padding:0}.bar div.narrow svg.ic{width:12px;height:12px}
/* 组合卡片里的去程/返程可点击跳转 */
.combo .leg.link{cursor:pointer;transition:background .15s}.combo .leg.link:hover{background:#f6f8fb}
.combo .leg .golink{color:var(--accent);font-size:12px;text-transform:none;letter-spacing:0;margin-left:6px}
@keyframes flashbox{0%,100%{box-shadow:0 0 0 0 rgba(29,95,209,0)}20%,60%{box-shadow:0 0 0 4px rgba(29,95,209,.45)}40%,80%{box-shadow:0 0 0 2px rgba(29,95,209,.15)}}
.plan.flash{animation:flashbox 2.4s ease-out;border-color:var(--accent)}
@keyframes flashrow{0%,100%{background:transparent}20%,60%{background:#dbe7fb}40%,80%{background:#eef3fb}}
tr.flash td{animation:flashrow 2.4s ease-out}
.why{background:#f6f8fb;border-left:3px solid var(--accent);border-radius:6px;padding:7px 10px;font-size:12.5px;color:var(--muted);margin:0 0 12px}.why b{color:var(--ink)}
.combo.rec{border-color:#9fc3a9}.combo.rec .head{background:var(--okbg)}
.tag.rank.alt{background:#5b6475}
.warn.nm{margin:0 0 12px;padding:10px 14px}.warn.nm ul{margin:6px 0 0;padding-left:18px}.warn.nm li{margin:2px 0}
/* 第九轮 */
details.pick summary .s{color:#9aa3b2}details.pick summary .s b{color:var(--ink)}
.combo .leg{position:relative;margin:12px;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff;transition:box-shadow .15s,border-color .15s}
.combo .leg+.leg{border-left:1px solid var(--line)}.combo .legs2{gap:0}
.combo .leg.link:hover{background:#fff;border-color:var(--accent);box-shadow:0 4px 14px rgba(29,95,209,.12)}
.combo .leg .golink{position:absolute;right:12px;top:10px;margin:0;padding:3px 9px;border-radius:999px;background:#eef3fb;color:var(--accent);font-size:12px;font-weight:600}
.combo .foot{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.altchips{display:flex;flex-wrap:wrap;gap:6px}
.altchips span{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:3px 9px;font-size:12px;background:#fff}
.altchips em{font-style:normal;color:var(--muted)}.altchips b{color:var(--ink);font-variant-numeric:tabular-nums}
.kpi{gap:8px;margin:0 0 8px}.kpi div{padding:6px 10px}.kpi .k{font-size:11px}.kpi .v{font-size:15.5px}
.tsplit{font-size:12.5px;color:var(--muted);margin:0 0 10px}
.tlabels.top{margin:0 0 2px}.tlabels.top span{top:auto;bottom:0}.tlabels span.lo{top:0}
@media (max-width:760px){.combo .leg+.leg{border-top:1px solid var(--line)}}

/* 往返组合：组合 + 去程/返程详情 包在一起 */
details.combo{padding:0}details.combo>summary.head{list-style:none;cursor:pointer;user-select:none}details.combo>summary.head::-webkit-details-marker{display:none}
details.combo>summary.head .t{display:flex;align-items:center;flex-wrap:wrap;gap:4px}
details.combo>summary.head .chev{display:inline-block;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);margin-left:10px;transition:transform .15s}
details.combo[open]>summary.head .chev{transform:rotate(45deg)}
details.combo:not([open])>summary.head{border-bottom:0}
.combo .cbody{padding:12px 14px 6px;background:#f7f9fc}
.combo .cbody>.warn{margin:0 0 12px}
.combo .cleg{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;background:#fff;margin:0 0 12px;overflow:hidden}
.combo .cleg.inbound{border-left-color:#6d4aa8}
.combo .cstrip{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--soft);border-bottom:1px solid var(--line);font-size:13px}
.combo .cstrip .cdir{font-weight:700;color:var(--ink);font-size:14px}.combo .cstrip .cdate{color:var(--muted)}.combo .cstrip .cvia{color:var(--muted);margin-left:auto}
.combo .cleg .leg{margin:0;border:0;border-radius:0;padding:12px 16px;cursor:pointer}
.combo .cleg .leg:hover{background:#f6f8fb;border-color:var(--line);box-shadow:none}
.combo .cleg .leg .lb{display:none}
.combo .cleg .leg .golink{position:static;margin-left:auto;padding:3px 9px;border-radius:999px;background:#eef3fb;color:var(--accent);font-size:12px;font-weight:600}
.combo .cplan{border-top:1px dashed var(--line);padding:12px 12px 4px;background:#fbfcfe}
.combo .cplan .card.plan{margin:0 0 8px;box-shadow:none;border-color:#e3e8f0}
.combo .cleg.fold .cplan{display:none}
.combo .cbody .foot{border-top:0;padding:4px 4px 8px}
.combo .cplan .card.plan>.head{display:none}

/* 组合标题分层 */
details.combo>summary.head{position:relative;padding-right:120px}
details.combo>summary.head .t{font-size:15px;font-weight:500;gap:8px}
.combo .ct{display:inline-flex;align-items:baseline;gap:6px;padding:4px 12px 4px 6px;border-radius:10px;background:#fff;border:1px solid var(--line)}
.combo .ct .cd{display:inline-block;padding:1px 7px;border-radius:6px;font-size:12px;font-weight:700;color:#fff;background:var(--accent);align-self:center}
.combo .ct.in .cd{background:#6d4aa8}
.combo .ct b{font-size:17px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.combo .ct small{font-size:12px;color:var(--muted)}
.combo .ct .cv{font-size:14px;color:var(--ink);margin-left:4px;padding-left:8px;border-left:1px solid var(--line)}
.combo .plus{color:var(--muted);font-size:16px}
.combo .chevbtn{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--ink);color:#fff;font-size:12.5px;font-weight:600;white-space:nowrap}
.combo .chevbtn i{width:7px;height:7px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg);margin-top:-3px;transition:transform .15s}
details.combo:not([open]) .chevbtn i{transform:rotate(-45deg);margin-top:3px}
.combo .chevbtn em{font-style:normal}.combo .chevbtn em+em{display:none}
details.combo:not([open]) .chevbtn em{display:none}details.combo:not([open]) .chevbtn em+em{display:inline}
details.combo>summary.head .chev{display:none}
details.combo.rec>summary.head{background:linear-gradient(90deg,var(--okbg),#f3faf5)}
/* 去程 / 返程 分区标签 */
.combo .cstrip{padding:10px 16px;gap:12px}
.combo .cstrip .cdir,.dircard .dhead .cdir{display:inline-block;padding:4px 14px;border-radius:8px;background:var(--accent);color:#fff;font-size:16px;font-weight:700;letter-spacing:.06em}
.combo .cleg.inbound .cstrip .cdir,.dircard.inbound .dhead .cdir{background:#6d4aa8}
.combo .cstrip .cdate{font-size:14px;color:var(--ink)}
.combo .cstrip .clabels .tag{vertical-align:0}
/* 全部走法合并卡 */
.dircard{padding:0;overflow:hidden}
.dircard .dhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;background:var(--soft);border-bottom:1px solid var(--line)}
.dircard .dsub{font-size:14px;color:var(--muted)}
.dircard .tabs{display:flex;gap:4px;margin-left:auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:3px}
.dircard .tabs button{border:0;background:transparent;padding:6px 14px;border-radius:8px;font-size:13.5px;color:var(--muted);cursor:pointer;font-family:inherit}
.dircard .tabs button.on{background:var(--ink);color:#fff}
.dircard .tabs button .n{display:inline-block;margin-left:4px;padding:0 6px;border-radius:999px;background:rgba(255,255,255,.25);font-size:11.5px}
.dircard .tabs button:not(.on) .n{background:var(--soft);color:var(--muted)}
.dircard .panel{display:none;padding:14px 16px 4px}.dircard .panel.on{display:block}
.dircard .panel h3{display:none}.dircard .panel>.card{border:1px solid var(--line);margin:0 0 12px}
.dircard .panel .warn.nm{margin:0 0 12px}
@media (max-width:760px){details.combo>summary.head{padding-right:20px}.combo .chevbtn{position:static;transform:none;margin-top:8px}.dircard .tabs{margin-left:0}}

/* 收起/展开 放中间，文字样式 */
details.combo>summary.head{padding-right:20px;display:flex;align-items:center;gap:14px}
details.combo>summary.head .t{flex:1 1 380px}
details.combo>summary.head .total{flex:0 0 auto;margin-left:auto}
.combo .chevbtn{display:none}
.combo .chevtxt{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:13.5px;font-weight:600;padding:4px 10px;border-radius:8px}
.combo .chevtxt:hover{background:rgba(29,95,209,.08)}
.combo .chevtxt i{width:7px;height:7px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-135deg);margin-top:4px;transition:transform .15s}
details.combo:not([open]) .chevtxt i{transform:rotate(45deg);margin-top:-4px}
.combo .chevtxt em{font-style:normal}.combo .chevtxt em+em{display:none}
details.combo:not([open]) .chevtxt em{display:none}details.combo:not([open]) .chevtxt em+em{display:inline}
/* 组合里每段的摘要 */
.combo .cleg .leg .t2{font-size:15.5px;font-weight:600;line-height:1.5}
.combo .cleg .leg .chain{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:6px 0 8px;font-size:13.5px;color:var(--ink)}
.combo .cleg .leg .chain span{padding:2px 8px;border-radius:6px;background:var(--soft);border:1px solid var(--line)}
.combo .cleg .leg .chain span small{color:var(--muted);font-size:12px}
.combo .cleg .leg .chain i{font-style:normal;color:var(--muted);display:inline-flex;align-items:center;font-size:12px}
.combo .cleg .leg .chain i svg{width:14px;height:14px}
.combo .cleg .leg .kv{margin-top:4px;align-items:center}.combo .cleg .leg .kv .codes{color:var(--muted);font-variant-numeric:tabular-nums}
.combo .cleg .leg .kv.price{margin-top:6px;font-size:14px}.combo .cleg .leg .kv.price>span:first-child b{font-size:17px}
/* 方向卡：纵向分块 */
.dircard .sub{border-top:1px solid var(--line)}
.dircard .sub>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 16px;font-size:14px;color:var(--muted);user-select:none}
.dircard .sub>summary::-webkit-details-marker{display:none}
.dircard .sub>summary:hover{background:var(--soft)}
.dircard .sub>summary .num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:700;flex:0 0 auto}
.dircard .sub>summary .stitle{font-size:15.5px;font-weight:700;color:var(--ink);flex:0 0 auto}
.dircard .sub>summary .concl{flex:1 1 auto;min-width:0}.dircard .sub>summary .concl b{color:var(--ink)}
.dircard .sub>summary i{width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin-top:-3px;flex:0 0 auto;transition:transform .15s}
.dircard .sub:not([open])>summary i{transform:rotate(-45deg);margin-top:3px}
.dircard .subbody{padding:4px 16px 8px}
.dircard .subbody h3{display:none}.dircard .subbody>.card{border:1px solid var(--line);margin:0 0 12px}
.dircard .subbody .warn.nm{margin:0 0 12px}
@media (max-width:760px){.dircard .sub>summary{flex-wrap:wrap}.dircard .sub>summary .concl{flex-basis:100%;padding-left:32px}}

.combo .cleg .leg .chain span .tm{display:inline-block;margin-left:6px;padding-left:6px;border-left:1px solid var(--line);color:#8b94a5;font-size:11.5px;font-weight:400}
.combo .cleg .leg .kv.price{flex-wrap:wrap;gap:8px 16px}.combo .cleg .leg .kv.price .tsum{font-size:13px}.combo .cleg .leg .kv.price .tsum b{font-size:13px}
.combo .cleg .leg .kv.price .tsum svg{width:13px;height:13px;vertical-align:-2px}
.combo .cleg .leg .kv.price .golink{margin-left:auto}
.combo .cplan .tsplit{display:none}
details.whyd{margin:0 0 12px}details.whyd>summary{cursor:pointer;font-size:12.5px;color:var(--accent);list-style:none;display:inline-flex;align-items:center;gap:6px}
details.whyd>summary::-webkit-details-marker{display:none}details.whyd>summary::before{content:"";width:6px;height:6px;border-right:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform:rotate(-45deg);transition:transform .15s}
details.whyd[open]>summary::before{transform:rotate(45deg)}details.whyd .why{margin:8px 0 0}

.combo .cplan .kpi{display:none}
.combo .cleg .leg .chain{font-size:13px}.combo .cleg .leg .chain span .ap{color:var(--muted);font-size:11.5px;margin-left:4px}
.combo .cleg .leg .kv.price .tsum{font-size:14px;color:var(--muted)}.combo .cleg .leg .kv.price .tsum>b{font-size:17px;font-weight:700}
.combo .cleg .leg .kv.price .tsum .m{font-size:13px;margin-left:6px}.combo .cleg .leg .kv.price .tsum svg{width:13px;height:13px;vertical-align:-2px}
details.whyd>summary::before{display:none}details.whyd>summary svg{flex:0 0 auto}
.combo .cleg .leg .kv.price>span:first-child b,.combo .cleg .leg .kv.price .tsum>b{font-size:21px;font-weight:700;line-height:1.1}
.combo .ct .cv .dur,.combo .cstrip .cvia .dur{margin-left:6px;color:#8b94a5;font-size:11.5px;font-weight:400}
.okc{color:var(--ok);font-weight:600}.badc{color:var(--bad);font-weight:600}.warnc{color:var(--warn);font-weight:600}#otaStatus{line-height:1.7}
.chips.logos label.off{opacity:.55;cursor:not-allowed;border-style:dashed}
details.combo>summary.head .t{flex:1 1 auto;flex-wrap:nowrap;white-space:nowrap;min-width:0;overflow:hidden}
details.combo>summary.head .t .tag,.combo .ct,.combo .plus{flex:0 0 auto;white-space:nowrap}
details.combo>summary.head .total{white-space:nowrap}
@media (max-width:900px){details.combo>summary.head{flex-wrap:wrap}details.combo>summary.head .t{flex-wrap:wrap;white-space:normal;overflow:visible}}
.combo .cstrip .cdir,.dircard .dhead .cdir{white-space:nowrap}

/* 组合标题三栏：标题 | 收起展开（固定列，上下对齐） | 总价 */
details.combo>summary.head{display:grid;grid-template-columns:minmax(0,1fr) 150px 320px;align-items:center;gap:12px}
details.combo>summary.head .t{min-width:0;overflow:hidden;text-overflow:ellipsis}
details.combo>summary.head .chevtxt{justify-self:center}
details.combo>summary.head .total{margin-left:0;justify-self:end}
@media (max-width:900px){details.combo>summary.head{display:flex;flex-wrap:wrap}}
details.combo>summary.head{grid-template-columns:minmax(0,1fr) 120px 250px}
details.combo>summary.head .total{white-space:normal;text-align:right}
details.combo>summary.head .total .m{display:block;line-height:1.35}
details.combo>summary.head{grid-template-columns:minmax(0,1fr) 110px 240px}
.combo .chevtxt i{display:none}.combo .chevtxt::after{content:'▴';font-size:12px}details.combo:not([open]) .chevtxt::after{content:'▾'}
.combo .ct{padding:3px 10px 3px 5px;gap:5px}.combo .ct .cv{font-size:13.5px}
.warn.partial{margin:0 0 14px;font-size:14px}
.est{font-size:12.5px;color:var(--muted);margin-top:6px;min-height:16px}.est.warn{color:var(--warn)}.est.bad{color:var(--bad)}

button.cancel{border-color:#e3b4b0;color:var(--bad);background:#fff;padding:7px 12px}
button.cancel:hover:not(:disabled){background:var(--badbg)}
#f.locked section{opacity:.72}#f.locked .chips label,#f.locked .seg label,#f.locked details.pick summary{pointer-events:none}

/* 高铁余票 */
.seats{margin:8px 0 4px;padding:8px 10px;border-radius:8px;background:var(--okbg);font-size:13px}
.seats .k{font-size:12px;color:var(--muted,#667);margin-bottom:2px}
.seats .sl span{font-weight:600}.seats .sl small{color:var(--muted,#667);font-weight:400}
.seats .sl.ok span{color:var(--ok)}.seats .sl.low span{color:var(--warn)}.seats .sl.no span{color:var(--bad)}.seats .sl.na span{color:var(--muted,#667)}
.seats:has(.sl.no){background:var(--badbg)}.seats:has(.sl.low):not(:has(.sl.no)){background:var(--warnbg)}
.seats:not(:has(.sl.ok)):not(:has(.sl.low)):not(:has(.sl.no)){background:transparent;border:1px dashed var(--wait)}

/* 地图搜索候选下拉 */
.msugg{display:none;position:absolute;left:-1px;right:-1px;top:calc(100% + 4px);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.14);z-index:1200;max-height:300px;overflow:auto}
.msugg .it{padding:8px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;border-bottom:1px solid #f1f3f6}
.msugg .it:last-child{border-bottom:0}
.msugg .it:hover{background:#f4f7fb}
.msugg .it b{font-weight:600;font-size:14px;color:var(--ink)}
.msugg .it span{font-size:12px;color:var(--muted)}

/* 出发地/目的地：只读显示框，点开地图选择 */
.placeshow{cursor:pointer;background:#fff;caret-color:transparent}.placeshow:hover{border-color:#b9c7e3}

/* 底图自动切换提示 */
#map{position:relative}#map .basenote{display:none;position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:800;background:rgba(17,24,39,.85);color:#fff;font-size:12.5px;padding:6px 12px;border-radius:8px;pointer-events:none}

/* 机票价格来源小标签 */
.psrc{display:inline-block;margin-left:5px;padding:0 5px;border-radius:4px;font-size:11px;line-height:17px;background:#eef1f5;color:#5b6474;font-weight:500;vertical-align:1px}.psrc.alt{background:#e7f6ec;color:#17803d}
.links.pricesrc .note{margin-bottom:4px}
.xbtn svg{display:block}
/* 下拉里的「在全球搜索」：动作按钮，固定在顶部、醒目，和普通结果区分开 */
.msugg{max-height:360px}
.msugg .it.world{position:sticky;top:0;z-index:2;flex-direction:row;align-items:center;gap:10px;padding:10px 12px;background:linear-gradient(90deg,#1d5fd1,#3b82f6);border-bottom:0}
.msugg .it.world:hover{background:linear-gradient(90deg,#174fae,#2f6fde)}
.msugg .it.world svg{flex:none;width:22px;height:22px;fill:none;stroke:#fff;stroke-width:1.7}
.msugg .it.world .wt{display:flex;flex-direction:column;gap:1px;min-width:0}
.msugg .it.world b{color:#fff;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msugg .it.world span{color:#dbe8ff}
.msugg .it.world .go{font-style:normal;margin-left:auto;flex:none;font-size:12px;font-weight:700;color:#1d5fd1;background:#fff;border-radius:999px;padding:3px 10px}
.msugg .it .tag{font-style:normal;display:inline-block;font-size:11px;font-weight:600;line-height:1;padding:3px 6px;border-radius:999px;margin-right:6px;vertical-align:1px;background:#e8f1ff;color:#1d5fd1}
.aplab{font-size:12px;color:#9aa3b2;font-weight:400}
.soldtag{font-size:11.5px;color:#9aa3b2;font-weight:400;margin-left:4px}
.althint{font-size:12px;color:#9aa3b2;margin-top:2px;font-weight:400}
.althint a{color:#9aa3b2;text-decoration:underline dotted}
.althint a:hover{color:var(--accent)}
.althint.dh{cursor:help}
.note.dhint{cursor:help}
.althint.dh .ic{width:12px;height:12px;margin:0 4px 0 0;vertical-align:-2px;opacity:.85;fill:currentColor}
.flash{outline:2px solid var(--accent);outline-offset:2px;transition:outline-color 1.5s}
.hctip{border:1px dashed #f0b35a;background:#fffaf2;padding:10px 14px;margin:8px 0}
.hctip .hct{font-size:13.5px;color:var(--ink)}.hctip .hct b{color:#c26a00}
.hctip .hcm{font-size:12px;color:var(--muted);margin-top:3px}
/* 手机：搜索框独占一行（按钮换到下一行），下拉框才有足够宽度；全球搜那一行文字单行省略 */
@media(max-width:760px){.mbar{flex-wrap:wrap}.msearch{flex-basis:100%}}
.msugg .it.world .wt{flex:1;min-width:0}
.msugg .it.world span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.codes-help{margin:0 0 14px;font-size:12px;line-height:1.7}
/* 逐段明细：做成一条明显的可点击条，右边写「展开 / 收起」 */
details.legs>summary{list-style:none;display:flex;align-items:center;gap:10px;margin:4px 0 8px;padding:10px 14px;border:1px solid #cfdcf3;background:#f3f7ff;
  border-radius:10px;color:var(--accent);font-size:14px;cursor:pointer;user-select:none;transition:background .15s,border-color .15s}
details.legs>summary::-webkit-details-marker{display:none}
details.legs>summary:hover{background:#e8f0ff;border-color:#b5cbf0}
details.legs>summary::before{content:"";flex:none;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);margin:0 2px 0 2px;transition:transform .15s}
details.legs[open]>summary::before{transform:rotate(45deg);margin-top:-4px}
details.legs>summary .lt{font-weight:700}
details.legs>summary .ln{color:#7d8899;font-size:12.5px}
details.legs>summary .lx{margin-left:auto;font-size:12.5px;font-weight:600;white-space:nowrap}
details.legs>summary .lx::after{content:"点击展开"}
details.legs[open]>summary .lx::after{content:"收起"}
@media (max-width:520px){details.legs>summary .ln{display:none}}
.site-foot{margin:36px 0 0;padding:14px 0 0;border-top:1px solid var(--line);text-align:center;font-size:12px;color:#9aa3b2}
.site-foot a{color:#9aa3b2;text-decoration:none}.site-foot a:hover{color:var(--accent);text-decoration:underline}
