.window {
  display: none;
  color: grey;
  flex-direction: column;
  flex: 0 1 auto;
  background-image: url("/png/bg3.png");
  min-height: 0
}

.window > .body {
  display: flex;
  flex-wrap: wrap;
  padding: 8px; /* 8 + 8 = InteractiveWindow.BODY_PADDING (container bodies: 8px top + 8px transparent border-bottom, see below) */
  min-height: 34px; /* one slot row: InteractiveWindow.SLOT_HEIGHT (slot 32px + 1px border twice) */
  justify-content: center;
  align-items: flex-start;
  align-content: flex-start;
  overflow-y: scroll;
  scrollbar-width: thin;
}

/*
 * Container bodies are the scrollport (overflow-y: scroll) and overflow clips at the padding box,
 * so a bottom padding shows the top of the next slot row through it (the "row and a half").
 * A transparent border sits outside the scrollport and is clipped correctly:
 * 8px padding-top + 8px border-bottom = InteractiveWindow.BODY_PADDING (16).
 */
.window[containerIndex] > .body {
  padding-bottom: 0;
  border-bottom: 8px solid transparent;
}

.window > .header {
  height: 22px; /* InteractiveWindow.HEADER_HEIGHT */
  display: flex;
  align-items: center;
  cursor: move;
  padding-left: 4px;
  background-image: url("/png/bg4.png");
}

.window > .header > button {
  flex: 0 0 auto;
}

.window > .header > .title {
  flex: 1 1 auto;
  padding-left: 8px;
  pointer-events: none;
}

.window > .footer {
  height: 4px; /* InteractiveWindow.FOOTER_HEIGHT */
  cursor: ns-resize;
  background: black;
}

.friend-entry {
  cursor: pointer;
  width: 100%;
}

.friend-entry:hover {
  color: white !important;
}

#skill-window .body {
  display: block;
}