<html>
  <body>
    <div id='illustration'>
      <div class="snail-container">
        <div class="snail">
          <div class="shell">
            <div class="main">
              <div class="spiral">
                <div class="outer-outer">
                  <div class="outer-inner">
                    <div class="inner-outer">
                      <div class="inner-inner">
          
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="opening">
              <div class="concave-cut-out-bg"></div>
              <div class="concave-cut-out-shape"></div>
            </div>
          </div>
          <div class="body">
            <div class="head">
              <div class="face">
                <div class="eyes">
                  <div class="left"><span></span></div>
                  <div class="right"><span></span></div>
                </div>
                <div class="mouth">
                  <div class="innermouth">
                    
                  </div>
                  
                </div>
              </div>
							<div class="antennas">
							<div class="left"><div class="slope"></div></div>
							<div class="right"><div class="slope"></div></div>
						</div>
            </div>
						
            <div class="lower-body"></div>
          </div>
        </div>
      </div>
		
    </div>
			<div class="grass">
				<div class="blade  foliage"><span></span></div>
				<div class="blade foliage "><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade foliage"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
				<div class="blade"><span></span></div>
			</div>

    <style>
      
    </style>
  </body>
</html>

$snailSkin: #afb42b;
$shell: burlywood;
$eye: #4e342e;
$bg:darken( $snailSkin, 15%);
$bg-gradient: linear-gradient(darken($bg, 2%) 1%, $bg 99%);

$foliage:darken($snailSkin, 25%);
.darkenFoliage{
	background:darken($foliage,3%);
		span{
			background:darken($foliage,3%);
			&:after,&:before{
				background:darken($foliage,3%);
			}
		}
}
.furtherDarkenFoliage{
	background:darken($foliage,6%);
		span{
			background:darken($foliage,6%);
			&:after,&:before{
				background:darken($foliage,6%);
			}
		}
}
//animation timing
$snailWalkTime: 4s;

body,
html {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
	font-size: 10px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
		Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}
