JSFiddle - React, Tailwind, and code Playground

HTML

<ul class="faq-list">
  <li class="faq-item">
    <button class="accordion" aria-controls="section-1">
      <span class="button-name" role="heading" aria-level="3">hello, world!!</span>
      <span class="cross"></span>
    </button>
    <div class="panel" id="section-1">
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
  </li>
  <li class="faq-item">
    <button class="accordion" aria-controls="section-2">
      <span class="button-name" role="heading" aria-level="3">fuck the world</span>
      <span class="cross"></span>
    </button>
    <div class="panel" id="section-2">
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
  </li>
  <li class="faq-item">
    <button class="accordion" aria-controls="section-3">
      <span class="button-name" role="heading" aria-level="3">fuck everything</span>
      <span class="cross"></span>
    </button>
    <div class="panel" id="section-3">
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
  </li>
</ul>

CSS

*, 
*::before,
*::after {
  box-sizing: border-box;
}

body {
  color: #fff;
  font-family: sans-serif;
}

.faq-list {
  position: relative;
  width: 100%;
  max-width: 550px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.p {
  padding: 0;
  margin: 0;
}

.faq-item {
  border-radius: 16px;
  overflow: hidden;
  background-color: #B91C6B;
}

.accordion {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 15px;
  width: 100%;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.5;
  color: inherit;
  cursor: pointer;
  border: none;
  border-radius: 16px;
  outline-color:  #960F4F;
  outline-offset: 3px;
  background-color: #AD0F5B;
  transition: 0.4s;
}

.accordion:hover,
.accordion:active,
.accordeon:focus-visible {
  background-color: #960F4F;
}

.cross {
  position: relative;
  width: 34px;
  height: 34px;
  transition: 0.4s;
}
.cross::before,
.cross::after {
  content: "";
  background-color: #FFF;
  position: absolute;
}

.cross::before {
  width: 100%;
  height: 3px;
  top: 50%;
  transform: translate(-50%, -50%);
}

.cross::after {
  width: 3px;
  height: 100%;
  left: 50%;
  transform: translateX(-50%);
}

.cross-close {
  transform: rotate(45deg);
}

.faq-item .panel {
  display: block;
  font-size: 15px;
  line-height: 1.5;
  border-radius: 0 0 16px;
  padding: 0 15px;
  transition: all 0.4s;
  height: 0;
  overflow: hidden;
}

.faq-item.active .cross {
  transform: rotate(45deg);
}

JavaScript

const containerSelector = '.faq-list';
const itemSelector = '.faq-item';
const headerSelector = '.accordion';
const contentSelector = '.panel';
const activeClass = 'active';
const toggle = item => item
  ?.closest(containerSelector)
  ?.querySelectorAll(itemSelector).forEach(n => {
    const state = n === item && !n.classList.contains(activeClass);
    const content = n.querySelector(contentSelector);
    n.classList.toggle(activeClass, state);
    content.style.height = `${state ? content.scrollHeight : 0}px`;
  });

document.addEventListener('click', e => {
  toggle(e.target.closest(headerSelector)?.closest(itemSelector));
});
/*
document.querySelectorAll(headerSelector).forEach(n => {
  n.addEventListener('click', toggle.bind(null, n.closest(itemSelector)));
});
*/