.viewport-fitted body.world-page {
  left: var(--view-left); top: var(--view-top);
  width: var(--view-width); height: var(--view-height);
  transform: none;
}
/* Full-width scene; each floating island retains its own proportions. */
.viewport-fitted .world-page #worldMap { position: absolute; inset: 0; background: none; }
.viewport-fitted .world-page .world-scene {
  position: absolute; inset: 0; width: 100%; height: 100%;
  --world-stage-width: 100%; --world-stage-height: 100%;
  transform: none;
}
/* The logo and campsite keep their ratio; only open-water strips expand.
   Adjacent slices share source edges, so there is no separate gutter backdrop. */
.viewport-fitted .world-page .world-map-art { overflow: hidden; }
.world-map-art > svg { overflow: hidden; }
.viewport-fitted .world-page .world-camp-traveler {
  position: absolute; inset: auto auto 0 0;
  width: calc(1672px * var(--backdrop-scale)); height: calc(941px * var(--backdrop-scale));
  pointer-events: none;
}
.viewport-fitted .world-page .island-layer > .island-base { object-fit: contain; }
.viewport-fitted .world-page .island-layer-personality,
.viewport-fitted .world-page .island-personality { width: calc(351px * var(--home-scale)); height: calc(254px * var(--home-scale)); }
.viewport-fitted .world-page .island-layer-hall,
.viewport-fitted .world-page .island-hall { width: calc(468px * var(--home-scale)); height: calc(320px * var(--home-scale)); }
.viewport-fitted .world-page .island-layer-workbench,
.viewport-fitted .world-page .island-workbench { width: calc(401px * var(--home-scale)); height: calc(273px * var(--home-scale)); }
.viewport-fitted .world-page .island-layer-game,
.viewport-fitted .world-page .island-game { left: calc(50% - 351px * var(--home-scale)); width: calc(702px * var(--home-scale)); height: calc(565px * var(--home-scale)); }
.viewport-fitted .world-page .island-layer-guangming,
.viewport-fitted .world-page .island-guangming { left: calc(50% - 318px * var(--home-scale)); width: calc(351px * var(--home-scale)); height: calc(263px * var(--home-scale)); }
.viewport-fitted .world-page .island-puzzle { width: calc(418px * var(--home-scale)); height: calc(282px * var(--home-scale)); }
.viewport-fitted .world-page .island-entry .island-module-copy strong { font-size: clamp(13px, calc(28px * var(--home-scale)), 32px); }
.viewport-fitted .world-page .island-entry .island-module-copy small { font-size: clamp(10px, calc(17px * var(--home-scale)), 19px); }
.viewport-fitted .world-page .island-entry .island-module-copy { min-width: 110px; min-height: 44px; }
.viewport-fitted .world-page .world-hud {
  right: max(12px, var(--home-safe-right)); top: max(12px, var(--home-safe-top));
  width: clamp(240px, 27%, 480px); height: clamp(54px, 9vh, 84px);
}
.viewport-fitted .world-page .world-hud button { min-height: 44px; font-size: clamp(11px, 1vw, 15px); }
.viewport-fitted .world-page .world-hud .world-hud-icon { width: clamp(32px, 4vw, 64px); height: clamp(28px, 6vh, 54px); }
@media (orientation: landscape) and (max-height: 500px) {

  .viewport-fitted .world-page .world-hud { width: clamp(200px, 28%, 240px); height: 52px; }
  .viewport-fitted .world-page .island-personality .island-module-copy { top: 65%; }
  .viewport-fitted .world-page .island-puzzle .island-module-copy { top: 74%; }
}
.viewport-fitted .world-page .world-entry {
  position: absolute; min-width: 0; min-height: 0;
}
.world-page .world-entry-art {
  display: none; z-index: 0; opacity: 1;
  will-change: auto; transition: none;

}
.world-page .world-entry-art > img { object-fit: cover; }
.world-page .world-entry[data-phase="loading"] .world-entry-art-loading,
.world-page .world-entry[data-phase="gate"] .world-entry-art-gate,
.world-page .world-entry[data-phase="flight"] .world-entry-art-gate { display: block; }
/* Fade without filter/transform promotion on mobile image layers. */
.world-page .world-entry[data-phase="flight"] .world-entry-art-gate,
.world-page .world-entry[data-phase="flight"] + .world-map .world-scene {
  animation: world-viewport-arrival 900ms ease-in-out both;
}
.world-page .world-entry[data-phase="flight"] .world-entry-art-gate { animation-direction: reverse; }
@keyframes world-viewport-arrival { from { opacity: 0; } to { opacity: 1; } }

@media (orientation: landscape) and (max-height: 600px) {
  .world-page .world-entry-art > img { object-fit: cover; object-position: center top; }
  .world-page .world-entry-gate {
    right: max(16px, env(safe-area-inset-right));
    bottom: max(16px, env(safe-area-inset-bottom));
    width: min(288px, calc(100% - 32px)); padding: 12px;
    border-width: 3px; box-shadow: 5px 5px 0 #07142e;
  }
  .world-page .world-entry-gate h2 { margin-bottom: 10px; font-size: 22px; }
  .world-page .world-entry-actions { gap: 12px; }
  .world-page .world-entry-start { min-height: 44px; font-size: 16px; border-width: 3px; box-shadow: 3px 4px 0 #07142e; }
  .world-page .world-entry-loading { left: 16px; right: 16px; bottom: 16px; padding: 10px 12px; }
}

.viewport-fitted .world-page .world-camp-traveler { clip-path: polygon(
      9.15072% 79.91498%,
    9.92823% 79.91498%,
    10.52632% 80.55260%,
    10.70574% 81.29649%,
    11.06459% 81.40276%,
    11.24402% 82.14665%,
    11.00478% 83.10308%,
    10.70574% 83.63443%,
    10.64593% 84.16578%,
    10.94498% 84.37832%,
    11.18421% 84.16578%,
    11.42344% 83.63443%,
    12.02153% 83.52816%,
    12.20096% 83.95324%,
    12.02153% 85.12221%,
    11.72249% 85.54729%,
    11.66268% 86.39745%,
    11.30383% 87.14134%,
    10.88517% 87.67269%,
    10.76555% 88.41658%,
    10.82536% 89.47928%,
    10.52632% 90.64825%,
    10.46651% 91.71095%,
    10.82536% 92.66738%,
    10.82536% 93.51753%,
    10.52632% 93.94261%,
    9.68900% 93.94261%,
    9.44976% 93.41126%,
    9.44976% 91.81722%,
    9.21053% 90.54198%,
    8.85167% 90.54198%,
    8.67225% 92.13603%,
    8.67225% 92.98618%,
    8.91148% 93.51753%,
    8.61244% 94.04888%,
    8.19378% 93.83634%,
    8.01435% 93.30499%,
    8.31340% 91.81722%,
    8.43301% 90.22317%,
    8.55263% 88.94793%,
    8.01435% 88.31031%,
    7.77512% 87.03507%,
    7.83493% 85.44102%,
    8.07416% 84.16578%,
    8.49282% 83.52816%,
    8.19378% 82.89054%,
    7.89474% 82.67800%,
    7.89474% 81.50903%,
    8.31340% 80.44633%
    ); }
