.travel-route{--route-sea:#e1e6e0;--route-land:#faf8f2;--route-coast:#cdc5b4;--route-halo:#faf8f2;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;gap:56px;margin:40px 0 32px;display:grid;position:relative}.dark .travel-route{--route-sea:#1f2427;--route-land:#35322b;--route-coast:#4f4a40;--route-halo:#35322b}.route-map-stack{flex-direction:column;align-items:center;width:100%;min-width:0;max-width:100%;display:flex}.route-map{background:var(--route-sea);border:1px solid var(--border);border-radius:2px;width:100%;height:100%;margin:0;position:relative;overflow:hidden}.route-map>svg{width:100%;height:100%;display:block}.route-hits{z-index:1;position:absolute;inset:0}.route-marker{width:44px;height:44px;color:inherit;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.route-marker:hover{z-index:4}.route-marker:focus-visible{z-index:4;outline:3px solid var(--primary);outline-offset:2px;box-shadow:0 0 0 2px var(--route-halo);background:color-mix(in srgb, var(--primary) 16%, transparent);scroll-margin:120px}.route-sr{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.route-tip{background:var(--card);width:max-content;max-width:168px;color:var(--foreground);border:1px solid var(--border);pointer-events:none;text-align:left;white-space:normal;border-radius:2px;padding:6px 9px 7px;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}:is(.route-marker:hover .route-tip,.route-marker:focus-visible .route-tip){display:block}.route-marker.is-tip-below .route-tip{top:calc(100% + 8px);bottom:auto}.route-marker.is-tip-start .route-tip{left:0;right:auto;transform:none}.route-marker.is-tip-end .route-tip{left:auto;right:0;transform:none}.route-tip-city{font-family:var(--font-chinese),serif;font-size:14px;line-height:1.3;display:block}.route-tip-title{color:var(--muted-foreground);overflow-wrap:anywhere;margin-top:1px;font-size:12px;line-height:1.35;display:block}:is(.route-map:has(.route-marker[data-stop=qingdao]:is(:hover,:focus-visible)) .route-stop[data-stop=qingdao] .route-stop-name,.route-map:has(.route-marker[data-stop=huangshan]:is(:hover,:focus-visible)) .route-stop[data-stop=huangshan] .route-stop-name,.route-map:has(.route-marker[data-stop=jingdezhen]:is(:hover,:focus-visible)) .route-stop[data-stop=jingdezhen] .route-stop-name,.route-map:has(.route-marker[data-stop=huizhou]:is(:hover,:focus-visible)) .route-stop[data-stop=huizhou] .route-stop-name,.route-map:has(.route-marker[data-stop=hong-kong]:is(:hover,:focus-visible)) .route-stop[data-stop=hong-kong] .route-stop-name,.route-map:has(.route-marker[data-stop=macau]:is(:hover,:focus-visible)) .route-stop[data-stop=macau] .route-stop-name,.route-map:has(.route-marker[data-stop=sanya]:is(:hover,:focus-visible)) .route-stop[data-stop=sanya] .route-stop-name,.route-map:has(.route-marker[data-stop=rizhao]:is(:hover,:focus-visible)) .route-stop[data-stop=rizhao] .route-stop-name){fill:var(--primary);font-weight:600}.route-land path{fill:var(--route-land);stroke:var(--route-coast);stroke-width:1.2px;stroke-linejoin:round}.route-sea{fill:var(--muted-foreground);opacity:.6;letter-spacing:6px;text-anchor:middle;font-size:19px;font-family:var(--font-chinese),serif}.route-seg{fill:none;stroke:var(--primary);stroke-linecap:round;transition:opacity .45s,stroke-width .3s}.route-seg.is-inner{stroke-width:3.4px}.route-seg.is-between{stroke-width:2px;stroke-dasharray:3 9;opacity:.75}.route-seg.is-past{opacity:.5}.route-seg.is-future{opacity:.14}.route-seg.is-between.is-active{opacity:1}.route-seg.is-inner.is-active{stroke-width:4.4px;stroke-dasharray:1;stroke-dashoffset:1px;animation:1.1s cubic-bezier(.16,1,.3,1) .1s forwards route-draw}.route-stop-dot{fill:var(--primary);stroke:var(--route-halo);stroke-width:2.5px;transition:fill .3s,opacity .3s}.route-stop-name{fill:var(--foreground);font-size:22px;font-family:var(--font-chinese),serif;paint-order:stroke;stroke:var(--route-halo);stroke-width:6px;stroke-linejoin:round;transition:opacity .3s}.route-stop.is-future .route-stop-dot{fill:var(--muted-foreground);opacity:.5}.route-stop.is-future .route-stop-name,.route-stop.is-past .route-stop-name{opacity:.55}.route-stop.is-active .route-stop-name{fill:var(--primary);font-size:25px;font-weight:600}.route-stop-ring{fill:none;stroke:var(--primary);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:.6s cubic-bezier(.16,1,.3,1) both route-ring}.route-map figcaption{background:var(--card);border:1px solid var(--border);width:fit-content;max-width:calc(100% - 28px);color:var(--foreground);border-radius:2px;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:9px 14px;font-size:15px;display:flex;position:absolute;top:14px;left:14px;right:14px}.route-map figcaption time{font-family:var(--font-geist-mono),monospace;color:var(--primary);font-size:13px}.route-caption-names,.route-names{flex-wrap:wrap;align-items:center;gap:4px 8px;display:inline-flex}.route-arrow{color:var(--muted-foreground);flex-shrink:0}.route-map-rail{flex-direction:column;align-items:center;min-width:0;height:clamp(520px,100dvh - 280px,820px);display:flex;position:sticky;top:112px}.route-map-rail .route-map-stack{height:100%;min-height:0}.route-map-rail .route-map{width:auto;max-width:100%;height:auto;min-height:0;aspect-ratio:var(--route-ratio);flex:auto}.route-map-fallback{grid-template-columns:1fr 1fr;gap:4px 14px;width:100%;min-width:0;max-width:100%;margin:10px 0 0;padding:0;list-style:none;display:grid}.route-map-fallback a{min-width:0;color:var(--foreground);grid-template-columns:4.5em minmax(0,1fr);align-items:baseline;gap:6px;font-size:13px;line-height:1.35;text-decoration:none;display:grid}.route-index-city{font-family:var(--font-chinese),serif}.route-index-title{min-width:0;color:var(--muted-foreground);overflow-wrap:anywhere}.route-map-fallback a:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.route-timeline{border-left:1px solid var(--border);margin:0 0 24vh;padding:0 0 0 30px;list-style:none}.route-trip{padding:4px 0 72px;position:relative}.route-trip:last-child{padding-bottom:8px}.route-trip:before{content:"";background:var(--background);border:1.5px solid var(--muted-foreground);border-radius:50%;width:11px;height:11px;transition:background .3s,border-color .3s,scale .3s;position:absolute;top:9px;left:-36px}.route-trip.is-active:before{background:var(--primary);border-color:var(--primary);scale:1.25}.route-trip>time{font-family:var(--font-geist-mono),monospace;color:var(--muted-foreground);font-size:13px;transition:color .3s;display:block}.route-trip.is-active>time{color:var(--primary)}.route-trip h2{margin:8px 0 22px;font-family:inherit;font-size:clamp(22px,2.3vw,30px);font-weight:500;line-height:1.3}.route-trip-stops{gap:12px;margin:0;padding:0;list-style:none;display:grid}.route-trip-stops a{background:var(--card);border:1px solid var(--border);color:var(--foreground);border-radius:2px;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:16px;padding:10px 16px 10px 10px;text-decoration:none;transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .3s;display:grid}.route-trip-stops a:hover{border-color:color-mix(in srgb, var(--primary) 45%, var(--border));transform:translateY(-2px)}.route-trip-stops a:active{transform:translateY(0)scale(.99)}:is(.route-trip-stops a:focus-visible,.route-compact-list a:focus-visible){outline:2px solid var(--primary);outline-offset:4px}.route-trip-stops img{object-fit:cover;background:var(--muted);border-radius:2px;width:84px;height:84px}.route-trip-stops strong{font-size:16px;font-weight:500;line-height:1.4;display:block}.route-trip-stops small{color:var(--muted-foreground);margin-top:4px;font-size:13px;display:block}.route-trip-stops svg{color:var(--primary)}.travel-route.is-compact{grid-template-columns:minmax(0,380px) minmax(0,1fr);align-items:center;gap:48px;margin:36px 0 44px}.is-compact .route-map{height:auto;aspect-ratio:var(--route-ratio)}.route-compact-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.route-compact-list a{border-bottom:1px solid var(--border);color:var(--foreground);grid-template-columns:88px minmax(0,1fr);align-items:center;gap:12px;padding:18px 4px;font-size:19px;text-decoration:none;transition:color .25s,padding .3s cubic-bezier(.16,1,.3,1);display:grid}.route-compact-list time{font-family:var(--font-geist-mono),monospace;color:var(--muted-foreground);font-size:13px}.route-compact-list a:hover,.route-compact-list a[aria-current=true]{color:var(--primary);padding-left:12px}@keyframes route-draw{to{stroke-dashoffset:0}}@keyframes route-ring{0%{opacity:0;scale:.4}to{opacity:1;scale:1}}@media (max-width:900px){.travel-route{grid-template-columns:1fr;gap:24px;margin-top:28px}.route-map-rail{z-index:1;background:var(--background);order:-1;height:auto;margin-inline:-20px;padding:6px 20px 10px;top:92px}.route-map-rail .route-map-stack{height:auto}.route-map-rail .route-map{flex:none;height:40dvh;position:relative;top:auto}.route-map-fallback{grid-template-columns:1fr}.route-stop-name{stroke-width:8px;font-size:30px}.route-stop.is-active .route-stop-name{font-size:32px}.route-sea{font-size:24px}.route-map figcaption{padding:7px 11px;font-size:14px;top:10px;left:10px}.route-timeline{margin-bottom:16vh;padding-left:24px}.route-trip{padding-bottom:48px;scroll-margin-top:calc(40dvh + 110px)}.route-trip:before{left:-30px}.route-trip-stops a{grid-template-columns:68px minmax(0,1fr) auto;gap:12px}.route-trip-stops img{width:68px;height:68px}.travel-route.is-compact{grid-template-columns:1fr;gap:24px}.is-compact .route-map{aspect-ratio:auto;height:340px}.route-compact-list a{grid-template-columns:76px minmax(0,1fr);padding:15px 2px;font-size:17px}}@media (prefers-reduced-motion:reduce){.route-seg.is-inner.is-active{stroke-dashoffset:0;animation:none}.route-stop-ring{animation:none}.route-seg,.route-stop-dot,.route-stop-name,.route-trip:before,.route-trip-stops a,.route-compact-list a,.route-marker,.route-tip,.route-map-fallback a{transition:none;animation:none}}
