/* Shared reading and interaction styles; the white layout sets responsive dimensions. */
.itinerary-guide-page {
  --guide-ink:#173e53; --guide-muted:#567383; --guide-line:#d5e5ec;
  --guide-body:49px; --guide-small:36px; --guide-title:66px;
  --guide-touch:max(136px,calc(var(--mobile-body-font,49px) * 2.75));
  padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))!important;
}
.itinerary-guide-page .mobile-viewport-fit { overflow:clip!important; }
.itinerary-guide-page .mobile-container { --guide-touch:max(136px,calc(var(--mobile-body-font,49px) * 2.75)); gap:24px!important; color:var(--guide-ink); }
.itinerary-guide-page .mobile-container > section {
  padding:72px 60px!important; height:auto!important; min-height:0!important;
  background:#f7fbfd; box-shadow:none;
}
.itinerary-guide-page .mobile-container [id] { scroll-margin-top:24px; scroll-margin-bottom:100px; }
.itinerary-guide-page .section-header{ margin:0 0 36px; text-align:left; }
.itinerary-guide-page .section-header h2,
.itinerary-guide-page .section-title-large,
.itinerary-guide-page .day-detail-section .day-route-title {
  color:var(--guide-ink); font-size:var(--guide-title)!important; line-height:1.35!important;
  font-weight:700; letter-spacing:0; margin:0;
}
.itinerary-guide-page .mobile-container h3 { font-size:48px; line-height:1.45; }
.itinerary-guide-page .section-subtitle{ margin-top:12px; color:var(--guide-muted); letter-spacing:2px!important; }
.itinerary-guide-page .mobile-container :is(.story-text p,.itinerary-route,.detail-text-card p,.detail-text-card li,.tickets-intro-text p,.ticket-row-name,.ticket-row-desc,.special-meal p,.meal-label,.intro-text p,.note-text,.option-item,.payment-desc p,.step-text,.policy-detail,.policy-desc li,.policy-text li,.card-desc,.complaint-features li,.hotel-link span,.v-name) {
  font-size:var(--guide-body)!important; line-height:1.72!important;
}
.itinerary-guide-page .mobile-container :is(.section-subtitle,.itinerary-meta,.day-badge,.day-title-en,.day-facts,.hotel-category,.hotel-footer-note,.ticket-row-badge,.tickets-footer-note,.tickets-note-item,.price-sub,.v-sub,.v-group,.card-tag,.complaint-label,.date-col,.booklet-note,.page-footer,.stat-label,.guarantee-label,.route-info,.payment-methods-row) {
  font-size:var(--guide-small)!important; line-height:1.55!important;
}

