/* Shared controls occupy their own measured row, outside the work surface. */
#mori-utility-dock {
  position: fixed;
  inset: auto 0 var(--mori-viewport-bottom, 0px);
  z-index: 70;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
  border-top: 1px solid #a2b9ab66;
  background: #0b222cf5;
  overflow: visible;
}
#mori-utility-dock > a,
#mori-utility-dock > button {
  position: static;
  inset: auto;
  z-index: auto;
  display: inline-flex;
  flex: 0 1 auto;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  min-height: 48px;
  max-width: 100%;
  margin: 0;
  padding: 9px 12px;
  border: 1px solid #d5b478bb;
  border-radius: 10px;
  background: #17353f;
  color: #fff6e0;
  font: 600 14px/1.3 system-ui, sans-serif;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
  box-shadow: none;
}
#mori-utility-dock > #mori-back2d { order: -3; background: #fff6e0; color: #211810; border: 2px solid #d5b478; }
#mori-utility-dock > .trainer-launcher { order: -2; }
#mori-utility-dock > .beta-report-launch { order: -1; }
#mori-utility-dock > a:focus-visible,
#mori-utility-dock > button:focus-visible { outline: 3px solid #fff2a5; outline-offset: 2px; }
body[data-mori-dock=ready] { padding-bottom: var(--mori-dock-inset, 80px); }
html:has(#mori-utility-dock) { scroll-padding-bottom: calc(var(--mori-dock-inset, 80px) + 12px); }
body[data-mori-dock=ready][data-verse-mode=spatial] > .verse-shell { bottom: var(--mori-dock-inset, 80px); }
body[data-mori-dock=ready] .verse-shell[data-mode=spatial] > .verse-window {
  top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 16px);
  height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 32px));
  min-height: min(240px, max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 16px)));
  min-width: min(280px, calc(var(--mori-viewport-width, 100vw) - 16px));
  max-height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 16px));
  scroll-padding: 90px 12px 16px;
}
body[data-mori-dock=ready] .verse-window-expanded[data-mode=spatial] > .verse-window {
  top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 8px) !important;
  left: calc(var(--mori-viewport-left, 0px) + 8px) !important;
  right: auto;
  bottom: auto;
  width: calc(var(--mori-viewport-width, 100vw) - 16px) !important;
  height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 16px)) !important;
  transform: none !important;
}
body[data-mori-dock=ready] .verse-shell[data-mode=page] > .verse-window { width: auto !important; height: auto !important; }
body[data-mori-dock=ready] .improbability-dock { position: static; margin: 24px auto; }
body[data-mori-dock=ready] .verse-controls {
  top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 16px);
  max-height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 32px));
}
.verse-window-bar { flex-wrap: wrap; }
.verse-window-bar > div { flex: 1 1 200px; min-width: 0; }
.verse-window-bar > button { flex: 0 0 auto; }
.verse-window-bar strong { max-width: 100%; }
body[data-mori-dock=ready] > .visual-trainer:not(.trainer-top) {
  bottom: calc(var(--mori-dock-inset, 80px) + var(--mori-scene-controls-height, 0px) + 12px);
}
body[data-mori-dock=ready] > .visual-trainer {
  max-height: min(78dvh, max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-scene-controls-height, 0px) - var(--mori-top-inset, 0px) - 28px)));
}
body[data-mori-dock=ready] > .visual-trainer.trainer-top { top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 14px); }
.visual-trainer header { flex-wrap: wrap; }
.visual-trainer header > div { flex-wrap: wrap; }
body[data-mori-dock=ready] > .toast { bottom: calc(var(--mori-dock-inset, 80px) + 12px); }
body:has(dialog[open]) > #mori-utility-dock { visibility: hidden; pointer-events: none; }
body:has(.verse-shell[data-xr=true]) > #mori-utility-dock { display: none; }
@media (max-width: 760px) {
  body[data-mori-dock=ready] .verse-shell[data-mode=spatial] > .verse-window {
    top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 8px);
    height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 16px));
  }
  body[data-mori-dock=ready] .verse-controls {
    top: calc(var(--mori-viewport-top, 0px) + var(--mori-top-inset, 0px) + 10px);
    max-height: max(1px, calc(var(--mori-viewport-height, 100dvh) - var(--mori-dock-height, 80px) - var(--mori-top-inset, 0px) - 20px));
  }
}
@media (max-width: 380px) { #mori-utility-dock { gap: 6px; } #mori-utility-dock > a, #mori-utility-dock > button { padding-inline: 8px; } }
@media print { #mori-utility-dock { display: none; } body[data-mori-dock=ready] { padding-bottom: 0; } }
