JSFiddle - React, Tailwind, and code Playground

HTML

<div class="outer">
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame" data-id="CHahce95B1g"></div>
        </div>
      </div>
      <button class="exit" type="button" title="Exit" aria-label="Close"></button>
    </div>
  </div>
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame" data-id="-Xgi_way56U"></div>
        </div>
      </div>
      <button class="exit" type="button" title="Exit" aria-label="Close"></button>
    </div>
  </div>
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame" data-id="-Xgi_way56U"></div>
        </div>
      </div>
      <button class="exit" type="button" title="Exit" aria-label="Close"></button>
    </div>
  </div>
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame" data-id="-Xgi_way56U"></div>
        </div>
      </div>
      <button class="exit" type="button" title="Exit" aria-label="Close"></button>
    </div>
  </div>
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame"></div>
        </div>
      </div>
      <button class="exit" type="button" title="Exit" aria-label="Close"></button>
    </div>
  </div>
  <div class="container with-curtain">
    <div class="inner-container curtain">
      <div class="ratio-keeper">
        <div class="wrap">
          <div class="video video-frame" data-id="-Xgi_way56U"></div>
        </div>
      </div>
      <button class="exit" type="button"...

CSS

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

body {
  background: #353198;
}

.container {
  display: flex;
  justify-content: center;
  position: relative;
}

.container.active {
  flex: 1 0 0;
}

.bg1 .with-curtain::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: black;
}

.playContainer {
  display: flex;
  flex-wrap: wrap;
  min-height: 100%;
  margin: auto;
  justify-content: center;
  align-content: center;
  width: 290px;
  gap: 10px;
  animation: fadeInButtons 3s ease 0s forwards;
}

.bg1 .outer {
  width: auto;
}

.inner-container {
  display: none;
}

.container.active .cover {
  display: none;
}

.container.active .inner-container {
  display: flex;
}

.container.active .inner-container.curtain {
  display: block;
}

.cover {
  -webkit-appearance: none;
  appearance: none;
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  cursor: pointer;
  border: 9px solid blue;
  background: transparent;
  filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.7));
}

.cover::before {
  content: "";
  width: 0;
  height: 0;
  border-top: 20px solid transparent;
  border-bottom: 20px solid transparent;
  border-left: 27px solid blue;
  transform: translateX(4px);
}

.cover:hover {
  box-shadow: 0 0 0 5px rgba(43, 179, 20, 0.5);
}

.cover:focus {
  outline: 0;
  box-shadow: 0 0 0 5px rgba(0, 255, 255, 0.5);
}

.played {
  border-color: green;
}

.played::before {
  border-left-color: green;
}

.curtain {
  flex: 1 0 0;
  margin: auto;
  max-width: 640px;
  /*box-shadow: inset 0 -2px 0px 0px #0a0a0a;*/
  border: 11px solid black;
  border-radius: 3.2px;
  border-color: orange green orange green;
  position: relative;
}

.ratio-keeper {
  position: relative;
  height: 0;
  padding-top: 56.25%;
  margin: auto;
  overflow: hidden;
  outline: 1px solid red;
}

.video-frame {
  position: absolute;
  top: 0;
  left: 0;
 ...

JavaScript

const manageCover = (function makeManageCover() {
  const config = {};

  function show(el) {
    el.classList.remove("hide");
  }

  function hide(el) {
    el.classList.add("hide");
  }

  function hideAll(elements) {
    elements.forEach(hide);
  }
  function resetBackground(backgroundSelector) {
    const allBackgrounds = document.querySelectorAll(backgroundSelector);

    function hideBackground(background) {
      background.classList.add("bg1");
    }
    allBackgrounds.forEach(hideBackground);
  }

  function resetPage() {
    resetBackground("body");
  }

  function markAsPlayed(played) {
    played.classList.add("played");
  }

  function showCover(playButton) {
    const cover = playButton.parentElement;
    cover.classList.add("active");
    show(cover);
  }

  function coverClickHandler(evt) {
    hideAll(config.containers);
    resetPage();
    markAsPlayed(evt.currentTarget);
    const cover = evt.currentTarget;
    showCover(cover);
  }

  function addClickToButtons(playButtons) {
    playButtons.forEach(function playButtonHandler(playButton) {
      playButton.addEventListener("click", coverClickHandler);
    });
  }

  function addCoverHandler(coverSelector, handler) {
    const cover = document.querySelector(coverSelector);
    cover.addEventListener("click", handler);
  }

  function init(selectors) {
    config.containers = document.querySelectorAll(selectors.container);
    const playButtons = document.querySelectorAll(selectors.playButton);
    addClickToButtons(playButtons);
  }

  return {
    addCoverHandler,
    init
  };
}());

const manageUI = (function makeManageUI() {
  const body = document.body;

  const players = [];

  function findPlayers() {
    const allCovers = document.querySelectorAll(".cover");
    const allWrappers = document.querySelectorAll(".wrap");
    allCovers.forEach(function addToPlayers(cover, index) {
      players.push({
        "cover": cover,
        "wrapper": allWrappers[index]
      });
    });
  }

 ...