/* =========================
  Video Gallery Banner
  - background zoom via ::before (smooth)
  - safe for mobile text overflow
========================= */

.dsVideoBanner{
  margin: 0 0 34px 0;
}

.dsVideoBanner__link{
  display: block;
  text-decoration: none;
  color: inherit;
}

.dsVideoBanner__body{
  position: relative;
  overflow: hidden;
  border: 1px solid #e3e8ef;
  background: #0b1a2a;
  min-height: 150px;
}

/* hover border */
.dsVideoBanner__link:hover .dsVideoBanner__body{
  border-color: #990000;
}

/* =========================
  Background layer (zoom target)
========================= */

.dsVideoBanner__body::before{
  content: "";
  position: absolute;
  inset: 0;

  background-image: url("/image/design-support/video.jpg");
  background-size: cover;
  background-position: 65% center;
  background-repeat: no-repeat;

  filter: brightness(0.85) contrast(0.9);

  transform: translateZ(0) scale(1);
  transform-origin: center center;
  transition: transform 0.45s ease;

  backface-visibility: hidden;
  will-change: transform;
}

/* hover: smooth zoom */
.dsVideoBanner__link:hover .dsVideoBanner__body::before{
  transform: translateZ(0) scale(1.06);
}

/* =========================
  Overlay content
========================= */

.dsVideoBanner__overlay{
  position: absolute;
  inset: 0;
  z-index: 1;

  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;

  padding: 14px 16px;

  background: linear-gradient(
    90deg,
    rgba(0,0,0,.52) 0%,
    rgba(0,0,0,.30) 46%,
    rgba(0,0,0,.00) 80%
  );
}

/* =========================
  Text
========================= */

.dsVideoBanner__text{
  max-width: 68%;
}

.dsVideoBanner__title{
  font-size: 2.0rem;
  font-weight: 700;
  line-height: 1.3;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.35);
}

.dsVideoBanner__desc{
  margin-top: 6px;
  font-size: 14px;
  line-height: 1.5;
  color: rgba(255,255,255,.9);
  text-shadow: 0 1px 2px rgba(0,0,0,.25);

  overflow-wrap: anywhere;
}

/* =========================
  Button
========================= */

.videoBtn{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-height: 44px;
  padding: 10px 66px 10px 34px;

  font-size: 16px;
  white-space: nowrap;
  color: #fff;

  border: 1px solid #fff;
  background-color: var(--color-secondary);

  transition:
    background-color .2s ease,
    transform .25s ease,
    box-shadow .25s ease;
}

/* button hover */
.dsVideoBanner__link:hover .videoBtn{
  background-color: #c06161;
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(0,0,0,.22);
}

/* arrow */
.videoBtn::after{
  content: "";
  position: absolute;
  top: 50%;
  left: calc(100% - 42px);

  width: 22px;
  height: 6px;

  border-right: 1px solid #fff;
  border-bottom: 1px solid #fff;

  transform: translateY(-75%) skew(45deg);
  transition: width .2s ease;
}

.dsVideoBanner__link:hover .videoBtn::after{
  width: 44px;
}

/* =========================
  Focus
========================= */

.dsVideoBanner__link:focus-visible{
  outline: 3px solid rgba(153,0,0,.35);
  outline-offset: 4px;
}

/* =========================
  Mobile
========================= */

@media (max-width: 640px){
  .dsVideoBanner__overlay{
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-end;
    padding: 12px;

    background: linear-gradient(
      180deg,
      rgba(0,0,0,.18) 0%,
      rgba(0,0,0,.42) 40%,
      rgba(0,0,0,.60) 100%
    );
  }

  .dsVideoBanner__text{
    max-width: 100%;
  }

  .dsVideoBanner__title{
    font-size: 18px;
    line-height: 1.25;
    overflow-wrap: anywhere;
  }

  .dsVideoBanner__desc{
    font-size: 13px;
  }

  .videoBtn{
    min-height: 40px;
    align-self: stretch;
    text-align: center;
    padding: 10px 56px 10px 28px;
  }
}

/* =========================
  Touch devices: disable hover effects
========================= */

@media (hover:none){
  .dsVideoBanner__link:hover .dsVideoBanner__body::before{
    transform: translateZ(0) scale(1);
  }

  .dsVideoBanner__link:hover .videoBtn{
    transform: none;
    box-shadow: none;
  }
}
