/* Koderia v59.88.4 — shell cleanup and live control repair. */
:root {
  --kui-safe-top: max(10px, env(safe-area-inset-top));
  --kui-safe-right: max(10px, env(safe-area-inset-right));
  --kui-safe-bottom: max(12px, env(safe-area-inset-bottom));
  --kui-safe-left: max(10px, env(safe-area-inset-left));
  --kui-z-world: 100;
  --kui-z-hud: 220;
  --kui-z-action: 320;
  --kui-z-toast: 420;
  --kui-z-modal: 1000;
  --kui-z-celebration: 1200;
  --kui-z-gate: 1400;
  --kui-z-boot: 2000;
}

html,
body.worldStandalone {
  width: 100%;
  height: 100%;
  min-height: 100%;
  margin: 0;
  overflow: hidden;
  overscroll-behavior: none;
  background: #02070d;
}

body.worldStandalone main.page {
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: none;
  height: 100vh;
  height: 100dvh;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

body.worldStandalone .studentHub {
  width: 100%;
  max-width: none;
  height: 100%;
  min-height: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
}

body.worldStandalone:not(.koderiaPortalActive) .studentHub {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  padding: max(64px, calc(env(safe-area-inset-top) + 52px)) max(18px, env(safe-area-inset-right)) max(22px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
}

body.worldStandalone:not(.koderiaPortalActive) .hubMain {
  width: 100%;
  max-width: 1500px;
  margin: auto;
}

.standaloneWorldHome {
  position: fixed;
  top: var(--kui-safe-top);
  left: var(--kui-safe-left);
  z-index: var(--kui-z-gate);
  min-height: 42px;
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 14px;
  color: #fff;
  background: rgba(5,15,30,.78);
  text-decoration: none;
  font: 900 13px Arial,sans-serif;
  backdrop-filter: blur(12px);
}

/* /world has no portfolio/site navigation inside the game viewport. */
body.worldStandalone > :is(.standaloneWorldHome,.kduBackHome) {
  display: none !important;
}

/* Emergency legacy fallback: if a standalone store module fails to start, the
   selected old panel must still contain its real content instead of a white void. */
body.worldStandalone #profileModal.open .profileTabPanel.active {
  display: block !important;
  visibility: visible !important;
}

/* /world has no portfolio/class shell: only the game or its sign-in gate. */
body.worldStandalone > .standaloneWorldHome,
body.worldStandalone .studentHub > .hubGlow,
body.worldStandalone .hubHeading,
body.worldStandalone .hubDashboard,
body.worldStandalone .roomHud,
body.worldStandalone .cityStageTopbar {
  display: none !important;
}

body.worldStandalone:not(.koderiaPortalActive) #v57101AdminButton {
  display: none !important;
}

/* Keep the actual in-game navigation restored from the stable world release. */
body.kuiWorldOpen:not(.kuiModalOpen) #kfcGameRail:not([hidden]) {
  display: flex !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  z-index: var(--kui-z-action) !important;
}

body.koderiaPortalActive main.page,
body.koderiaPortalActive .studentHub,
body.koderiaPortalActive .hubMain,
body.koderiaPortalActive .hubLogged,
body.koderiaPortalActive .cityStageOne,
body.koderiaPortalActive .cityStageCanvasWrap {
  width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
}

body.koderiaPortalActive .cityStageOne,
body.koderiaPortalActive .cityStageCanvasWrap {
  position: fixed !important;
  inset: 0 !important;
  overflow: hidden !important;
  background: #02070d !important;
}

body.koderiaPortalActive .cityStageOne { z-index: var(--kui-z-world) !important; }
body.koderiaPortalActive .cityStageCanvasWrap { isolation: isolate; }
body.koderiaPortalActive #cityStageCanvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}

/* Retired chrome must never return through an older stylesheet. */
#cityStageCanvasWrap :is(.cityStageSystemLegend,.cityStageHelp,.cityStageMiniMapLabel,.cityStageCollisionBadge,.cityStageHouseCount,.cityRemoteLegend,.cityOnlineDock,#cityQuestHud,#v5951WorldGuide,#v5951TargetBeacon,#v559QuestNav),
#khlMoreButton,
#khlMenuHint,
#lessonLiveBanner,
#v578AdminButton,
#v578AdminOverlay {
  display: none !important;
}

