/* Reintroduce the town a layer at a time after the visitor's first thought. */
.stage :is(.camera-controls,.help-panel,.author-entry,.channel,.traveler-badge,.prompt,.talk-prompt){transition:opacity .65s ease,translate .65s ease}
.stage .world-labels,.stage .edges{transition:opacity .6s ease .18s}
.stage.is-train-entry :is(.camera-controls,.help-panel,.author-entry,.channel,.traveler-badge,.prompt,.talk-prompt){opacity:0;translate:0 7px;pointer-events:none;visibility:hidden}
.stage.is-train-entry :is(.world-labels,.edges){opacity:0;pointer-events:none;visibility:hidden}
.stage:not(.is-train-entry) :is(.camera-controls,.help-panel,.author-entry,.channel,.traveler-badge,.prompt,.talk-prompt){opacity:1;translate:0 0}
.traveler-badge:not([hidden]){animation:town-hud-enter .65s ease both}
.stage:not(.is-train-entry) :is(.prompt,.talk-prompt):not([hidden]){animation:town-hud-enter .35s ease both}
.stage.is-eye-reveal :is(.camera-controls,.help-panel,.author-entry,.channel,.traveler-badge,.prompt,.talk-prompt,.world-labels,.edges){opacity:0;pointer-events:none;transition-delay:0s;animation:none}
@keyframes town-hud-enter{from{opacity:0;translate:0 7px}to{opacity:1;translate:0 0}}
.clear-speech:not([hidden]){animation:town-bubble-enter .3s steps(5,end) both;transform-origin:50% 100%}
@keyframes town-bubble-enter{from{opacity:0;transform:translateY(5px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.player-monologue{position:absolute;z-index:7;max-width:min(350px,calc(100% - 24px));padding:12px 16px;background:#f5e7c4;color:#243235;border:2px solid #414b44;box-shadow:3px 3px 0 #17232599;font:700 17px/1.65 "Microsoft YaHei","PingFang SC",sans-serif;pointer-events:none;opacity:0;translate:0 6px;transition:opacity .28s ease,translate .28s steps(5,end)}
.player-monologue.is-visible{opacity:1;translate:0 0}
.player-monologue>span{display:block;text-wrap:balance}
.player-monologue:after{content:'';position:absolute;left:var(--tail,50%);top:100%;width:10px;height:10px;background:#f5e7c4;clip-path:polygon(0 0,100% 0,50% 100%)}
@media(prefers-reduced-motion:reduce){.stage :is(.camera-controls,.help-panel,.author-entry,.channel,.traveler-badge,.world-labels,.edges,.prompt,.talk-prompt),.player-monologue{transition-duration:.15s;translate:none}.clear-speech:not([hidden]),.traveler-badge:not([hidden]),.stage:not(.is-train-entry) :is(.prompt,.talk-prompt):not([hidden]){animation:none}}
