.canvas {
    position: relative;
    
    width: 500px;
    height: 380px;
    margin: 80px 0 0 0;
    
    transition: .3s ease;
    
    perspective: 800px;
}

.box_front {
    position: relative;
    
    overflow: hidden;
    
    width: 500px;
    height: 380px;
    
    background: skyblue;
    box-shadow: 0 -400px 300px -300px steelblue inset;
	
	animation: sky 110s linear infinite;
}

@keyframes sky {
    20% {
        background: skyblue;
        box-shadow: 0 -400px 300px -300px steelblue inset;
	}
    35% {
        background: darkslateblue;
        box-shadow: 0 -400px 300px -300px orangered inset;
	}
    65% {
        background: darkslateblue;
        box-shadow: 0 -400px 300px -300px transparent inset; 
	}
}

.ship::after {
    position: absolute;
    bottom: 0;
    left: 0;
    
    width: 100px;
    height: 20px;
    
    content: '';
    
    border-radius: 0 0 0 20px;
    background: #e25c45;
}

.ship::before {
    position: absolute;
    top: 0;
    left: 10px;
    
    width: 65px;
    height: 16px;
    
    content: '';
    
    border-radius: 20px 0 0 0;
    background: #fff;
}

.ship {
    position: absolute;
    right: -150px;
    bottom: 30px;
    transform-origin: right center;
    width: 100px;
    height: 36px;
	animation: run 50s infinite 4s linear;
}
@keyframes run {
	from {
		position: absolute;
	}
	to {
		transform: translateX(-700px)
	}
}
.ship_smokestack {
    position: absolute;
    bottom: 36px;
    left: 45px;
    
    width: 10px;
    height: 17px;
    
    background: #a18e6e;
}

.ship_window {
    position: absolute;
    top: 6px;
    left: 40px;
    
    width: 7px;
    height: 7px;
    
    border-radius: 50%;
    background: #a18e6e;
    box-shadow: 13px 0 0 0 #a18e6e, -13px 0 0 0 #a18e6e;
}

.smoke div {
    position: absolute;
    
    width: 7px;
    height: 7px;
    
    border-radius: 50%;
    background: #fff;
}

.smoke-1 {
    top: -25px;
    right: 44px;
	animation: smoke1 3s linear 0s infinite;
}
@keyframes smoke1 {
	from {
		transform: scale(1);
		opacity: 1;
	}
	to {
		transform: scale(2) translateY(-200%);
		opacity: 0;
		
	}
}
@keyframes smoke2 {
	from {
		transform: scale(1);
		opacity: 1;
	}
	to {
		transform: scale(2) translateY(-200%);
		opacity: 0;
	}
}
@keyframes smoke3 {
	from {
		transform: scale(1);
		opacity: 1;
	}
	to {
		transform: scale(2) translateY(-200%);
		opacity: 0;
	}
}
.smoke-2 {
    top: -25px;
    right: 42px;
	animation: smoke2 3s linear 1s infinite;
}

.smoke-3 {
    top: -25px;
    right: 49px;
	animation: smoke3 3s linear 2s infinite;
}

.sun {
    position: absolute;
    top: 100%;
    right: 50%;
    
    width: 80px;
    height: 80px;
    
    border-radius: 50%;
    background: #ffcf11;
    box-shadow: 0 0 100px #ffdf05;
	
	animation: spin 110s linear infinite;
}
@keyframes spin {
	from {
		transform: rotate(0turn) translate(-395%) rotate(1turn);
	}
	to {
		transform: rotate(1turn) translate(-555%) rotate(10turn);
	}
}

.sun-wrapper {
    position: absolute;
    
    width: 100%;
    height: 100%;
    
    transform-origin: bottom center;
}

.sun div {
    position: absolute;
    top: -20px;
    left: 50%;
    
    width: 2px;
    height: 100px;
    margin-left: -1px;
    
    border: solid #ffcf11;
    border-width: 10px 0 10px 0;
}

.sun div:nth-child(2) {
    transform: rotate(18deg);
}

.sun div:nth-child(3) {
    transform: rotate(36deg);
}

.sun div:nth-child(4) {
    transform: rotate(54deg);
}

.sun div:nth-child(5) {
    transform: rotate(72deg);
}

.sun div:nth-child(6) {
    transform: rotate(90deg);
}

.sun div:nth-child(7) {
    transform: rotate(-18deg);
}

.sun div:nth-child(8) {
    transform: rotate(-36deg);
}

.sun div:nth-child(9) {
    transform: rotate(-54deg);
}

.sun div:nth-child(10) {
    transform: rotate(-72deg);
}

.cloud {
    position: absolute;
    left: -180px;
    
    width: 200px;
    height: 60px;
    
    opacity: .8;
    border-radius: 200px;
    background: #fff;
}

.cloud:before,
.cloud:after {
    position: absolute;
    top: -15px;
    left: 10px;
    
    width: 100px;
    height: 80px;
    
    content: '';
    
    border-radius: 100px;
    background: #fff;
}

.cloud:after {
    top: -55px;
    right: 15px;
    left: auto;
    
    width: 120px;
    height: 120px;
}

.cloud-1 {
    top: 10px;
	left: -250px;
	
	animation: cloudrun 40s linear 0s infinite;
	transform-origin: right center;
}
@keyframes cloudrun {
	0% {
		transform: scale(-0.2, 0.2);
	}
	100% {
		transform: translateX(800px) scale(-0.2, 0.2);
	}
}
@keyframes cloudrun2 {
	0% {
		transform: scale(0.4, 0.4);
	}
	100% {
		transform: translateX(800px) scale(0.4, 0.4);
	}
}
@keyframes cloudrun3 {
	0% {
		transform: scale(-0.6, 0.6);
	}
	100% {
		transform: translateX(800px) scale(-0.6, 0.6);
	}
}
@keyframes cloudrun4 {
	0% {
		transform: scale(0.8, 0.8);
	}
	100% {
		transform: translateX(800px) scale(0.8, 0.8);
	}
}
.cloud-2 {
    top: 50px;
	left: -270px;

	
	animation-name: cloudrun2;
	animation-duration: 30s;
	animation-timing-function: linear;
	animation-iteration-count: infinite;
	animation-delay: 17s;
	transform-origin: right center;
}

.cloud-3 {
    top: 100px;
	left: -250px;

	
	animation-name: cloudrun3;
	animation-duration: 25s;
	animation-timing-function: linear;
	animation-iteration-count: infinite;
	animation-delay: 8s;
	transform-origin: right center;
}

.cloud-4 {
    top: 170px;
	left: -250px;

	
	animation-name: cloudrun4;
	animation-duration: 20s;
	animation-timing-function: linear;
	animation-iteration-count: infinite;
	animation-delay: 25s;
	transform-origin: right center;
}

.sea {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    
    height: 40px;
    
    opacity: .8;
    background: #2a94d6;
}

.sea::after {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    
    height: 10px;
    
    content: '';
    
    background: #1d7fbb;
}