.itinerary-guide-page .itinerary-list { gap:24px; padding:0; justify-content:flex-start; }
.itinerary-guide-page .itinerary-item { gap:24px; }
.itinerary-guide-page .day-badge { min-width:146px; padding:14px 18px; border-radius:12px; background:#20546b; }
.itinerary-guide-page .itinerary-content { min-width:0; padding:26px 30px; border:1px solid var(--guide-line); box-shadow:none; border-radius:16px; }
.itinerary-guide-page .itinerary-meta { gap:18px 30px; margin-bottom:12px; color:var(--guide-muted); }
.itinerary-guide-page .itinerary-route a { display:flex; align-items:center; min-height:var(--guide-touch); color:var(--guide-ink); text-decoration:none; }
.itinerary-guide-page .guide-map { margin:0; color:var(--guide-ink); }

.itinerary-guide-page .mobile-container > .guide-map { width:1191px; padding:0 60px 36px; background:#f7fbfd; }

.itinerary-guide-page .guide-map[open] > .section-header { margin-top:30px; }
.itinerary-guide-page .guide-map :is(.route-map-card,.route-map-img-wrap) { margin-top:24px; padding:0; box-shadow:none; }
.itinerary-guide-page .guide-map img { display:block; width:100%; height:auto; border-radius:16px; }
.itinerary-guide-page .guide-map .booklet-note { margin-top:20px; }
.itinerary-guide-page .day-detail-section .day-detail-header { gap:30px; margin-bottom:30px; }
.itinerary-guide-page .day-number { flex-basis:136px; min-height:146px; border-radius:14px; }
.itinerary-guide-page .day-number span { font-size:36px; }
.itinerary-guide-page .day-heading { padding-left:30px; }
.itinerary-guide-page .day-facts { flex-wrap:wrap; gap:16px 0; margin-bottom:32px; padding-bottom:26px; }
.itinerary-guide-page .day-fact-highlights { flex-basis:auto; }
.itinerary-guide-page .day-detail-section .day-detail-body { gap:32px; }
.itinerary-guide-page .detail-text-card { font-size:var(--guide-body); line-height:1.72; }
.itinerary-guide-page .day-detail-section .detail-text-card p { margin-bottom:28px; }
.itinerary-guide-page .detail-text-card :is(ul,ol) { padding-left:1.3em; margin:20px 0; }
.itinerary-guide-page .guide-day-route { margin:0 0 28px; padding:22px 26px; border:1px solid var(--guide-line); border-radius:14px; background:#edf5f8; color:#285d74; font-size:var(--guide-body); font-weight:500; line-height:1.6; }
.itinerary-guide-page .guide-day-note { margin:22px 0 0; padding:22px 26px; border-left:5px solid #8bbbcf; background:#edf5f8; color:var(--guide-muted); font-size:var(--guide-small); line-height:1.65; }
.itinerary-guide-page .guide-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr))!important; grid-template-rows:none!important; gap:20px!important; height:auto!important; }
.itinerary-guide-page .guide-gallery > * { min-width:0; height:auto!important; aspect-ratio:3/2!important; overflow:hidden; border-radius:16px; grid-row:auto; }
.itinerary-guide-page .guide-gallery img { width:100%; height:100%; display:block; object-fit:cover; }
.itinerary-guide-page .guide-gallery:has(> :only-child) { grid-template-columns:1fr!important; }
.itinerary-guide-page .guide-gallery > :only-child { aspect-ratio:16/9!important; }
.itinerary-guide-page .guide-stay-timeline { display:grid; gap:0; margin:28px 0 36px; padding:0; list-style:none; background:#fff; border:1px solid var(--guide-line); border-radius:20px; overflow:hidden; }
.itinerary-guide-page .guide-stay-timeline > * { display:grid; grid-template-columns:106px minmax(0,1fr); align-items:start; gap:28px; padding:30px; border-bottom:1px solid var(--guide-line); }
.itinerary-guide-page .guide-stay-timeline > :last-child { border-bottom:0; }
.itinerary-guide-page .guide-stay-night { color:#39768e; font-size:var(--guide-small); line-height:1.65; font-weight:600; }
.itinerary-guide-page .guide-stay-body { min-width:0; color:var(--guide-ink); font-size:var(--guide-body); line-height:1.6; }
.itinerary-guide-page .guide-stay-body :is(small,p,span) { display:block; color:var(--guide-muted); font-size:var(--guide-small); line-height:1.65; }
.itinerary-guide-page .hotel-content-grid { gap:24px; }
.itinerary-guide-page .hotel-region-card { padding:28px 30px; gap:22px; border:1px solid var(--guide-line); box-shadow:none; border-radius:18px; background:#fff; }
.itinerary-guide-page .hotel-list { display:flex; flex-wrap:wrap; gap:calc(var(--mobile-body-font,49px) * .5); margin:0; padding:0; }
.itinerary-guide-page .hotel-list li { flex:0 1 auto; max-width:100%; min-width:0; }
.itinerary-guide-page .region-header { flex-wrap:wrap; }
.itinerary-guide-page .region-header h3 { min-width:0; overflow-wrap:break-word; }
.itinerary-guide-page .hotel-link { min-height:calc(var(--mobile-body-font,49px) * 2.75)!important; gap:calc(var(--mobile-body-font,49px) * .5); padding:calc(var(--mobile-body-font,49px) * .55) calc(var(--mobile-body-font,49px) * .7)!important; border-radius:12px; background:#f7fbfd; }
.itinerary-guide-page .mobile-container .hotel-link span { font-size:var(--mobile-body-font,49px)!important; line-height:1.5!important; font-weight:500; white-space:normal; overflow:visible; text-overflow:clip; overflow-wrap:anywhere; }
.itinerary-guide-page .hotel-footer-note { margin-top:26px; padding:0; }
.itinerary-guide-page .ticket-row { gap:12px 24px; padding:28px; border-bottom:1px solid var(--guide-line); }
.itinerary-guide-page :is(.tickets-intro-card,.dining-details-card,.payment-card,.special-policy-card,.service-card,.transport-intro-card) { padding:34px; box-shadow:none; border-radius:18px; }
.itinerary-guide-page :is(.tickets-intro-card,.transport-intro-card) { margin-bottom:30px; }
.itinerary-guide-page :is(.booking-content,.price-content,.cancellation-content,.transport-content,.dining-content,.guarantee-cards) { gap:28px; }
.itinerary-guide-page .price-table { font-size:var(--guide-body)!important; line-height:1.55!important; }
.itinerary-guide-page .price-table :is(th,td) { padding:28px 22px; }
.itinerary-guide-page .guide-ticket-list { display:grid; gap:0; list-style:none; padding:0; margin:0; background:#fff; border:1px solid var(--guide-line); border-radius:20px; overflow:hidden; }
.itinerary-guide-page .guide-ticket-item { display:grid; grid-template-columns:54px minmax(0,1fr) auto; align-items:start; gap:22px; padding:30px; border-bottom:1px solid var(--guide-line); }
.itinerary-guide-page .guide-ticket-item:last-child { border-bottom:0; }
.itinerary-guide-page .guide-ticket-icon { display:flex; align-items:center; justify-content:center; min-height:58px; color:#39768e; font-size:44px; }
.itinerary-guide-page .guide-ticket-body { min-width:0; }
.itinerary-guide-page .guide-ticket-body h3 { margin:0; color:var(--guide-ink); font-size:var(--guide-body)!important; font-weight:650; line-height:1.5; }
.itinerary-guide-page .guide-ticket-body p { margin:12px 0 0; color:var(--guide-muted); font-size:var(--guide-small)!important; line-height:1.65; }
.itinerary-guide-page .guide-ticket-status { padding:8px 16px; margin-top:3px; border-radius:10px; color:#2d6857; background:#edf6f0; font-size:var(--guide-small); font-weight:600; line-height:1.5; white-space:nowrap; }
.itinerary-guide-page .guide-ticket-status[data-ticket-status="开放后含"] { color:#835b1c; background:#faf1df; }
.itinerary-guide-page .guide-ticket-status:is([data-ticket-status="见说明"],[data-ticket-status="依开放安排"]) { color:#567383; background:#eef3f5; }
.itinerary-guide-page .guide-price-note { margin:0; padding:26px 30px; border-left:5px solid #8bbbcf; color:#3d6377; background:#edf5f8; font-size:var(--guide-small); line-height:1.65; }
.itinerary-guide-page .guide-fee-notes { padding:0; background:transparent; border:0; box-shadow:none; gap:24px; }
.itinerary-guide-page .guide-fee-notes .note-item { margin:0; padding:30px; gap:20px; background:#fff; border:1px solid var(--guide-line); border-radius:18px; }
.itinerary-guide-page .guide-fee-notes .note-text { min-width:0; flex:1; }
.itinerary-guide-page .guide-fee-notes .note-text > strong { display:block; margin-bottom:16px; font-size:var(--guide-body); line-height:1.5; }
.itinerary-guide-page .guide-fee-notes .note-text ul { margin:0; padding-left:1.15em; }
.itinerary-guide-page .guide-fee-notes .note-text li { margin:0 0 .55em; font-size:var(--guide-body); line-height:1.65; }
.itinerary-guide-page .guide-fee-notes .note-text li:last-child { margin-bottom:0; }

.itinerary-guide-page .story-text p { margin-bottom:26px; }
.itinerary-guide-page .page-footer { margin-top:36px; padding-top:26px; }

/* Fixed navigation stays usable at every viewport size. */
.itinerary-guide-page .guide-bottom-bar {
  position:fixed; z-index:100; left:50%; bottom:12px; transform:translateX(-50%);
  display:flex; align-items:center; gap:4px; width:min(800px,calc(100% - 24px));
  padding:8px; border:1px solid rgba(199,219,229,.9); border-radius:18px;
  background:rgba(255,255,255,.97); box-shadow:0 6px 28px rgba(18,53,72,.16);
  font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
}
.itinerary-guide-page .guide-bottom-bar a { display:flex; align-items:center; justify-content:center; gap:6px; flex:1 1 0; min-width:0; min-height:44px; padding:8px 10px; border:0; border-radius:11px; background:transparent; color:#31576a; font:600 14px/1.4 system-ui,-apple-system,"PingFang SC",sans-serif; text-align:center; text-decoration:none; cursor:pointer; }
.itinerary-guide-page .guide-bottom-bar a:hover { background:#edf5f8; }
.itinerary-guide-page :is(.guide-bottom-bar a,.itinerary-route a):focus-visible { outline:3px solid #b67b21; outline-offset:4px; }
@media(min-width:1201px) {
  .itinerary-guide-page .mobile-container { --guide-body:30px; --guide-small:24px; --guide-title:48px; --guide-touch:68px; }
  .itinerary-guide-page .mobile-container h3 { font-size:calc(var(--guide-body) * 1.25); }

}
@media(max-width:1200px) {
  .itinerary-guide-page .mobile-container { --guide-body:var(--mobile-body-font,49px); --guide-small:max(36px,calc(var(--mobile-body-font,49px) * .75)); --guide-title:calc(var(--mobile-main-title-font,98px) * .68); }
  .itinerary-guide-page .mobile-container :is(.section-header h2,.section-title-large,.day-route-title) { font-size:var(--guide-title)!important; }

}
@media(max-width:600px) {

  .itinerary-guide-page .vehicle-type-grid { grid-template-columns:minmax(0,1fr); }

  .itinerary-guide-page .guide-bottom-bar { bottom:0; width:100%; padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px)); border-radius:16px 16px 0 0; }
  .itinerary-guide-page .guide-bottom-bar a { padding:8px 4px; font-size:13px; }
}

@media(prefers-reduced-motion:reduce) {
  html:has(.itinerary-guide-page) { scroll-behavior:auto!important; }

}
@media print {
  .itinerary-guide-page { padding-bottom:0!important; }
  .guide-bottom-bar { display:none!important; }
  .itinerary-guide-page .mobile-container > section { break-inside:avoid; }
}

.itinerary-guide-page .guide-ticket-reference { display:inline-flex; align-items:center; min-height:var(--guide-touch); color:#245e76; text-underline-offset:.2em; }
