/* ACT I: one northbound route through the woodland atlas. */
.world-map-launch[hidden]{display:none}
#world-map{box-sizing:border-box;inset:0;width:min(1120px,98vw);height:96dvh;max-width:98vw;max-height:96dvh;margin:auto;padding:0;border:1px solid #a68b55;border-radius:3px;background:#e0c894;color:#3e3928;overflow:hidden;box-shadow:0 24px 100px #0009}
#world-map[open]{display:flex;flex-direction:column}#world-map::backdrop{background:#071410e8}
#world-map .journey-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 30px 12px;flex:none;background:#21362ff7;border-bottom:1px solid #b19a64;color:#e9dcbd;z-index:5}
#world-map .journey-eyebrow{margin:0 0 3px;color:#b8bf9b;font:9px/1.4 var(--font-ui);letter-spacing:.2em}
#world-map h2{margin:0;color:#f2dfaa;font:400 36px/1.1 var(--font-event);letter-spacing:.08em}
#world-map #world-map-help{margin:5px 0 0;color:#bbc6b2;font:12px/1.4 var(--font-ui)}
#world-map .journey-close{flex:none;width:38px;height:38px;min-height:0;padding:0;border:1px solid #c3b47b75;border-image:none;border-radius:50%;background:#172c24;color:#efe2bd;box-shadow:none;font:28px/1 var(--font-ui);cursor:pointer}
#world-map .journey-close:focus-visible,#world-map .journey-scroll:focus-visible{outline:2px solid #ffe49c;outline-offset:-4px}
#world-map .journey-summary{padding:8px 30px;flex:none;background:#dcca9f;color:#4a412e;font:11px/1.4 var(--font-ui);border-bottom:1px solid #87774688;z-index:4}
#world-map .journey-scroll{position:relative;min-height:0;flex:1;overflow:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#9b885e #d5c69e}
#world-map .journey-atlas{position:relative;width:100%;isolation:isolate;overflow:hidden}
#world-map .journey-terrain{position:absolute;inset:0;z-index:-2;background:url('assets/ui/act-i-woodland-v2.png') center/cover no-repeat}
#world-map .journey-trail{position:absolute;inset:0;pointer-events:none;z-index:-1}
#world-map .journey-trail svg{width:100%;height:100%;overflow:visible}
#world-map .atlas-path-shadow{fill:none;stroke:#ead7a2;stroke-width:8;stroke-linecap:round;opacity:.75}
#world-map .atlas-path{fill:none;stroke:#796043;stroke-width:2.4;stroke-dasharray:3 8;stroke-linecap:round}
#world-map .journey-route{list-style:none;margin:0;padding:0}
#world-map .journey-stop{position:absolute;width:30px;height:30px;margin:0;padding:0;transform:translate(-50%,-50%)}
#world-map .journey-dot{box-sizing:border-box;position:absolute;inset:0;border:2px solid #705936;box-shadow:0 1px 0 #fff7d4,inset 0 0 0 3px #e4cc95;background:#ac8652;color:#382e1f;border-radius:50%;display:grid;place-items:center;font:12px/1 var(--font-ui)}
#world-map .is-encounter .journey-dot{background:#c8b378;border-style:dashed}
#world-map .is-past .journey-dot{background:#7e8e65;color:#f1e8be;border-color:#465a40}
#world-map .is-current .journey-dot{background:#edce80;border-color:#664e26;box-shadow:0 0 0 7px #ecd68e70,0 0 0 9px #866c3f60,inset 0 0 0 3px #f6e0a7}
#world-map .journey-stop-label{position:absolute;top:0;transform:translateY(-10%);width:230px;padding:11px 14px;background:#20372ef5;border:1px solid #aeb58c;border-radius:4px;box-shadow:0 3px 12px #13261a40;text-shadow:none;text-align:left;color:#f3eddc}
#world-map .label-left .journey-stop-label{right:47px;text-align:left}
#world-map .label-right .journey-stop-label{left:47px;text-align:left}
#world-map .journey-stop-meta{font:400 12px/1.45 var(--font-ui);color:#d3dbbd}
#world-map .journey-stop-label h3{margin:5px 0 0;font:400 18px/1.3 var(--font-ui);color:#fff7df;letter-spacing:0;text-transform:none;overflow-wrap:break-word}
#world-map .is-past .journey-stop-label{opacity:.9}
#world-map .is-current .journey-stop-label{background:#344a32;box-shadow:0 0 0 1px #e6cc8c}
#world-map .atlas-party{position:absolute;bottom:17px;left:50%;transform:translateX(-50%);display:flex;align-items:flex-end;justify-content:center;filter:drop-shadow(0 3px 2px #47382477);pointer-events:none;z-index:3}
#world-map .atlas-party img{display:block;width:60px;height:82px;object-fit:contain;margin:0 -11px}
#world-map .atlas-gnome-fallback{font:44px/1 var(--font-ui);color:#873a2c}
#world-map .journey-fog{position:absolute;inset:0 0 auto;z-index:4;pointer-events:none;box-sizing:border-box;background:radial-gradient(ellipse at 20% 80%,#536254 0,transparent 55%),radial-gradient(ellipse at 85% 95%,#7b857066,transparent 45%),repeating-radial-gradient(ellipse at 65% 30%,#263c33 0,#354b3e 40px,#314538 110px,#263c33 180px);mask-image:linear-gradient(to bottom,#000 calc(100% - 155px),#000d calc(100% - 115px),#0007 calc(100% - 65px),transparent);-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 155px),#000d calc(100% - 115px),#0007 calc(100% - 65px),transparent)}
#world-map .journey-fog[hidden]{display:none}
#world-map .journey-fog span{position:absolute;bottom:175px;left:50%;transform:translateX(-50%);color:#c7c9a976;font:11px/1.4 var(--font-ui);letter-spacing:.25em}
@media(max-width:620px){#world-map .journey-heading{padding:12px 16px}#world-map h2{font-size:28px}#world-map #world-map-help{font-size:11px}#world-map .journey-summary{padding:8px 16px;font-size:10px}#world-map .journey-stop-label{width:132px;padding:8px 10px}#world-map .journey-stop-label h3{font-size:15px}#world-map .journey-stop-meta{font-size:11px}#world-map .label-left .journey-stop-label{right:32px}#world-map .label-right .journey-stop-label{left:32px}#world-map .journey-dot{inset:3px;font-size:10px}#world-map .atlas-party img{width:34px;height:54px;margin:0 -6px}#world-map .journey-terrain{background-size:cover}}

/* Story encounters: illustration left, two decisions right. */
:is(#world-map,#portal-encounter) .journey-event{position:absolute;inset:0;z-index:20;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);overflow:hidden;background:#080e0d;color:#e4dec9;padding:0}
:is(#world-map,#portal-encounter) .encounter-art{position:relative;min-width:0;min-height:0;margin:0;overflow:hidden}
:is(#world-map,#portal-encounter) .encounter-art img{width:100%;height:100%;object-fit:cover;object-position:50% 40%;display:block}
:is(#world-map,#portal-encounter) .encounter-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 65%,#080e0d),linear-gradient(0deg,#080e0d,transparent 25%);pointer-events:none}
:is(#world-map,#portal-encounter) .encounter-copy{align-self:center;min-width:0;padding:clamp(20px,4vw,70px);padding-left:clamp(16px,2vw,32px);max-width:680px}
:is(#world-map,#portal-encounter) .encounter-copy h2{font:400 clamp(24px,2.8vw,38px)/1.2 var(--font-event);color:#e6d49a;margin:0 0 24px;text-align:center;text-wrap:balance}
:is(#world-map,#portal-encounter) .encounter-story{font:400 clamp(15px,1.5vw,19px)/1.6 var(--font-ui);text-align:center;margin:0 0 32px;text-wrap:pretty}
:is(#world-map,#portal-encounter) .encounter-choices{display:grid;gap:12px}
:is(#world-map,#portal-encounter) .encounter-choices button{display:block;width:100%;min-height:66px;text-align:left;border:1px solid #729b91;border-radius:0;border-image:none;background:#24413e;box-shadow:none;color:#ecdfaf;padding:12px 20px;font:400 16px/1.35 var(--font-ui);transition:background .15s, border-color .15s;clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,10px 100%,0 50%)}
:is(#world-map,#portal-encounter) .encounter-choices button:before,:is(#world-map,#portal-encounter) .encounter-choices button:after{display:none}
:is(#world-map,#portal-encounter) .encounter-choices button:not(:disabled):hover{background:#355b52;border-color:#f1dca1;transform:none;filter:none}
:is(#world-map,#portal-encounter) .encounter-choices button:focus-visible{outline:none;background:#426a5d;box-shadow:inset 0 0 0 3px #f1dca1}
:is(#world-map,#portal-encounter) .encounter-choices strong{display:block;font-weight:bold;color:#efdc9e}
:is(#world-map,#portal-encounter) .encounter-choices span{display:block;font-size:14px;color:#e0e5d7;margin-top:3px}
:is(#world-map,#portal-encounter) .encounter-choices button:disabled{opacity:.5;cursor:default}
:is(#world-map,#portal-encounter) .encounter-status{font:14px/1.4 var(--font-ui);color:#d9bf8f;margin:12px 0 0;text-align:center}
:is(#world-map,#portal-encounter) .encounter-status:empty{display:none}
@media(max-width:650px){:is(#world-map,#portal-encounter) .journey-event{grid-template-columns:minmax(0,.65fr) minmax(0,1fr)}:is(#world-map,#portal-encounter) .encounter-copy{padding:16px 12px 16px 4px}:is(#world-map,#portal-encounter) .encounter-copy h2{font-size:23px;margin-bottom:18px}:is(#world-map,#portal-encounter) .encounter-story{font-size:14px;line-height:1.45;margin-bottom:22px}:is(#world-map,#portal-encounter) .encounter-choices button{padding:10px 14px;font-size:14px}:is(#world-map,#portal-encounter) .encounter-choices span{font-size:12px}}
@media(max-height:480px){:is(#world-map,#portal-encounter) .encounter-copy{padding-top:10px;padding-bottom:10px}:is(#world-map,#portal-encounter) .encounter-copy h2{font-size:24px;margin-bottom:12px}:is(#world-map,#portal-encounter) .encounter-story{font-size:14px;line-height:1.35;margin-bottom:16px}:is(#world-map,#portal-encounter) .encounter-choices{gap:8px}:is(#world-map,#portal-encounter) .encounter-choices button{min-height:54px;padding:8px 16px;font-size:14px}:is(#world-map,#portal-encounter) .encounter-choices span{font-size:12px}}
@media(prefers-reduced-motion:reduce){:is(#world-map,#portal-encounter) .encounter-choices button{transition:none}}


#trail-choice{width:min(920px,calc(100vw - 32px));max-height:calc(100dvh - 24px);box-sizing:border-box;padding:26px;color:#f5e7c8;background:#1b3028;border:1px solid #ceba80;border-radius:12px;box-shadow:0 20px 80px #07160daa}#trail-choice::backdrop{background:#071912b0}#trail-choice header{text-align:center}#trail-choice h2{font-family:var(--font-nature);font-size:30px;margin:6px 0}#trail-choice p{font-size:12px;line-height:1.5}.trail-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0 12px}.trail-cards button{display:flex;align-items:center;flex-direction:column;gap:10px;min-width:0;padding:18px 12px;background:#293f31;border:2px solid #8d9168;border-radius:10px;color:#f5e7c8;cursor:pointer}.trail-cards button[aria-pressed=true]{border-color:#f1da89;background:#465236;box-shadow:0 0 0 2px #f1da8944}.trail-symbol{font-size:34px;color:#dfc77e}.trail-cards strong{font-size:17px}.trail-description{font-size:12px;line-height:1.5;min-height:54px}.trail-cards b{font-size:12px;color:#bfe4a4}.trail-votes{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;min-height:52px}.trail-voter{display:flex;align-items:center;flex-direction:column;font-size:9px;max-width:90px;overflow-wrap:anywhere}.trail-voter img{width:34px;height:34px;object-fit:contain}.trail-waiting{display:flex;gap:10px;justify-content:center}.trail-status{text-align:center;min-height:18px}#trail-choice footer{display:flex;justify-content:space-between;gap:14px;margin-top:14px}#trail-choice footer button{min-height:42px;padding:10px 20px}#trail-choice button:focus-visible{outline:3px solid #f6e3a0;outline-offset:3px}
@media(max-width:650px),(max-height:600px){#trail-choice{padding:14px}#trail-choice h2{font-size:22px}.trail-cards{gap:7px;margin:10px 0}.trail-cards button{padding:10px 7px;gap:6px}.trail-cards strong{font-size:12px}.trail-description{font-size:10px;min-height:68px}.trail-symbol{font-size:23px}.trail-cards b{font-size:10px}.trail-votes{min-height:40px}.trail-voter img{width:26px;height:26px}#trail-choice footer{margin-top:8px}}


#portal-encounter{position:fixed;inset:0;width:min(1000px,94vw);height:min(620px,90dvh);max-width:94vw;max-height:90dvh;padding:0;border:1px solid #bfa576;background:#080e0d;color:#e4dec9}
#portal-encounter::backdrop{background:#06100de8}
#portal-encounter .encounter-skip{background:transparent;color:#e4dec9;border:1px solid #8e9274;padding:10px 18px;margin-top:12px;cursor:pointer}

#portal-encounter .journey-event{overflow:auto}

#world-map .journey-fog:before{content:'';position:absolute;inset:0;opacity:.24;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='cloud'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.009' numOctaves='4' seed='12'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeGaussianBlur stdDeviation='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23cloud)'/%3E%3C/svg%3E");background-size:600px 600px}

/* Woodland trail furniture. Decorative layers never receive pointer input. */
#world-map .journey-stop-label{box-sizing:border-box;padding:12px 17px;background:linear-gradient(0deg,#1b171300 47%,#d6b47b12 48%,#110e0b50 50%,#1b171300 52%),repeating-linear-gradient(3deg,#493d2f 0,#493d2f 7px,#504332 8px,#44392d 11px);border:2px solid #9f8758;border-radius:3px 7px 5px 2px;box-shadow:0 4px 0 #29291ee0,0 7px 12px #17231b55,inset 0 0 0 1px #c8ab6938}
#world-map .journey-stop-label:before,#world-map .journey-stop-label:after{content:'';position:absolute;top:50%;width:4px;height:4px;border-radius:50%;background:#d5b67b;box-shadow:0 1px 1px #15170f}
#world-map .journey-stop-label:before{left:5px}#world-map .journey-stop-label:after{right:5px}
#world-map .journey-stop-meta{color:#ddd0ad}
#world-map .is-current .journey-stop-label{background:linear-gradient(0deg,transparent 48%,#111c1755 50%,transparent 52%),repeating-linear-gradient(3deg,#344636 0,#344636 8px,#3e503b 10px,#304231 12px);border-color:#e0c17c;box-shadow:0 4px 0 #283526,0 0 22px #f0c96430,inset 0 0 0 1px #e7d29740}
#world-map .journey-dot{inset:-5px;background:#d1b67c;border:2px solid #695337;box-shadow:0 2px 3px #38412b88,inset 0 0 0 3px #e2ce9a}
#world-map .journey-dot svg{width:23px;height:23px}
#world-map .is-encounter .journey-dot{border-style:solid;background:#b9c39a;color:#344e3d;box-shadow:0 2px 3px #38412b88,inset 0 0 0 3px #d6d7af}
#world-map .is-current .journey-dot{color:#493b24;animation:trail-beacon 3s ease-in-out infinite}


#world-map .atlas-party img{animation:gnome-idle 3.4s ease-in-out infinite;transform-origin:50% 100%}
#world-map .atlas-party img:nth-child(2){animation-delay:-.9s}#world-map .atlas-party img:nth-child(3){animation-delay:-1.8s}#world-map .atlas-party img:nth-child(4){animation-delay:-2.7s}
#world-map .atlas-lantern{position:absolute;z-index:3;left:43px;top:-14px;width:11px;height:17px;box-sizing:border-box;border:2px solid #58472c;border-radius:3px;background:#f6d58c;box-shadow:0 0 13px 6px #ffe9a16b;animation:lantern-glow 4s ease-in-out infinite;pointer-events:none}
#world-map .atlas-lantern:before{content:'';position:absolute;left:1px;top:-7px;width:5px;height:5px;border:1px solid #58472c;border-bottom:0;border-radius:4px 4px 0 0}
#world-map .atlas-lantern:after{content:'';position:absolute;left:3px;top:0;height:13px;border-left:1px solid #866b39}
#world-map .atlas-next-path{fill:none;stroke:#ffe7a7;stroke-width:4;stroke-dasharray:2 9;stroke-linecap:round;filter:drop-shadow(0 0 4px #e9bf66);animation:trail-wake 2s ease-out both}
#world-map .atlas-footprints{fill:none;stroke:#4b513a;stroke-width:5;stroke-dasharray:1 15 1 24;stroke-linecap:round;opacity:.65}
#world-map .is-past .journey-stop-label{width:190px;padding:8px 14px;background:#384334ed;border-color:#7a8969;opacity:.84;box-shadow:0 2px 4px #20311b33}
#world-map .is-past .journey-stop-label h3{font-size:15px;margin-top:2px;color:#e0e3c8}
#world-map .is-past .journey-stop-meta{font-size:11px;color:#c5ccb3}
#world-map .is-past .journey-dot{inset:3px;box-shadow:none;border-width:1px}

#world-map .journey-fog{background:linear-gradient(#243d32 calc(100% - 380px),#637d69 calc(100% - 190px),#b0bca17d);transition:height 1.6s ease-in-out;contain:paint}
#world-map .journey-fog span{bottom:240px;color:#d8dfc6a8;font:400 11px/1.4 var(--font-ui);letter-spacing:.2em}
#world-map .mist-trees{position:absolute;inset:auto -30px 105px;height:250px;opacity:.14;filter:blur(3px);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='240' viewBox='0 0 300 240'%3E%3Cg fill='%2321372c'%3E%3Cpath d='m35 12-34 95h18L0 155h23L5 206h63l-15-51h18l-20-48h17zM144 38l-35 94h18l-20 46h20l-17 45h71l-19-45h21l-22-46h19zM260 0l-38 102h18l-26 64h24l-22 74h83l-27-74h25l-24-64h17z'/%3E%3C/g%3E%3C/svg%3E") repeat-x bottom/300px 240px;mask-image:linear-gradient(transparent,#000 35%,transparent)}
#world-map .mist-drift{position:absolute;inset:auto -12% 0;height:330px;background:radial-gradient(ellipse at 20% 48%,#d8ddbf77,transparent 44%),radial-gradient(ellipse at 70% 64%,#bccdb588,transparent 45%);filter:blur(18px);animation:forest-mist 18s ease-in-out infinite alternate}
@keyframes gnome-idle{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}
@keyframes lantern-glow{0%,100%{box-shadow:0 0 12px 5px #ffe9a15c}50%{box-shadow:0 0 19px 8px #ffe9a180}}
@keyframes trail-beacon{0%,100%{box-shadow:0 0 0 6px #ecd68e50,0 0 0 8px #866c3f40,inset 0 0 0 3px #f6e0a7}50%{box-shadow:0 0 0 8px #ecd68e70,0 0 18px 10px #e2bb5b35,inset 0 0 0 3px #f6e0a7}}
@keyframes trail-wake{from{opacity:0;stroke-dashoffset:35}to{opacity:1;stroke-dashoffset:0}}
@keyframes forest-mist{from{transform:translateX(-4%)}to{transform:translateX(5%)}}
@media(max-width:620px){#world-map .journey-stop-label{width:140px;padding:9px 12px}#world-map .journey-dot{inset:0}#world-map .journey-dot svg{width:19px;height:19px}#world-map .is-past .journey-stop-label{width:132px;padding:7px 12px}#world-map .is-past .journey-stop-label h3{font-size:13px}#world-map .atlas-lantern{left:33px;top:-20px;width:9px;height:14px}}
@media(prefers-reduced-motion:reduce){#world-map .atlas-party img,#world-map .atlas-lantern,#world-map .is-current .journey-dot,#world-map .atlas-next-path,#world-map .mist-drift{animation:none}#world-map .journey-fog{transition:none}}

/* Painted route emblems retain their natural proportions. */
#world-map .atlas-painted-sprite{display:block;background-image:url('assets/ui/act-i-emblems-v1.png');background-repeat:no-repeat;background-size:400% 200%;background-position:var(--art-x) var(--art-y);pointer-events:none}


#world-map .journey-emblem{width:46px;height:46px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);filter:drop-shadow(0 1px 1px #23332170)}
#world-map .journey-dot{background:#596c46;box-shadow:0 2px 3px #38412b88,inset 0 0 0 2px #d6c590;border-color:#c3ae77}
#world-map .is-encounter .journey-dot{background:#4f6850;box-shadow:0 2px 3px #38412b88,inset 0 0 0 2px #b9bd8f}
#world-map .is-current .journey-dot{background:#718153}
@media(max-width:620px){#world-map .journey-emblem{width:35px;height:35px}}

/* Compact inventory-sized journey panel and side-by-side location tiles. */
#world-map{width:min(640px,calc(100vw - 24px));height:min(580px,84dvh);max-width:calc(100vw - 24px);max-height:84dvh;border-radius:9px;border-color:#8e805c;box-shadow:0 14px 50px #0008}
#world-map::backdrop{background:#07141080}
#world-map .journey-heading{gap:12px;padding:10px 14px;background:#263b30}
#world-map h2{font:400 24px/1.3 var(--font-nature);letter-spacing:0;display:flex;align-items:center;gap:10px}
#world-map h2 span{font:400 11px/1.3 var(--font-ui);color:#b9c2a7}
#world-map .journey-close{width:28px;height:28px;font-size:22px;border-radius:5px}
#world-map .journey-summary{padding:6px 14px;font:400 10px/1.4 var(--font-ui);background:#293d31;color:#d4d2b2;border-bottom:1px solid #87926855}
#world-map .is-battle .journey-stop-label{display:flex;align-items:center;gap:10px;width:228px;padding:9px 11px;transform:translateY(-30%);border-width:1px;border-radius:5px;box-shadow:0 3px 7px #17231b55}
#world-map .journey-stop-copy{flex:1;min-width:0}
#world-map .journey-stop-label h3{font:400 14px/1.25 var(--font-ui);margin:3px 0 0}
#world-map .journey-stop-meta{font-size:10px}
#world-map .journey-mini-map{display:block;flex:none;width:74px;height:48px;margin:0;opacity:.95;pointer-events:none;border-radius:3px}
#world-map .is-past .journey-stop-label h3{font-size:14px}
#world-map .is-past .journey-stop-meta{font-size:10px}
#world-map .is-encounter.is-past .journey-dot{inset:-5px;opacity:.65}
#world-map .atlas-party img{width:42px;height:58px;margin:0 -8px}
#world-map .atlas-lantern{left:34px;width:9px;height:14px}
@media(max-width:540px){
 #world-map .is-battle .journey-stop-label{width:220px;left:15px;right:auto;top:34px;transform:translateX(-50%);padding:7px 10px;gap:8px}
 #world-map .journey-mini-map{width:68px;height:44px}
 #world-map .journey-emblem{width:38px;height:38px}
}

/* Bark-framed lobby map with a persistent terrain preview. */
#world-map{border:7px solid transparent;border-image:var(--bark-frame) 18 fill / 14px / 2px stretch;border-radius:0;background:#382b20;color:#f4e8c9;isolation:isolate}
#world-map .journey-heading{background:#493727;border-bottom:1px solid #ab824c66;padding:9px 12px}
#world-map h2{color:#f3d38a}#world-map h2 span{color:#d0b890}
#world-map .journey-close{background:#34271e;border-color:#a17c4f;color:#f4dca8}
#world-map .journey-summary{background:#3d2e23;color:#dcc7a1;border-color:#ac82474d}
#world-map .journey-scroll{scrollbar-color:#a28254 #382b20}
#world-map .journey-terrain{background-size:auto 120%}
#world-map .journey-emblem{width:54px;height:54px}
#world-map .is-battle .journey-stop-label{width:168px;padding:10px 12px;background:repeating-linear-gradient(3deg,#493d2f 0,#493d2f 7px,#504332 8px,#44392d 11px);border-color:#a38756}
#world-map .is-current .journey-stop-label{background:#58432d;border-color:#e0bc72;box-shadow:0 0 12px #f0c96424}
#world-map .journey-stop-label h3{font-size:15px}
#world-map .journey-dot,#world-map .is-encounter .journey-dot{background:#5a4731;border-color:#b59a65;box-shadow:0 2px 3px #35251e88,inset 0 0 0 2px #d6b57b}
#world-map .journey-preview{position:absolute;right:12px;bottom:12px;z-index:6;width:218px;padding:10px 11px;background:#382b20;border:5px solid transparent;border-image:var(--bark-frame) 18 fill / 10px / 1px stretch;box-shadow:0 5px 15px #16110d88;pointer-events:none}
#world-map .journey-preview h3{margin:0 0 7px;color:#ecd3a1;font:400 12px/1.3 var(--font-ui)}
#world-map .journey-preview .journey-mini-map{width:100%;height:auto;opacity:1;border:1px solid #a58a5555}
@media(max-width:540px){
 #world-map .journey-preview{width:156px;right:8px;bottom:8px;padding:7px}
 #world-map .journey-preview h3{font-size:11px}
 #world-map .is-battle .journey-stop-label{width:166px}
 #world-map .journey-emblem{width:46px;height:46px}
}
#world-map button.journey-stop-label{text-align:left;cursor:pointer;color:inherit;letter-spacing:0;text-transform:none}
#world-map button.journey-stop-label:hover{filter:brightness(1.15)}
#world-map button.journey-stop-label:focus-visible{outline:2px solid #f5d894;outline-offset:3px}

/* Dev-only contact sheet, with every layout drawn at the same scale. */
#world-map.is-survey{width:min(1040px,calc(100vw - 24px));height:min(820px,90dvh);max-height:90dvh}
#world-map .map-survey{flex:1;min-height:0;overflow:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:16px;align-content:start;background:#30271f}
#world-map .map-survey[hidden],#world-map .journey-scroll[hidden],#world-map .journey-preview[hidden]{display:none}
#world-map .map-survey-card{min-width:0;margin:0;padding:8px;border:1px solid #95764b;border-radius:5px;background:#483727}
#world-map .map-survey .journey-mini-map{display:block;width:100%;height:auto;opacity:1;border-radius:3px}
#world-map .map-survey figcaption{display:flex;align-items:baseline;gap:9px;padding:9px 2px 2px;font:12px/1.4 var(--font-ui)}
#world-map .map-survey figcaption span{flex:none;color:#c9ad81;font-size:10px}
#world-map .map-survey figcaption strong{color:#f4dfb4;font-weight:600}
@media(max-width:700px){#world-map .map-survey{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:10px}#world-map .map-survey figcaption{display:block}#world-map .map-survey figcaption span{display:block}}
@media(max-width:400px){#world-map .map-survey{grid-template-columns:1fr}}

/* The only route decision in ACT I: two battles, then a shared road. */
.fork-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}
#trail-choice .fork-card{display:flex;flex-direction:column;align-items:flex-start;gap:9px;min-width:0;text-align:left;padding:18px;background:#263d30;border:2px solid #71835b;border-radius:8px;color:#f2e7c7;font:14px/1.45 var(--font-ui);cursor:pointer}
#trail-choice .fork-card.thornpass{background:#3b3329;border-color:#9f7448}
#trail-choice .fork-card[aria-pressed=true]{border-color:#f1d791;box-shadow:0 0 0 2px #f1d79155}
#trail-choice .fork-card strong{font:400 24px/1.2 var(--font-nature)}
#trail-choice .fork-card small{color:#c4c9b0;font:12px/1.5 var(--font-ui)}
.fork-difficulty{text-transform:uppercase;letter-spacing:.12em;color:#b6d797;font-size:11px}.thornpass .fork-difficulty{color:#f1b277}
.fork-preview{width:100%;height:130px;overflow:hidden;background:#182c23;border-radius:4px}.fork-preview svg{width:100%;height:100%}.fork-preview polyline{fill:none;stroke:#e1c387;stroke-width:20;stroke-linejoin:round;stroke-linecap:round}.thornpass .fork-preview{background:#302c23}.thornpass .fork-preview polyline{stroke:#d59d60}
.fork-threat{border-top:1px solid #acb08a44;padding-top:10px;width:100%;min-height:42px}.fork-card b{color:#e4c984;font-size:13px}.fork-voters{min-height:20px;color:#bed6af;font-size:12px}
#world-map .atlas-fork{position:absolute;left:50%;transform:translateX(-50%);width:min(560px,92%);padding:12px;box-sizing:border-box;background:#23382ff2;border:1px solid #b4a477;border-radius:8px;text-align:center;color:#e9dfbf;font:12px/1.4 var(--font-ui);box-shadow:0 5px 15px #10201660}
#world-map .atlas-fork>div{display:flex;gap:10px;margin:8px 0}.atlas-fork-title{text-transform:uppercase;letter-spacing:.15em;font-size:10px}.atlas-fork-option{flex:1;display:flex;flex-direction:column;gap:3px;padding:9px;border:1px solid #788961;border-radius:4px;background:#344a35}.atlas-fork-option.thornpass{border-color:#b38a57;background:#4b3c2c}.atlas-fork-option.chosen{outline:2px solid #e7d18a}.atlas-fork-option.unchosen{opacity:.4}.atlas-fork-option b{font-size:14px}.atlas-fork small{color:#d0cfb4}
@media(max-width:620px){.fork-cards{gap:8px}#trail-choice .fork-card{padding:10px;font-size:12px;gap:7px}#trail-choice .fork-card strong{font-size:18px}.fork-preview{height:85px}.fork-card b{font-size:12px}#world-map .atlas-fork-option b{font-size:12px}}
#world-map .atlas-branch{fill:none;stroke:#bdd08b;stroke-width:7;stroke-dasharray:4 8;stroke-linecap:round;opacity:.75}#world-map .atlas-branch.thornpass{stroke:#d5a06b;stroke-dasharray:9 5 2 5}#world-map .atlas-branch.unchosen{opacity:.18;stroke-width:4}

/* The trail stays visible while a gnome chooses their keepsake. */
:is(#world-map,#portal-encounter) .encounter-route{font:12px/1.6 var(--font-ui);text-align:center;color:#a9b9a7;margin:0 0 20px;text-wrap:balance}
:is(#world-map,#portal-encounter) .encounter-route b{color:#ead39a;font-weight:normal}
:is(#world-map,#portal-encounter) .encounter-route span{margin:0 6px;color:#d5bb79}
:is(#world-map,#portal-encounter) .encounter-selection{display:flex;gap:16px;align-items:center;margin:0 0 20px}
:is(#world-map,#portal-encounter) .encounter-selection label{flex:1;min-width:0;font:13px/1.5 var(--font-ui);color:#c9cdb8}
:is(#world-map,#portal-encounter) .encounter-selection select{display:block;width:100%;margin-top:5px;padding:10px 8px;background:#182e28;color:#f2e2b6;border:1px solid #829578;font:14px var(--font-ui)}
:is(#world-map,#portal-encounter) .encounter-selection select:focus-visible{outline:2px solid #f1dca1;outline-offset:3px}
:is(#world-map,#portal-encounter) .encounter-token{display:block;flex:none;width:64px;height:72px;object-fit:contain;filter:drop-shadow(0 5px 12px #d5c57833)}
:is(#world-map,#portal-encounter) .encounter-token svg{display:block;width:100%;height:100%}
:is(#world-map,#portal-encounter) .encounter-reward-reveal{display:grid;justify-items:center;gap:10px;color:#efd991;text-align:center;margin:0 0 18px;animation:trail-reveal .45s ease-out both}
:is(#world-map,#portal-encounter) .encounter-die{text-align:center;font:78px/1 var(--font-ui);color:#efd991;margin:0 0 18px;animation:trail-reveal .45s ease-out both}
@keyframes trail-reveal{from{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:none}}
@media(max-height:600px){:is(#world-map,#portal-encounter) .encounter-copy{padding-top:16px;padding-bottom:16px}:is(#world-map,#portal-encounter) .encounter-copy h2{margin-bottom:14px}:is(#world-map,#portal-encounter) .encounter-story{margin-bottom:18px}:is(#world-map,#portal-encounter) .encounter-route{margin-bottom:12px}}
@media(max-width:480px){#portal-encounter .journey-event{grid-template-columns:1fr;grid-template-rows:120px auto}#portal-encounter .encounter-art:after{background:linear-gradient(0deg,#080e0d,transparent 70%)}#portal-encounter .encounter-copy{padding:12px 18px 20px;align-self:start}}
@media(prefers-reduced-motion:reduce){:is(#world-map,#portal-encounter) .encounter-reward-reveal,:is(#world-map,#portal-encounter) .encounter-die{animation:none}}

/* Brief playable clearings on the way to the next battle. */
#portal-encounter .journey-event.trail-game{display:flex;flex-direction:column;padding:20px 30px;box-sizing:border-box;background:radial-gradient(ellipse at 50% 45%,#284c3b,#091b17 78%);gap:12px;overflow:auto}
.trail-game-heading{text-align:center;flex:none}
#portal-encounter .trail-game-heading .encounter-route{margin:0 0 4px;font-size:12px}
.trail-game-heading h2{font:400 clamp(24px,3.5vw,36px)/1.2 var(--font-event);margin:2px 0 8px;color:#f1d89e}
.trail-prompt{font:17px/1.3 var(--font-ui);margin:0;color:#e7dfc5;min-height:23px}
.trail-clearing{position:relative;isolation:isolate;flex:1;min-height:210px;border-radius:48% 48% 28% 28%;background:radial-gradient(ellipse at 50% 55%,#526d3b55,#152d2222 70%),repeating-radial-gradient(ellipse at 35% 80%,#bad89807 0 2px,transparent 3px 26px);border-bottom:2px solid #a8b67536}
.trail-clearing:before,.trail-clearing:after{content:'';position:absolute;pointer-events:none;width:20%;height:40%;bottom:10%;border-radius:80% 0 80% 0;border-left:8px double #7c975b50;transform:rotate(-30deg);left:2%}
.trail-clearing:after{left:auto;right:2%;transform:scaleX(-1) rotate(-30deg)}
.trail-fireflies{position:absolute;inset:10px;pointer-events:none;background:radial-gradient(circle at 13% 32%,#ece8a8 0 2px,transparent 4px),radial-gradient(circle at 87% 28%,#ece8a8 0 2px,transparent 4px),radial-gradient(circle at 70% 70%,#c9e38a 0 2px,transparent 4px),radial-gradient(circle at 30% 81%,#c9e38a 0 1px,transparent 4px);opacity:.6;animation:trail-glimmer 3s ease-in-out infinite alternate}
.trail-pads{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,minmax(78px,1fr));height:100%;min-height:210px;max-width:620px;margin:auto;gap:4px 20px;align-items:center;justify-items:center}
#portal-encounter .trail-pad{position:relative;display:grid;place-items:center;width:100%;height:100%;min-height:80px;max-height:135px;padding:0;border:0;border-image:none;border-radius:50%;background:none;box-shadow:none;clip-path:none;cursor:pointer;touch-action:manipulation;transform:none;color:#f1e3b8;filter:none}
#portal-encounter .trail-pad:before,#portal-encounter .trail-pad:after{display:none}
#portal-encounter .trail-pad:disabled{opacity:1;cursor:default}
#portal-encounter .trail-pad:not(:disabled):hover{background:#d7e8a410}
#portal-encounter .trail-pad:focus-visible{outline:2px solid #eed497;outline-offset:-3px;background:#d7e8a410}
.trail-pad kbd{position:absolute;bottom:0;left:calc(50% - 10px);min-width:20px;padding:1px 3px;box-sizing:border-box;border:1px solid #afb28666;border-radius:5px;background:#162e24;font:12px/1.4 var(--font-ui);color:#e0dfb5}
.trail-stump{position:absolute;width:76%;max-width:110px;height:35%;bottom:13%;border-radius:50%;background:repeating-radial-gradient(ellipse at center,#b29763 0 4px,#7e6749 5px 7px,#b29763 8px 13px);box-shadow:0 8px 0 #614e36,0 12px 0 #3a422b,0 17px 14px #071b12aa;border:3px solid #5d5939}
.trail-chest{display:none;position:absolute;bottom:19%;width:100%;height:100%;max-height:120px;filter:drop-shadow(0 0 12px #eacb6477);pointer-events:none}
.trail-chest svg{width:100%;height:100%}
.is-target .trail-chest{display:block;animation:chest-arrives .24s ease-out}
.trail-chest .chest-feet{transform-origin:60px 85px;animation:chest-feet .22s ease-in-out infinite alternate}
.trail-catch{display:none;font:48px var(--font-ui);color:#f7de83;text-shadow:0 0 22px #fff8b6;position:absolute;bottom:30%;pointer-events:none}
.is-caught .trail-catch{display:block;animation:trail-reveal .25s ease-out}
.trail-invitation{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;background:radial-gradient(ellipse,#0d261be8 0%,#12281dcc 48%,#0a1f1677 80%);border-radius:30%;text-align:center;padding:18px}
.trail-invitation p{font:18px/1.5 var(--font-ui);color:#e6dfb9;margin:0;text-wrap:balance}
.trail-invitation small{font:13px var(--font-ui);color:#c4caa8}
#portal-encounter .trail-game button:not(.trail-pad){font:15px/1.3 var(--font-ui);background:#284c3c;color:#f1dfad;border:1px solid #a1ae78;border-radius:5px;box-shadow:none;padding:10px 20px;cursor:pointer;clip-path:none;min-height:42px}
#portal-encounter .trail-game button:not(.trail-pad):before,#portal-encounter .trail-game button:not(.trail-pad):after{display:none}
#portal-encounter .trail-game button:not(.trail-pad):focus-visible{outline:2px solid #f5d998;outline-offset:3px}
#portal-encounter .trail-game button:not(.trail-pad):not(:disabled):hover{background:#3d664a}
#portal-encounter .trail-game button.trail-start{font-size:19px;padding:13px 32px;background:#456340;border-color:#e0cd85}
#portal-encounter .trail-game-footer{display:flex;flex-direction:column;align-items:center;gap:0;text-align:center;flex:none;position:static;width:100%;padding:0;border:0;background:none;box-shadow:none}
.trail-score{font:14px var(--font-ui);color:#e8d698;margin-bottom:9px;font-variant-numeric:tabular-nums}
.trail-time{height:4px;width:min(340px,100%);flex:none;max-width:340px;background:#080f0a;margin:0 auto 12px;overflow:hidden;border-radius:3px}
.trail-time span{display:block;height:100%;background:linear-gradient(90deg,#779b74,#e0cb83);transition:width .1s linear}
.trail-actions{display:flex;gap:10px;justify-content:center}
#portal-encounter .trail-game button.encounter-skip{background:transparent;border-color:transparent;color:#bac7ac;font-size:12px;margin-top:2px;padding:6px 14px;min-height:32px}
.trail-stakes{font:13px var(--font-ui);color:#d0c999;margin:0 0 6px}
.trail-prize{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:20px;text-align:center;animation:trail-reveal .4s ease-out}
#portal-encounter .trail-prize .encounter-token{width:110px;height:120px}
.trail-prize p{max-width:440px;font:19px/1.6 var(--font-ui);color:#f0e4ba}
.trail-prize-star{font:90px var(--font-ui);color:#e5ca7c;text-shadow:0 0 45px #c2e69077}
.trail-choir .trail-pads{grid-template-columns:repeat(4,1fr);grid-template-rows:1fr;max-width:700px;gap:8px;align-items:center}
#portal-encounter .trail-choir .trail-pad{height:180px;max-height:180px;border-radius:35%}
.trail-choir .trail-pad svg{width:100%;max-height:160px;transition:filter .12s,transform .12s;transform-origin:center bottom;filter:brightness(.82)}
.trail-choir .trail-pad:nth-child(even){margin-top:35px}
.trail-choir .is-singing svg{filter:brightness(1.45) drop-shadow(0 0 20px var(--cap));transform:translateY(-8px) scale(1.04)}
.trail-choir .is-singing .mushroom-mouth{ry:7px}
@keyframes chest-arrives{from{transform:translateY(-18px) rotate(-10deg);opacity:.5}to{transform:none;opacity:1}}
@keyframes chest-feet{to{transform:rotate(7deg)}}
@keyframes trail-glimmer{to{opacity:.25;transform:translateY(-5px)}}
@media(max-width:600px){#portal-encounter .journey-event.trail-game{padding:14px 12px;gap:8px}.trail-pads{gap:4px 8px}.trail-choir .trail-pads{gap:0}.trail-prompt{font-size:15px}.trail-game-heading h2{font-size:25px}.trail-invitation p{font-size:16px}.trail-actions{gap:6px}#portal-encounter .trail-game button:not(.trail-pad){padding:9px 12px;font-size:13px}.trail-choir .trail-pad:nth-child(even){margin-top:20px}#portal-encounter .trail-choir .trail-pad{height:135px}}
@media(max-height:560px) and (min-width:600px){#portal-encounter .journey-event.trail-game{padding:8px 20px;gap:4px}.trail-game-heading h2{font-size:23px;margin-bottom:3px}.trail-prompt{font-size:14px;min-height:18px}.trail-clearing,.trail-pads{min-height:145px}.trail-pads{grid-template-rows:repeat(2,minmax(60px,1fr))}#portal-encounter .trail-pad{min-height:60px;max-height:85px}.trail-chest{max-height:80px}#portal-encounter .trail-choir .trail-pad{height:130px}.trail-score{margin-bottom:4px}.trail-time{margin-bottom:5px}.trail-prize p{font-size:16px;margin:0}}
@media(prefers-reduced-motion:reduce){.trail-chest,.trail-chest .chest-feet,.trail-fireflies,.trail-catch,.trail-prize{animation:none!important}.trail-choir .trail-pad svg,.trail-time span{transition:none}.trail-choir .is-singing svg{transform:none}}

#portal-encounter .trail-game:focus{outline:none}

/* A narrow journey atlas beside the party's square parchment. */
#world-map{width:min(1200px,96vw,calc(94dvh + 360px));height:min(890px,94dvh);max-width:96vw;max-height:94dvh}
#world-map .journey-heading{padding:10px 18px;background:#352b21}
#world-map h2{font:400 30px/1.15 var(--font-nature)}
#world-map .journey-summary{padding:7px 18px;font-size:12px}
#world-map .journey-workspace{display:grid;grid-template-columns:minmax(250px,.43fr) minmax(0,1fr);flex:1;min-height:0;overflow:hidden}
#world-map .journey-scroll{min-width:0;height:100%;border-right:2px solid #9c8056}
#world-map .journey-terrain{background-size:auto 100%;filter:sepia(.28) saturate(.7)}
#world-map .journey-atlas{min-height:100%}
#world-map .is-battle .journey-stop-label{width:150px;left:0;right:auto;top:34px;transform:translateX(-50%);padding:9px 12px;text-align:center}
#world-map .journey-stop-label h3{font:400 17px/1.25 var(--font-ui);margin-top:4px}
#world-map .journey-stop-meta{font-size:10px}
#world-map .journey-emblem{width:47px;height:47px}
#world-map .is-encounter .journey-dot{border:0;background:none;box-shadow:none;inset:-12px}
#world-map .journey-mystery{font:400 62px/1 var(--font-event);color:#f4dc9f;text-shadow:0 2px 0 #483626,0 0 5px #352a1b,2px 3px 3px #352a1b}
#world-map .is-encounter.is-past .journey-dot{inset:-12px;opacity:.7}
#world-map .atlas-party{bottom:29px}
#world-map .atlas-fork{width:94%;font-size:11px;padding:10px}
#world-map .atlas-fork>div{gap:5px}
#world-map .atlas-fork-option{padding:7px 3px}
#world-map .atlas-fork-option b{font-size:13px}
#world-map .journey-preview{position:relative;inset:auto;width:auto;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px 22px;border:0;background:radial-gradient(ellipse at center,#4d3d29,#29241d);box-shadow:inset 4px 0 16px #17160f66;pointer-events:auto;overflow:auto;color:#eddbad}
#world-map .planning-heading{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none}
#world-map .planning-kicker{font:400 10px/1.3 var(--font-ui);letter-spacing:.18em;color:#baaa85}
#world-map .planning-heading h3{font:400 clamp(24px,3vw,34px)/1.2 var(--font-nature);margin:3px 0 0;color:#eed5a0}
#world-map .planning-ink{width:26px;height:26px;border-radius:50%;background:var(--ink);border:3px solid #bca478;box-shadow:0 2px 4px #0007}
#world-map .planning-sheet{position:relative;flex:none;width:min(100%,calc(94dvh - 260px));aspect-ratio:1;isolation:isolate;background:radial-gradient(ellipse at 35% 30%,#f4e3b8 0,transparent 65%),radial-gradient(ellipse at 70% 80%,#cab17b,transparent 60%),#dec795;box-shadow:0 5px 15px #0f120d99,inset 0 0 35px #8c65246b;border:1px solid #aa874f;border-radius:2% 1% 2% 1% / 1% 2% 1% 2%;overflow:hidden}
#world-map .planning-sheet:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:3;opacity:.17;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.64' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath d='M0 0h180v180H0z' filter='url(%23grain)' opacity='.6'/%3E%3C/svg%3E");mix-blend-mode:multiply}
#world-map .planning-terrain.journey-mini-map{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;opacity:1;margin:0;pointer-events:none}
#world-map .planning-drawing{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;user-select:none;z-index:2}
#world-map .planning-tools{display:flex;justify-content:space-between;gap:12px;flex:none;width:100%;padding:0;border:0;margin:0}
#world-map .planning-tools>div{display:flex;gap:6px}
#world-map .planning-tools button{min-width:0;min-height:36px;padding:6px 12px;border:1px solid #9c8255;border-image:none;border-radius:4px;background:#352d21;color:#e7d2a4;box-shadow:none;font:400 13px/1.2 var(--font-ui);clip-path:none}
#world-map .planning-tools button[aria-pressed=true]{background:#dbc08a;color:#493922;border-color:#e9d7ac}
#world-map .planning-tools button:hover{filter:brightness(1.15)}
#world-map .planning-note{width:100%;margin:0;font:400 11px/1.4 var(--font-ui);color:#c4b48e;text-align:center;min-height:16px}
#world-map .planning-unknown{text-align:center;font:400 14px/1.5 var(--font-ui)}
#world-map .planning-unknown>span{font:400 100px/1 var(--font-event);color:#d7be82}
#world-map .planning-unknown h3{font:400 28px/1.3 var(--font-nature);margin-top:20px}
#world-map.is-survey .journey-workspace{display:none}
@media(max-width:720px){
 #world-map{width:98vw;max-width:98vw;height:96dvh;max-height:96dvh}
 #world-map .journey-workspace{grid-template-columns:minmax(160px,.42fr) minmax(0,1fr)}
 #world-map .journey-preview{padding:12px 10px;gap:8px}
 #world-map .is-battle .journey-stop-label{width:126px;padding:8px}
 #world-map .journey-stop-label h3{font-size:14px}
 #world-map .planning-tools{flex-wrap:wrap;justify-content:center;gap:6px}
 #world-map .planning-tools button{padding:6px 9px}
 #world-map .planning-heading h3{font-size:25px}
 #world-map .planning-kicker{font-size:8px}
 #world-map .atlas-fork>div{flex-direction:column}
}
@media(max-width:480px){
 #world-map .journey-workspace{display:flex;flex-direction:column;overflow:auto}
 #world-map .journey-scroll{flex:none;height:220px;border-right:0;border-bottom:2px solid #9c8056}
 #world-map .journey-preview{flex:none;overflow:visible;padding:16px}
 #world-map .planning-sheet{width:100%}
 #world-map .planning-tools{justify-content:space-between}
 #world-map .planning-ink{width:22px;height:22px}
}

/* Separate atlas and square sheet; the battlefield title lives on the paper. */
#world-map{--plan-size:min(710px,calc(92dvh - 78px),calc((96vw - 32px)/1.72));width:calc(var(--plan-size)*1.72 + 32px);height:calc(var(--plan-size) + 78px);max-height:96dvh;padding:0;overflow:visible;border:0;border-image:none;background:none;box-shadow:none;filter:none}
#world-map .journey-workspace{display:grid;grid-template-columns:.72fr 1fr;gap:32px;overflow:visible;min-height:0;height:100%;width:100%}
#world-map .journey-column{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:#382f22;border:4px solid #96774b;box-shadow:0 8px 26px #0006;border-radius:4px}
#world-map .journey-heading{flex:none;justify-content:center;padding:19px 12px 17px;background:#392f22;border-bottom:1px solid #9f85565c}
#world-map h2{font:400 clamp(32px,4vw,48px)/1.05 var(--font-nature);margin:0}
#world-map .journey-summary{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#world-map .journey-scroll{flex:1;height:auto;border:0;min-height:0}
#world-map .journey-close{position:absolute;z-index:50;right:-12px;top:-18px;width:30px;height:30px;background:#3a3024;border:1px solid #c9ac77;border-radius:50%;font:24px/1 var(--font-ui);box-shadow:0 3px 8px #0008}
#world-map .journey-preview{display:grid;grid-template-rows:minmax(0,1fr) auto auto;align-items:stretch;justify-content:stretch;gap:10px;padding:0;border:0;background:none;box-shadow:none;overflow:visible}
#world-map .planning-sheet{width:100%;height:auto;aspect-ratio:1;min-height:0;align-self:start;border-radius:4px}
#world-map .planning-heading{position:absolute;z-index:4;left:0;top:0;padding:26px 30px;align-items:flex-start;pointer-events:none;box-sizing:border-box}
#world-map .planning-heading h3{font:400 clamp(30px,4.1vw,52px)/1.1 var(--font-nature);color:#544126;margin:0 0 9px;text-wrap:balance}
#world-map .planning-ink{flex:none;margin:4px 0 0 14px;width:30px;height:30px;border-color:#b39059}
#world-map .planning-map-state{display:flex;align-items:center;gap:7px;color:#675639;font:400 12px/1.3 var(--font-ui)}
#world-map .planning-tools{align-items:center;flex-wrap:nowrap;gap:8px}
#world-map .planning-tools button{font-size:12px;padding:8px 10px;min-height:39px;background:#372e23}
#world-map .planning-tools button[aria-pressed=true]{background:#dbc08a;color:#493922}
#world-map .planning-tools>div{gap:5px}
#world-map .planning-note{font-size:10px;min-height:14px;color:#ccb78f}
#world-map .planning-tree:focus{outline:none}
#world-map .planning-tree:focus path{stroke:#a44132;stroke-width:3}
#world-map .planning-tree-ping{pointer-events:none}
#world-map .map-portal-icon{width:20px;height:24px;flex:none;vertical-align:middle;overflow:visible;filter:drop-shadow(0 0 4px #8bdcff88)}
#world-map .atlas-portal{position:absolute;left:29px;top:-12px;display:grid;place-items:center;padding:4px;border-radius:50%;background:#203b4d;border:1px solid #96d8ef;box-shadow:0 0 15px #58b8e488;z-index:4}
#world-map .atlas-portal .map-portal-icon{width:24px;height:28px}
#world-map .is-battle:not(.is-current):not(.is-inspected) .journey-stop-label{opacity:.62;filter:saturate(.5)}
#world-map .is-current .journey-stop-label{border:2px solid #e9ce83;background:#615034;box-shadow:0 0 0 3px #e9c98144,0 5px 10px #241c14aa;opacity:1}
#world-map .is-inspected .journey-stop-label{border:2px solid #cde2bd;background:#354f3b;box-shadow:0 0 0 3px #b2d0a833,0 5px 10px #241c14aa;opacity:1;filter:none}
#world-map .is-inspected .journey-stop-label:after{content:'Viewing';display:block;margin-top:5px;font:400 10px/1.3 var(--font-ui);color:#d4e7bf;letter-spacing:.08em}
#world-map .is-portal-bound .journey-dot{box-shadow:0 0 0 6px #92d9ef33,0 0 20px #4caedd88}
#world-map .planning-unknown{align-self:center;background:#3c3123;border:1px solid #a68a59;padding:30px;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center}
#world-map.is-survey{background:#30271f;padding:12px;border:4px solid #96774b}
@media(max-width:720px){
 #world-map{--plan-size:min(calc(92dvh - 78px),calc((96vw - 16px)/1.55));width:calc(var(--plan-size)*1.55 + 16px)}
 #world-map .journey-workspace{grid-template-columns:.55fr 1fr;gap:16px}
 #world-map .planning-heading{padding:18px}
 #world-map .planning-heading h3{font-size:28px}
 #world-map .planning-map-state{font-size:10px}
 #world-map .planning-tools{flex-wrap:wrap;justify-content:space-between}
 #world-map .planning-tools button{padding:7px;font-size:10px;min-height:32px}
 #world-map .planning-ink{width:22px;height:22px}
 #world-map .journey-heading{padding:17px 7px}
 #world-map h2{font-size:32px}
 #world-map .is-battle .journey-stop-label{width:114px}
}
@media(max-width:480px){
 #world-map{width:94vw;height:94dvh;max-height:94dvh;overflow:auto;padding:0 5px 0 0}
 #world-map .journey-workspace{display:flex;flex-direction:column;gap:16px;height:auto;overflow:visible}
 #world-map .journey-column{height:270px;flex:none}
 #world-map .journey-heading{padding:12px}
 #world-map .journey-scroll{height:auto;flex:1;min-height:0}
 #world-map .journey-preview{display:grid;grid-template-rows:auto auto auto;flex:none;padding:0}
 #world-map .planning-heading h3{font-size:32px}
 #world-map .journey-close{position:fixed;right:3vw;top:3dvh}
 #world-map .planning-tools{flex-wrap:nowrap}
 #world-map .planning-tools button{font-size:10px;padding:7px}
}
#world-map .is-battle .journey-stop-label{flex-direction:column;gap:0}
#world-map .planning-heading{padding:5% 7%}
#world-map .planning-heading h3{font-size:clamp(24px,3.2vw,46px);margin-bottom:5px}
#world-map .planning-map-state{font-size:10px}
#world-map .planning-map-state .map-portal-icon{width:14px;height:17px}
#world-map .is-inspected .journey-stop-label:after{position:static;width:auto;height:auto;background:none;box-shadow:none;border-radius:0}
#world-map .map-portal-icon{width:34px;height:34px;filter:none}
#world-map .planning-map-state .map-portal-icon{width:25px;height:25px;margin:-4px}
#world-map .atlas-portal{padding:0;border:0;background:none;box-shadow:none;left:25px;top:-19px}
#world-map .atlas-portal .map-portal-icon{width:54px;height:54px}
/* Tools belong to the parchment; the game HUD returns when the atlas closes. */
#world-map{height:var(--plan-size)}
#world-map .journey-preview{display:block}
#world-map .planning-tools{position:absolute;z-index:5;bottom:5%;left:7%;width:86%;display:flex;justify-content:space-between;flex-wrap:nowrap;gap:12px}
#world-map .planning-tools button{display:grid;place-items:center;flex:none;min-width:52px;width:52px;height:52px;min-height:52px;padding:0;border-color:#aa8958;background:#dfc592;color:#634c2e;box-shadow:0 2px 3px #60471933}
#world-map .planning-tools button[aria-pressed=true]{color:#f4e4bc;background:#665239;border-color:#59432a;box-shadow:inset 0 1px 3px #38271388}
#world-map .planning-tools svg{display:block;width:30px;height:30px;pointer-events:none}
#world-map .journey-close{display:grid;place-items:center;width:52px;height:52px;min-width:52px;min-height:52px;padding:0}
#world-map .journey-close svg{display:block;width:30px;height:30px;pointer-events:none}
#world-map .planning-note{position:absolute;left:7%;bottom:17%;width:86%;height:1px;overflow:hidden;clip-path:inset(50%);margin:0}
#world-map .planning-note[data-error=true]{height:auto;clip-path:none;overflow:visible;padding:8px;background:#ecd6ac;color:#793d2b;border:1px solid #ab7652;z-index:6;font-size:12px}
#world-map .planning-snail:focus{outline:none;filter:drop-shadow(0 0 4px #963f32)}
body:has(#world-map[open]) :is(.map-hud,#jump-button,#rescue-panel,#tower-menu){visibility:hidden!important;pointer-events:none!important}
@media(max-width:480px){#world-map{height:94dvh}#world-map .journey-preview{display:block}#world-map .planning-tools button{width:46px;height:46px;min-width:46px;min-height:46px;padding:0}#world-map .planning-tools svg{width:26px;height:26px}#world-map .planning-tools{gap:8px}}
@media(max-width:360px){#world-map .planning-tools button{width:42px;height:42px;min-width:42px;min-height:42px}#world-map .planning-tools>div{gap:4px}#world-map .planning-tools{gap:4px}}
#world-map .planning-heading>div{min-width:0;flex:1}
#world-map .planning-party{display:flex;align-items:flex-start;justify-content:flex-end;flex:none;margin:0 0 0 10px;pointer-events:auto}
#world-map .planning-gnome{display:block;width:36px;height:44px;margin-left:-5px;filter:drop-shadow(0 2px 1px #70502b44)}
#world-map .planning-gnome:first-child{margin-left:0}
#world-map .planning-gnome img,#world-map .planning-gnome svg{display:block;width:100%;height:100%;object-fit:contain}
#world-map .planning-gnome.is-offline{opacity:.45;filter:grayscale(.8)}
@media(max-width:720px){#world-map .planning-gnome{width:28px;height:36px;margin-left:-6px}#world-map .planning-party{margin-left:6px}}
/* The forest's name leads; only the present stop carries a portal. */
#world-map h2{display:block;text-align:center;font-size:clamp(26px,3.2vw,40px);line-height:1.15}
#world-map h2 span{display:block;margin-top:8px;font:400 11px/1.3 var(--font-ui);color:#cebc92;letter-spacing:.08em}
#world-map .is-battle.is-portal-bound .journey-dot{background:none;border:0;box-shadow:none}
#world-map .is-battle .atlas-portal{left:50%;top:50%;transform:translate(-50%,-50%)}
#world-map .is-battle .atlas-portal .map-portal-icon{width:70px;height:70px}
#world-map .is-battle:not(.is-current):not(.is-past) .journey-dot{inset:5px;border:2px solid #ad976c;background:#63583c;box-shadow:inset 0 0 0 3px #d8c59a55,0 2px 3px #35251e88}
