* {
  box-sizing: border-box;
}

body {
  background: var(--c-black);
  color: var(--c-white);
  font-family: var(--font-mono);
  margin: 0;
  display: flex;
  flex-direction: column;
  height: 100vh;
  /* The height actually visible on phones, where 100vh includes the browser's address bar. */
  height: 100dvh;
  overflow: hidden;
}

/* The page fills whatever space is left under the header, tabs and live counts, and scrolls on its own. */
.app-content {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  /* Room for the fixed footer, so the bottom of maps and panels isn't hidden behind it. */
  padding-bottom: calc(25px + env(safe-area-inset-bottom, 0px));
}

.view {
  flex: 1 1 0;
  min-height: 0;
  display: none;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 40px;
}

.view.active {
  display: block;
}

.section-header {
  background: var(--c-grey-111);
  padding: 8px 15px;
  font-weight: bold;
  font-size: 1rem;
  border-top: 1px solid var(--c-grey-333);
  position: sticky;
  top: 0;
  z-index: 10;
}

/* Country flags: Windows has no flag emoji, so they come from Google's Noto Color Emoji font (loaded in the head). */
.flag-emoji,
.passport-flag {
  font-family: "Noto Color Emoji", "Apple Color Emoji", sans-serif;
}

.empty-state {
  text-align: center;
  color: var(--c-grey-666);
  margin-top: 100px;
}
