/* ── Reset & Base ── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  background: #030303;
  color: #F8F6F4;
  height: 100dvh;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
}

/* ── App Shell ── */
.app-shell {
  display: flex;
  flex-direction: column;
  height: 100dvh;
  overflow: hidden;
}

.app-shell__content {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 160px;
}

.app-content {
  min-height: 100%;
}

.app-content__sticky-header {
  position: sticky;
  top: 0;
  z-index: 5;
  background: #030303;
}

/* ── Loading ── */
.loading {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100dvh;
  color: #A8A8A8;
  font-size: 1rem;
}

/* ── Page Transition ── */
@keyframes slide-in-from-right {
  from { transform: translateX(30px); opacity: 0; }
  to   { transform: translateX(0);    opacity: 1; }
}

@keyframes slide-in-from-left {
  from { transform: translateX(-30px); opacity: 0; }
  to   { transform: translateX(0);     opacity: 1; }
}

.page-transition {
  height: 100%;
  overflow: visible;
}

.page--enter-right > * {
  animation: slide-in-from-right 220ms ease-out;
}

.page--enter-left > * {
  animation: slide-in-from-left 220ms ease-out;
}

/* ── Keyframes (shared by toggle tabs & bottom nav modules) ── */
@keyframes toggle-stretch-a {
  0%   { transform: scaleX(1);    }
  30%  { transform: scaleX(1.12); }
  100% { transform: scaleX(1);    }
}

@keyframes toggle-stretch-b {
  0%   { transform: scaleX(1);    }
  30%  { transform: scaleX(1.12); }
  100% { transform: scaleX(1);    }
}

@keyframes nav-stretch-a {
  0%   { transform: scaleX(1);    }
  30%  { transform: scaleX(1.08); }
  100% { transform: scaleX(1);    }
}

@keyframes nav-stretch-b {
  0%   { transform: scaleX(1);    }
  30%  { transform: scaleX(1.08); }
  100% { transform: scaleX(1);    }
}