body * {
	box-sizing: inherit;
}
body{
	width:100vw;
	height:100vh;
	overflow:hidden;
		background-image: $bg-gradient;
}
#illustration {
	display: flex;
	z-index: -5;
	height: 100vh;
	width: 100vw;
	justify-content: flex-start;
	overflow: hidden;
	align-items: center;
}
.snail-container {
	animation: snailMovement 40s infinite;
	position: relative;
	width: 400px !important;
	height: 400px;
	.snail {
		bottom: 0;
		height: 75%;
		width: 100%;
		position: absolute;
		&:after{
			content:"";
			width:60%;
			height:8%;
			background:rgba(0,0,0,0.2);
			bottom:-4.5%;
			right:22%;
			position:absolute;
			border-radius:50%;
			z-index:-1;
			animation:snailShadow 4s infinite;
		}
	}
}
.shell {
	height: 55%;
	position: absolute;
	width: 50%;
	bottom: 3%;
	animation: snailShell 4s infinite;
	z-index: 5;
	right: 29%;
	.main {
		background: $shell;
		width: 90%;
		height: 100%;
		border-bottom-left-radius: 50%;
		border-bottom-right-radius: 30%;
		border-top-left-radius: 50%;
		border-top-right-radius: 50%;
		display: flex;
		justify-content: center;
		align-items: center;
		.spiral {
			position: relative;
			width: 65%;
			height: 65%;
			background: darken($shell, 10%);
			z-index: 3;
			border-radius: 50%;
		}
		.outer-outer {
			background: $shell;
			width: 65%;
			height: 65%;
			position: absolute;
			border-radius: 50%;
			left: 17.5%;
			top: 17.5%;
			z-index: 4;
		}
		.outer-inner {
			background: darken($shell, 10%);
			width: 65%;
			height: 65%;
			position: absolute;
			border-radius: 50%;
			left: 17.5%;
			top: 17.5%;
			z-index: 4;
		}
		.inner-outer {
			background: $shell;
			width: 35%;
			height: 35%;
			position: absolute;
			border-radius: 50%;
			left: 32.5%;
			top: 32.5%;
			z-index: 4;
		}
	}
	.opening {
		width: 60%;
		height: 30%;
		background: $shell;
		position: absolute;
		bottom: 0%;
		border-bottom-right-radius: 50%;
		border-top-right-radius: 0.5rem;
		right: 0;
		.concave-cut-out-bg {
			width: 25%;
			height: 60%;
			position: absolute;
			bottom: 68%;
			left: 68%;
			transform: rotate(-45deg);
			background: $shell;
		}
		.concave-cut-out-shape {
			width: 14.5%;
			height: 40%;
			right: 2%;
			border-bottom-left-radius: 50%;
			bottom: 100%;
			background: $bg;
			position: absolute;
		}
	}
}
.body {
	.head {
		&:after {
			content: "";
			z-index: 1;
			background: $bg;
			width: 60%;
			height: 30%;
			position: absolute;
			bottom: 38.66%;
			border-radius: 50%;
			left: -59.6%;
		}
		&:before {
			content: "";
			z-index: 0;
			background: $snailSkin;
			width: 90%;
			height: 50%;
			position: absolute;
			bottom: 0;
			border-radius: 20px;
			left: -50%;
		}
		position: absolute;
		background: $snailSkin;
		width: 15%;
		animation: snailHead $snailWalkTime infinite;
		height: 40%;
		right: 14%;
		bottom: 0%;
		border-top-left-radius: 50%;
		border-top-right-radius: 50%;
		border-bottom-right-radius: 120%;
		z-index: 2;
		.face {
			position: absolute;
			top: 0;
			width: 85%;
			border-radius: 50%;
			height: 60%;
			left: 15%;
			.eyes {
				.left,
				.right {
					position: absolute;
					top: 25%;
					background: #ffffff;
					border-radius: 5rem;
					width: 2rem;
					height: 3rem;
					span {
						width: 1rem;
						top: 35.5%;
						left: 39%;
						height: 1rem;
						position: absolute;
						border-radius: 50%;
						background: $eye;
					}
				}
				.right {
					right: 0;
				}
				.left {
					left: 0;
				}
			}
			.mouth {
				.innermouth {
					position: absolute;
					bottom: 5%;
					left: 14px;
					width: 40%;
					animation: snailMouth $snailWalkTime infinite;
					height: 20%;
					background: #ff9e80;
					border-radius: 0.6rem;
					transform: skewx(-10deg);
					z-index: 4;
					border-bottom: 1px solid #bf360c;
					border-top: 1px solid #fff;
				}
			}
		}
		.antennas {
			width: 50px;
			height: 50px;
			position: absolute;
			top: -30%;
			z-index: -10;
			
			right: 10%;
			.left,
			.right {
				border-bottom: 5rem solid $snailSkin;
				border-left: 0.5rem solid transparent;
				border-right: 0.5rem solid transparent;
				height: 0;
				width: 30%;
				position: absolute;
				top: 0;
				&:before {
					background: $snailSkin;
					border-radius: 50%;
					width: 275%;
					height: 1.5rem;
					top: -0.7rem;
					left: -0.5em;
					position: absolute;
					content: "";
				}
				.slope {
					background: $snailSkin;
					width: 155%;
					height: 1.5rem;
					bottom: -4rem;
					left: 0.1rem;
					position: absolute;
					transform: rotate(-25deg);
				}
			}
			.right {
				right: 10%;
				.slope {
					left: -0.4rem;
					transform: rotate(25deg);
				}
			}
		}
	}

	.lower-body {
		background: $snailSkin;
		position: absolute;
		height: 11%;
		width: 65%;
		border-top-left-radius: 290%;
		border-bottom-left-radius: 2px;
		border-bottom-right-radius: 50px;
		bottom: 0;
		right: 20%;
		animation: snailTail $snailWalkTime infinite;
	}
}

@keyframes snailMovement {
	0% {
		transform: translate3d(0vw, 0, 0);
	}
	5% {
		transform: translate3d(10vw, 0, 0);
	}
	10% {
		transform: translate3d(10vw, 0, 0);
	}
	15% {
		transform: translate3d(20vw, 0, 0);
	}
	20% {
		transform: translate3d(20vw, 0, 0);
	}
	25% {
		transform: translate3d(30vw, 0, 0);
	}
	30% {
		transform: translate3d(30vw, 0, 0);
	}
	35% {
		transform: translate3d(40vw, 0, 0);
	}
	40% {
		transform: translate3d(40vw, 0, 0);
	}
	45% {
		transform: translate3d(50vw, 0, 0);
	}
	50% {
		transform: translate3d(50vw, 0, 0);
	}
	55% {
		transform: translate3d(60vw, 0, 0);
	}
	60% {
		transform: translate3d(60vw, 0, 0);
	}
	65% {
		transform: translate3d(70vw, 0, 0);
	}
	70% {
		transform: translate3d(70vw, 0, 0);
	}
	75% {
		transform: translate3d(80vw, 0, 0);
	}
	80% {
		transform: translate3d(80vw, 0, 0);
	}
	85% {
		transform: translate3d(90vw, 0, 0);
	}
	90% {
		transform: translate3d(90vw, 0, 0);
	}
	95% {
		transform: translate3d(100vw, 0, 0);
	}
	100% {
		transform: translate3d(100vw, 0, 0);
	}
}

