/* styles/shell.css — split from styles.css (structural only) */

.app-shell {
  width: 100%;
  max-width: none;
  margin: 0;
  min-height: 100vh;
  padding: 14px;
  background: linear-gradient(180deg, rgba(4, 4, 8, 0.24), rgba(3, 3, 7, 0.42));
  transform-origin: center top;
  will-change: opacity, transform, filter;
}

.app-shell.stage-enter {
  opacity: 0;
  filter: blur(10px);
}

.app-shell.stage-enter[data-transition-direction="forward"] {
  transform: translateY(18px);
}

.app-shell.stage-enter[data-transition-direction="back"] {
  transform: translateY(-14px);
}

.app-shell.stage-enter-active {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
  transition:
    opacity 460ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 460ms cubic-bezier(0.22, 0.61, 0.36, 1),
    filter 420ms ease;
}

.app-shell.stage-leave {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 1;
}

.app-shell.stage-leave-active {
  opacity: 0;
  filter: blur(10px);
  transition:
    opacity 330ms ease,
    transform 330ms ease,
    filter 330ms ease;
}

.app-shell.stage-leave[data-transition-direction="forward"].stage-leave-active {
  transform: translateY(-10px);
}

.app-shell.stage-leave[data-transition-direction="back"].stage-leave-active {
  transform: translateY(10px);
}

.app-shell.stage-enter .mode-screen {
  opacity: 0;
  transform: translateY(12px);
  filter: blur(4px);
}

.app-shell.stage-enter-active .mode-screen {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
  transition:
    opacity 340ms ease,
    transform 380ms cubic-bezier(0.22, 0.61, 0.36, 1),
    filter 300ms ease;
}