/* Permanent HUD lanes. */
#cityStageCanvasWrap :is(.kfcGameRail,.kfcFocus,.kfcWorldSummary,#khlTopRightStack,.koderiaLoopDock) {
  z-index: var(--kui-z-hud) !important;
}

#khlUtilityPanel { z-index: calc(var(--kui-z-hud) + 30) !important; }
.gameTouchControls { z-index: calc(var(--kui-z-hud) + 20) !important; }

/* The final teacher console uses the otherwise empty top-right slot. */
#v57101AdminButton.show {
  left: auto !important;
  right: var(--kui-safe-right) !important;
  top: var(--kui-safe-top) !important;
  bottom: auto !important;
  z-index: calc(var(--kui-z-hud) + 25) !important;
  width: 48px !important;
  min-width: 48px !important;
  height: 48px !important;
  min-height: 48px !important;
  padding: 5px !important;
  justify-content: center !important;
  border-radius: 15px !important;
}
#v57101AdminButton .v57101AdminCopy { display: none !important; }
#v57101AdminButton .v57101AdminIcon { width: 36px !important; height: 36px !important; }

/* Exactly one contextual action may own the bottom-centre lane. */
#cityStageCanvasWrap :is(#cityDoorPrompt.show,#citySocialPrompt.show,#v594PortalPrompt.show,#v594BuildHint.show) {
  left: 50% !important;
  right: auto !important;
  top: auto !important;
  bottom: var(--kui-safe-bottom) !important;
  z-index: var(--kui-z-action) !important;
  width: max-content !important;
  min-width: min(300px, calc(100% - 26px)) !important;
  max-width: min(390px, calc(100% - 26px)) !important;
  transform: translateX(-50%) !important;
}

#cityStageCanvasWrap :is(#cityDoorPrompt,#citySocialPrompt,#v594PortalPrompt,#v594BuildHint).kuiSuppressed,
#cityStageCanvasWrap:has(#cityDoorPrompt.show) #citySocialPrompt.show,
#cityStageCanvasWrap:has(#v594PortalPrompt.show) :is(#cityDoorPrompt.show,#citySocialPrompt.show),
#cityStageCanvasWrap:has(#v594BuildHint.show) :is(#cityDoorPrompt.show,#citySocialPrompt.show,#v594PortalPrompt.show) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

#cityStageCanvasWrap:is(.khlInteraction,.kfcInteraction) .kshPrimary,
body.kuiInteractionOpen .kshPrimary {
  display: none !important;
}

/* Transient information occupies one top notification lane. */
body.cityGameFullscreen :is(.rewardToast,.lessonBroadcast,.v556EventBanner,.krlRareFindToast,.krlWorldEventToast,.kfcNextToast) {
  z-index: var(--kui-z-toast) !important;
}

body.cityGameFullscreen .rewardToast {
  left: 50% !important;
  right: auto !important;
  top: calc(var(--kui-safe-top) + 64px) !important;
  bottom: auto !important;
  transform: translate(-50%,-10px) scale(.96) !important;
}
body.cityGameFullscreen .rewardToast.show { transform: translate(-50%,0) scale(1) !important; }

body.cityGameFullscreen .lessonBroadcast {
  top: var(--kui-safe-top) !important;
  max-height: min(160px, calc(100dvh - 24px));
}

body.cityGameFullscreen .v556EventBanner {
  left: 50% !important;
  top: var(--kui-safe-top) !important;
  width: min(480px, calc(100% - 220px)) !important;
  max-width: none !important;
}