@keyframes snailTail {
	0% {
		width: 55%;
	}
	50% {
		width: 65%;
	}
	100% {
		width: 55%;
	}
}
@keyframes snailHead {
	0% {
		transform: rotate(0deg) translate3d(0rem, 0, 0);
	}
	50% {
		transform: rotate(3deg) translate3d(1rem, 0, 0);
	}
	100% {
		transform: rotate(0deg) translate3d(0rem, 0, 0);
	}
}
@keyframes snailShell {
	0% {
		transform: translate3d(0, -1rem, 0) rotate(0deg);
	}
	50% {
		transform: translate3d(0, 0, 0) rotate(1deg);
	}
	100% {
		transform: translate3d(0, -1rem, 0) rotate(0deg);
	}
}
@keyframes snailMouth {
	0% {
		width: 40%;
		left: 14px;
	}
	50% {
		width: 20%;
		left: 20px;
	}

	100% {
		width: 40%;
		left: 14px;
	}
}
@keyframes snailShadow{
	0%{
		width:55%;
		transform:translate3d(0rem, 0 , 0) scaleY(1.5)
	}
	50%{
		width:65%;
		transform:translate3d(.5rem, 0 , 0) scaleY(1);
	}
	100%{
		width:55%;
		transform:translate3d(0rem, 0 , 0) scaleY(1.5)
	}
}
.grass{
	width:100%;
	height:100%;
	position:absolute;
	top:0;
	left:0;
	.blade:nth-child(2){
		transform: rotate(0deg);
		left:28%;
		
	}
	.blade:nth-child(3){
		transform: scale(.7) translate3d(0,-3rem,0) rotate(-20deg);
	}
	.blade:nth-child(4){
		left:90%;
		transform: scale(1.4) translate3d(0,-1rem,0) rotate(20deg);
		background:darken($foliage,3%);
		span{
			background:darken($foliage,3%);
			&:after,&:before{
				background:darken($foliage,3%);
			}
		}
	}
	.blade:nth-child(5){
		left:85%;
		transform: translate3d(0,-2rem,0) rotate(28deg);
	}
	.blade:nth-child(6){
		left:55%;
		z-index:1;
		transform:scale(.7) translate3d(0,-4rem,0) rotate(-28deg);
	}
	.blade:nth-child(7){
		left:55%;
		z-index:0;
		transform:scale(.9) translate3d(-3rem,-5rem,0) rotate(8deg);
		@extend .darkenFoliage;
	}
	.blade:nth-child(8){
		left:45%;
		z-index:-1;
		transform:scale(1.4) translate3d(-3rem,-5rem,0) rotate(7deg);
		@extend .furtherDarkenFoliage;
	}
	.blade:nth-child(1){
		transform: rotate(30deg);
		left:20%;
		background:darken($foliage,3%);
		span{
			background:darken($foliage,3%);
			&:after,&:before{
				background:darken($foliage,3%);
			}
		}
	}
	.foliage{
		
		width:14rem;
		height:15rem;
		border-radius:20px;
		border-top-left-radius:50%;
		border-top-right-radius:50%;
		&:after{
			content:'';
			position:absolute;
			width:.5rem;
			border-radius:50%;
			left:49%;
			z-index:9;
			height:160%;
			background:darken($foliage, 10%);
		}
		span{
			position:absolute;
			width:10%;
			height:100%;
			bottom:-70%;
			
			background:$foliage;
			left:45%;
			&:before, &:after{
				content:"";
				height:15rem;
				width:7.0rem;
				background:$foliage;
				position:absolute;
				top:0rem;
				left:.8rem;
				transform:rotate(-1deg);
				border-bottom-right-radius:250%;
			}
			&:before{
				content:"";
				left:-6.4rem;
				width:6.6rem;
				transform:rotate(1deg);
				border-bottom-right-radius:0%;
				border-bottom-left-radius:250%;
				
				z-index:1;
			}
		}

		background:$foliage;
		position:absolute;
		top:-2rem;
	}
}


View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.