#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