body:has(.lessonBroadcast.show) :is(.rewardToast.show,.v556EventBanner.show,.krlRareFindToast.show,.krlWorldEventToast.show,.kfcNextToast.show),
body:has(.krlWorldEventToast.show) :is(.rewardToast.show,.v556EventBanner.show,.krlRareFindToast.show,.kfcNextToast.show),
body:has(.krlRareFindToast.show) :is(.rewardToast.show,.v556EventBanner.show,.kfcNextToast.show),
body:has(.v556EventBanner.show) :is(.rewardToast.show,.kfcNextToast.show) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Transient notices temporarily yield the target card; a wide lesson also yields the rail. */
body:has(:is(.rewardToast,.lessonBroadcast,.v556EventBanner,.krlRareFindToast,.krlWorldEventToast,.kfcNextToast).show) .kfcFocus,
body:has(.lessonBroadcast.show) :is(.kfcGameRail,.kfcWorldSummary) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* A full-screen window owns the viewport and suppresses all world chrome. */
body.kuiModalOpen :is(
  .kfcGameRail,.kfcFocus,.kfcWorldSummary,.kfcNextToast,
  #khlTopRightStack,#khlUtilityPanel,.koderiaLoopDock,.kshPrimary,
  #cityDoorPrompt,#citySocialPrompt,#v594PortalPrompt,#v594BuildHint,
  .gameTouchControls,.rewardToast,.lessonBroadcast,.v556EventBanner,
  #v57101AdminButton
),
body:is(.kshProfileOpen,.learningCenterOpen,.lessonShellOpen,.koderiaGateOpen,.kshCelebrating,.roomOverlayOpen,.koderiaHeistOpen,.kwdOpen,.kstoreOpen,.rsLessonOpen,.d4StandaloneOpen)
  :is(.kfcGameRail,.kfcFocus,.kfcWorldSummary,.kfcNextToast,#khlTopRightStack,#khlUtilityPanel,.koderiaLoopDock,.kshPrimary,#cityDoorPrompt,#citySocialPrompt,#v594PortalPrompt,#v594BuildHint,.gameTouchControls,.rewardToast,.lessonBroadcast,.v556EventBanner,#v57101AdminButton) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

:is(
  #profileModal,#playerVisitModal,#onlineRoomModal,#citySocialModal,#cityDuelModal,#cityQuizModal,
  .v55Modal,.td565Overlay,.gg103Overlay,.roomOverlay,.v556WorldMapModal,.v561RankModal,
  .learningCenterModal,.lessonShellOverlay,.kcpOverlay,.kwdOverlay,.kstoreOverlay,.fwOverlay,.rsLessonOverlay,
  #d4StandaloneOverlay,#v57101Overlay,#koderiaHeist,#ksvRoot,.krlWorldEventChoice,.krlAlbum,.kkpDetail,
  #v575BuildMenu,#v5905TowerMenu,#v5905Perk,#v5905Result
) {
  box-sizing: border-box !important;
  max-width: 100vw !important;
  max-height: 100vh !important;
  max-height: 100dvh !important;
  z-index: var(--kui-z-modal) !important;
}

:is(#koderiaSessionGate,.koderiaSessionGate) { z-index: var(--kui-z-gate) !important; }

:is(
  .krlReward,.krlLevelUp,.krlStickerReveal,.krlChestOpening,.krlCollectionMilestone,
  .krlPageComplete,.krlAlbumComplete,.krlRareFindCollect,.krlSecretUnlock,.krlWorldEventComplete,
  .koderiaMissionOverlay,.kspLevelUp,.kspClaimReveal,#v57110TeacherEvent
) { z-index: var(--kui-z-celebration) !important; }

#kodklassBootScreen { z-index: var(--kui-z-boot) !important; }

/* Modal surfaces stay inside the visible area and scroll internally. */
:is(
  .profileCard,.playerVisitCard,.onlineRoomShell,.citySocialCard,.cityDuelCard,.cityQuizCard,
  .v55Card,.td565Shell,.roomOverlayPanel,.v556WorldMapCard,.v561RankCard,.learningCenterCard,
  .lessonShellSurface,.kcpCard,.kwdCard,.kstoreCard,.fwCard,.rsLessonShell,.v57101Shell
) {
  box-sizing: border-box !important;
  max-width: calc(100vw - 20px) !important;
  max-height: calc(100vh - 20px) !important;
  max-height: calc(100dvh - 20px) !important;
  overscroll-behavior: contain;
}

@media (max-width: 760px), (hover: none) and (pointer: coarse) {
  :root {
    --kui-safe-top: max(7px, env(safe-area-inset-top));
    --kui-safe-right: max(7px, env(safe-area-inset-right));
    --kui-safe-bottom: max(9px, env(safe-area-inset-bottom));
    --kui-safe-left: max(7px, env(safe-area-inset-left));
  }

  .standaloneWorldHome { min-height: 38px; padding: 0 10px; }

  body.worldStandalone:not(.koderiaPortalActive) .studentHub {
    align-items: flex-start;
    overflow: auto;
    padding-top: max(58px, calc(env(safe-area-inset-top) + 48px));
  }

  #cityStageCanvasWrap :is(#cityDoorPrompt.show,#citySocialPrompt.show,#v594PortalPrompt.show,#v594BuildHint.show) {
    left: calc(var(--kui-safe-left) + 72px) !important;
    width: min(330px, calc(100% - var(--kui-safe-left) - var(--kui-safe-right) - 80px)) !important;
    min-width: 0 !important;
    max-width: calc(100% - var(--kui-safe-left) - var(--kui-safe-right) - 80px) !important;
    bottom: max(112px, calc(env(safe-area-inset-bottom) + 104px)) !important;
    transform: none !important;
  }

  body.cityGameFullscreen :is(.rewardToast,.krlRareFindToast,.krlWorldEventToast,.kfcNextToast) {
    left: calc(50% + 36px) !important;
    top: max(92px, calc(env(safe-area-inset-top) + 84px)) !important;
    width: min(330px, calc(100% - var(--kui-safe-left) - var(--kui-safe-right) - 70px)) !important;
  }

  body.cityGameFullscreen .v556EventBanner {
    left: calc(50% + 36px) !important;
    top: max(88px, calc(env(safe-area-inset-top) + 80px)) !important;
    width: min(330px, calc(100% - var(--kui-safe-left) - var(--kui-safe-right) - 70px)) !important;
    transform: translate(-50%,-12px) !important;
  }
  body.cityGameFullscreen .v556EventBanner.show { transform: translate(-50%,0) !important; }

  body.cityGameFullscreen .lessonBroadcast {
    left: calc(50% + 36px) !important;
    top: max(84px, calc(env(safe-area-inset-top) + 76px)) !important;
    width: min(720px, calc(100% - var(--kui-safe-left) - var(--kui-safe-right) - 70px)) !important;
    min-height: 68px !important;
    padding: 9px 56px 9px 10px !important;
  }

  #v57101AdminButton.show {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
  }

  :is(
    #profileModal,#playerVisitModal,#onlineRoomModal,#citySocialModal,#cityDuelModal,#cityQuizModal,
    .v55Modal,.td565Overlay,.gg103Overlay,.roomOverlay,.v556WorldMapModal,.v561RankModal,
    .learningCenterModal,.lessonShellOverlay,.kcpOverlay,.kwdOverlay,.kstoreOverlay,.fwOverlay,.rsLessonOverlay,
    #d4StandaloneOverlay,#v57101Overlay,.krlWorldEventChoice,.krlAlbum,.kkpDetail
  ) { padding: 6px !important; }

  :is(
    .profileCard,.playerVisitCard,.onlineRoomShell,.citySocialCard,.cityDuelCard,.cityQuizCard,
    .v55Card,.td565Shell,.roomOverlayPanel,.v556WorldMapCard,.v561RankCard,.learningCenterCard,
    .lessonShellSurface,.kcpCard,.kwdCard,.kstoreCard,.fwCard,.rsLessonShell,.v57101Shell
  ) {
    width: 100% !important;
    max-width: 100% !important;
    max-height: calc(100dvh - 12px) !important;
    border-radius: min(22px, 5vw) !important;
  }
}

@media (max-height: 500px) and (orientation: landscape) {
  #cityStageCanvasWrap :is(#cityDoorPrompt.show,#citySocialPrompt.show,#v594PortalPrompt.show,#v594BuildHint.show) {
    width: min(350px, calc(100% - 150px)) !important;
    min-width: 0 !important;
    max-width: calc(100% - 150px) !important;
    bottom: max(88px, calc(env(safe-area-inset-bottom) + 82px)) !important;
  }

  body.cityGameFullscreen :is(.rewardToast,.v556EventBanner,.krlRareFindToast,.krlWorldEventToast) {
    top: max(76px, calc(env(safe-area-inset-top) + 68px)) !important;
    width: min(360px, calc(100% - 210px)) !important;
  }

  body.cityGameFullscreen .lessonBroadcast {
    top: max(76px, calc(env(safe-area-inset-top) + 68px)) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.worldStandalone *,
  body.worldStandalone *::before,
  body.worldStandalone *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
