.region-expedition{display:grid;margin-inline:auto}
.region-heading{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px}.region-heading .eyebrow{margin:0 0 6px;color:var(--zone);font-size:11px;letter-spacing:.15em}.region-heading h1{margin:0;font-size:clamp(28px,3vw,46px);line-height:1.05}.region-back svg{transform:rotate(180deg)}.region-progress{font-size:24px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}.region-progress small{font-size:15px;color:#adbed0}
.region-trail{position:relative;overflow:hidden;border:1px solid #55778d80;background:#0b2132;box-shadow:0 20px 50px #0004}
.region-landscape{position:absolute;inset:0}
.trail-opponent{position:absolute;padding:0;border:0;background:none;color:#f5f9ff;text-align:center;transform:translate(-50%,-50%)}.trail-opponent:disabled{opacity:1}.trail-opponent:focus-visible{outline:3px solid #fff;outline-offset:8px;border-radius:50%}
.trail-number{position:absolute;z-index:2;display:grid;place-items:center;border:1px solid #f4ce89;border-radius:50%;color:#ffda91;font-weight:900}
.trail-copy{display:grid;justify-items:center;border:1px solid;border-radius:8px}.trail-copy>strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trail-copy>span{display:flex;align-items:center;gap:5px}.trail-copy svg{width:13px;height:13px}
.region-abandon{justify-self:start;color:#acbdce;font-size:12px}
@media(max-width:620px){.region-heading{gap:10px}.region-heading h1{font-size:25px}.region-heading .eyebrow{font-size:9px}.region-progress{font-size:19px}.region-progress small{font-size:12px}}
/* A navigable landscape: each marker sits on a clearing in the painted trail. */
.region-expedition{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;max-width:1100px}
.region-heading{grid-column:1/-1}
.region-trail{width:min(100%,calc(100dvh - 210px));height:auto;min-height:0;aspect-ratio:1;justify-self:center;border-radius:20px;isolation:isolate}
.region-trail::before,.region-trail::after{display:none}
.region-terrain{position:absolute;inset:0;user-select:none}
.region-terrain::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 45px #03131e55}
.region-terrain .region-landscape{z-index:0;object-fit:fill;object-position:center;width:100%;height:100%;pointer-events:none}
.region-terrain .trail-opponent{left:var(--trail-x);top:var(--trail-y);width:58px;height:58px;display:block;z-index:2;filter:none;cursor:pointer}
.region-terrain .trail-opponent:disabled{cursor:default}
.trail-marker{position:relative;display:grid;place-items:center;width:58px;height:58px;border:2px solid #d1c5a4;border-radius:50%;background:radial-gradient(circle at 40% 20%,#40534b,#172b29 72%);box-shadow:0 4px 0 #091a1a,0 8px 12px #0008,inset 0 0 0 4px #091c2180;color:#e5e6d4;font-size:28px;font-weight:700;transition:box-shadow .18s,transform .18s}
.trail-marker>svg{width:26px;height:26px}
.region-terrain .trail-number{left:auto;top:auto;right:-4px;bottom:-4px;width:22px;height:22px;font-size:10px;background:#15251f;border-color:#c8c29c;font-style:normal}
.region-terrain .trail-number svg{width:12px;height:12px}
.region-terrain .is-boss .trail-marker{border-radius:18px;transform:rotate(45deg);border-color:#e2bf7e}
.region-terrain .is-boss .trail-marker>svg,.region-terrain .is-boss .trail-number{transform:rotate(-45deg)}
.region-terrain .is-boss.is-locked .trail-marker{font-size:0}
.region-terrain .is-boss.is-locked .trail-marker::before{content:"?";font-size:28px;transform:rotate(-45deg)}
.region-terrain .is-current .trail-marker{border-color:#ffe6a2;background:radial-gradient(circle at 40% 20%,#ab8540,#4b3819 80%);color:#ffedbb;box-shadow:0 4px 0 #251c0d,0 9px 16px #0009,0 0 0 6px #ffdf8e33}
.region-terrain .is-current:hover .trail-marker,.region-terrain .is-current:focus-visible .trail-marker{box-shadow:0 4px 0 #251c0d,0 10px 20px #0009,0 0 0 10px #ffdf8e44}
.region-terrain .is-cleared .trail-marker{background:radial-gradient(circle at 40% 20%,#315d46,#153126);border-color:#94e1b5;color:#abf0c7}
.region-terrain .is-locked .trail-marker{background:radial-gradient(circle at 40% 20%,#283e39,#11251f);border-color:#a1b6a199;color:#d5dfc6;box-shadow:0 4px 0 #091a1a,0 7px 10px #0006,inset 0 0 0 4px #091c2180}
.region-terrain .trail-copy{position:absolute;left:50%;top:calc(100% + 6px);transform:translateX(-50%);margin:0;padding:4px 8px;gap:2px;background:#091c17df;border-color:#e4d69a55;max-width:145px;width:max-content;box-shadow:0 4px 12px #0005;pointer-events:none}
.region-terrain .trail-copy>strong{font-size:12px;color:#f6edcf}
.region-terrain .trail-copy>span{font-size:10px;color:#ffe5a1}
.region-terrain .is-locked .trail-copy,.region-terrain .is-cleared .trail-copy{opacity:0;transition:opacity .15s}
.region-terrain .is-locked:hover .trail-copy,.region-terrain .is-cleared:hover .trail-copy{opacity:1}
.region-terrain .trail-opponent.is-current:hover{transform:translate(-50%,-50%)}
.trail-briefing{display:grid;justify-items:start;gap:18px;padding:18px;border:1px solid #50716d88;border-radius:16px;background:linear-gradient(140deg,#193b34aa,#10263a);align-self:center;min-width:0}
.trail-scout{width:100%;aspect-ratio:1;border:1px solid #bcd2c133;border-radius:12px;background-position:center;background-size:cover;box-shadow:0 12px 24px #0003}
.trail-briefing-copy{display:grid;gap:7px;min-width:0}.trail-briefing-copy small{color:#a8c3b7;font-size:11px;font-weight:750;letter-spacing:.1em}.trail-briefing-copy strong{color:#f6f0df;font-size:22px;overflow-wrap:anywhere}
.trail-briefing .btn{width:100%;gap:9px;justify-content:center;min-height:48px;padding:12px;font-size:14px}.trail-briefing .btn svg{width:18px;height:18px}
.trail-briefing.is-conquered>span{display:flex;gap:8px;align-items:center;color:#8ee3bf;font-weight:750}.trail-briefing.is-conquered>span>svg{width:20px}
.region-abandon{grid-column:1/-1;margin-top:-4px}
@media(max-width:960px){.region-expedition{grid-template-columns:minmax(0,1fr);max-width:780px}.region-trail{width:min(100%,calc(100dvh - 240px))}.trail-briefing{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 16px;width:100%;box-sizing:border-box}.trail-scout{width:64px;border-radius:9px}.trail-briefing-copy strong{font-size:21px}.trail-briefing .btn{width:auto;padding:12px 18px}.trail-briefing.is-conquered{grid-template-columns:1fr auto}}
@media(max-width:620px){.region-expedition{gap:14px}.region-trail{width:100%;height:auto;aspect-ratio:1;border-radius:16px}.region-terrain .trail-opponent{width:42px;height:42px}.trail-marker{width:42px;height:42px;font-size:23px;border-width:1px;box-shadow:0 3px 0 #091a1a,0 6px 10px #0008,inset 0 0 0 3px #091c2180}.trail-marker>svg{width:20px;height:20px}.region-terrain .trail-number{width:18px;height:18px;font-size:8px;right:-3px;bottom:-3px}.region-terrain .is-boss .trail-marker{border-radius:13px}.region-terrain .is-boss.is-locked .trail-marker::before{font-size:23px}.region-terrain .trail-copy{padding:3px 6px;max-width:110px}.region-terrain .trail-copy>strong{font-size:10px}.region-terrain .trail-copy>span{display:none}.trail-briefing{grid-template-columns:50px minmax(0,1fr) auto;gap:10px;padding:10px}.trail-scout{width:50px}.trail-briefing-copy strong{font-size:16px}.trail-briefing-copy small{font-size:9px}.trail-briefing .btn{font-size:12px;padding:10px;min-height:44px}.trail-briefing .btn svg{display:none}}
@media(prefers-reduced-motion:reduce){.region-terrain .trail-copy,.trail-marker{transition:none}}

.trail-npc-avatar{width:100%;height:100%;border-radius:50%;object-fit:cover;pointer-events:none}
.trail-marker:has(.trail-npc-avatar){padding:0;overflow:visible}.trail-marker .trail-npc-avatar{overflow:hidden}
.npc-species{font-size:11px;color:#9db8b1;font-style:italic}.npc-quote{margin:0;color:#d6e3d6;font-size:14px;line-height:1.6;font-style:italic;max-width:30ch}.trail-npc{display:block;height:auto;aspect-ratio:1;object-fit:cover;object-position:center 25%}.battle-npc-avatar{object-fit:cover;object-position:center 25%}
@media(max-width:960px){.trail-briefing:has(.npc-quote){grid-template-columns:72px minmax(0,1fr) auto}.trail-briefing:has(.npc-quote) .trail-scout{width:72px;grid-row:1/3;align-self:center}.trail-briefing:has(.npc-quote) .npc-quote{grid-column:2;max-width:none;font-size:13px}.trail-briefing:has(.npc-quote) .btn{grid-column:3;grid-row:1/3}.npc-species{font-size:10px}}
@media(max-width:620px){.trail-briefing:has(.npc-quote){grid-template-columns:64px minmax(0,1fr);gap:8px 12px}.trail-briefing:has(.npc-quote) .trail-scout{width:64px;grid-row:1/3}.trail-briefing:has(.npc-quote) .npc-quote{font-size:12px;line-height:1.45}.trail-briefing:has(.npc-quote) .btn{grid-column:1/-1;grid-row:auto;width:100%}.trail-briefing-copy strong{font-size:20px}}

/* A challenge stays centered in its trail, leaving the rest of the game usable. */
.region-trail{container:expedition-trail / inline-size}
.map-encounter-scrim{position:absolute;inset:0;z-index:4;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background:#0313158c;backdrop-filter:blur(2px);cursor:default}
.region-trail .map-encounter-panel{position:absolute;inset:0;z-index:5;display:none;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);width:min(620px,calc(100% - 48px));height:min(360px,calc(100% - 48px));max-width:calc(100% - 48px);max-height:calc(100% - 48px);margin:auto;padding:0;overflow:auto;border:1px solid #b3c6a55c;border-radius:20px;background:#0e242b;color:#f5f1e6;box-shadow:0 16px 48px #0009;text-align:start;box-sizing:border-box;scroll-padding:16px}
.region-trail .map-encounter-panel[open]{display:grid;animation:challenge-enter .2s cubic-bezier(.2,.75,.2,1) both}
body:has(.map-encounter-panel[open]):not(:has(dialog:modal)){overflow:auto}
body:has(.map-encounter-panel[open]) .game-audio-control{display:none}
.challenge-portrait{position:relative;min-width:0;min-height:0;overflow:hidden;background:#16342d}
.challenge-portrait>img,.challenge-portrait>.art{display:block;width:100%;height:100%;min-height:0;object-fit:cover;object-position:center 34%;background-size:cover;background-position:center;aspect-ratio:auto}
.challenge-portrait::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 65%,#0e242b)}
.challenge-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0;padding:24px;gap:0;background:radial-gradient(ellipse at 0 50%,color-mix(in srgb,var(--zone) 12%,transparent),transparent 72%)}
.challenge-heading{min-width:0;max-width:100%;padding-inline-end:20px}
.challenge-location{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:#b8cbb9;font-size:11px;font-weight:700;letter-spacing:.02em}
.challenge-location>svg{width:16px;height:16px;color:#efcb83;flex-shrink:0}.challenge-location>span{min-width:0}.challenge-location>small{flex-basis:100%;font-size:10px;font-weight:600;letter-spacing:.07em;padding-inline-start:22px;color:#9eafa9}
.challenge-copy h2{margin:16px 0 5px;font-size:42px;font-weight:800;letter-spacing:-.04em;line-height:1;overflow-wrap:anywhere;max-width:100%}
.challenge-heading>.npc-species{font-size:11px;color:#a5beb2;line-height:1.5}
.challenge-copy>.npc-quote{margin:18px 0 22px;font-size:16px;line-height:1.45;font-style:normal;color:#d5e1d5;max-width:27ch}
.challenge-copy>.challenge-fight{display:flex;align-items:center;justify-content:center;gap:9px;min-height:48px;width:100%;font-size:16px;padding:12px 18px;margin-top:0;box-shadow:0 3px 0 #986b26}.challenge-fight>svg{width:18px;height:18px}
.map-encounter-panel>.encounter-close{position:absolute;z-index:2;inset-block-start:8px;inset-inline-end:8px;display:grid;place-items:center;min-width:44px;width:44px;min-height:44px;height:44px;padding:12px;border:1px solid #d8e9d738;border-radius:50%;background:#0b1c22dd;color:#edf3e9}.map-encounter-panel>.encounter-close:hover{background:#25453f}.map-encounter-panel>.encounter-close>svg{width:20px;height:20px}
.map-conquered{position:absolute;z-index:2;inset-inline:0;bottom:16px;display:flex;align-items:center;justify-content:center;gap:12px;color:#9be4b7}.map-conquered>svg{width:26px;height:26px}
@keyframes challenge-enter{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@container expedition-trail (max-width:620px){
 .region-trail .map-encounter-panel{grid-template-columns:88px minmax(0,1fr);grid-template-rows:88px auto auto;align-content:center;gap:12px 14px;width:min(360px,calc(100% - 32px));height:max-content;max-width:calc(100% - 32px);max-height:calc(100% - 32px);padding:16px;border-radius:16px}
 .challenge-portrait{grid-column:1;grid-row:1;width:88px;height:88px;border-radius:10px}.challenge-portrait::after{display:none}.challenge-portrait>img{object-position:center 28%}
 .challenge-copy{display:contents}.challenge-heading{grid-column:2;grid-row:1;align-self:center;padding-inline-end:18px}.challenge-location{font-size:10px;gap:4px;line-height:1.25}.challenge-location>svg{display:none}.challenge-location>small{font-size:9px;padding-inline-start:0;letter-spacing:.04em}
 .challenge-copy h2{font-size:28px;margin:9px 0 4px}.challenge-heading>.npc-species{display:block;font-size:9px;line-height:1.25}
 .challenge-copy>.npc-quote{grid-column:1/-1;margin:0;font-size:14px;line-height:1.4;max-width:none}.challenge-copy>.challenge-fight{grid-column:1/-1;min-height:44px;font-size:14px;padding:10px 16px;margin:0}
 .map-encounter-panel>.encounter-close{inset-block-start:4px;inset-inline-end:4px;border-color:transparent;background:transparent}
}
@media(prefers-reduced-motion:reduce){.region-trail .map-encounter-panel[open]{animation:none}}
/* The same team overview remains below each regional map at its full width. */
.region-expedition>.lobby-team{grid-column:1/-1;width:100%;min-width:0;margin-top:0}
