#wrap
 -6.times do
  .ticket
View Compiled
@font-face {
  font-family: "Cooper";
  src: url("https://assets.codepen.io/383755/cooper-black-webfont.woff")
    format("woff");
}

@font-face {
  font-family: "Aharoni";
  src: url("https://assets.codepen.io/383755/telefon.woff2") format("woff");
}

@font-face {
  font-family: "Bogart";
  src: url("https://assets.codepen.io/383755/bogart-semibold.woff2")
    format("woff2");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: "Dot";
  src: url("https://assets.codepen.io/383755/Dot-Matrix.ttf.woff") format("woff");
}

@import url("https://fonts.googleapis.com/css2?family=Oswald:wght@300;500&display=swap");

@import url("https://fonts.googleapis.com/css2?family=Coustard:wght@900&display=swap");

$noise: url("data:image/png;base64,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");

* {
  box-sizing: border-box;
}

@mixin flex-center() {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
}

@function text-stroke($size: 2, $color: #fff, $correction: 0) {
  $radius: $size - $correction;
  $stroke: ();

  @for $i from -$size through $size {
    @for $k from -$size through $size {
      $x: $k;
      $y: $i;

      @if $k > 0 {
        $x: $k - 0.5;
      }
      @elseif $k < 0 {
        $x: $k + 0.5;
      }

      @if $i > 0 {
        $y: $i - 0.5;
      }
      @elseif $i < 0 {
        $y: $i + 0.5;
      }

      @if ($x * $x + $y * $y <= $radius * $radius) {
        $stroke: append($stroke, $i * 1px $k * 1px 0 $color, comma);
      }
    }
  }

  @return $stroke;
}

@mixin text-stroke($size: 2, $color: #fff, $correction: 0) {
  text-shadow: text-stroke($size, $color, $correction);
}

