:root {
  --pointer-x: 50%;
  --pointer-y: 50%;
  --pointer-from-center: 0;
  --pointer-from-top: 0.5;
  --pointer-from-left: 0.5;
  --card-opacity: 0;
  --rotate-x: 0deg;
  --rotate-y: 0deg;
  --background-x: 50%;
  --background-y: 50%;
  --card-scale: 1;
  --translate-x: 0px;
  --translate-y: 0px;

  --grain: url(./iamges/grain.webp);
  --metafy: url(./iamges/face.jpg);
  --sunpillar-1: hsl(2, 100%, 73%);
  --sunpillar-2: hsl(53, 100%, 69%);
  --sunpillar-3: hsl(93, 100%, 69%);
  --sunpillar-4: hsl(176, 100%, 76%);
  --sunpillar-5: hsl(228, 100%, 74%);
  --sunpillar-6: hsl(283, 100%, 73%);
  --sunpillar-clr-1: var(--sunpillar-1);
  --sunpillar-clr-2: var(--sunpillar-2);
  --sunpillar-clr-3: var(--sunpillar-3);
  --sunpillar-clr-4: var(--sunpillar-4);
  --sunpillar-clr-5: var(--sunpillar-5);
  --sunpillar-clr-6: var(--sunpillar-6);

  --card-radius: 6.55% / 4.75%;

  --canvas: 220;
  --bg: hsl(var(--canvas), 15%, 22%);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100svh;
  background: var(--bg);
}

.container {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.card-wrapper {
  position: relative;
  perspective: 500px;
  transform: translate3d(0, 0, 0.1px);
  cursor: pointer;
}

.card-wrapper:hover,
.card-wrapper.active {
  --card-opacity: 1;
}

.card-wrapper.active::before {
  filter: contrast(1) saturate(2) blur(40px) opacity(1);
  transform: scale(0.9) translate3d(0, 0, 0.1px);
}

#card {
  height: 80svh;
  max-height: 540px;
  display: grid;
  aspect-ratio: 0.718;
  border-radius: var(--card-radius);
  position: relative;
  background-blend-mode: color-dodge, normal, normal, normal, normal;
  animation: glow 12s linear infinite;
  box-shadow: rgba(0, 0, 0, 0.8) calc((var(--pointer-from-left) * 10px) - 3px)
    calc((var(--pointer-from-top) * 20px) - 6px) 20px -5px;
  transition: transform 1s ease;
  transform: translate3d(0, 0, 0.1px) rotateX(0deg) rotateY(0deg);
  background-size: 100% 100%;
  background-position: 0px 0px, 0px 0px, 50% 50%, 0px 0px;
  background-image: radial-gradient(
      farthest-side circle at var(--pointer-x, 50%) var(--pointer-y, 50%),
      hsla(266, 100%, 90%, var(--card-opacity)) 4%,
      hsla(266, 50%, 80%, calc(var(--card-opacity) * 0.75)) 10%,
      hsla(266, 25%, 70%, calc(var(--card-opacity) * 0.5)) 50%,
      hsla(266, 0%, 60%, 0) 100%
    ),
    radial-gradient(35% 52% at 55% 20%, #00ffaac4 0%, #073aff00 100%),
    radial-gradient(100% 100% at 50% 50%, #00c1ffff 1%, #073aff00 76%),
    conic-gradient(
      from 124deg at 50% 50%,
      #c137ffff 0%,
      #07c6ffff 40%,
      #07c6ffff 60%,
      #c137ffff 100%
    );

  overflow: hidden;
}

#card:hover,
#card.active {
  transition: none;
  transform: translate3d(0, 0, 0.1px) rotateX(var(--rotate-y))
    rotateY(var(--rotate-x));
}

#card * {
  display: grid;
  grid-area: 1/-1;
  border-radius: var(--card-radius);
  transform: translate3d(0px, 0px, 0.1px);
  pointer-events: none;
}

#card .inside {
  inset: 1px;
  position: absolute;
  background-image: linear-gradient(145deg, #60496e8c 0%, #71c4ff44 100%);
  background-color: rgb(0 0 0 / 90%);
  transform: translate3d(0px, 0px, 0.01px);
}

.card__laser {
  mask-image: var(--metafy);
  mask-mode: luminance;
  mask-repeat: repeat;
  mask-size: 150%;
  mask-position: top calc(200% - (var(--background-y) * 5)) left
    calc((100% - var(--background-x)));
  transition: filter 0.6s ease;
  filter: brightness(0.66) contrast(1.33) saturate(0.33) opacity(0.5);
  animation: holo 18s linear infinite;
  mix-blend-mode: color-dodge;
}

