body {
  margin: 0;
  background-color: #000;
  /* スクロールバーを常に非表示にする */
  overflow: hidden;
}

/* ビューポート（窓）を画面全体に広げる */
.grid-carousel-viewport {
  width: 100vw;
  /* 画面の幅 100% */
  height: 100vh;
  /* 画面の高さ 100% */
  overflow: hidden;
  position: relative;
}

/* 巨大なシート */
.grid-carousel-sheet {
  display: grid;
  /* 列と行のサイズ定義はJSに任せる */
  grid-template-columns: repeat(15, auto);
  grid-template-rows: repeat(15, auto);
  position: absolute;
  transform: translateZ(0);
  will-change: transform;
  opacity: 0;
  transition: opacity 0.5s ease;
}

/* グリッドアイテム */
.grid-item {
  /* サイズ指定はJSに任せる */
  background-color: #000;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}

/* アイテム内の画像/動画のスタイル */
.grid-item img,
.grid-item video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* HTMLスライドのスタイル */
.html-slide {
  width: 100%;
  height: 100%;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background-size: cover;
  background-position: center;
  box-sizing: border-box;
  /* パディングなどを含む計算のため */
}

.html-slide video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  top: 0;
  left: 0;
}

.html-slide p {
  position: relative;
  z-index: 10;
  color: white;
  font-size: 30px;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);
  font-family: sans-serif;
  /* 念のためフォントを指定 */
}