<main>
  <button popovertoggletarget="my-first-pop-up" class="button fab ripple">
    <svg viewBox="0 0 512 512" title="comment-alt">
      <path d="M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z" />
    </svg>
  </button>
  <div id="my-first-pop-up" popover>Pop-up content!</div>
  <header>
    <h1>Awesome Website</h1>
  </header>
  <article>
    <p>
      Lorem ipsum dolor sit, amet consectetur adipisicing elit. Animi
      laborum obcaecati doloremque facilis ipsum tempora, necessitatibus
      maiores voluptates! Dolore sunt perferendis quod alias iusto aut eaque
      atque nisi pariatur cumque?
    </p>
    <p>
      Iste hic vitae neque maxime quo eum natus aliquid non perferendis
      magni quis aliquam quam eveniet laudantium officia possimus ipsa
      aspernatur molestiae rerum, quibusdam voluptatibus ullam architecto!
      Commodi, nisi maiores?
    </p>
    <p>
      Eligendi mollitia labore sint asperiores quia tempore suscipit
      repellendus, facilis reiciendis rem veritatis placeat quibusdam optio
      unde odio voluptatem sapiente error rerum? Tempora delectus recusandae
      consequatur, perferendis eum nostrum doloremque.
    </p>
    <p>
      Vitae inventore in eaque numquam consectetur iure illum voluptatem
      enim hic possimus tempore quisquam sequi culpa maiores beatae
      voluptate iusto impedit quam delectus at facere, ducimus vero?
      Explicabo, eius sit.
    </p>
    <p>
      Officia ut illo facere suscipit ad temporibus in nihil autem eius
      expedita reiciendis fugit, maxime est repellat minima ratione nulla
      eveniet iure. Voluptas quae illo vero tenetur libero, maiores quaerat!
    </p>
    <p>
      Cum velit magni voluptas, officia sed esse illum libero molestias
      praesentium hic reiciendis laborum autem corporis et. Deleniti
      accusamus nesciunt facilis, distinctio explicabo consequatur nobis
      tempora amet magnam aperiam officia?
    </p>
    <p>
      Nulla nobis et, officiis alias, accusantium tempore ut a,
      necessitatibus laborum magnam voluptatem illum iusto voluptates sed
      atque labore sequi dicta. Alias sunt, corrupti veritatis delectus iste
      eos obcaecati incidunt?
    </p>
    <p>
      Maxime quam sequi at odio. Nesciunt maiores repudiandae dolorem dicta,
      pariatur cum, laborum quasi aspernatur aperiam natus eveniet nemo
      laboriosam doloribus, ab sunt expedita voluptates dolor assumenda.
      Enim, fugiat culpa!
    </p>
    <p>
      Sint soluta, perspiciatis, itaque a quia quis expedita laudantium
      porro amet, quo deleniti. In cumque, iste consequatur maxime ab nulla
      facilis accusamus placeat? Consequuntur libero, quis quod iure
      voluptatibus assumenda.
    </p>
    <p>
      Doloremque qui sit suscipit modi consequatur laudantium ipsam possimus
      deleniti recusandae voluptatibus veritatis numquam odio sint
      laboriosam at alias animi similique delectus corrupti atque officiis,
      quidem consequuntur tempora? Tempore, facilis.
    </p>
  </article>
</main>
@layer demo {
  [popover] {
    padding: var(--size-4);
  }
  [popover]:open::backdrop {
    background: hsl(0 0% 10% / 0.5);
    backdrop-filter: blur(2px);
  }
}

@layer base {
  :where([popover]) {
    margin: auto;
    border-width: initial;
    border-style: solid;
  }
  body {
    margin: 0;
    display: grid;
    place-items: center;
    min-height: 100vh;
    overflow-x: hidden;
    overflow-y: auto;
  }

  article {
    padding-bottom: var(--size-4);
  }

  h1 {
    margin: 0;
  }

  article {
    margin: 0 var(--size-4);
    padding-bottom: var(--size-4);
  }

  article > p + p {
    margin-top: var(--size-4);
  }

  main > header {
    margin-bottom: var(--size-4);
    max-width: 100vw;
    grid-template-columns: 1fr;
  }

  main {
    max-width: var(--size-content-3);
  }

  header {
    min-height: var(--size-content-1);
    background: var(--surface-2);
    display: grid;
    padding: var(--size-4);
    place-items: center;
    width: 100vw;
    position: relative;
    top: 0;
    left: 50%;
    margin-left: -50vw;
    min-height: 50vmin;
    max-height: 500px;
  }

  h1 {
    position: sticky;
    top: 0;
  }
}

@layer button {
  .button.fab {
    position: fixed;
    z-index: 99999;
    bottom: var(--size-4);
    right: var(--size-4);
  }

  .fab svg {
    fill: var(--md-sys-color-on-primary-container);
  }
}

External CSS

  1. https://codepen.io/web-dot-dev/pen/XWqWYgB.css
  2. https://codepen.io/web-dot-dev/pen/ZExZWBQ.css

External JavaScript

  1. https://codepen.io/web-dot-dev/pen/XWqWYgB.js
  2. https://codepen.io/web-dot-dev/pen/ZExZWBQ.js