html.cards main {
	view-transition-name: main;
}
html.cards::view-transition-old(main) {
	animation: 400ms ease scale-down both;
	mix-blend-mode: normal;
	z-index: 1;
}
html.cards::view-transition-new(main) {
	animation: 400ms cubic-bezier(0.2, 0, 0.2, 1) slide-up both;
	box-shadow: 0 -10px 40px rgba(0,0,0,0.5);
	mix-blend-mode: normal;
	z-index: 2;
}
html.cards.back::view-transition-old(main) {
	animation: 400ms cubic-bezier(0.2, 0, 0.2, 1) slide-down both;
	box-shadow: 0 -10px 40px rgba(0,0,0,0.5);
	z-index: 2;
}
html.cards.back::view-transition-new(main) {
	animation: 400ms ease scale-up both;
	z-index: 1;
}
html.cube main {
	view-transition-name: main;
}
html.cube::view-transition-group(main) {
	perspective: 1500px;
}
html.cube::view-transition-old(main) {
	mix-blend-mode: normal;
	backface-visibility: hidden;
	z-index: 1;
	animation: 500ms ease-in-out cube-out both;
	transform-origin: 100% 50%;
}
html.cube::view-transition-new(main) {
	mix-blend-mode: normal;
	backface-visibility: hidden;
	z-index: 2;
	animation: 500ms ease-in-out cube-in both;
	transform-origin: 0% 50%;
}
html.cube.back::view-transition-old(main) {
	z-index: 2;
	animation: 500ms ease-in-out cube-out-rev both;
	transform-origin: 0% 50%;
}
html.cube.back::view-transition-new(main) {
	z-index: 1;
	animation: 500ms ease-in-out cube-in-rev both;
	transform-origin: 100% 50%;
}
html.curtain main {
	view-transition-name: main;
}
html.curtain::view-transition-old(main) {
	animation: 250ms ease-in curtain-out both;
}
html.curtain::view-transition-new(main) {
	animation: 250ms ease-in curtain-in both;
}
html.curtain.back::view-transition-old(main) {
	animation: 250ms ease-in curtain-out-reverse both;
}
html.curtain.back::view-transition-new(main) {
	animation: 250ms ease-in curtain-in-reverse both;
}
html.diagonal main {
	view-transition-name: main;
}
html.diagonal.forward::view-transition-old(main) {
	animation: 333ms linear wipe-out both;
}
html.diagonal.forward::view-transition-new(main) {
	animation: 333ms linear wipe-in both;
}
html.diagonal.back::view-transition-old(main) {
	animation: 333ms linear wipe-out-reverse both;
}
html.diagonal.back::view-transition-new(main) {
	animation: 333ms linear wipe-in-reverse both;
}
::view-transition-group(root) {
	background: black;
	background: black;
	background: black;
	background: black;
}
html.diamond main {
	view-transition-name: main;
}
html.diamond::view-transition-old(main) {
	animation: 260ms ease diamond-out both;
}
html.diamond::view-transition-new(main) {
	animation: 260ms ease 60ms diamond-in both;
}
html.diamond.back::view-transition-old(main) {
	animation: 260ms ease diamond-out-reverse both;
}
html.diamond.back::view-transition-new(main) {
	animation: 260ms ease 60ms diamond-in-reverse both;
}
html.diaphragm main {
	view-transition-name: main;
}
html.diaphragm::view-transition-old(main) {
	animation: 200ms linear iris-close both;
	z-index: 2;
}
html.diaphragm::view-transition-new(main) {
	animation: 200ms linear 200ms iris-open both;
	z-index: 1;
}
html.drop main {
	view-transition-name: main;
}
html.drop::view-transition-old(main) {
	animation: 250ms ease drop-out both;
}
html.drop::view-transition-new(main) {
	animation: 250ms ease drop-in both;
}
html.drop.back::view-transition-old(main) {
	animation: 250ms ease drop-out-reverse both;
}
html.drop.back::view-transition-new(main) {
	animation: 250ms ease drop-in-reverse both;
}
html.flip main {
	view-transition-name: main;
}
html.flip::view-transition-old(main) {
	animation: 250ms ease-in-out flip-out both;
}
html.flip::view-transition-new(main) {
	animation: 250ms ease-in-out flip-in both;
}
html.flip.back::view-transition-old(main) {
	animation: 250ms ease-in-out flip-out-reverse both;
}
html.flip.back::view-transition-new(main) {
	animation: 250ms ease-in-out flip-in-reverse both;
}
html.glide main {
	view-transition-name: main;
}
html.glide::view-transition-old(main) {
	animation: 250ms ease-out glide-out both;
}
html.glide::view-transition-new(main) {
	animation: 250ms ease-out glide-in both;
}
html.glide.back::view-transition-old(main) {
	animation: 250ms ease-out glide-out-reverse both;
}
html.glide.back::view-transition-new(main) {
	animation: 250ms ease-out glide-in-reverse both;
}
html.glitch main {
	view-transition-name: main;
}
html.glitch::view-transition-old(main) {
	animation: 300ms linear glitch-out both;
}
html.glitch::view-transition-new(main) {
	animation: 300ms linear glitch-in both;
}
html.ripple main {
	view-transition-name: main;
}
html.ripple::view-transition-old(main) {
	animation: 250ms ease ripple-out both;
}
html.ripple::view-transition-new(main) {
	animation: 250ms ease ripple-in both;
}
html.ripple.back::view-transition-old(main) {
	animation: 250ms ease ripple-out-reverse both;
}
html.ripple.back::view-transition-new(main) {
	animation: 250ms ease ripple-in-reverse both;
}
html.skew main {
	view-transition-name: main;
}
html.skew::view-transition-old(main) {
	animation: 250ms ease-in skew-out both;
}
html.skew::view-transition-new(main) {
	animation: 250ms ease-in skew-in both;
}
html.skew.back::view-transition-old(main) {
	animation: 250ms ease-in skew-out-reverse both;
}
html.skew.back::view-transition-new(main) {
	animation: 250ms ease-in skew-in-reverse both;
}
html.slide main {
	view-transition-name: main;
}
html.slide::view-transition-old(main) {
	animation: 250ms ease-in-out fade-slide-out both;
}
html.slide::view-transition-new(main) {
	animation: 250ms ease-in-out fade-slide-in both;
}
html.slide.back::view-transition-old(main) {
	animation: 250ms ease-in-out fade-slide-out-reverse both;
}
html.slide.back::view-transition-new(main) {
	animation: 250ms ease-in-out fade-slide-in-reverse both;
}
html.spiral main {
	view-transition-name: main;
}
html.spiral::view-transition-old(main) {
	animation: 400ms ease-in spiral-out both;
	z-index: 2;
}
html.spiral::view-transition-new(main) {
	animation: 400ms ease-out spiral-in both;
	z-index: 1;
}
html.spiral.back::view-transition-old(main) {
	animation: 400ms ease-in spiral-out-reverse both;
}
html.spiral.back::view-transition-new(main) {
	animation: 400ms ease-out spiral-in-reverse both;
}
html.spotlight main {
	view-transition-name: main;
}
html.spotlight::view-transition-old(main) {
	animation: 220ms ease spotlight-out both;
}
html.spotlight::view-transition-new(main) {
	animation: 220ms ease 80ms spotlight-in both;
}
html.tilt main {
	view-transition-name: main;
}
html.tilt::view-transition-old(main) {
	animation: 250ms ease-in tilt-out both;
}
html.tilt::view-transition-new(main) {
	animation: 250ms ease-in tilt-in both;
}
html.tilt.back::view-transition-old(main) {
	animation: 250ms ease-in tilt-out-reverse both;
}
html.tilt.back::view-transition-new(main) {
	animation: 250ms ease-in tilt-in-reverse both;
}
html.tv main {
	view-transition-name: main;
}
html.tv::view-transition-old(main) {
	animation: 300ms cubic-bezier(1, 0, 0, 1) tv-out both;
}
html.tv::view-transition-new(main) {
	animation: 300ms cubic-bezier(1, 0, 0, 1) tv-in both;
}
html.wipe main {
	view-transition-name: main;
}
html.wipe::view-transition-old(main) {
	animation: 250ms ease-out wipe-out both;
}
html.wipe::view-transition-new(main) {
	animation: 250ms ease-out wipe-in both;
}
html.wipe.back::view-transition-old(main) {
	animation: 250ms ease-out wipe-out-reverse both;
}
html.wipe.back::view-transition-new(main) {
	animation: 250ms ease-out wipe-in-reverse both;
}
html.zoom main {
	view-transition-name: main;
}
html.zoom.forward::view-transition-old(main) {
	animation: 260ms cubic-bezier(.25,1,.5,1) zoom-out both;
}
html.zoom.forward::view-transition-new(main) {
	animation: 260ms cubic-bezier(.25,1,.5,1) zoom-in both;
}
html.zoom.back::view-transition-old(main) {
	animation: 260ms cubic-bezier(.25,1,.5,1) zoom-out-reverse both;
}
html.zoom.back::view-transition-new(main) {
	animation: 260ms cubic-bezier(.25,1,.5,1) zoom-in-reverse both;
}
:root {
	--bg: #111318;
	--panel: #1a1d24;
	--line: #2a2f3a;
	--text: #e4e7ee;
	--dim: #8b93a5;
	--accent: #7cc4ff;
	--good: #8be3a8;
	--warn: #ffb36b;
	--bad: #ff8f8f;
}
html {
	color-scheme: dark;
}
body {
	margin: 0;
	min-height: 100dvh;
	background: var(--bg);
	color: var(--text);
	font: 16px/1.5 system-ui, sans-serif;
}
a {
	color: var(--accent);
}
button {
	padding: 6px 12px;
	border: 1px solid var(--line);
	border-radius: 6px;
	background: var(--panel);
	color: var(--text);
	font: inherit;
	cursor: pointer;
}
button:hover {
	border-color: var(--accent);
}
code {
	padding: 1px 5px;
	border-radius: 4px;
	background: var(--panel);
	font-size: 14px;
}
header.bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 20px;
	padding: 12px 20px;
	border-bottom: 1px solid var(--line);
}
header.bar nav {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}
header.bar nav a {
	padding: 4px 10px;
	border-radius: 6px;
	color: var(--text);
	text-decoration: none;
}
header.bar nav a:hover {
	background: var(--panel);
}
header.bar nav a.on {
	background: var(--line);
}
.brand {
	color: var(--text);
	font-weight: 700;
	text-decoration: none;
}
.slow {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-left: auto;
	color: var(--dim);
	font-size: 14px;
}
#support {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 8px 20px;
	font-size: 12px;
}
#support span {
	padding: 2px 8px;
	border-radius: 10px;
	background: var(--panel);
	color: var(--bad);
}
#support span.yes {
	color: var(--good);
}
main {
	display: block;
	max-width: 960px;
	margin: 0 auto;
	padding: 24px 20px 45vh;
}
h1 {
	margin: 0 0 8px;
}
h2 {
	margin: 32px 0 8px;
}
.lead {
	color: var(--dim);
}
.note {
	color: var(--dim);
	font-size: 14px;
}
.diff li {
	margin: 4px 0;
}
.cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 12px;
	margin: 20px 0;
}
.card {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 14px 16px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: var(--panel);
	color: var(--text);
	text-decoration: none;
}
.card:hover {
	border-color: var(--accent);
}
.card span {
	color: var(--dim);
	font-size: 14px;
}
.board h1 {
	color: hsl(var(--hue) 80% 72%);
}
.board small {
	color: var(--dim);
	font-size: 60%;
}
.targets {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	max-width: 520px;
	margin-top: 20px;
}
.target {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	border-radius: 12px;
	background: linear-gradient(135deg, hsl(var(--hue) 70% 42%), hsl(calc(var(--hue) + 50) 70% 28%));
	color: #fff;
	font-size: 28px;
	font-weight: 700;
	text-decoration: none;
}
#log {
	position: fixed;
	right: 12px;
	bottom: 12px;
	display: flex;
	flex-direction: column;
	width: min(380px, calc(100vw - 24px));
	max-height: 38vh;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: rgba(17, 19, 24, .95);
	font: 12px/1.4 ui-monospace, monospace;
	view-transition-name: log;
}
#log header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 6px 10px;
	border-bottom: 1px solid var(--line);
}
#log button {
	padding: 2px 8px;
	font-size: 12px;
}
#log ol {
	margin: 0;
	padding: 4px 10px;
	overflow: auto;
	list-style: none;
}
#log li {
	padding: 3px 0;
	border-bottom: 1px solid var(--line);
}
#log .done {
	color: var(--good);
}
#log .skip {
	color: var(--warn);
}
#log .fail {
	color: var(--bad);
}
html.circle::view-transition-old(root) {
	animation: none;
	mix-blend-mode: normal;
}
html.circle::view-transition-new(root) {
	animation: 600ms ease-in circle-grow both;
	mix-blend-mode: normal;
}
.tiles {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: 10px;
	margin-top: 20px;
}
.tile {
	display: flex;
	align-items: end;
	height: 90px;
	padding: 10px;
	border-radius: 10px;
	background: linear-gradient(135deg, hsl(var(--hue) 70% 45%), hsl(calc(var(--hue) + 40) 70% 28%));
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	text-transform: capitalize;
}
.scene h1 {
	color: hsl(var(--hue) 80% 72%);
	font-size: 56px;
	text-transform: capitalize;
}
.crumb {
	display: flex;
	gap: 12px;
	color: var(--dim);
}
.sample {
	display: grid;
	grid-template-columns: 2fr 1fr;
	gap: 12px;
	margin-top: 20px;
}
.panel {
	padding: 16px;
	border-radius: 12px;
	background: linear-gradient(135deg, hsl(var(--hue) 60% 30%), hsl(calc(var(--hue) + 60) 60% 18%));
}
.swatches {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
}
.swatches i {
	border-radius: 8px;
	background: hsl(var(--hue) 70% 50%);
}
.swatches i:nth-child(2) {
	background: hsl(calc(var(--hue) + 30) 70% 50%);
}
.swatches i:nth-child(3) {
	background: hsl(calc(var(--hue) + 60) 70% 50%);
}
.swatches i:nth-child(4) {
	background: hsl(calc(var(--hue) + 90) 70% 50%);
}
.pager {
	display: flex;
	justify-content: space-between;
	margin-top: 24px;
}
.pager a {
	padding: 8px 14px;
	border: 1px solid var(--line);
	border-radius: 8px;
	text-decoration: none;
	text-transform: capitalize;
}
html.lab #stage {
	view-transition-name: stage;
}
html.lab::view-transition-old(stage) {
	animation: 300ms ease both lab-out;
}
html.lab::view-transition-new(stage) {
	animation: 300ms ease both lab-in;
}
html.dup .twin {
	view-transition-name: twin;
}
.experiments {
	display: grid;
	gap: 10px;
	margin: 20px 0;
	padding: 0;
	list-style: none;
}
.experiments li {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 12px;
	align-items: start;
}
.experiments span {
	color: var(--dim);
	font-size: 14px;
}
.stagebox {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 20px;
	border-radius: 12px;
	background: hsl(var(--hue, 210) 50% 26%);
}
.stagebox strong {
	font-size: 22px;
}
.stagebox p {
	margin: 0;
	color: var(--dim);
}
html.wave::view-transition-old(root) {
	animation: none;
	mix-blend-mode: normal;
}
html.wave::view-transition-new(root) {
	animation: none;
	mix-blend-mode: normal;
}
html.active::view-transition-old(root) {
	animation: none;
	mix-blend-mode: normal;
}
html.active::view-transition-new(root) {
	animation: none;
	mix-blend-mode: normal;
}
html.shuffle::view-transition-group(*) {
	animation-duration: 450ms;
}
.links {
	display: flex;
	gap: 16px;
}
#list {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 10px;
	max-width: 640px;
	margin: 20px 0;
	padding: 0;
	list-style: none;
}
#list li {
	padding: 18px 12px;
	border-radius: 10px;
	background: hsl(var(--hue) 60% 35%);
	text-align: center;
	font-weight: 600;
}
html.hero-1 :is(#card-1,
#hero-1) {
	view-transition-name: hero;
}
html.hero-2 :is(#card-2,
#hero-2) {
	view-transition-name: hero;
}
html.hero-3 :is(#card-3,
#hero-3) {
	view-transition-name: hero;
}
html.hero-4 :is(#card-4,
#hero-4) {
	view-transition-name: hero;
}
html.hero-5 :is(#card-5,
#hero-5) {
	view-transition-name: hero;
}
html.hero-6 :is(#card-6,
#hero-6) {
	view-transition-name: hero;
}
html.shared::view-transition-group(hero) {
	animation-duration: 450ms;
	animation-timing-function: cubic-bezier(.2, 0, .2, 1);
}
.deck {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: 12px;
	margin-top: 20px;
}
.deckcard {
	position: relative;
	display: flex;
	align-items: end;
	height: 120px;
	padding: 12px;
	border-radius: 14px;
	background: hsl(var(--hue) 65% 45%);
	color: #fff;
	font-weight: 700;
	text-decoration: none;
}
.deckcard[style*="view-transition-name"]::after {
	content: 'named hero';
	position: absolute;
	top: 8px;
	right: 8px;
	padding: 1px 6px;
	border-radius: 6px;
	background: rgba(0, 0, 0, .5);
	font-size: 11px;
	font-weight: 400;
}
.hero {
	display: flex;
	align-items: end;
	height: 280px;
	padding: 24px;
	border-radius: 20px;
	background: hsl(var(--hue) 65% 45%);
	color: #fff;
	font-size: 40px;
}
@keyframes slide-up{
	0% {
		transform: translateY(100%);
	}
	100% {
		transform: translateY(0);
	}
}
@keyframes slide-down{
	0% {
		transform: translateY(0);
		opacity: 1;
	}
	100% {
		transform: translateY(100%);
		opacity: 0;
	}
}
@keyframes scale-down{
	0% {
		transform: scale(1);
		filter: brightness(1);
		opacity: 1;
	}
	100% {
		transform: scale(0.95);
		filter: brightness(0.7);
		opacity: 0;
	}
}
@keyframes scale-up{
	0% {
		transform: scale(0.95);
		filter: brightness(0.7);
		opacity: 0;
	}
	100% {
		transform: scale(1);
		filter: brightness(1);
		opacity: 1;
	}
}
@keyframes cube-out{
	0% {
		transform: rotateY(0deg) translateZ(0);
		opacity: 1;
	}
	100% {
		transform: rotateY(-90deg) translateZ(0);
		opacity: 0;
	}
}
@keyframes cube-in{
	0% {
		transform: rotateY(90deg) translateZ(0);
		opacity: 0;
	}
	100% {
		transform: rotateY(0deg) translateZ(0);
		opacity: 1;
	}
}
@keyframes cube-out-rev{
	0% {
		transform: rotateY(0deg) translateZ(0);
		opacity: 1;
	}
	100% {
		transform: rotateY(90deg) translateZ(0);
		opacity: 0;
	}
}
@keyframes cube-in-rev{
	0% {
		transform: rotateY(-90deg) translateZ(0);
		opacity: 0;
	}
	100% {
		transform: rotateY(0deg) translateZ(0);
		opacity: 1;
	}
}
@keyframes curtain-out{
	0% {
		opacity: 1;
		transform: scaleY(1);
		transform-origin: top;
	}
	100% {
		opacity: 0;
		transform: scaleY(0);
		transform-origin: top;
	}
}
@keyframes curtain-in{
	0% {
		opacity: 0;
		transform: scaleY(0);
		transform-origin: bottom;
	}
	100% {
		opacity: 1;
		transform: scaleY(1);
		transform-origin: bottom;
	}
}
@keyframes curtain-out-reverse{
	0% {
		opacity: 1;
		transform: scaleY(1);
		transform-origin: bottom;
	}
	100% {
		opacity: 0;
		transform: scaleY(0);
		transform-origin: bottom;
	}
}
@keyframes curtain-in-reverse{
	0% {
		opacity: 0;
		transform: scaleY(0);
		transform-origin: top;
	}
	100% {
		opacity: 1;
		transform: scaleY(1);
		transform-origin: top;
	}
}
@keyframes wipe-out{
	0% {
		clip-path: polygon(-10% 0%, 110% 0%, 100% 100%, -20% 100%);
		clip-path: inset(0% 0% 0% 0%);
		opacity: 1;
	}
	100% {
		clip-path: polygon(110% 0%, 120% 0%, 110% 100%, 100% 100%);
		clip-path: inset(0% 0% 0% 100%);
		opacity: 0;
	}
	60% {
		clip-path: inset(0% 0% 0% 60%);
		opacity: .3;
	}
}
@keyframes wipe-in{
	0% {
		clip-path: polygon(-20% 0%, -10% 0%, -20% 100%, -30% 100%);
		clip-path: inset(0% 100% 0% 0%);
		opacity: 0;
	}
	100% {
		clip-path: polygon(-10% 0%, 110% 0%, 100% 100%, -20% 100%);
		clip-path: inset(0% 0% 0% 0%);
		opacity: 1;
	}
	40% {
		clip-path: inset(0% 40% 0% 0%);
		opacity: .9;
	}
}
@keyframes wipe-out-reverse{
	0% {
		clip-path: polygon(-10% 0%, 110% 0%, 120% 100%, 0% 100%);
		clip-path: inset(0% 0% 0% 0%);
		opacity: 1;
	}
	100% {
		clip-path: polygon(-20% 0%, -10% 0%, 0% 100%, -10% 100%);
		clip-path: inset(0% 100% 0% 0%);
		opacity: 0;
	}
	60% {
		clip-path: inset(0% 60% 0% 0%);
		opacity: .3;
	}
}
@keyframes wipe-in-reverse{
	0% {
		clip-path: polygon(110% 0%, 120% 0%, 130% 100%, 120% 100%);
		clip-path: inset(0% 0% 0% 100%);
		opacity: 0;
	}
	100% {
		clip-path: polygon(-10% 0%, 110% 0%, 120% 100%, 0% 100%);
		clip-path: inset(0% 0% 0% 0%);
		opacity: 1;
	}
	40% {
		clip-path: inset(0% 0% 0% 40%);
		opacity: .9;
	}
}
@keyframes diamond-out{
	0% {
		clip-path: polygon(50% -50%,150% 50%,50% 150%,-50% 50%);
	}
	100% {
		clip-path: polygon(50% 50%,50% 50%,50% 50%,50% 50%);
	}
}
@keyframes diamond-in{
	0% {
		clip-path: polygon(50% 50%,50% 50%,50% 50%,50% 50%);
	}
	100% {
		clip-path: polygon(50% -50%,150% 50%,50% 150%,-50% 50%);
	}
}
@keyframes diamond-out-reverse{
	0% {
		clip-path: polygon(50% -50%,150% 50%,50% 150%,-50% 50%);
	}
	100% {
		clip-path: polygon(50% 50%,50% 50%,50% 50%,50% 50%);
	}
}
@keyframes diamond-in-reverse{
	0% {
		clip-path: polygon(50% 50%,50% 50%,50% 50%,50% 50%);
	}
	100% {
		clip-path: polygon(50% -50%,150% 50%,50% 150%,-50% 50%);
	}
}
@keyframes iris-close{
	0% {
		clip-path: circle(90% at 50% 50%);
	}
	100% {
		clip-path: circle(0% at 50% 50%);
	}
}
@keyframes iris-open{
	0% {
		clip-path: circle(0% at 50% 50%);
	}
	100% {
		clip-path: circle(90% at 50% 50%);
	}
}
@keyframes drop-out{
	0% {
		opacity: 1;
		transform: translateY(0);
	}
	100% {
		opacity: 0;
		transform: translateY(50px);
	}
}
@keyframes drop-in{
	0% {
		opacity: 0;
		transform: translateY(-50px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes drop-out-reverse{
	0% {
		opacity: 1;
		transform: translateY(0);
	}
	100% {
		opacity: 0;
		transform: translateY(-50px);
	}
}
@keyframes drop-in-reverse{
	0% {
		opacity: 0;
		transform: translateY(50px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes flip-out{
	0% {
		transform: perspective(1600px) rotateY(0deg);
		opacity: 1;
	}
	49.9% {
		opacity: 1;
	}
	50% {
		opacity: 0;
	}
	100% {
		transform: perspective(1600px) rotateY(180deg);
		opacity: 0;
	}
}
@keyframes flip-in{
	0% {
		transform: perspective(1600px) rotateY(-180deg);
		opacity: 0;
	}
	50% {
		opacity: 0;
	}
	50.1% {
		opacity: 1;
	}
	100% {
		transform: perspective(1600px) rotateY(0deg);
		opacity: 1;
	}
}
@keyframes flip-out-reverse{
	0% {
		transform: perspective(1600px) rotateY(0deg);
		opacity: 1;
	}
	49.9% {
		opacity: 1;
	}
	50% {
		opacity: 0;
	}
	100% {
		transform: perspective(1600px) rotateY(-180deg);
		opacity: 0;
	}
}
@keyframes flip-in-reverse{
	0% {
		transform: perspective(1600px) rotateY(180deg);
		opacity: 0;
	}
	50% {
		opacity: 0;
	}
	50.1% {
		opacity: 1;
	}
	100% {
		transform: perspective(1600px) rotateY(0deg);
		opacity: 1;
	}
}
@keyframes glide-out{
	0% {
		opacity: 1;
		transform: translateX(0);
	}
	100% {
		opacity: 0;
		transform: translateX(100dvw);
	}
}
@keyframes glide-in{
	0% {
		transform: translateX(-100dvw);
	}
	100% {
		transform: translateX(0);
	}
}
@keyframes glide-out-reverse{
	0% {
		opacity: 1;
		transform: translateX(0);
	}
	100% {
		opacity: 0;
		transform: translateX(-100dvw);
	}
}
@keyframes glide-in-reverse{
	0% {
		transform: translateX(100dvw);
	}
	100% {
		transform: translateX(0);
	}
}
@keyframes glitch-out{
	0% {
		clip-path: inset(0 0 0 0);
		transform: translate(0);
	}
	20% {
		clip-path: inset(20% 0 80% 0);
		transform: translate(-5px, 5px);
	}
	40% {
		clip-path: inset(80% 0 5% 0);
		transform: translate(5px, -5px);
	}
	60% {
		clip-path: inset(10% 0 60% 0);
		transform: translate(-5px, 0);
	}
	80% {
		clip-path: inset(50% 0 20% 0);
		transform: translate(5px, 5px);
	}
	100% {
		clip-path: inset(50% 50% 50% 50%);
		transform: translate(0);
		opacity: 0;
	}
}
@keyframes glitch-in{
	0% {
		clip-path: inset(100% 0 0 0);
		transform: translate(10px, 0);
		opacity: 0;
	}
	20% {
		clip-path: inset(10% 0 60% 0);
		transform: translate(-10px, 5px);
	}
	40% {
		clip-path: inset(80% 0 5% 0);
		transform: translate(5px, -10px);
	}
	60% {
		clip-path: inset(0 0 20% 0);
		transform: translate(-5px, 5px);
	}
	80% {
		clip-path: inset(40% 0 40% 0);
		transform: translate(5px, 0);
	}
	100% {
		clip-path: inset(0 0 0 0);
		transform: translate(0);
		opacity: 1;
	}
}
@keyframes ripple-out{
	0% {
		opacity: 1;
		transform: scale(1);
		filter: blur(0px);
	}
	100% {
		opacity: 0;
		transform: scale(1.5);
		filter: blur(3px);
	}
}
@keyframes ripple-in{
	0% {
		opacity: 0;
		transform: scale(.5);
		filter: blur(3px);
	}
	100% {
		opacity: 1;
		transform: scale(1);
		filter: blur(0px);
	}
}
@keyframes ripple-out-reverse{
	0% {
		opacity: 1;
		transform: scale(1);
		filter: blur(0px);
	}
	100% {
		opacity: 0;
		transform: scale(.5);
		filter: blur(3px);
	}
}
@keyframes ripple-in-reverse{
	0% {
		opacity: 0;
		transform: scale(1.5);
		filter: blur(3px);
	}
	100% {
		opacity: 1;
		transform: scale(1);
		filter: blur(0px);
	}
}
@keyframes skew-out{
	0% {
		opacity: 1;
		transform: skewX(0deg);
	}
	100% {
		opacity: 0;
		transform: skewX(15deg);
	}
}
@keyframes skew-in{
	0% {
		opacity: 0;
		transform: skewX(-15deg);
	}
	100% {
		opacity: 1;
		transform: skewX(0deg);
	}
}
@keyframes skew-out-reverse{
	0% {
		opacity: 1;
		transform: skewX(0deg);
	}
	100% {
		opacity: 0;
		transform: skewX(-15deg);
	}
}
@keyframes skew-in-reverse{
	0% {
		opacity: 0;
		transform: skewX(15deg);
	}
	100% {
		opacity: 1;
		transform: skewX(0deg);
	}
}
@keyframes fade-slide-out{
	0% {
		opacity: 1;
		transform: translateX(0);
	}
	100% {
		opacity: 0;
		transform: translateX(20px);
	}
}
@keyframes fade-slide-in{
	0% {
		opacity: 0;
		transform: translateX(-20px);
	}
	100% {
		opacity: 1;
		transform: translateX(0);
	}
}
@keyframes fade-slide-out-reverse{
	0% {
		opacity: 1;
		transform: translateX(0);
	}
	100% {
		opacity: 0;
		transform: translateX(-20px);
	}
}
@keyframes fade-slide-in-reverse{
	0% {
		opacity: 0;
		transform: translateX(20px);
	}
	100% {
		opacity: 1;
		transform: translateX(0);
	}
}
@keyframes spiral-out{
	0% {
		opacity: 1;
		transform: rotate(0deg) scale(1);
	}
	100% {
		opacity: 0;
		transform: rotate(360deg) scale(0);
	}
}
@keyframes spiral-in{
	0% {
		opacity: 0;
		transform: rotate(-360deg) scale(0);
	}
	100% {
		opacity: 1;
		transform: rotate(0deg) scale(1);
	}
}
@keyframes spiral-out-reverse{
	0% {
		opacity: 1;
		transform: rotate(0deg) scale(1);
	}
	100% {
		opacity: 0;
		transform: rotate(-360deg) scale(0);
	}
}
@keyframes spiral-in-reverse{
	0% {
		opacity: 0;
		transform: rotate(360deg) scale(0);
	}
	100% {
		opacity: 1;
		transform: rotate(0deg) scale(1);
	}
}
@keyframes spotlight-out{
	0% {
		clip-path: circle(75% at 50% 50%);
	}
	100% {
		clip-path: circle(0% at var(--spot-x,50%) var(--spot-y,50%));
	}
}
@keyframes spotlight-in{
	0% {
		clip-path: circle(0% at var(--spot-x,50%) var(--spot-y,50%));
	}
	100% {
		clip-path: circle(75% at 50% 50%);
	}
}
@keyframes tilt-out{
	0% {
		opacity: 1;
		transform: rotateZ(0deg) translateY(0);
	}
	100% {
		opacity: 0;
		transform: rotateZ(5deg) translateY(-20px);
	}
}
@keyframes tilt-in{
	0% {
		opacity: 0;
		transform: rotateZ(-5deg) translateY(20px);
	}
	100% {
		opacity: 1;
		transform: rotateZ(0deg) translateY(0);
	}
}
@keyframes tilt-out-reverse{
	0% {
		opacity: 1;
		transform: rotateZ(0deg) translateY(0);
	}
	100% {
		opacity: 0;
		transform: rotateZ(-5deg) translateY(-20px);
	}
}
@keyframes tilt-in-reverse{
	0% {
		opacity: 0;
		transform: rotateZ(5deg) translateY(20px);
	}
	100% {
		opacity: 1;
		transform: rotateZ(0deg) translateY(0);
	}
}
@keyframes tv-out{
	0% {
		opacity: 1;
		transform: scale(1, 1);
	}
	50% {
		opacity: 0.8;
		transform: scale(1, 0.02);
	}
	100% {
		opacity: 0;
		transform: scale(0, 0);
	}
}
@keyframes tv-in{
	0% {
		opacity: 0;
		transform: scale(0, 0);
	}
	50% {
		opacity: 0.8;
		transform: scale(1, 0.02);
	}
	100% {
		opacity: 1;
		transform: scale(1, 1);
	}
}
@keyframes zoom-out{
	0% {
		opacity: 1;
		transform: scale(1);
	}
	100% {
		opacity: 0;
		transform: scale(1.05);
	}
}
@keyframes zoom-in{
	0% {
		opacity: 0;
		transform: scale(.96);
	}
	100% {
		opacity: 1;
		transform: scale(1);
	}
}
@keyframes zoom-out-reverse{
	0% {
		opacity: 1;
		transform: scale(1);
	}
	100% {
		opacity: 0;
		transform: scale(.96);
	}
}
@keyframes zoom-in-reverse{
	0% {
		opacity: 0;
		transform: scale(1.05);
	}
	100% {
		opacity: 1;
		transform: scale(1);
	}
}
@keyframes circle-grow{
	0% {
		clip-path: circle(0 at var(--x, 50%) var(--y, 50%));
	}
	100% {
		clip-path: circle(var(--r, 150vmax) at var(--x, 50%) var(--y, 50%));
	}
}
@keyframes lab-out{
	0% {
		opacity: 1;
		transform: translateY(0);
	}
	100% {
		opacity: 0;
		transform: translateY(-16px);
	}
}
@keyframes lab-in{
	0% {
		opacity: 0;
		transform: translateY(16px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}
@media (max-width: 640px){
	.experiments li {
		grid-template-columns: 1fr;
	}
}