.card__laser,
.card__laser::after {
  --space: 5%;
  --angle: -45deg;
  display: grid;
  transform: translate3d(0, 0, 1px);
  overflow: hidden;
  z-index: 3;
  background: transparent;
  background-size: cover;
  background-position: center;
  background-image: repeating-linear-gradient(
      0deg,
      var(--sunpillar-clr-1) calc(var(--space) * 1),
      var(--sunpillar-clr-2) calc(var(--space) * 2),
      var(--sunpillar-clr-3) calc(var(--space) * 3),
      var(--sunpillar-clr-4) calc(var(--space) * 4),
      var(--sunpillar-clr-5) calc(var(--space) * 5),
      var(--sunpillar-clr-6) calc(var(--space) * 6),
      var(--sunpillar-clr-1) calc(var(--space) * 7)
    ),
    repeating-linear-gradient(
      var(--angle),
      #0e152e 0%,
      hsl(180, 10%, 60%) 3.8%,
      hsl(180, 29%, 66%) 4.5%,
      hsl(180, 10%, 60%) 5.2%,
      #0e152e 10%,
      #0e152e 12%
    ),
    radial-gradient(
      farthest-corner circle at var(--pointer-x) var(--pointer-y),
      hsla(0, 0%, 0%, 0.1) 12%,
      hsla(0, 0%, 0%, 0.15) 20%,
      hsla(0, 0%, 0%, 0.25) 120%
    );
  background-position: 0% var(--background-y),
    calc(var(--background-x)) var(--background-y), center center;
  background-blend-mode: color, hard-light;
  background-size: 500% 500%, 300% 300%, 200% 200%;
  background-repeat: repeat;
}

.card__laser::before,
.card__laser::after {
  content: "";
  background-position: center;
  background-size: cover;
  grid-area: 1/1;
  opacity: 0;
  pointer-events: none;
}

#card:hover .card__laser,
#card.active .card__laser {
  filter: brightness(0.85) contrast(1.5) saturate(0.5);
  animation: none;
  &::before,
  &::after {
    opacity: 1;
  }
}

.card__laser::before {
  background-image: linear-gradient(
      45deg,
      var(--sunpillar-4),
      var(--sunpillar-5),
      var(--sunpillar-6),
      var(--sunpillar-1),
      var(--sunpillar-2),
      var(--sunpillar-3)
    ),
    radial-gradient(
      circle at var(--pointer-x) var(--pointer-y),
      hsl(0, 0%, 70%) 0%,
      hsla(0, 0%, 30%, 20%) 90%
    ),
    var(--grain);

  background-size: 250% 250%, 100% 100%, 220px 220px;
  background-position: var(--pointer-x) var(--pointer-y), center center,
    calc(var(--pointer-x) * 0.01) calc(var(--pointer-y) * 0.01);
  background-blend-mode: color-dodge;

  filter: brightness(calc(2 - var(--pointer-from-center)))
    contrast(calc(var(--pointer-from-center) + 2))
    saturate(calc(0.5 + var(--pointer-from-center)));
  mix-blend-mode: luminosity;
}

.card__laser::after {
  background-position: 0% var(--background-y),
    calc((var(--background-x)) * 0.4) calc(var(--background-y) * 0.5),
    center center;
  background-size: 200% 300%, 700% 700%, 100% 100%;
  mix-blend-mode: difference;
  filter: brightness(0.8) contrast(1.5);
}

.card__laser,
.avatar {
  will-change: transform, opacity, background-image, background-size,
    background-position, background-blend-mode, filter, box-shadow;
}

#card .avatar__content .avatar {
  position: relative;
  border-radius: 200px;
  max-width: 80%;
  margin: 10% auto;
  opacity: calc((1.5 - var(--pointer-from-center)));
  box-shadow: rgba(0, 0, 0, 0.6) calc((var(--pointer-from-left) * 6px) - 2px)
    calc((var(--pointer-from-top) * 14px) - 4px) 20px -3px;
}

.card__content {
  padding: 1em;
  grid-template-rows: 2fr 1fr;
  max-height: 100%;
  overflow: hidden;
  text-align: center;
  pointer-events: none;
  position: relative;
  transform: translate3d(
    calc(var(--pointer-from-left) * -6px + 3px),
    calc(var(--pointer-from-top) * -6px + 3px),
    0.1px
  ) !important;
  z-index: 5;
}

#card .card__details {
  z-index: 4;
  grid-row: 2/3;
  justify-content: space-evenly;
  display: flex;
  gap: 0.5em;
  flex-direction: column;
  margin-top: 1em;
}

.card__details h3 {
  font-weight: 600;
  font-size: min(4svh, 2em);
  margin: 0;
  background-image: linear-gradient(to bottom, white, #aaaadd);
  background-size: 1em 1.5em;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  mix-blend-mode: plus-lighter;
}

.card__details p {
  color: white;
  text-shadow: 0 -1px 1px black;
  background: linear-gradient(
    to bottom,
    #465964 calc(-100% + var(--pointer-y)),
    #202539 30%,
    #14181d 70%,
    #544855 calc(100% + var(--pointer-y))
  );
  text-transform: uppercase;
  font-size: 14px;
  margin-inline: auto;
  margin-block: 0;
  padding: 0.35em 1.25em;
  width: min-content;
  border-radius: 2em !important;
  box-shadow: 0 0 0 1px #14181d,
    rgba(0, 0, 0, 0.6) calc((var(--pointer-from-left) * 6px) - 2px)
      calc((var(--pointer-from-top) * 14px) - 4px) 15px -5px;
}

@keyframes glow {
  0% {
    --bgrotate: 0deg;
  }
  100% {
    --bgrotate: 360deg;
  }
}

@keyframes holo {
  0% {
    background-position: 0% var(--background-y), 0% 0%, center center;
  }
  100% {
    background-position: 0% var(--background-y), 90% 90%, center center;
  }
}
