.expedition-map{position:relative;background:#0b1920;scroll-margin-top:-110px}
.expedition-stage{position:relative;min-height:850px;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 74% 45%,#25404544,transparent 65%),#0b1920}
.expedition-heading{position:relative;z-index:2;padding:70px 0 0 6vw;width:34%;pointer-events:none}
.expedition-heading .eyebrow{font-size:10px;letter-spacing:.25em;color:#bfa578}
.expedition-heading h2{font-size:clamp(38px,4.2vw,67px);line-height:1.35;margin:20px 0}
.expedition-heading p{font-size:14px;color:#a6b3b5;line-height:1.9;margin:0}
.expedition-chart{position:absolute;inset:0 -2% 0 24%;display:flex;align-items:center;mask-image:linear-gradient(90deg,transparent,#000 9%,#000 98%,transparent)}
.expedition-terrain{position:relative;width:100%;aspect-ratio:1100/740;transform:translate(var(--map-x,0),var(--map-y,0));transition:transform 1.2s cubic-bezier(.2,.65,.2,1)}
.atlas-drawing{display:block;width:100%;height:auto}
.site-aura{opacity:0;transition:opacity .9s}
.site-ring{opacity:.2;transition:opacity .9s}
.map-site.is-active .site-aura,.map-site.is-active .site-ring{opacity:1}
.map-route{fill:none;stroke:#edd096;stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s;filter:drop-shadow(0 0 5px #dda25477)}
.map-route.is-travelled{stroke-dashoffset:0}
.map-location{position:absolute;left:var(--x);top:var(--y);transform:translateX(-50%);min-width:128px;min-height:64px;text-align:center;color:#a9b6b2;text-decoration:none;padding:5px 10px 8px;transition:color .5s,background .5s;line-height:1.45;border-radius:3px;background:#10232acf}
.location-number{position:absolute;top:9px;left:-8px;font:10px Georgia,serif;color:#c4ac80}
.location-name{display:block;font:20px/1.45 var(--serif);letter-spacing:.08em}
.map-location small{display:block;font-size:11px;letter-spacing:.12em;margin-top:4px}
.map-location.is-active,.map-location:hover,.map-location:focus-visible{color:#ffe3a9;background:#243531ee;text-shadow:0 0 24px #e7ae5366}
.map-location.is-active:after{content:"";position:absolute;left:25%;right:25%;bottom:0;height:1px;background:#e2c089;box-shadow:0 0 14px #e2c089}
.expedition-stories{position:relative;z-index:2;margin:50px 0 150px 6vw;width:25%;max-width:345px}
.expedition-story .eyebrow{font-size:10px;letter-spacing:.17em;color:#c2a478}
.expedition-story h3{font:400 clamp(21px,2vw,30px)/1.6 var(--serif);margin:14px 0}
.expedition-story p{font-size:14px;color:#abb7b8;line-height:1.9;margin:0 0 23px}
.expedition-enter{display:flex;justify-content:space-between;align-items:center;min-height:48px;border-top:1px solid #c6a46a55;border-bottom:1px solid #c6a46a55;padding:10px 0;text-decoration:none;color:#e7c58b;font-size:14px}
.expedition-enter span{font-size:23px;transition:transform .3s}
.expedition-enter:hover span{transform:translate(3px,-3px)}
.expedition-stops{position:absolute;bottom:70px;left:6vw;right:6vw;z-index:2;display:flex;gap:0;border-bottom:1px solid #d4b57930}
.expedition-stops button{flex:1;min-height:54px;border:0;border-bottom:1px solid transparent;background:none;color:#859593;font:14px/1.5 var(--serif);text-align:left;cursor:pointer;padding:12px 16px 12px 0;transition:color .4s,border-color .4s}
.expedition-stops button span{font:11px Georgia,serif;margin-right:18px;opacity:.7}
.expedition-stops button[aria-pressed="true"]{color:#e9cd97;border-color:#e9cd97}
.expedition-stops button:hover{color:#fff0ce}
.expedition-scroll{position:absolute;bottom:27px;left:6vw;right:6vw;z-index:2;display:flex;gap:28px;align-items:center;color:#8f9e9e;font-size:11px;letter-spacing:.12em}
.expedition-count{margin-left:auto;font-family:Georgia,serif;color:#cfb482}
.expedition-map.is-enhanced{height:300svh}
.is-enhanced .expedition-stage{position:sticky;top:0;height:100svh;min-height:660px}
.is-enhanced .expedition-stories{position:absolute;top:45%;left:6vw;margin:0}
.is-enhanced .expedition-story:not([hidden]){animation:map-story-in .55s ease both}
@keyframes map-story-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(min-width:1000px) and (max-height:760px){.expedition-heading{padding-top:35px}.expedition-heading h2{font-size:42px;margin:12px 0}.is-enhanced .expedition-stories{top:43%}.expedition-story h3{font-size:22px;margin:10px 0}.expedition-story p{font-size:13px;margin-bottom:14px}.expedition-stops{bottom:55px}.expedition-scroll{bottom:18px}}
@media(max-width:1000px){
 .expedition-stage{min-height:850px}
 .expedition-heading{padding:34px 6vw 0;width:100%}
 .expedition-heading h2{font-size:35px;line-height:1.35;margin:12px 0}
 .expedition-heading h2 br{display:none}
 .expedition-heading p{font-size:12px}.expedition-heading p br{display:none}
 .expedition-chart{inset:115px -6% auto;height:auto;mask-image:none}
 .expedition-terrain{width:100%}
 .is-enhanced .expedition-stage{min-height:720px}
 .is-enhanced .expedition-stories{top:auto;bottom:138px;left:6vw;width:88%;max-width:none;background:linear-gradient(0deg,#0b1920 75%,#0b192000);padding-top:25px}
 .expedition-story h3{font-size:23px;margin:7px 0}
 .expedition-story p{font-size:13px;max-width:590px;margin-bottom:12px}
 .expedition-enter{min-height:44px;width:min(100%,350px)}
 .expedition-stops button{text-align:center;font-size:12px;padding:10px 4px}
 .expedition-stops button span{display:block;margin:0 0 6px;font-size:10px}
 .expedition-stops{bottom:45px}.expedition-scroll{bottom:15px}
 .expedition-stories{margin:65vw 6vw 160px;width:88%;max-width:none}
 .location-name{font-size:17px}.map-location{min-width:110px;min-height:54px;padding:4px 6px}.map-location small{font-size:10px}
}
@media(max-width:600px){
 .expedition-heading{padding-top:24px}.expedition-heading h2{font-size:29px}.expedition-heading p{max-width:285px}
 .expedition-chart{top:160px;left:-15%;right:-15%}
 .is-enhanced .expedition-stage{min-height:730px}
 .location-name{font-size:15px}.map-location{min-width:96px;min-height:48px}.map-location small{font-size:9px;letter-spacing:.02em}.location-number{font-size:9px;left:-6px}
 .expedition-story h3{font-size:21px}.expedition-story p{font-size:12px}.expedition-scroll{font-size:10px}
}
@media(prefers-reduced-motion:reduce){.expedition-terrain,.map-route,.site-aura,.site-ring,.map-location{transition:none}.is-enhanced .expedition-story:not([hidden]){animation:none}}
/* 小型預覽視窗仍保留四個地標、當前介紹與可點選入口。 */
@media(max-width:1000px) and (max-height:650px){
 .is-enhanced .expedition-stage{min-height:0}
 .expedition-heading{padding-top:12px}.expedition-heading .eyebrow{font-size:8px}
 .expedition-heading h2{font-size:23px;margin:4px 0}.expedition-heading p{display:none}
 .expedition-chart{top:68px;left:0;right:0;height:46svh;justify-content:center}
 .expedition-terrain{width:min(100%,68svh)}
 .map-location{min-width:78px;min-height:44px;padding:4px}.location-name{font-size:12px}.map-location small{font-size:8px}.location-number{font-size:8px}
 .is-enhanced .expedition-stories{bottom:72px;padding-top:8px}
 .expedition-story .eyebrow{font-size:8px}.expedition-story h3{font-size:16px;line-height:1.5;margin:4px 0}
 .expedition-story p{display:none}.expedition-enter{min-height:44px;padding:5px 0;font-size:12px}
 .expedition-stops{bottom:8px}.expedition-stops button{min-height:52px;padding:5px;font-size:11px}
 .expedition-scroll{display:none}
}
html.reduced .expedition-terrain,html.reduced .map-route,html.reduced .site-aura,html.reduced .site-ring{transition:none}
html.reduced .is-enhanced .expedition-story:not([hidden]){animation:none}
/* 立體沙盤與深色探險檔案，延續原網站的夜色與古銅金。 */
.relief-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.has-relief .atlas-drawing{visibility:hidden}
.has-relief .map-location{border:1px solid #bb9a6355;box-shadow:0 7px 20px #0006;background:#10232aeb;cursor:pointer;font-family:inherit}
.map-location{border:0;cursor:pointer;font-family:inherit}
.expedition-chart:has(.has-relief){mask-image:none}
.journal-open{overflow:hidden}
.expedition-journal{padding:0;border:1px solid #b8986155;width:min(1060px,92vw);max-width:none;max-height:90svh;overflow:auto;background:#0c1920;color:#ede6d8;box-shadow:0 35px 100px #000b,0 0 0 6px #b6945020;perspective:1800px}
.expedition-journal::backdrop{background:#02080dde;backdrop-filter:blur(7px)}
.journal-spread{display:grid;grid-template-columns:1.08fr 1fr;min-height:590px;transform-origin:left center;animation:journal-unfold .65s cubic-bezier(.2,.65,.2,1)}
.journal-close{position:absolute;right:12px;top:10px;z-index:3;width:44px;height:44px;background:#08151cba;border:1px solid #c6a36855;color:#e6d8bb;font-size:29px;cursor:pointer}
.journal-plate{margin:0;position:relative;min-height:100%;overflow:hidden;background:#142128}
.journal-plate img{width:100%;height:100%;position:absolute;object-fit:cover;filter:brightness(.78) saturate(.8)}
.journal-plate:after{content:"";position:absolute;inset:0;box-shadow:inset -18px 0 35px #0007;background:linear-gradient(0deg,#071219df,transparent 30%)}
.journal-plate figcaption{position:absolute;bottom:28px;left:28px;right:28px;z-index:1;display:flex;flex-direction:column;gap:8px;color:#dbc494;font-size:12px;letter-spacing:.12em}
.journal-plate figcaption span:last-child{font-size:9px;color:#9faeab}
.journal-page{position:relative;padding:62px 42px 25px;background:radial-gradient(ellipse at 0 40%,#28404766,transparent 70%),repeating-linear-gradient(0deg,transparent 0 31px,#b5a58105 32px),#101e25;box-shadow:inset 8px 0 16px #0005;border-left:1px solid #c6a36866}
.journal-kicker{font-size:10px;letter-spacing:.18em;color:#c8a76e}
.journal-page h2{font-size:42px;margin:16px 0 20px;letter-spacing:.08em}
.journal-lead{font:20px/1.8 var(--serif);color:#e0d7c4}
.journal-rule{width:48px;height:1px;background:#b99356;margin:28px 0}
.journal-page h3{font-size:12px;font-weight:400;letter-spacing:.08em;color:#c6aa7b}
.journal-page #journal-detail{font-size:14px;line-height:1.95;color:#b3bdbb}
.journal-enter{display:flex;justify-content:space-between;align-items:center;min-height:48px;margin-top:26px;padding:10px 0;color:#e6c487;border-top:1px solid #c5a46955;border-bottom:1px solid #c5a46955;text-decoration:none}
.journal-page-number{font-size:9px;letter-spacing:.16em;color:#87958f;display:block;margin-top:18px}
.journal-pagination{display:flex;gap:15px;align-items:center;margin-top:20px;color:#bbaa8b;font-size:11px}
.journal-pagination button{width:44px;height:44px;border:1px solid #bca07155;background:transparent;color:#debf83;font-size:19px;cursor:pointer}
.journal-pagination button:disabled{opacity:.3;cursor:default}
@keyframes journal-unfold{from{opacity:0;transform:rotateY(-14deg) translateX(-20px)}to{opacity:1;transform:none}}
@media(max-width:700px){.expedition-journal{width:92vw;max-height:90svh}.journal-spread{grid-template-columns:1fr;min-height:0}.journal-plate{min-height:210px}.journal-page{padding:28px 24px;border-left:0;border-top:1px solid #b9965a77}.journal-page h2{font-size:30px;margin:12px 0}.journal-lead{font-size:18px}.journal-rule{margin:18px 0}.journal-page #journal-detail{font-size:13px}.journal-plate figcaption{bottom:18px;left:24px}}
@media(prefers-reduced-motion:reduce){.journal-spread{animation:none}}
html.reduced .journal-spread{animation:none}

.expedition-journal{overflow-x:hidden;scrollbar-width:thin}
.journal-page,.journal-plate{min-width:0}

/* 收藏展館作為沙盤的空間背景，延續暖燈與冷色石材。 */
.expedition-stage{background:#09151d}
.expedition-stage:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#071219f5 0%,#071219b0 43%,#0712198c),linear-gradient(0deg,#08121b 0%,transparent 38%,#08121b99),url('assets/world/guild.png') center 53%/cover;opacity:.65;pointer-events:none}
.expedition-chart{opacity:var(--atlas-arrival,1);translate:0 calc((1 - var(--atlas-arrival,1))*22px)}
.relief-canvas{filter:drop-shadow(0 35px 28px #0008)}
.has-relief .map-location{background:linear-gradient(120deg,#182a31f5,#0b1821ed);border-color:#a58b584d;box-shadow:0 7px 14px #0008,inset 0 1px #dec99518}
.has-relief .map-location.is-active{border-color:#c9aa72b0;box-shadow:0 8px 20px #0008,0 0 24px #d4a15418}
.journal-page:after{content:"✧";position:absolute;right:40px;bottom:25px;font:38px var(--serif);color:#c4a16a33;pointer-events:none}
@media(prefers-reduced-motion:reduce){.expedition-chart{opacity:1;translate:none}}
html.reduced .expedition-chart{opacity:1;translate:none}

/* 過場薄霧只在地圖入場邊缘，影片與既有相機路徑不變。 */
.expedition-map{z-index:2}
.expedition-map:before{content:"";position:absolute;top:-74px;left:0;right:0;height:75px;background:linear-gradient(transparent,#09151d);pointer-events:none;z-index:1}

/* 互動回饋延續古銅燈光；文字與地標的位置同步於相機。 */
.has-relief .map-location{transition:color .35s,background .35s,box-shadow .35s,translate .35s}
.has-relief .map-location:hover,.has-relief .map-location:focus-visible{translate:0 -4px;border-color:#e2be7a;box-shadow:0 10px 24px #0009,0 0 24px #ddb16b36}
.expedition-map[data-mode="approaching"] .expedition-heading,.expedition-map[data-mode="approaching"] .expedition-stories{opacity:.5;transition:opacity .35s}
.expedition-heading,.expedition-stories{transition:opacity .35s}
@media(prefers-reduced-motion:reduce){.has-relief .map-location,.expedition-heading,.expedition-stories{transition:none}.has-relief .map-location:hover{translate:none}}
html.reduced .has-relief .map-location,html.reduced .expedition-heading,html.reduced .expedition-stories{transition:none}
html.reduced .has-relief .map-location:hover{translate:none}

/* 沿著下一站的路徑流動；底層 3D 只需在相機移動時更新投影。 */
.route-flow{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:visible}
.route-flow[hidden]{display:none}
.route-flow svg{width:100%;height:100%;overflow:visible}
.route-flow path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.route-halo{stroke:#e9b765;stroke-width:10;opacity:.15;filter:blur(4px)}
.route-current{stroke:#edc588;stroke-width:1.7;opacity:.75}
.route-dashes{stroke:#fff0c5;stroke-width:2.5;stroke-dasharray:3 21;animation:route-stream 1.5s linear infinite}
.route-tip{stroke:#ffe1a0;stroke-width:2.4;filter:drop-shadow(0 0 4px #ffd277)}
.route-traveller{position:absolute;left:0;top:0;width:17px;height:14px;offset-rotate:auto;offset-anchor:50% 50%;animation:route-forward 3.6s linear infinite;filter:drop-shadow(0 0 5px #ffdb8f) drop-shadow(0 0 12px #f1a844)}
.route-traveller:before{content:"";display:block;width:100%;height:100%;background:#fff0c6;clip-path:polygon(0 7%,42% 7%,100% 50%,42% 93%,0 93%,56% 50%)}
.has-relief .map-location{z-index:2}
.route-flow.is-paused .route-traveller,.route-flow.is-paused .route-dashes{animation-play-state:paused}
.route-flow.is-still .route-traveller{animation:none;offset-distance:62%}
.route-flow.is-still .route-dashes{animation:none}
@keyframes route-stream{to{stroke-dashoffset:-24}}
@keyframes route-forward{0%{offset-distance:0%;opacity:0}9%{opacity:1}88%{opacity:1}100%{offset-distance:100%;opacity:0}}
@media(prefers-reduced-motion:reduce){.route-traveller{animation:none;offset-distance:62%}.route-dashes{animation:none}}
html.reduced .route-traveller{animation:none;offset-distance:62%}
html.reduced .route-dashes{animation:none}
