.app {
  max-width: 480px;
  margin: 0 auto;
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  position: relative;
  overflow: hidden;
}
.app-header {
  flex: 0 0 auto;
  padding: calc(env(safe-area-inset-top, 0px) + 14px) 18px 12px;
  background: var(--card);
  border-bottom: 1px solid var(--line);
}
.main {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 14px 14px calc(70px + env(safe-area-inset-bottom, 0px));
}
.page[hidden] { display: none; }

.tabbar {
  flex: 0 0 auto;
  display: flex;
  background: var(--card);
  border-top: 1px solid var(--line);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.tab {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 8px 0 6px;
  font-size: 11px;
  color: var(--text-3);
  transition: color 0.2s;
}
.tab-ico { font-size: 20px; line-height: 1; filter: grayscale(0.4); }
.tab.active { color: var(--primary); font-weight: 600; }
.tab.active .tab-ico { filter: none; }
