a:link {
	color: unset;
}

a:visited {
	color: unset;
}

body {
	padding: 0;
}

.heartbeat {
	animation: heartbeat 1.6s infinite;
	transform: scale(1);
}

.parallax-background {
	--parallax-speed: 9;
}

.parallax-close-trees {
	--parallax-speed: 3;
}

.parallax-distant-trees {
	--parallax-speed: 6;
}

.parallax-elephant {
	--parallax-speed: 1;
}

.parallax-grass {
	--parallax-speed: 0;
}

.parallax-hills {
	--parallax-speed: 6;
}

.parallax-mid-trees {
	--parallax-speed: 5;
}

.parallax-mountains {
	--parallax-speed: 7;
}

.parallax-section {
	display: grid;
	grid-template-areas: "stack";
	overflow-x: clip;
	position: relative;
	z-index: -1;
}

.parallax-section > * {
	animation: parallax linear;
	animation-timeline: scroll();
	grid-area: stack;
	left: 50%;
	position: absolute;
}

.parallax-text {
	--parallax-speed: 26;
}

.parallax-shrubs {
	--parallax-speed: 0;
}

.parallax-weeds {
	--parallax-speed: 2;
}

/* https://developers.google.com/maps/documentation/javascript/examples/overlay-popup#maps_overlay_popup-typescript */
.popup-container {
	cursor: auto;
	height: 0;
	position: absolute;
}

.pulse {
	animation: pulse 2s infinite;
	transform: scale(1);
}

.responding:after {
	display: inline-block;
	-webkit-animation: ellipsis steps(1,end) 1s infinite;
	animation: ellipsis steps(1,end) 1s infinite;
	content: '';
	width: 0px;
}

@keyframes heartbeat {
	0%   { transform: scale(1.05); }
	35%  { transform: scale(0.95); }
	50%  { transform: scale(1); }
	65%  { transform: scale(0.95); }
	100% { transform: scale(1.05); }
}

@keyframes pulse {
	0%   { transform: scale(0.9); }
	50%  { transform: scale(1.1); }
	100% { transform: scale(0.9); }
}

@keyframes appbar {
	0%   { background-position: left; }
	100% { background-position: right; }
}

@keyframes ellipsis {
	0%   { content: ''; }
	25%  { content: '.'; }
	50%  { content: '..'; }
	75%  { content: '...'; }
	100% { content: ''; }
}

@-webkit-keyframes ellipsis {
	0%   { content: ''; }
	25%  { content: '.'; }
	50%  { content: '..'; }
	75%  { content: '...'; }
	100% { content: ''; }
}

@keyframes header-main {
	0%   { opacity: 0; }
	100% { opacity: 1; }
}

@keyframes header-sub {
	0%   { opacity: 0; }
	25%  { opacity: 0; }
	100% { opacity: 1; }
}

@keyframes parallax {
	from {
		transform: translate(-50%, 0);
	}
	to {
		transform: translate(-50%, calc(var(--parallax-speed) * 100px));
	}
}

@keyframes section {
	0%   {
		opacity: 0;
		transform: translateY(32px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}
