*, *::before, *::after {
  box-sizing: border-box;
}

body {
  min-height: 100vh;
  width: 90vw;
  margin: 0 auto;
}

video {
  width: 100%;
}

button {
  cursor: pointer;
  padding: 4px 8px;
  border: 1px solid #2b2b2b;
  line-height: 1rem;
}

h1 {
  font-size: 24px;
}

h1, h2 {
  font-weight: 700;
}

.app-header {
  border-bottom: 1px solid #2b2b2b;
}

.app-title {
  line-height: 4rem;
}

.app-main {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 32px;
}

.video-layout {
  display: flex;
  gap: 8px;
}

.video-area {
  width: 320px;
}

.video-controller {
  display: flex;
  justify-content: center;
}

.video-content-list {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.video-content-item {
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid #b2b2b2;
  width: 128px;
  height: 64px;
}

.video-content-item:is(:focus, :hover) {
  border-color: #2b2b2b;
}

.upload-range {
  display: grid;
  grid-template: 16px / 1fr;
  width: 100%;
  margin-top: 4px;
  padding: 2px 2px;
  background: #0b7070;
  align-items: center;
  --current: 0%;
  --current-string: '0%';
}

.upload-range::before, .upload-range::after {
  grid-area: 1/1;
  height: 100%;
}
.upload-range::before {
  transition: width .3s ease-in-out;
  display: block;
  content: '';
  width: var(--current, 0%);
  min-width: 0px;
  background: #22bbbb;
}
.upload-range::after {
  content: var(--current-string);
  font-size: 13px;
  line-height: 18px;
  color: #eee;
  font-weight: 700;
  margin-left: auto;
}