/* 앱 전체 레이아웃 뼈대 + 화면 전환 구조 */

#app {
  min-height: 100dvh;
  min-height: 100vh; /* dvh 미지원 브라우저 대비 */
  display: flex;
  flex-direction: column;
}

.screen {
  display: none;
  flex-direction: column;
  min-height: 100dvh;
  min-height: 100vh;
  width: 100%;
}

.screen.is-active {
  display: flex;
  animation: screen-enter var(--transition-slow);
}

@keyframes screen-enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.screen-inner {
  width: 100%;
  max-width: var(--max-width-app);
  margin: 0 auto;
  padding: var(--space-5) var(--space-5) var(--space-8);
  flex: 1;
  display: flex;
  flex-direction: column;
}

.screen-inner--narrow {
  max-width: var(--max-width-narrow);
}

/* 상단 바 (뒤로가기 / 제목 / 설정 등) — NFL.dc.html 헤더처럼 아래쪽 헤어라인만 사용 */
.top-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4) 0;
  border-bottom: var(--border-width-thick) solid var(--border-color);
  margin-bottom: var(--space-2);
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  background: var(--bg-page);
}

.top-bar__title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
}

.top-bar__actions {
  display: flex;
  gap: var(--space-2);
}

/* 공용 flex/grid 유틸 */
.stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.spacer {
  flex: 1;
}

.grid-categories {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--space-4);
}

.hidden {
  display: none !important;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
