/* Базовый сброс и шрифты страницы. Конкретная вёрстка живёт в overlay.css
 * и scene-layers.css. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

html {
  background: #0a0a10;
}

body {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, "Segoe UI",
               Roboto, "Helvetica Neue", Arial, sans-serif;
  color: var(--text, #ffffff);
  line-height: 1.4;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  font-display: swap;
}

a { color: inherit; }
button { font-family: inherit; }

/* ───────── мобильный фрейм ─────────
 * На мобильных устройствах фрейм заполняет весь экран (full-screen вид).
 * На десктопе фрейм превращается в узкую колонку с тёмным «рабочим столом»
 * вокруг — повторяет workspace из прототипа. */

.app-frame {
  position: relative;
  width: 100%;
  margin: 0 auto;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #0a0a10;
}

@media (min-width: 480px) {
  body {
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    background:
      radial-gradient(ellipse at 20% 0%, rgba(60, 40, 80, 0.5), transparent 60%),
      radial-gradient(ellipse at 80% 100%, rgba(40, 50, 80, 0.45), transparent 60%),
      #08080e;
  }

  body::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-image: radial-gradient(circle, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
    background-size: 32px 32px;
    z-index: 0;
  }

  .app-frame {
    flex: 0 0 auto;
    width: 420px;
    max-width: 100%;
    height: min(880px, calc(100vh - 48px));
    height: min(880px, calc(100dvh - 48px));
    border-radius: 36px;
    box-shadow:
      0 30px 80px rgba(0, 0, 0, 0.55),
      0 0 0 1px rgba(255, 255, 255, 0.04);
    z-index: 1;
  }
}
