body {
  display: flex;
  justify-content: center;
  background: #05070A;
  min-height: 100vh;
  position: relative;
}

body::before {
  content: '';
  position: fixed;
  top: 50%;
  left: 50%;
  width: 100vw;
  height: 100vh;
  background: radial-gradient(circle at center, rgba(88, 50, 168, 0.15) 0%, rgba(212, 175, 55, 0.1) 40%, transparent 70%);
  transform: translate(-50%, -50%);
  z-index: -1;
  filter: blur(100px);
  pointer-events: none;
}

.app-shell {
  width: min(100vw, 430px);
  height: 100dvh;
  position: relative;
  background: transparent;
  border-left: 1px solid rgba(211, 170, 86, 0.2);
  border-right: 1px solid rgba(211, 170, 86, 0.2);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.screen-content,
.toolbar-slot,
.connection-retry-banner {
  z-index: 1;
}

.screen-content {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 74px;
  overflow-y: auto;
  padding: 14px 14px 24px;
}

.screen-content.no-app-chrome {
  bottom: 0;
  padding-bottom: calc(24px + env(safe-area-inset-bottom));
}

.screen-content.network-scroll-lock {
  overflow: hidden;
  padding: 0;
}


.toolbar-slot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  background: linear-gradient(180deg, rgba(7, 12, 23, 0) 0%, rgba(6, 11, 22, 0.96) 44%);
}

.connection-retry-banner {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: calc(96px + env(safe-area-inset-bottom));
  z-index: 5;
  border-radius: 11px;
  border: 1px solid rgba(133, 156, 201, 0.3);
  background: rgba(10, 19, 37, 0.86);
  color: #c6d6f7;
  font-size: 12px;
  line-height: 1.2;
  text-align: center;
  padding: 7px 10px;
  pointer-events: auto;
  cursor: pointer;
  backdrop-filter: blur(10px);
}

.connection-retry-banner.is-connected {
  border-color: rgba(124, 235, 171, 0.4);
  color: #d8ffe9;
}

.connection-retry-banner.is-connecting {
  border-color: rgba(238, 196, 107, 0.42);
  color: #ffe8bb;
}

.connection-retry-banner.is-disconnected {
  border-color: rgba(228, 127, 145, 0.44);
  color: #ffdce3;
}

.connection-retry-banner.is-updating {
  border-color: rgba(144, 201, 255, 0.44);
  color: #d9eeff;
}

@media (min-width: 900px) {
  .app-shell {
    margin: 16px 0;
    height: calc(100dvh - 32px);
    border-radius: 24px;
  }
}
