/* Reuse one source-aligned Village plate for hub, crossing and garden. */
#journey-viewport:is([data-stop=glade],[data-stop=village],[data-stop=bridge],[data-stop=garden]){--cam-z:var(--entry-z,-90px);--trail-magic:0;--forest-depth:-1900px}
#journey-viewport[data-stop=trail]{--cam-z:2050px;--trail-magic:.08}
#journey-viewport[data-stop=fork]{--cam-z:2350px;--trail-magic:.5}
#journey-viewport .scenery-glade{transform:none!important}
#journey-viewport .scenery-glade>.patio-cutout{visibility:hidden!important}
#journey-viewport[data-transit=outward] #scene-camera{animation:none!important}
#journey-viewport[data-transit=outward] .scenery-glade{opacity:0!important;transition:opacity 1.2s .45s!important}
#journey-viewport .outside-world{transition:transform 2.2s cubic-bezier(.2,.64,.13,1),opacity .9s;}
#journey-viewport:is([data-stop=glade],[data-stop=village],[data-stop=bridge],[data-stop=garden]) .outside-world{opacity:0!important;visibility:hidden;pointer-events:none!important}
#journey-viewport:is([data-stop=trail],[data-stop=fork]) .outside-world{opacity:1;visibility:visible}
.hub-world-v127{position:absolute;inset:-14% -16%;z-index:1;opacity:0;visibility:hidden;pointer-events:none!important;transition:opacity 1.2s,visibility 0s 1.2s;transform-style:flat}
.hub-world-v127>svg{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none!important}
#journey-viewport:is([data-stop=glade],[data-stop=village],[data-stop=bridge],[data-stop=garden]) .hub-world-v127,#journey-viewport[data-transit=outward] .hub-world-v127{opacity:1;visibility:visible;transition:opacity 1.2s,visibility 0s}
.hub-source-plane-v127{position:absolute;left:0;top:0;width:1536px;height:1024px;transform-origin:0 0;pointer-events:none!important}
/* The old generic character-label rule must never style a new sprite body. */
#hub-world-v127 .hub-character-habitat .actor-body{padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important}
.country-boundary-v127{position:absolute;left:516px;top:352px;width:255px;height:112px;perspective:400px;z-index:7;pointer-events:none!important;isolation:isolate}
.country-boundary-v127::before{content:"";position:absolute;left:5%;right:4%;top:76%;height:7%;background:radial-gradient(ellipse,#39412a55,transparent 72%);z-index:-1;pointer-events:none}
.country-fixed-v127{position:absolute;inset:0;width:100%;height:100%;max-width:none;z-index:3;pointer-events:none!important;user-select:none}
#scene-camera .country-gate-leaf-v127{position:absolute;display:block;left:var(--leaf-left);top:var(--leaf-top);width:var(--leaf-width);height:var(--leaf-height);min-width:0;min-height:0;max-width:none;z-index:2;padding:0;margin:0;border:0;border-radius:0;background:none;box-shadow:none;transform-origin:var(--hinge-x,0%) var(--hinge-y,50%);transform:rotateY(0deg);transition:transform .85s cubic-bezier(.2,.65,.2,1);backface-visibility:hidden;pointer-events:auto!important;cursor:pointer}
.country-gate-leaf-v127>img{display:block;width:100%;height:100%;max-width:none;pointer-events:none!important;user-select:none}
.country-gate-leaf-v127:focus-visible{outline:3px dashed #fff0a8;outline-offset:5px}
#journey-viewport:is([data-gate=open],[data-gate=returning],[data-stop=bridge]) .country-gate-leaf-v127{transform:rotateY(-100deg)}
#journey-viewport:not(:is([data-stop=glade],[data-stop=village])) .country-gate-leaf-v127{pointer-events:none!important}
#journey-viewport:not([data-stop=glade]) .village-friends{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
#journey-viewport:not([data-stop=glade]) .village-friends button{pointer-events:none!important}
#journey-viewport .hub-waypost{position:absolute;display:flex;flex-direction:column;gap:5px;width:170px;padding-bottom:56px;translate:-50% -100%;z-index:10;pointer-events:none!important;isolation:isolate;filter:drop-shadow(0 3px 3px #31452c44)}
.hub-waypost:not([hidden]){visibility:visible}
.hub-waypost[hidden]{display:none!important}
.hub-waypost::after{content:"";position:absolute;left:calc(50% - 9px);bottom:0;width:18px;height:calc(100% - 18px);z-index:-1;border:1px solid #674b30;background:linear-gradient(90deg,#6f5032,#c6a16b 42%,#987447 76%,#64482e);box-shadow:2px 1px 2px #2e3e2644}
.hub-waypost::before{content:"";position:absolute;left:25%;right:25%;bottom:-5px;height:12px;border-radius:50%;background:radial-gradient(ellipse,#203c2555,transparent 72%);z-index:-2}
#journey-viewport .hub-waypost>button{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;min-height:49px;padding:8px 10px;border:1px solid #7c582f;border-radius:4px 10px 6px 4px;background:repeating-linear-gradient(3deg,transparent 0 8px,#8f63331c 9px,transparent 11px 15px),linear-gradient(95deg,#c49958,#f5dc9d 15%,#e5c180 90%,#ad8145);color:#432b3c;font:400 17px/1.12 "Quest Display",sans-serif;box-shadow:0 3px 0 #82603b;rotate:-2deg;pointer-events:auto!important;touch-action:manipulation}
#journey-viewport .hub-waypost>button+button{rotate:2deg}
.hub-waypost>button:hover{filter:brightness(1.06)}
.hub-waypost>button:focus-visible{outline:3px solid #fff2ab;outline-offset:4px}
#journey-viewport .trail-look-controls:not([hidden]){display:grid}
#hub-source-plane-v127 .hub-world-finds>button{width:var(--hub-control-size,64px);height:var(--hub-control-size,64px);min-width:0;min-height:0;pointer-events:auto!important}
#hub-source-plane-v127 .quest-find-bridge{left:520px!important;top:475px!important;--find-angle:5deg}
#hub-source-plane-v127 .quest-find-garden{left:1182px!important;top:500px!important;--find-angle:-9deg}
#hub-source-plane-v127 .workbook-find-caption{font-size:var(--hub-label-size,16px)}
#hub-source-plane-v127 .workbook-find-art{filter:brightness(.92) saturate(.94)}
#outside-world .quest-find-trail{left:29%!important;top:67%!important}
#outside-world .quest-find-fork{left:60.5%!important;top:32.5%!important}
/* Road signs name routes; unreleased characters are never signposted. */
#outside-world>#journey-next{left:52%!important;top:calc(75% - 150px)!important;width:165px!important;font-size:17px!important;min-height:48px!important;height:auto!important}
#outside-world>#trail-village-return{position:absolute;left:52%;top:calc(75% - 92px);translate:-50% 0;width:165px;min-height:48px;padding:8px 10px;border:1px solid #7c582f;border-radius:5px;background:linear-gradient(95deg,#c49958,#f5dc9d 15%,#e5c180 90%,#ad8145);color:#432b3c;font:400 17px/1.12 "Quest Display",sans-serif;box-shadow:0 3px 0 #82603b;z-index:8;pointer-events:auto!important}
#outside-world>#trail-village-return{z-index:11}
#outside-world>#trail-village-return[hidden]{display:none!important}
#outside-world>#fork-signs{left:66%!important;top:35.2%!important;width:165px!important;padding-bottom:48px}
#outside-world>#fork-signs>button{min-height:46px!important;font-size:16px!important;padding:8px 10px!important}
#journey-viewport:is([data-stop=village],[data-stop=bridge],[data-stop=garden]) .journey-reading-dock{bottom:70px}
.hub-ambient-magic{position:absolute;inset:0;pointer-events:none!important}
.hub-magic-fleck{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff6c5;box-shadow:0 0 5px #ffe79488;opacity:0;animation:hub-fleck-v127 var(--duration,13s) var(--delay,0s) ease-in-out infinite;pointer-events:none!important}
#journey-viewport:not([data-stop=bridge]) .hub-magic-fleck[data-region=bridge],#journey-viewport:not([data-stop=garden]) .hub-magic-fleck[data-region=garden]{display:none}
@keyframes hub-fleck-v127{0%,62%,100%{opacity:0;translate:0 0}73%,86%{opacity:.52;translate:0 -3px}}
#journey-viewport[data-stop=bridge] .hub-magic-fleck{background:#d3f9ec;box-shadow:0 0 5px #8ce5dd66}
#journey-app[data-motion=still] .hub-magic-fleck{animation:none!important;opacity:.22}
#journey-app[data-motion=still] .hub-world-v127{transition:none!important}
#journey-app[data-motion=still] .country-gate-leaf-v127{transition:none!important}
@media(prefers-reduced-motion:reduce){.hub-magic-fleck{animation:none!important;opacity:.22}.hub-world-v127,.country-gate-leaf-v127{transition:none!important}}
@media(max-width:600px){#journey-viewport .hub-waypost{width:158px}#journey-viewport .hub-waypost>button{font-size:16px}#journey-viewport:is([data-stop=village],[data-stop=bridge],[data-stop=garden]) .journey-reading-dock{bottom:66px}}