body {
  margin: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  overflow: hidden;
  font-family: "Oswald";
  cursor: pointer;
  --dark: #50303f;
  --font1: "Cooper";
  --font2: "Oswald";
  --font4: "Cooper";
  --font5: "Bogart";
  --font6: "Oswald";
  --font7: "Aharoni";
  --font8: "Coustard";
  --color1: #fe2fd9;
  --color2: #fa6c4b;
  --color3: #e5f31b;
  --color4: #5030da;
  --color5: #ff3641;
  --color6: #e5f31b;
  --color7: #fe2fd9;
  background: repeating-radial-gradient(
      circle at center,
      transparent 0px,
      #fff 0px,
      #fff 2px,
      transparent 2px,
      transparent 10px
    ),
    radial-gradient(circle at center, #fff 25vw, #e5f4d1);
  &:before {
    content: "click to remix";
    position: absolute;
    bottom: 5px;
    width: 100%;
    left: 0;
    text-align: center;
    color: var(--dark);
  }
  &.active {
    #wrap {
      .ticket {
        @for $i from 1 through 6 {
          &:nth-of-type(#{$i}) {
            z-index: #{6 - $i};
            .inner {
              &:before {
                transition-delay: #{0.15 + ($i/10)}s;
                opacity: 1;
              }
              > div {
                transition-delay: #{$i/10}s;
                &:before,
                &:after {
                  transition-delay: #{0.15 + ($i/10)}s;
                  box-shadow: inset -100px 0px 100px -200px rgba(0, 0, 0, 0.15),
                    inset 0 0 3rem -3rem var(--dark), inset 0 0 0 0.5rem var(--color1);
                }
                &:after {
                  box-shadow: inset 100px 0px 100px 100px rgba(0, 0, 0, 0.15),
                    inset 0 0 2rem 0.075rem var(--dark),
                    inset 0 0 0 0.5rem lighten(#e5f4d1, 5%);
                }
              }
            }
          }
        }
        .inner {
          > div {
            transform: translateY(0);
          }
        }
      }
    }
  }
  &.loaded {
    #wrap {
      opacity: 1;
    }
  }
  #wrap {
    width: clamp(662.5px, 80vw, 1325px);
    min-width: 662.5px;
    height: clamp(500px, 60vw, 1000px);
    min-height: 500px;
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    grid-template-rows: repeat(6, 1fr);
    grid-gap: 0rem;
    transition: 0.5s ease-in-out;
    transition-delay: 1s;
    opacity: 0;
    .ticket {
      position: relative;
      @for $i from 1 through 6 {
        &:nth-of-type(#{$i}) {
          z-index: #{8 - $i};
          .inner {
            &:before {
              transition: 0.5s cubic-bezier(0.5, 0.15, 0.35, 1);
              transition-delay: #{(6 - $i) / 10}s;
              opacity: 0;
            }
            > div {
              transition-delay: #{(6 - $i) / 10}s;
              &:before,
              &:after {
                transition-delay: #{0.15 + (6 - $i)/10}s;
              }
            }
          }
        }
      }
      .inner {
        position: absolute;
        height: 100%;
        width: 100%;
        left: 0;
        top: 0;
        padding: 1rem;
        clip-path: polygon(-10% -10%, 110% -10%, 110% 110%, -10% 110%);
        transform-style: preserve-3d;
        perspective: 900px;
        &:before {
          content: "";
          position: absolute;
          width: 90%;
          height: 90%;
          top: 10%;
          left: 5%;
          background: rgba(0, 0, 0, 0.25);
          filter: blur(15px);
        }
        &.class1 {
          .details {
            grid-row: 1 / span 1;
          }
        }
        &.class2 {
          .seat {
            grid-row: 3 / span 1;
          }
        }
        &.class2,
        &.class3 {
          .band {
            background: radial-gradient(
                circle at center,
                #e5f4d1 35%,
                transparent 35%,
                var(--color1) 75%
              ),
              radial-gradient(
                  circle at center,
                  #e5f4d1 2px,
                  var(--color1) 1px,
                  var(--color1) 5px
                )
                50% 50% / 8px 8px repeat;
          }
        }
        &.class3 {
          .band {
            text-transform: uppercase;
          }
        }
        &.class5,
        &.class6 {
          > div {
            grid-template-columns: calc(33% - 0.125rem) calc(33% - 0.125rem) calc(
                33% - 0.125rem
              );
            > div {
              grid-column: span 3;

              &.band {
                strong {
                  span.word {
                    display: inline-block;
                    margin: 0 0.15vw;
                  }
                }
              }
              &.band,
              &.location {
                grid-column: 1 / span 2;
                grid-row: span 6;
                position: relative;
                strong {
                  width: 200%;
                  left: -50%;
                  height: 50%;
                  top: 25%;
                  position: absolute;
                  padding: 0 1rem;
                  transform: rotate(90deg);
                  word-break: break-word;
                }
              }
              &.location {
                grid-column: 3 / span 1;
                strong {
                  width: 400%;
                  height: 12.5%;
                  top: 45%;
                  left: -150%;
                  @include flex-center();
                  @include text-stroke(1, #e5f4d1);
                  &:before {
                    content: "";
                    position: absolute;
                    width: 90%;
                    left: 5%;
                    top: -5%;
                    height: 110%;
                    background: var(--color1);
                    -webkit-mask: $noise;
                    opacity: 0.75;
                  }
                  span {
                    display: block;
                    width: 100%;
                    font-size: clamp(10px, 1vw, 1vw);
                    &:first-of-type {
                      font-size: clamp(12px, 1.35vw, 1.35vw);
                      @include text-stroke(1, #e5f4d1);
                    }
                  }
                }
              }
            }
          }
        }
        &.class7 {
          .band {
            background: radial-gradient(
                circle at center,
                #e5f4d1 35%,
                transparent 35%,
                var(--color1) 75%
              ),
              repeating-linear-gradient(
                var(--rotate),
                #e5f4d1 2px,
                var(--color1) 2px,
                var(--color1) 10px,
                #e5f4d1 10px,
                #e5f4d1 12px
              );
          }
        }
        &.class9 {
          .band {
            strong {
              span.word {
                transform: skew(5deg);
              }
            }
          }
        }
        &.class10,
        &.class11 {
          .band {
            background: radial-gradient(
                circle at center,
                #e5f4d1 35%,
                transparent 35%,
                var(--color1) 75%
              ),
              repeating-linear-gradient(
                var(--rotate),
                #e5f4d1 2px,
                var(--color1) 2px,
                var(--color1) 10px,
                #e5f4d1 10px,
                #e5f4d1 12px
              );
          }
        }
        > div {
          display: grid;
          grid-template-columns: calc(100% - 0.25rem);
          grid-template-rows: repeat(10, 1fr);
          justify-content: center;
          height: 100%;
          background: var(--dark);
          grid-gap: 0.125rem;
          padding: 0.125rem 0;
          position: relative;
          transition: 0.5s cubic-bezier(0.5, 0.15, 0.35, 1);
          transform-style: preserve-3d;
          transform: rotateY(180deg);
          &:before,
          &:after {
            transform-style: preserve-3d;
            content: "";
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            z-index: 2;
            box-shadow: inset -200px 0px 100px 100px rgba(0, 0, 0, 0.25),
              inset 0 0 3rem -2rem var(--dark), inset 0 0 0 0.5rem var(--color1);
            transition: box-shadow 0.5s cubic-bezier(0.5, 0.15, 0.35, 1);
          }
          &:before {
            background: #e5f4d1;
            -webkit-mask: $noise;
            opacity: 0.5;
            width: calc(100% + 0.5vw);
            height: calc(100% + 0.5vw);
            left: -0.25vw;
            top: -0.25vw;
            backface-visibility: hidden;
          }
          &:after {
            transform: rotateY(-180deg) translateZ(0.05px);
            background: lighten(#e5f4d1, 5%);
            box-shadow: inset 100px 0px 100px -200px rgba(0, 0, 0, 0.15),
              inset 0 0 6rem -6rem var(--dark), inset 0 0 0 0.5rem lighten(#e5f4d1, 5%);
          }
          > div {
            box-sizing: border-box;
            background: var(--color1);
            box-shadow: inherit;
            line-height: 1;
            grid-row: span 1;
            text-align: center;
            @include flex-center();
          }
        }
        .date {
          text-transform: uppercase;
          grid-row: span 2;
          @include flex-center();
          padding: 0.75vw 0;
          background: #e5f4d1;
          span {
            display: block;
            font-size: clamp(10px, 1vw, 1vw);
            width: 100%;
          }
          > span:nth-of-type(2) {
            font-size: clamp(16px, 2vw, 2vw);
            font-family: var(--font2);
          }
        }
        .band {
          grid-row: span 5;
          position: relative;
          font-family: var(--font1);
          overflow: hidden;
          background: radial-gradient(
              circle at center,
              #e5f4d1 37.5%,
              transparent 35%,
              var(--color1) 90%
            ),
            repeating-radial-gradient(
              circle at center,
              transparent 0px,
              #e5f4d1 0px,
              #e5f4d1 2px,
              var(--color1) 2px,
              var(--color1) 10px
            );
          strong {
            @include flex-center();
            position: absolute;
            width: 102.5%;
            height: 75%;
            left: -1.25%;
            top: 12.5%;
            padding: 0 0.5rem;
            transform: rotate(90deg);
            font-size: clamp(20px, 2.35vw, 2.35vw);
            word-break: break-word;
            line-height: 0.95;
            --words: var(--word-total);
            letter-spacing: 0.15rem;
            transform: scale(calc(1 + (var(--word-total) / 20)));
            > span.word {
              display: inline-block;
            }
            > span > span.word {
              display: block;
              @include text-stroke(1, #e5f4d1);
              font-size: clamp(
                18px,
                calc(7vw - (((var(--char-total) * 1) * (var(--words) / 1.5)) * 0.35vw)),
                2.75vw
              );
            }
          }
        }
        .details {
          display: flex;
          align-items: stretch;
          strong {
            width: 100%;
            display: flex;
            span {
              width: 50%;
              box-shadow: inset 0.05vw 0 0 var(--dark), inset -0.05vw 0 0 var(--dark);
              @include flex-center();
            }
          }
        }
        .location {
          strong span {
            font-size: 1vw;
            display: block;
            font-weight: 200;
            line-height: 1.25;
            &:first-of-type {
              font-size: clamp(8px, 1.25vw, 1.25vw);
              font-weight: 900;
            }
          }
        }
        .seat {
          display: flex;
          justify-content: space-between;
          background: #e5f4d1;
          strong {
            font-size: clamp(8px, 1.25vw, 1.25vw);
            display: flex;
            justify-content: center;
            align-items: center;
            flex-wrap: wrap;
            width: 33.33%;
            padding: 0.5rem;
            &:nth-of-type(2) {
              box-shadow: 0.075rem 0 0 var(--dark), -0.075rem 0 0 var(--dark),
                inset 0.075rem 0 0 var(--dark), inset -0.075rem 0 0 var(--dark);
            }
            > span {
              display: block;
              margin: 0.25rem 0 0;
              width: 100%;
              font-size: clamp(16px, 2vw, 2vw);
              text-transform: uppercase;
              font-family: "Dot", cursive;
              font-weight: 100;
              color: var(--color2);
            }
          }
        }
      }
      &:nth-of-type(1) {
        grid-area: 3 / 1 / 7 / 3;
        .inner {
          transform-origin: 0% 0%;
          transform: rotate(-90deg);
        }
      }
      &:nth-of-type(2) {
        grid-area: 3 / 1 / 7 / 3;
      }
      &:nth-of-type(3) {
        grid-area: 3 / 3 / 7 / 5;
      }
      &:nth-of-type(4) {
        grid-area: 1 / 5 / 5 / 7;
      }
      &:nth-of-type(5) {
        grid-area: 1 / 7 / 5 / 9;
      }
      &:nth-of-type(6) {
        grid-area: 1 / 5 / 5 / 7;
        .inner {
          transform-origin: 0% 100%;
          transform: rotate(90deg);
        }
      }
    }
  }
}
View Compiled
const bands = [];
const cities = [];
const venues = [];
const row = "abcdefghijklmnopqrstuvwxyz";

let days = [
  "Sunday",
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday"
];
let months = [
  "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"
];

function randomDate(start, end) {
  return new Date(
    start.getTime() + Math.random() * (end.getTime() - start.getTime())
  );
}

$(document).ready(function () {
  var lastFM =
    "https://ws.audioscrobbler.com/2.0/?api_key=5908c0487c4b5f26281c158dd83b59d6&format=json&method=user.getTopArtists&user=adamkuhn&period=overall&limit=200";
  var cityData =
    "https://random-data-api.com/api/address/random_address?size=50";
  $.getJSON(cityData, function (data) {
    $.each(data, function (i, item) {
      venues.push(data[i].community + " Theater");
      cities.push(data[i].city + ", " + data[i].state);
    });
    $.getJSON(lastFM, function (data) {
      $.each(data.topartists.artist, function (i, item) {
        bands.push(data.topartists.artist[i].name);
      });
      createTicket();
      $("body").addClass("loaded");
    });
  });
});

$(document).click(function () {
  createTicket();
});

function createTicket() {
  $("body").removeClass("active");
  setTimeout(() => {
    $(".ticket").each(function () {
      $(this).find(".inner").remove();
      let randBand = Math.floor(Math.random() * bands.length);
      let randCity = Math.floor(Math.random() * cities.length);
      let randVenue = Math.floor(Math.random() * venues.length);
      let randDate = randomDate(new Date(2021, 0, 1), new Date());
      $(this)
        .get(0)
        .style.setProperty(
          "--font1",
          "var(--font" + Math.floor(Math.random() * (7 - 1) + 4) + ")"
        );
      $(this)
        .get(0)
        .style.setProperty(
          "--font2",
          "var(--font" + Math.floor(Math.random() * (7 - 1) + 4) + ")"
        );
      $(this)
        .get(0)
        .style.setProperty(
          "--color1",
          "var(--color" + Math.floor(Math.random() * (6 - 1) + 3) + ")"
        );
      $(this)
        .get(0)
        .style.setProperty(
          "--rotate",
          Math.floor(Math.random() * (5 - 1) + 1) * 45 + "deg"
        );
      $(this).append(
        "<div class='inner class" +
          Math.floor(Math.random() * (8 - 1) + 1) +
          " class" +
          Math.floor(Math.random() * (8 - 1) + 7) +
          "'><div><div class='date'><span>" +
          days[randDate.getDay()] +
          "</span><span>" +
          months[randDate.getMonth()] +
          " " +
          randDate.getDate() +
          "</span><span>" +
          Math.floor(Math.random() * (12 - 1) + 1) +
          ":00 PM</span></div><div class='band'><strong data-splitting='words'><span>" +
          bands[randBand] +
          "</span></strong></div><div class='location'><strong><span>" +
          venues[randVenue] +
          "</span><span>" +
          cities[randCity] +
          "</span></strong></div><div class='seat'><strong>Section<span>" +
          Math.floor(Math.random() * (40 - 1) + 1) +
          "</span></strong><strong>Row<span>" +
          row[Math.floor(Math.random() * row.length)] +
          "</span></strong><strong>Seat<span>" +
          Math.floor(Math.random() * (40 - 1) + 1) +
          "</span></strong></div><div class='details'><strong><span>$" +
          Math.floor(Math.random() * (20 - 5) + 5) +
          ".00</span><span>All Ages</span></strong></div></div></div>"
      );
    });
    Splitting();
    $("span.word").attr("data-splitting", "chars");
    Splitting();
  }, 1000);
  setTimeout(() => {
    $("body").addClass("active");
  }, 1500);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
  2. https://unpkg.com/splitting@1.0.5/dist/splitting.min.js