@font-face{font-family:"Ouyang Xun";src:url("../../assets/font/正欧阳询楷书+简繁.TTF") format("truetype");font-display:swap}

:root{--ink:#173c38;--red:#a84732;--paper:#f3efe4;--sand:#ded3bc;--muted:#71817b;--white:#fffdf8}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Source Sans 3","PingFang SC",sans-serif}a{color:inherit;text-decoration:none}.topbar{height:74px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(23,60,56,.18);position:relative;z-index:2}.brand{display:flex;align-items:center;gap:11px}.brand span{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--red);color:white;font-family:"Noto Serif SC",serif;font-size:20px}.brand b{font-family:"Noto Serif SC",serif;letter-spacing:.14em}.topbar nav{display:flex;gap:34px;font-size:14px}.topbar nav a{border-bottom:1px solid transparent;padding:7px 0}.topbar nav a:hover{border-color:var(--red)}.back{font-size:13px;color:var(--muted)}.hero{min-height:calc(100vh - 74px);padding:14vh 9vw 10vh;position:relative;overflow:hidden;background:radial-gradient(circle at 79% 39%,rgba(168,71,50,.13),transparent 18%),linear-gradient(120deg,transparent 72%,rgba(23,60,56,.05) 72%)}.hero:after{content:"";position:absolute;width:43vw;height:43vw;border:1px solid rgba(23,60,56,.15);border-radius:50%;right:-11vw;top:4vh;box-shadow:0 0 0 8vw rgba(23,60,56,.025),0 0 0 17vw rgba(23,60,56,.018)}.eyebrow,.section-heading>p{color:var(--red);font-weight:600;letter-spacing:.24em;font-size:13px}.hero h1,.section-heading h2{font-family:"Noto Serif SC",serif;font-weight:600;line-height:1.25;margin:.28em 0;font-size:clamp(46px,7.2vw,96px);letter-spacing:.04em}.hero h1 em,.section-heading h2 em{font-style:normal;color:var(--red)}.lead{width:min(600px,80%);font-family:"Noto Serif SC",serif;font-size:18px;line-height:2;color:#4f625d}.scroll-link{display:inline-flex;gap:70px;margin-top:38px;padding:13px 0;border-bottom:1px solid var(--ink);font-weight:600}.hero-stamp{position:absolute;right:12vw;bottom:13vh;z-index:1;width:142px;height:142px;border:1px solid var(--red);border-radius:50%;display:flex;align-items:center;justify-content:center;gap:10px;transform:rotate(-8deg);color:var(--red)}.hero-stamp b{font:700 54px/1 "Noto Serif SC",serif}.hero-stamp span{font-size:13px;line-height:1.5}.section-shell{padding:120px max(6vw,calc((100vw - 1180px)/2))}.section-heading{display:grid;grid-template-columns:1fr 2fr;align-items:start;margin-bottom:50px}.section-heading h2{font-size:clamp(34px,4vw,58px);margin:0}.map-section{background:var(--white)}.map-panel{border:1px solid var(--sand);background:#f7f3e9}.map-toolbar{height:64px;padding:0 24px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--sand);font-size:13px}.map-toolbar p{margin-left:auto;color:var(--muted)}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px}.legend-dot.visited{background:var(--red)}.legend-dot.future{background:#d9d3c4}.map-wrap{position:relative;min-height:620px;padding:20px}#china-map{display:block;width:100%;height:620px}.province{fill:#d9d3c4;stroke:#fffdf8;stroke-width:1.4;vector-effect:non-scaling-stroke;transition:fill .2s,transform .2s;transform-box:fill-box;transform-origin:center;cursor:crosshair}.province:hover,.province:focus{fill:#b9ae98;outline:none}.province.visited{fill:var(--red)}.province.visited:hover,.province.visited:focus{fill:#843725}.tooltip{position:absolute;pointer-events:none;opacity:0;padding:9px 13px;background:var(--ink);color:white;font-size:13px;transform:translate(-50%,-120%);transition:opacity .12s;border-radius:2px}.tooltip.show{opacity:1}.map-status{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);background:#f7f3e9}.map-status.hidden{display:none}.overview{background:var(--ink);color:var(--white)}.section-heading.light>p{color:#d38a76}.section-heading.light h2 em{color:#e6a18d}.metrics{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(255,255,255,.22);border-bottom:1px solid rgba(255,255,255,.22)}.metrics article{padding:46px 32px;border-right:1px solid rgba(255,255,255,.22);display:flex;flex-direction:column}.metrics article:last-child{border:0}.metrics strong{font:600 clamp(50px,6vw,84px)/1 "Noto Serif SC",serif;color:#e6a18d}.metrics sup{font-size:.35em}.metrics span{font-family:"Noto Serif SC",serif;margin-top:24px}.metrics small{color:#aab9b4;margin-top:8px}blockquote{margin:70px auto 0;text-align:center;font:400 clamp(22px,3vw,34px)/1.8 "Noto Serif SC",serif}blockquote cite{display:block;font:400 13px/2 "Source Sans 3",sans-serif;color:#aab9b4}.places{background:var(--paper)}.place-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.place-grid article{min-height:360px;padding:30px;border:1px solid var(--sand);position:relative;background:rgba(255,253,248,.45);transition:transform .25s,background .25s}.place-grid article:hover{transform:translateY(-7px);background:var(--white)}.number{position:absolute;right:24px;top:20px;color:#cbbfa9;font-size:28px}.type{color:var(--red);font-size:12px;letter-spacing:.25em;margin-top:60px}.place-grid h3{font:600 52px/1 "Noto Serif SC",serif;margin:20px 0}.place-grid article>p:last-of-type{color:#60706b;line-height:1.8;max-width:260px}.place-grid article>b{position:absolute;bottom:26px;letter-spacing:.25em;font-size:11px;color:#9f998d}footer{min-height:190px;background:#102d2a;color:var(--white);padding:45px 6vw;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end}footer span{font:600 24px "Noto Serif SC",serif}footer p{color:#9baca7;margin:0;text-align:center}footer a{text-align:right}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){.topbar nav{display:none}.back{font-size:0}.back:after{content:"返回";font-size:13px}.hero{padding:12vh 7vw}.hero-stamp{width:105px;height:105px;right:5vw;bottom:9vh}.hero-stamp b{font-size:38px}.section-shell{padding:80px 5vw}.section-heading{grid-template-columns:1fr;gap:18px}.map-toolbar{height:auto;padding:16px;flex-wrap:wrap}.map-toolbar p{width:100%;margin:0}.map-wrap{min-height:430px;padding:8px}#china-map{height:430px}.metrics,.place-grid{grid-template-columns:1fr}.metrics article{border-right:0;border-bottom:1px solid rgba(255,255,255,.22)}.metrics article:last-child{border-bottom:0}.place-grid article{min-height:300px}footer{grid-template-columns:1fr;gap:18px;text-align:left}footer p,footer a{text-align:left}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.province,.place-grid article{transition:none}}
.topbar-actions{display:flex;align-items:center;gap:18px}.language-link{font-size:13px;font-weight:600;color:var(--red);border-bottom:1px solid transparent;padding:7px 0}.language-link:hover{border-color:currentColor}
.map-route-toggle{border:1px solid rgba(23,60,56,.28);background:rgba(255,253,248,.7);color:var(--ink);padding:7px 12px;cursor:pointer;font:inherit}.map-route-toggle[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}.china-route{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;pointer-events:none}.china-route.flight{stroke:#147cac;stroke-width:2.8;opacity:.88;filter:drop-shadow(0 0 1.5px rgba(255,253,248,.95))}.china-route.rail{stroke:#b33d2f;stroke-width:3.2;stroke-dasharray:7 4;opacity:.92;filter:drop-shadow(0 0 1.5px rgba(255,253,248,.95))}.china-route-layer:not(.visible){display:none}.china-route-city{fill:#fffdf8;stroke:#176f98;stroke-width:2.2;vector-effect:non-scaling-stroke;cursor:pointer}.china-route-city.rail{stroke:#b33d2f}.china-route-city-label{font-family:"Ouyang Xun","KaiTi",serif;font-size:9px;fill:#173c38;paint-order:stroke;stroke:#f7f3e9;stroke-width:3px;pointer-events:none}.china-city-group:hover .china-route-city{fill:#f1bd55;stroke:#173c38}.china-city-group:focus{outline:none}.china-city-group:focus .china-route-city{fill:#f1bd55;stroke:#173c38}

/* Ouyang Xun calligraphy and the layered travel-map treatment. */
body,.brand span,.brand b,.hero h1,.section-heading h2,.lead,.hero-stamp b,.metrics strong,.metrics span,blockquote,.place-grid h3,footer span{font-family:"Ouyang Xun","STKaiti","KaiTi",serif}
.map-panel{background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.9),transparent 28%),linear-gradient(145deg,#eee6d5,#f8f3e7 55%,#e8deca);box-shadow:0 28px 70px rgba(23,60,56,.12)}
.map-wrap{overflow:hidden;background-image:radial-gradient(rgba(23,60,56,.12) .7px,transparent .7px);background-size:9px 9px}
#china-map{overflow:visible}
.province{fill:url(#future-hatch);stroke:#fff9ec;stroke-width:1.8;filter:saturate(.8);transition:filter .25s,opacity .25s}
.province.visited{fill:url(#travel-hatch)}
.province:hover,.province:focus{filter:saturate(1.15) brightness(1.08);opacity:.88}
.province-label{font-family:"Ouyang Xun","KaiTi",serif;font-size:10px;text-anchor:middle;dominant-baseline:middle;fill:#fffaf0;pointer-events:none;paint-order:stroke;stroke:rgba(87,33,25,.55);stroke-width:2.5px;stroke-linejoin:round}
.province-label.future-label{fill:#4d5d57;stroke:rgba(255,253,248,.8);stroke-width:2px}
.city-marker{pointer-events:none}.city-marker circle:first-child{fill:none;stroke:#173c38;stroke-width:1.5;animation:city-pulse 2.4s ease-out infinite}.city-marker circle:nth-child(2){fill:#173c38}.city-marker text{font-family:"Ouyang Xun","KaiTi",serif;font-size:12px;fill:#173c38;paint-order:stroke;stroke:#fffdf8;stroke-width:3px}
.place-grid{grid-template-columns:repeat(3,1fr)}
@keyframes city-pulse{0%{r:3;opacity:1}75%,100%{r:16;opacity:0}}
@media(max-width:760px){.province-label{font-size:7px}.city-marker text{font-size:9px}.place-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.city-marker circle:first-child{animation:none}}
.section-heading.section-label-only{display:block;margin-bottom:32px}
.section-heading.section-label-only>p{margin:0}

/* 古地图：竖题、墨界与青黛水脉。 */
.map-heading{grid-template-columns:1fr auto;min-height:260px;align-items:start}
.map-heading h2{height:250px;display:flex;flex-direction:row-reverse;gap:.35em;writing-mode:horizontal-tb;line-height:1.35;letter-spacing:.12em}
.map-heading h2 span,.map-heading h2 em{display:block;writing-mode:vertical-rl;text-orientation:upright}
.map-panel{position:relative;border:1px solid rgba(74,57,38,.52);outline:1px solid rgba(74,57,38,.18);outline-offset:7px}
.map-panel:before,.map-panel:after{content:"";position:absolute;width:28px;height:28px;z-index:1;pointer-events:none}
.map-panel:before{left:10px;top:10px;border-left:2px solid var(--red);border-top:2px solid var(--red)}
.map-panel:after{right:10px;bottom:10px;border-right:2px solid var(--red);border-bottom:2px solid var(--red)}
.map-wrap{background-color:#eee5d2;background-image:linear-gradient(95deg,rgba(95,70,40,.035),transparent 35%,rgba(255,255,255,.22) 62%,transparent),radial-gradient(rgba(23,60,56,.11) .65px,transparent .65px);background-size:auto,9px 9px}
.province{stroke:rgba(55,48,37,.72);stroke-width:.82}
.province.visited{stroke:rgba(71,35,27,.78)}
.province-label{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:1px}
.river{fill:none;stroke:#537f82;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.88;pointer-events:none;filter:drop-shadow(0 1px 0 rgba(255,253,248,.8))}
.river-label{font-family:"Ouyang Xun","KaiTi",serif;font-size:15px;letter-spacing:.18em;fill:#285d62;paint-order:stroke;stroke:#f4eedf;stroke-width:4px;pointer-events:none}
@media(max-width:760px){.map-heading{min-height:0}.map-heading h2{height:auto;display:block;letter-spacing:.04em}.map-heading h2 span,.map-heading h2 em{display:inline;writing-mode:horizontal-tb}.map-heading h2 span:after{content:"\A";white-space:pre}.river{stroke-width:2}.river-label{font-size:11px}}

/* 世界行旅：可转动的舆图与行迹册。 */
.world-section{background:#eaf2f0;color:var(--ink);position:relative;overflow:hidden}
.world-section:before{content:"四海";position:absolute;right:-.08em;top:-.18em;font:400 clamp(180px,28vw,430px)/1 "Ouyang Xun","KaiTi",serif;color:rgba(62,108,106,.045);pointer-events:none}
.world-heading{display:grid;grid-template-columns:1.4fr .6fr;align-items:end;gap:60px;margin-bottom:54px;position:relative}
.world-heading h2{font:600 clamp(42px,5.2vw,72px)/1.35 "Ouyang Xun","KaiTi",serif;letter-spacing:.06em;margin:12px 0 0}
.world-heading .eyebrow,.map-heading>p,.singapore-heading>p{font:600 clamp(24px,2.8vw,38px)/1.2 "Ouyang Xun","KaiTi",serif;letter-spacing:.12em;color:var(--red);margin-bottom:20px}
.world-heading h2 em{font-style:normal;color:var(--red)}
.world-intro{max-width:360px;color:#506d68;font-size:15px;line-height:2;margin:0 0 8px}
.world-window{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(260px,.8fr);height:660px;border:1px solid rgba(38,81,78,.28);background:rgba(255,253,248,.62);box-shadow:0 26px 70px rgba(23,60,56,.12);position:relative;overflow:hidden}
.globe-pane{position:relative;min-width:0;height:100%;display:grid;place-items:center;overflow:hidden;overscroll-behavior:contain;background:radial-gradient(circle at 48% 43%,#173044 0,#0b1e30 52%,#050f1b 100%)}
#world-map{display:block;width:100%;height:100%;cursor:grab;touch-action:none;background:transparent}
#world-map:active{cursor:grabbing}
.world-starfield{pointer-events:none}
.world-ocean{fill:url(#globe-ocean);stroke:#cfc5c6;stroke-width:.8}
.world-graticule{fill:none;stroke:#dfe5e9;stroke-width:.4;opacity:.9}
.ying-land{fill:#dfeade;stroke:#c1d1c2;stroke-width:.5;vector-effect:non-scaling-stroke}
.world-routes{pointer-events:none}.world-route{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;opacity:.52}.world-route.flight{stroke:#3b8fbd;stroke-width:1.15}.world-route.train{stroke:#a97042;stroke-width:1.35;stroke-dasharray:4 3}.world-route.mixed{stroke:#596fa7;stroke-width:1.5}
.ying-lines{fill:none;stroke:#aec2b0;stroke-width:.8;stroke-linecap:round;vector-effect:non-scaling-stroke}
.world-country{vector-effect:non-scaling-stroke;transition:fill .2s}
.world-country.visited{fill:#d77b68;stroke:#a84c3c;stroke-width:.85}
.china-province{fill:rgba(219,234,201,.2);stroke:#d1e1d2;stroke-width:.55;vector-effect:non-scaling-stroke}
.world-shade{fill:url(#globe-shade);pointer-events:none}
.world-solar-layer{pointer-events:none}.world-daylight{fill:rgba(255,247,211,.055);stroke:rgba(255,250,225,.08);stroke-width:10;vector-effect:non-scaling-stroke}.world-night{fill:rgba(7,36,72,.42);stroke:rgba(60,112,150,.2);stroke-width:10;vector-effect:non-scaling-stroke}
.flight-city{cursor:pointer;outline:none}.flight-city circle{fill:#0f5f91;stroke:#e8f5f8;stroke-width:1.4;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(7,53,80,.28));transition:r .18s,fill .18s}.flight-city:hover circle,.flight-city:focus circle,.flight-city.selected circle{fill:#53b8e8;stroke:#fff;stroke-width:2}.flight-city text{font:400 13px "Ouyang Xun","KaiTi",serif;fill:#0b4568;paint-order:stroke;stroke:#edf7f7;stroke-width:4px;stroke-linejoin:round;pointer-events:auto}
.world-point{pointer-events:none}.world-point .point-ring{fill:rgba(232,245,248,.42);stroke:#2d6f96;stroke-width:1.5}.world-point .point-core{fill:#0f5f91}.world-point.visit .point-ring{stroke:#5a96b7}.world-point.visit .point-core{fill:#2d6f96}
.world-point text{display:none}
.globe-controls{position:absolute;z-index:3;left:18px;top:18px;display:flex;gap:8px;flex-wrap:wrap}
.globe-controls button{border:1px solid rgba(23,60,56,.22);background:rgba(255,253,248,.86);color:var(--ink);min-width:36px;height:36px;padding:0 12px;font-family:inherit;cursor:pointer;box-shadow:0 4px 14px rgba(23,60,56,.07)}
.globe-controls button:hover{border-color:var(--red);color:var(--red)}
.map-level{display:flex;gap:4px;margin-left:4px;padding-left:9px;border-left:1px solid rgba(23,60,56,.18)}.map-level .level-button.active{background:#2d6f96;color:white;border-color:#2d6f96}
.city-detail{position:absolute;z-index:3;left:20px;bottom:18px;min-width:190px;padding:12px 16px;background:rgba(255,253,248,.9);border-left:3px solid #2d6f96;box-shadow:0 8px 24px rgba(23,60,56,.1);display:flex;flex-direction:column;gap:3px}.city-detail span{font-size:12px;color:#607d78}.city-detail strong{font:500 20px "Ouyang Xun","KaiTi",serif;color:#0f5f91}.city-detail small{color:#78918d}
.world-tooltip{position:absolute;z-index:8;display:flex;flex-direction:column;gap:2px;min-width:150px;padding:9px 12px;border:1px solid rgba(45,111,150,.22);background:rgba(250,253,252,.96);box-shadow:0 8px 22px rgba(18,61,76,.18);color:#385f68;pointer-events:none;opacity:0;transform:translateY(5px);transition:opacity .14s,transform .14s}.world-tooltip.visible{opacity:1;transform:translateY(0)}.world-tooltip strong{font:500 17px "Ouyang Xun","KaiTi",serif;color:#0f5f91}.world-tooltip span{font-size:12px}.world-tooltip small{color:#78918d}
.world-status{position:absolute;inset:0;display:grid;place-items:center;background:#dcebea;color:#607d78;z-index:2}.world-status.hidden{display:none}
.journey-list{min-height:0;padding:18px;border-left:1px solid rgba(38,81,78,.22);display:flex;flex-direction:column;gap:10px;overflow:auto;background:rgba(255,253,248,.52)}
.journey-card{width:100%;min-height:76px;border:1px solid rgba(23,60,56,.16);background:rgba(255,253,248,.76);color:var(--ink);padding:13px 13px 13px 15px;display:grid;grid-template-columns:76px 1fr auto;align-items:center;gap:12px;text-align:left;font-family:inherit;cursor:pointer;transition:transform .2s,border-color .2s,background .2s}
.journey-card:hover,.journey-card.active{transform:translateX(-5px);border-color:var(--red);background:#fffdf8}
.journey-card:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.journey-card.home{border-left:3px solid var(--red)}
.journey-card.visit{border-left:3px solid #77918d}
.journey-year{font-size:12px;letter-spacing:.04em;color:var(--red);font-variant-numeric:tabular-nums}
.singapore-section{background:#e8efec}.singapore-heading{margin-bottom:34px}.singapore-heading h2 em{color:var(--red)}
.singapore-panel{display:grid;grid-template-columns:minmax(0,3fr) minmax(220px,1fr);min-height:600px;border:1px solid rgba(38,81,78,.24);background:#f7f3e8;box-shadow:0 22px 60px rgba(23,60,56,.11)}
.singapore-map-wrap{position:relative;min-width:0;overflow:hidden;background:radial-gradient(circle at 50% 45%,#edf5f0,#dce9e3)}
#singapore-map{display:block;width:100%;height:600px}.singapore-area{fill:#d9d1bd;stroke:#f6f1e7;stroke-width:1.1;vector-effect:non-scaling-stroke;transition:fill .16s,filter .16s}.singapore-area.explored{fill:#ca8c80}.singapore-area:hover,.singapore-area:focus{fill:#a8473d;filter:drop-shadow(0 2px 4px rgba(70,34,28,.25));outline:none}.singapore-labels{pointer-events:none}.singapore-labels text{font:500 11px "Ouyang Xun","KaiTi",serif;fill:#4a332c;text-anchor:middle;paint-order:stroke;stroke:#f7f3e8;stroke-width:3px;stroke-linejoin:round}
.singapore-note{padding:34px 28px;border-left:1px solid rgba(38,81,78,.2);display:flex;flex-direction:column;align-items:flex-start;background:rgba(255,253,248,.72)}.singapore-note>span{display:grid;place-items:center;width:74px;height:74px;border:1px solid var(--red);border-radius:50%;font:600 28px "Ouyang Xun","KaiTi",serif;color:var(--red);margin-bottom:auto}.singapore-note strong{font:600 28px "Ouyang Xun","KaiTi",serif;color:var(--ink);margin-top:28px}.singapore-note p{color:#718985;margin:8px 0 24px}.singapore-legend{display:grid;grid-template-columns:14px auto 14px auto;gap:8px;align-items:center;font-size:12px;color:#607d78}.singapore-legend i{width:12px;height:12px;background:#ca8c80}.singapore-legend i:nth-of-type(2){background:#d9d1bd}
.singapore-tooltip{position:absolute;z-index:4;display:flex;flex-direction:column;gap:3px;min-width:145px;padding:10px 12px;background:rgba(255,253,248,.96);border-left:3px solid var(--red);box-shadow:0 8px 22px rgba(23,60,56,.16);pointer-events:none;opacity:0;transform:translateY(5px);transition:.15s}.singapore-tooltip.visible{opacity:1;transform:none}.singapore-tooltip strong{font:500 17px "Ouyang Xun","KaiTi",serif}.singapore-tooltip span{font-size:12px;color:#718985}.singapore-status{position:absolute;inset:0;display:grid;place-items:center;background:#dce9e3;color:#607d78}.singapore-status.hidden{display:none}
.journey-place{display:flex;flex-direction:column;gap:6px}.journey-place strong{font:500 21px "Ouyang Xun","KaiTi",serif;letter-spacing:.08em}.journey-place small{color:#748b86}.journey-arrow{color:#9aaca7}
.metrics{grid-template-columns:repeat(5,1fr)}.metrics article{padding-left:20px;padding-right:20px}
@media(max-width:900px){.world-heading{grid-template-columns:1fr}.world-intro{max-width:560px}.world-window{height:auto;grid-template-columns:1fr;overflow:visible}.globe-pane{height:620px}.journey-list{border-left:0;border-top:1px solid rgba(38,81,78,.22);display:grid;grid-template-columns:repeat(2,1fr);max-height:none}.journey-card:hover,.journey-card.active{transform:translateY(-3px)}.singapore-panel{grid-template-columns:1fr}.singapore-note{border-left:0;border-top:1px solid rgba(38,81,78,.2);min-height:220px}.singapore-note>span{margin-bottom:0}}
.china-route.car{stroke:#c38724;stroke-width:3;stroke-dasharray:2 5;opacity:.95;filter:drop-shadow(0 0 1.5px rgba(255,253,248,.95))}
.world-route.car{stroke:#e3ad4c;stroke-width:1.8;stroke-dasharray:2 5;opacity:.8}
.metrics strong .metric-total{display:inline;color:inherit;font:inherit;font-size:.48em;letter-spacing:0;margin:0 0 0 .08em;opacity:.78}
.singapore-labels .singapore-label-en{font-family:Georgia,"Times New Roman",serif;font-size:.72em;letter-spacing:0}
.china-route-halo{fill:none;stroke:#fffdf8;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;opacity:.82;vector-effect:non-scaling-stroke;pointer-events:none}.china-route-halo.rail{stroke-dasharray:7 4}.china-route-halo.car{stroke-dasharray:2 5}.china-route{filter:none!important}
.china-route.rail{stroke:#7657b5;stroke-width:3.35;opacity:.96;filter:drop-shadow(0 0 2.2px rgba(255,253,248,1))}.china-route-city.rail{stroke:#7657b5}.world-route.train{stroke:#a98be1;stroke-width:1.55;opacity:.78;stroke-dasharray:5 3}.world-route.mixed{stroke:#7662b5}

/* 章节统一：暗色坤舆、横排题句。 */
.world-section{background:linear-gradient(145deg,#071724,#0b2231 58%,#071522);color:#edf4f2}.world-section:before{color:rgba(168,204,204,.055)}.world-heading h2{color:#edf4f2}.world-heading h2 em{color:#e69a86}.world-heading .eyebrow{color:#e69a86}.world-intro{color:#a8bdba}.world-window{border-color:rgba(190,216,215,.24);background:#081a28;box-shadow:0 28px 80px rgba(0,8,15,.38)}.journey-list{border-left-color:rgba(190,216,215,.18);background:rgba(5,18,28,.92)}.journey-card{border-color:rgba(190,216,215,.18);background:rgba(16,39,50,.76);color:#edf4f2}.journey-card:hover,.journey-card.active{border-color:#e69a86;background:#173c49}.journey-place small{color:#9eb5b2}.journey-year{color:#e69a86}.journey-arrow{color:#8ca9a8}
.map-heading{grid-template-columns:1fr 2fr;min-height:0;align-items:start}.map-heading h2,.singapore-heading h2{height:auto;display:block;writing-mode:horizontal-tb;line-height:1.22;letter-spacing:.04em}.map-heading h2 span,.map-heading h2 em,.singapore-heading h2 span,.singapore-heading h2 em{display:block;writing-mode:horizontal-tb;text-orientation:mixed}
@media(max-width:760px){.map-heading{grid-template-columns:1fr}.world-section{background:linear-gradient(155deg,#071724,#0b2231 62%,#071522)}}
@media(max-width:760px){.world-window{min-height:0}.globe-pane{height:430px;min-height:430px}#world-map{height:100%}.globe-controls{left:10px;top:10px}.globe-controls button{height:32px;padding:0 9px}.map-level{width:100%;margin:0;padding:6px 0 0;border:0}.journey-list{grid-template-columns:1fr;padding:12px}.flight-city text{font-size:10px}.city-detail{left:10px;bottom:10px;min-width:150px}.world-heading{gap:18px;margin-bottom:34px}#singapore-map{height:430px}.singapore-note{padding:24px}.singapore-labels text{font-size:9px}.metrics{grid-template-columns:1fr}}
