  .hovereffect {
    width: 100%;
    height: 100%;
    float: left;
    overflow: hidden;
    position: relative;
    text-align: center;
    cursor: default;
  }

  .hovereffect .overlay {
    position: absolute;
    overflow: hidden;
    width: 80%;
    height: 80%;
    left: 10%;
    top: 10%;
    border-bottom: 1px solid #FFF;
    border-top: 1px solid #FFF;
    -webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
    transition: opacity 0.35s, transform 0.35s;
    -webkit-transform: scale(0, 1);
    -ms-transform: scale(0, 1);
    transform: scale(0, 1);
  }

  .hovereffect:hover .overlay {
    opacity: 1;
    filter: alpha(opacity=100);
    -webkit-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
  }

  .hovereffect img {
    display: block;
    position: relative;
    -webkit-transition: all 0.35s;
    transition: all 0.35s;
  }

  .hovereffect:hover img {
    filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0.6" /><feFuncG type="linear" slope="0.6" /><feFuncB type="linear" slope="0.6" /></feComponentTransfer></filter></svg>#filter');
    filter: brightness(0.2);
    -webkit-filter: brightness(0.2);
  }

  .hovereffect a {
    padding: 0.5em 0;
    opacity: 0;
    filter: alpha(opacity=0);
    -webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
    transition: opacity 0.35s, transform 0.35s;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
  .hovereffect p {
    color: #FFF;
    padding: 0.5em 0;
    opacity: 0;
    filter: alpha(opacity=0);
    -webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
    transition: opacity 0.35s, transform 0.35s;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  .hovereffect:hover a,
  .hovereffect:hover p {
    opacity: 1;
    filter: alpha(opacity=100);
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }


  .icon-link > .bi {
    margin-top: .125rem;
    margin-left: .125rem;
    fill: currentcolor;
    transition: transform .25s ease-in-out;
  }
  .icon-link:hover > .bi {
    transform: translate(.25rem);
  }

  /* Reveal the check mark on the active entry of the theme dropdown */
  #bd-theme ~ .dropdown-menu .active .bi.ms-auto {
    display: block !important;
  }

  /* Carousel arrows.
     Bootstrap 5.3 applies `filter: invert(1) grayscale(100)` to these icons under
     data-bs-theme="dark", turning the default white chevrons black — invisible
     against dark screenshots. Force them back to white and sit them on a dark
     disc so they stay legible over bright and dark frames in either theme. */
  #screenshotCarousel .carousel-control-prev,
  #screenshotCarousel .carousel-control-next {
    opacity: .85;
  }

  #screenshotCarousel .carousel-control-prev:hover,
  #screenshotCarousel .carousel-control-next:hover,
  #screenshotCarousel .carousel-control-prev:focus,
  #screenshotCarousel .carousel-control-next:focus {
    opacity: 1;
  }

  #screenshotCarousel .carousel-control-prev-icon,
  #screenshotCarousel .carousel-control-next-icon {
    filter: none;
    width: 2.75rem;
    height: 2.75rem;
    background-color: rgba(0, 0, 0, .55);
    background-size: 1.1rem 1.1rem;
    background-position: center;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .35);
  }
