[hidden] { display: none !important; }

html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: #101822;
  overscroll-behavior: none;
}

canvas {
  position: fixed;
  top: env(safe-area-inset-top, 0px);
  left: env(safe-area-inset-left, 0px);
  display: block;
  width: calc(100dvw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)) !important;
  height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) !important;
  outline: none;
  touch-action: none;
}

@media (orientation: portrait) {
  canvas {
    width: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) !important;
    height: calc(100dvw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)) !important;
    transform-origin: top left;
    transform: translateX(calc(100dvw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px))) rotate(90deg);
  }
}

#map-controls {
  position: fixed;
  right: max(12px, env(safe-area-inset-right));
  top: max(42px, env(safe-area-inset-top));
  display: flex;
  gap: 6px;
  z-index: 2;
}
#map-controls[hidden] { display: none; }
#map-controls button {
  min-height: 40px;
  border: 1px solid #a3acb5;
  border-radius: 4px;
  background: #101822df;
  color: white;
  font: 14px system-ui, sans-serif;
  padding: 6px 10px;
  touch-action: manipulation;
}
#map-controls button:focus-visible { outline: 2px solid white; }

/* Native editing/IME only; the original sprite field remains the presentation.
   Never display:none/visibility:hidden while active: mobile cannot focus those. */
#ui-text-input {
  position: fixed;
  z-index: 3;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  opacity: 0.01;
  color: transparent;
  caret-color: transparent;
  background: transparent;
  font-size: 16px;
  transform-origin: top left;
  touch-action: manipulation;
}
#ui-text-input[hidden] { display: none; }

#fullscreen { position: fixed; top: max(8px, env(safe-area-inset-top)); right: max(8px, env(safe-area-inset-right)); z-index: 5; opacity: .6; font-size: 11px; padding: 5px 8px; }
#fullscreen:hover, #fullscreen:focus-visible { opacity: 1; }

@font-face {
  font-family: MapleEntry;
  src: url('./fonts/ui.bin') format('truetype');
}
#ui-text-input[data-entry="true"] {
  opacity: 1;
  color: #1a120a;
  caret-color: #1a120a;
  background: white;
  padding: 0 calc(4px * 16 / 12);
  font: 16px MapleEntry, sans-serif;
  border-radius: 0;
}
#ui-text-input[data-entry="true"]:focus {
  outline: 1px solid #805b2d;
  outline-offset: -1px;
}

#startup-loader {
  position: fixed;
  inset: 0;
  z-index: 8;
  display: grid;
  place-items: center;
  background: black;
  color: white;
  font: 16px/1.5 sans-serif;
  box-sizing: border-box;
  padding: 24px;
  text-align: center;
  pointer-events: auto;
}

#startup-loader[data-field="transfer"] { background: transparent; }
#startup-loader[data-field="transfer"] #loading-caption {
  box-sizing: border-box;
  max-width: min(calc(100vw - 48px), 420px);
  padding: 12px;
  background: #000c;
}
