<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="css/styles.css">
<title>CSS Sleeping Blob!</title>
</head>
<body>
<div class="canvas symmetry">
<div class="wall transform"></div>
<div class="wall2 transform"></div>
<div class="cabinet symmetry transform">
<div class="cabinetP1 transform"></div>
<div class="cabinetP2 transform"></div>
<div class="cabinetP3 transform">
<div class="drawer pseudo symmetry"></div>
<div class="drawer pseudo symmetry"></div>
<div class="drawer pseudo symmetry"></div>
</div>
<div class="cabinetP4 transform"></div>
<div class="cabinetP5 transform"></div>
<div class="cabinetP6 transform"></div>
</div>
<div class="bed symmetry">
<div class="bedP4 symmetry transform"></div>
<div class="bedP1 symmetry transform pseudo"></div>
<div class="bedP2 symmetry transform"></div>
<div class="bedP3 symmetry transform"></div>
<div class="bedP5 symmetry transform"></div>
<div class="bedP6 symmetry transform"></div>
<div class="bedP7 symmetry transform"></div>
</div>
<div class="pillow symmetry transform">
<div class="pillowP1 transform"></div>
<div class="pillowP2 transform"></div>
<div class="pillowP3 transform"></div>
<div class="pillowP4 transform"></div>
<div class="pillowP5 transform"></div>
<div class="pillowP6 transform"></div>
<div class="pillowP7 transform"></div>
<div class="pillowP8 transform"></div>
<div class="pillowP9 transform"></div>
<div class="pillowP10 transform"></div>
<div class="pillowP11 transform"></div>
<div class="pillowP12 transform"></div>
<div class="pillowP13 transform"></div>
<div class="pillowP14 transform"></div>
<div class="pillowP15 transform"></div>
<div class="pillowP16 transform"></div>
<div class="pillowP17 transform"></div>
<div class="pillowP18 transform"></div>
</div>
<div class="blob symmetry transform">
<div class="blobBody symmetry transform">
<div class="blobP1 transform"></div>
</div>
<div class="blobFace symmetry transform">
<div class="blobFaceAnimation symmetry">
<div class="blobEye transform"></div>
<div class="blobEye blobEye2 transform"></div>
<div class="blobMouth symmetry transform">
<div class="mouthSnore pseudo"></div>
</div>
</div>
</div>
</div>
<div class="blanket symmetry transform">
<div class="blanketP4 symmetry transform"></div>
<div class="blanketP5 symmetry transform"></div>
<div class="blanketP1 symmetry transform"></div>
<div class="blanketP2 symmetry transform"></div>
<div class="blanketP3 symmetry transform"></div>
<div class="blanketP10 symmetry transform"></div>
<div class="blanketP9 symmetry transform"></div>
<div class="blanketP7 symmetry transform"></div>
<div class="blanketP8 symmetry transform"></div>
<div class="blanketP6 symmetry transform"></div>
<div class="star1 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star2 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star3 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star4 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star5 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star6 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star7 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star8 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star9 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star10 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star11 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
<div class="star12 star pseudo symmetry transform">
<div class="starP2 transform"></div>
<div class="starP1 transform"></div>
<div class="starP1 flipHorizontal"></div>
<div class="starP1 flipVertical"></div>
<div class="starP1 flipDiagonal"></div>
</div>
</div>
<div class="hat symmetry transform">
<div class="hatAnimation symmetry">
<div class="hatP19 transform"></div>
<div class="hatP20 transform"></div>
<div class="hatP21 transform"></div>
<div class="hatP16 transform"></div>
<div class="hatP17 transform"></div>
<div class="hatP18 transform"></div>
<div class="hatBase hatP8 transform"></div>
<div class="hatBase hatP9 transform"></div>
<div class="hatBase hatP6 transform"></div>
<div class="hatBase hatP5 transform"></div>
<div class="hatBase hatP2 transform"></div>
<div class="hatBase hatP3 transform"></div>
<div class="hatBase hatP1 transform"></div>
<div class="hatBase hatP4 transform"></div>
<div class="hatBase hatP7 transform"></div>
<div class="hatBase2 hatP10 transform"></div>
<div class="hatBase2 hatP11 transform"></div>
<div class="hatBase2 hatP12 transform"></div>
<div class="hatBase2 hatP13 transform"></div>
<div class="hatBase2 hatP14 transform"></div>
<div class="hatP22 transform"></div>
</div>
</div>
<div class="blobHands symmetry transform">
<div class="blobHand transform"></div>
<div class="blobHand2 transform"></div>
</div>
<div class="lamp symmetry transform">
<div class="lampBase transform"></div>
<div class="lampBody transform"></div>
<div class="lampCone transform"></div>
<div class="lampConeTop transform"></div>
</div>
</div>
<img src="blob.png" alt="Traced template for CSS Sleeping Blob." class="templateImage">
</body>
</html>
*, *::before, *::after {
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
--background: #011f41;
background: var(--background);
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.templateImage {
position: absolute;
height: calc(var(--unitSize) * 80);
opacity: 0.3;
display: none;
pointer-events: none;
}
.canvas {
--duration: 2s;
position: relative;
display: flex;
justify-content: center;
align-items: center;
--unitSize: 0.9vmin;
width: calc(var(--unitSize) * 150);
height: calc(var(--unitSize) * 80);
overflow: hidden;
background: #022854;
outline: calc(var(--unitSize) * 0.5) solid white;
}
.canvas * {
position: absolute;
}
.pseudo::before, .pseudo::after {
content: "";
display: block;
}
.symmetry {
display: flex;
justify-content: center;
align-items: center;
}
.transform {
--x: 0;
--y: 0;
--r: 0;
--s: 0;
--sx: 0;
--sy: 0;
--_scale: 1;
--scaleX: 1;
--scaleY: 1;
transform: scaleY(var(--_scale)) translate(var(--x), var(--y)) rotate(var(--r)) skew(var(--s)) skewX(var(--sx)) skewY(var(--sy)) scaleX(var(--scaleX)) scaleY(var(--scaleY));
}
.flipVertical {
--x: 0;
--y: 0;
--r: 0;
--s: 0;
--sx: 0;
--sy: 0;
--_scale: -1;
--scaleX: 1;
--scaleY: 1;
transform: scaleY(var(--_scale)) translate(var(--x), var(--y)) rotate(var(--r)) skew(var(--s)) skewX(var(--sx)) skewY(var(--sy)) scaleX(var(--scaleX)) scaleY(var(--scaleY));
}
.flipHorizontal {
--x: 0;
--y: 0;
--r: 0;
--s: 0;
--sx: 0;
--sy: 0;
--_scale: -1;
--scaleX: 1;
--scaleY: 1;
transform: scaleX(var(--_scale)) translate(var(--x), var(--y)) rotate(var(--r)) skew(var(--s)) skewX(var(--sx)) skewY(var(--sy)) scaleX(var(--scaleX)) scaleY(var(--scaleY));
}
.flipDiagonal {
--x: 0;
--y: 0;
--r: 0;
--s: 0;
--sx: 0;
--sy: 0;
--_scale: -1;
--scaleX: 1;
--scaleY: 1;
transform: scale(var(--_scale), var(--_scale)) translate(var(--x), var(--y)) rotate(var(--r)) skew(var(--s)) skewX(var(--sx)) skewY(var(--sy)) scaleX(var(--scaleX)) scaleY(var(--scaleY));
}
.bed {
--cyan1: #92BEFF;
--cyan2: #637da2;
--cyan3: #CEE2FF;
--blue1: #286397;
--blue2: #2D70AB;
--white: white;
--border: #0004;
}
.bedP1 {
background: var(--white);
width: calc(var(--unitSize) * 64.2);
height: calc(var(--unitSize) * 43.2);
--x: calc(var(--unitSize) * 20.7);
--s: 0, 12.5deg;
--y: calc(var(--unitSize) * -7.9);
border: calc(var(--unitSize) * 0.5) solid var(--border);
padding: calc(var(--unitSize) * 3.2);
border-radius: calc(var(--unitSize) * 0.5);
}
.bedP1::before {
background: var(--cyan1);
width: 100%;
height: 100%;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-radius: calc(var(--unitSize) * 0.5);
}
.bedP2 {
background: var(--cyan3);
/*background: red;*/
width: calc(var(--unitSize) * 20.3);
height: calc(var(--unitSize) * 8.3);
--x: calc(var(--unitSize) * 45.1);
--sy: -48deg;
--y: calc(var(--unitSize) * 33);
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-radius: calc(var(--unitSize) * 0.5);
}
.bedP3 {
background: var(--cyan3);
/* background: red; */
width: calc(var(--unitSize) * 3);
height: calc(var(--unitSize) * 65.6);
--x: calc(var(--unitSize) * 53.8);
--y: calc(var(--unitSize) * 8.9);
--sy: -48deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-block-width: calc(var(--unitSize) * 1.2);
border-radius: calc(var(--unitSize) * 0.5);
}
.bedP4 {
background: var(--cyan2);
width: calc(var(--unitSize) * 64.4);
height: calc(var(--unitSize) * 23.5);
--x: calc(var(--unitSize) * 20.7);
--sy: 12.5deg;
--y: calc(var(--unitSize) * 24.2);
padding: calc(var(--unitSize) * 3.2);
border-radius: calc(var(--unitSize) * 0.5);
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.bedP5 {
background: var(--blue1);
width: calc(var(--unitSize) * 29.7);
height: calc(var(--unitSize) * 14.7);
--x: calc(var(--unitSize) * 37.2);
--sy: -48deg;
--y: calc(var(--unitSize) * 30.7);
padding: calc(var(--unitSize) * 3.2);
border-radius: calc(var(--unitSize) * 0.5);
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-block-width: calc(var(--unitSize) * 1);
}
.bedP6 {
background: var(--blue2);
width: calc(var(--unitSize) * 71.2);
height: calc(var(--unitSize) * 61.8);
--x: calc(var(--unitSize) * -3);
--sx: 27.9deg;
--y: calc(var(--unitSize) * 23);
--r: -47.9deg;
padding: calc(var(--unitSize) * 3.2);
border-radius: calc(var(--unitSize) * 5.6);
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.bedP7 {
background: var(--cyan3);
width: calc(var(--unitSize) * 4.7);
height: calc(var(--unitSize) * 58.2);
--x: calc(var(--unitSize) * 21.9);
--sx: 27.9deg;
--y: calc(var(--unitSize) * -30.4);
--r: -49.5deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.pillow {
--r: 2deg;
--x: calc(var(--unitSize) * -0.5);
--border: #0004;
}
.pillowP1 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 46.2);
height: calc(var(--unitSize) * 4.9);
--x: calc(var(--unitSize) * 20.4);
--y: calc(var(--unitSize) * -13.3);
--r: 17deg;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border-bottom: none;
}
.pillowP2 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 22.2);
height: calc(var(--unitSize) * 2.9);
--x: calc(var(--unitSize) * -8);
--y: calc(var(--unitSize) * -10);
--r: -55deg;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border-bottom: none;
}
.pillowP3 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 21.7);
height: calc(var(--unitSize) * 2.9);
--x: calc(var(--unitSize) * 40.4);
--y: calc(var(--unitSize) * 5.3);
--r: 113deg;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border-bottom: none;
}
.pillowP4 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 48.9);
height: calc(var(--unitSize) * 5.2);
--x: calc(var(--unitSize) * 8.9);
--y: calc(var(--unitSize) * 8.9);
--r: 198deg;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border-bottom: none;
}
.pillowP5 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 8);
height: calc(var(--unitSize) * 8.5);
--x: calc(var(--unitSize) * -0.7);
--y: calc(var(--unitSize) * -17.4);
--r: 210deg;
border-radius: 10% 90% 10% 90%;
}
.pillowP6 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 6.6);
height: calc(var(--unitSize) * 10.2);
--x: calc(var(--unitSize) * 41.9);
--y: calc(var(--unitSize) * -5.5);
--r: 267deg;
border-radius: 10% 90% 10% 90%;
}
.pillowP7 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 5.6);
height: calc(var(--unitSize) * 10.2);
--x: calc(var(--unitSize) * 33.4);
--y: calc(var(--unitSize) * 13.7);
--r: 372deg;
border-radius: 10% 90% 10% 90%;
}
.pillowP8 {
background: white;
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 6.8);
height: calc(var(--unitSize) * 9.1);
--x: calc(var(--unitSize) * -11.9);
--y: calc(var(--unitSize) * -0.6);
--r: 454deg;
border-radius: 10% 90% 10% 90%;
}
.pillowP9 {
background: white;
width: calc(var(--unitSize) * 20.7);
height: calc(var(--unitSize) * 47.6);
--x: calc(var(--unitSize) * 15);
--y: calc(var(--unitSize) * -2.2);
--sy: 13deg;
--r: 468deg;
}
.pillowP10 {
background: white;
width: calc(var(--unitSize) * 5.3);
height: calc(var(--unitSize) * 6.2);
--x: calc(var(--unitSize) * -10.5);
--y: calc(var(--unitSize) * -0.7);
/* --sy: 13deg; */
--r: 475deg;
}
.pillowP11 {
background: white;
width: calc(var(--unitSize) * 13.4);
height: calc(var(--unitSize) * 12.3);
--x: calc(var(--unitSize) * 36.3);
--y: calc(var(--unitSize) * -0.9);
/* --sy: 13deg; */
--r: 468deg;
}
.pillowP12 {
background: white;
width: calc(var(--unitSize) * 7.3);
height: calc(var(--unitSize) * 10);
--x: calc(var(--unitSize) * 34);
--y: calc(var(--unitSize) * 8.8);
/* --sy: 13deg; */
--r: 562deg;
border-radius: calc(var(--unitSize) * 1);
}
.pillowP13 {
background: white;
width: calc(var(--unitSize) * 7.3);
height: calc(var(--unitSize) * 10);
--x: calc(var(--unitSize) * 32.5);
--y: calc(var(--unitSize) * 9.4);
/* --sy: 13deg; */
--r: 525deg;
border-radius: calc(var(--unitSize) * 1);
}
.pillowP15 {
background: white;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
width: calc(var(--unitSize) * 4.9);
height: calc(var(--unitSize) * 1);
--x: calc(var(--unitSize) * 1.8);
--y: calc(var(--unitSize) * -13.2);
/* --sy: 13deg; */
--r: 64deg;
}
.pillowP16 {
background: white;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
width: calc(var(--unitSize) * 6.5);
height: calc(var(--unitSize) * 0.9);
--x: calc(var(--unitSize) * 29.4);
--y: calc(var(--unitSize) * -4.8);
/* --sy: 13deg; */
--r: -25deg;
}
.pillowP17 {
background: white;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
width: calc(var(--unitSize) * 6.5);
height: calc(var(--unitSize) * 0.9);
--x: calc(var(--unitSize) * 31.5);
--y: calc(var(--unitSize) * 7.6);
/* --sy: 13deg; */
--r: 41deg;
}
.pillowP18 {
background: white;
border-radius: 50% 50% 0 0 / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
width: calc(var(--unitSize) * 6.5);
height: calc(var(--unitSize) * 0.9);
--x: calc(var(--unitSize) * -7.3);
--y: calc(var(--unitSize) * -3.9);
/* --sy: 13deg; */
--r: -6deg;
}
.pillowP14 {
background: white;
width: calc(var(--unitSize) * 7.3);
height: calc(var(--unitSize) * 10);
--x: calc(var(--unitSize) * 2);
--y: calc(var(--unitSize) * -13);
/* --sy: 13deg; */
--r: 569deg;
border-radius: calc(var(--unitSize) * 1);
}
.blob {
--border: #0003;
--gold: #ffc162;
--orange: orange;
--x: calc(var(--unitSize) * 8.7);
--y: calc(var(--unitSize) * 9.3);
}
.blobP1 {
--r: 48deg;
border-radius: 50%;
width: calc(var(--unitSize) * 44.1);
height: calc(var(--unitSize) * 47.5);
background: var(--gold);
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.blobFace {
--x: calc(var(--unitSize) * 0.3);
--y: calc(var(--unitSize) * -12.2);
}
.blobEye {
border: calc(var(--unitSize) * 0.5) solid black;
border-bottom: none;
border-radius: 60% 40% 0 0 / 100% 100% 0 0;
width: calc(var(--unitSize) * 6.3);
height: calc(var(--unitSize) * 2.5);
--r: 196deg;
--x: calc(var(--unitSize) * -3.9);
--y: calc(var(--unitSize) * -3.2);
}
.blobEye2 {
--x: calc(var(--unitSize) * 7.3);
--y: calc(var(--unitSize) * -0.1);
}
.blobMouth {
--x: calc(var(--unitSize) * -1.2);
--y: calc(var(--unitSize) * 3.8);
--r: 16deg;
}
.blanket {
--y: calc(var(--unitSize) * 25);
--x: calc(var(--unitSize) * -10);
--border: #0004;
--white: white;
--blue: #143788;
}
.blanketP1 {
background: var(--white);
width: calc(var(--unitSize) * 78.7);
height: calc(var(--unitSize) * 17.6);
--x: calc(var(--unitSize) * 15.2);
--y: calc(var(--unitSize) * -10.4);
/* --sy: 13deg; */
--r: 20deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 45%;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP2 {
background: var(--white);
width: calc(var(--unitSize) * 22.1);
height: calc(var(--unitSize) * 7.6);
--x: calc(var(--unitSize) * -20.4);
--y: calc(var(--unitSize) * -16.4);
--sy: 21deg;
--r: -61deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 45%;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP3 {
background: var(--white);
width: calc(var(--unitSize) * 15.7);
height: calc(var(--unitSize) * 8.1);
--x: calc(var(--unitSize) * 42.8);
--y: calc(var(--unitSize) * 4.8);
--sy: 0deg;
--r: 111deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 45%;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP4 {
background: var(--white);
/*background: red;*/
width: calc(var(--unitSize) * 41.7);
height: calc(var(--unitSize) * 15.8);
--x: calc(var(--unitSize) * -1.6);
--y: calc(var(--unitSize) * -9.5);
--sx: -31deg;
--r: 19deg;
}
.blanketP5 {
background: var(--white);
/* background: red; */
width: calc(var(--unitSize) * 37.9);
height: calc(var(--unitSize) * 12.7);
--x: calc(var(--unitSize) * 25.4);
--y: calc(var(--unitSize) * -1.2);
--sx: -2deg;
--r: 19deg;
}
.blanketP6 {
background: var(--blue);
width: calc(var(--unitSize) * 118.3);
height: calc(var(--unitSize) * 38.1);
--x: calc(var(--unitSize) * 4.4);
--y: calc(var(--unitSize) * 10.8);
--r: 17deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 21%;
--sx: 6deg;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP7 {
background: var(--blue);
width: calc(var(--unitSize) * 50.9);
height: calc(var(--unitSize) * 14.8);
--x: calc(var(--unitSize) * -37.9);
--y: calc(var(--unitSize) * 5.8);
--r: -49deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 33%;
--sx: -23deg;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP8 {
background: var(--blue);
width: calc(var(--unitSize) * 12.2);
height: calc(var(--unitSize) * 2.6);
--x: calc(var(--unitSize) * 38.4);
--y: calc(var(--unitSize) * 16.1);
--r: 124deg;
border-radius: 50% / 100% 100% 0 0;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-bottom: none;
--vClip: 109%;
--sx: -6deg;
clip-path: polygon(0% 0%, 100% 0%, 100% var(--vClip), 0% var(--vClip));
}
.blanketP9 {
background: var(--blue);
width: calc(var(--unitSize) * 69.6);
height: calc(var(--unitSize) * 34.8);
--x: calc(var(--unitSize) * -6.3);
--y: calc(var(--unitSize) * 13.8);
--r: 197deg;
--vClip: 109%;
--sx: -24deg;
}
.blanketP10 {
background: var(--blue);
width: calc(var(--unitSize) * 52.4);
height: calc(var(--unitSize) * 34.8);
--x: calc(var(--unitSize) * 6.4);
--y: calc(var(--unitSize) * 17.9);
--r: 197deg;
--vClip: 109%;
--sx: -15deg;
}
.star {
--border: #d7b400;
--gold: gold;
}
.starP2 {
width: calc(var(--unitSize) * 2.3);
height: calc(var(--unitSize) * 4.2);
background: var(--gold);
}
.starP1 {
border-radius: 100% 0 0 0;
width: calc(var(--unitSize) * 1.9);
height: calc(var(--unitSize) * 2.8);
border: calc(var(--unitSize) * 0.3) solid var(--border);
border-right: none;
border-bottom: none;
--x: calc(var(--unitSize) * 0.8);
background: var(--blue);
--y: calc(var(--unitSize) * 1.25);
}
.star1 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * -0.9);
--x: calc(var(--unitSize) * -14);
--scaleY: 68%;
--r: 10deg;
--sx: -24deg;
}
.star2 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 5.8);
--x: calc(var(--unitSize) * -27.5);
--scaleY: 60%;
--r: 2deg;
--sx: -20deg;
}
.star3 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * -6);
--x: calc(var(--unitSize) * -25.3);
--scaleY: 71%;
--r: 2deg;
--sx: -20deg;
}
.star4 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 2.3);
--x: calc(var(--unitSize) * -37.7);
--scaleY: 71%;
--r: 2deg;
--sx: -20deg;
}
.star5 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 12.5);
--x: calc(var(--unitSize) * -38.8);
--scaleY: 71%;
--r: 2deg;
--sx: -20deg;
}
.star6 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 10.5);
--x: calc(var(--unitSize) * -13.5);
--scaleY: 71%;
--r: 2deg;
--sx: -20deg;
}
.star7 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 7.6);
--x: calc(var(--unitSize) * 0.8);
--scaleY: 71%;
--r: 2deg;
--sx: -30deg;
}
.star8 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 5.7);
--x: calc(var(--unitSize) * 12.9);
--scaleY: 71%;
--r: 14deg;
--sx: -34deg;
}
.star9 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * -3);
--x: calc(var(--unitSize) * 0);
--scaleY: 71%;
--r: 14deg;
--sx: -23deg;
}
.star10 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 4);
--x: calc(var(--unitSize) * 23.8);
--scaleY: 71%;
--r: 21deg;
--sx: -25deg;
}
.star11 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 13.4);
--x: calc(var(--unitSize) * 20.8);
--scaleY: 71%;
--r: 26deg;
--sx: -25deg;
}
.star12 {
/* --s: -36deg; */
--y: calc(var(--unitSize) * 12.2);
--x: calc(var(--unitSize) * 32.6);
--scaleY: 71%;
--r: 31deg;
--sx: -25deg;
}
.hat {
outline: calc(var(--unitSize) * 0.4) solid;
--x: calc(var(--unitSize) * 19.6);
--y: calc(var(--unitSize) * -16.4);
--blue: #2283D3;
--darkBlue: #19588e;
--border: #0004;
--white: white;
}
.hatBase {
border-radius: 50%;
border: calc(var(--unitSize) * 0.5) solid var(--border);
background: var(--white);
}
.hatP1 {
width: calc(var(--unitSize) * 5.1);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -13.2);
--y: calc(var(--unitSize) * 3.9);
}
.hatP2 {
width: calc(var(--unitSize) * 4.8);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -9.4);
--y: calc(var(--unitSize) * 3.7);
}
.hatP3 {
width: calc(var(--unitSize) * 5.1);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -10.2);
--y: calc(var(--unitSize) * 5.6);
}
.hatP4 {
width: calc(var(--unitSize) * 6.2);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -5.8);
--y: calc(var(--unitSize) * 6.6);
}
.hatP5 {
width: calc(var(--unitSize) * 5.5);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -5.5);
--y: calc(var(--unitSize) * 4.5);
}
.hatP6 {
width: calc(var(--unitSize) * 5.5);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -1.3);
--y: calc(var(--unitSize) * 5.6);
}
.hatP7 {
width: calc(var(--unitSize) * 5.5);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * -1.2);
--y: calc(var(--unitSize) * 8);
}
.hatP8 {
width: calc(var(--unitSize) * 5.1);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * 2.6);
--y: calc(var(--unitSize) * 6.3);
}
.hatP9 {
border-radius: 50% / 50% 100% 0 50%;
width: calc(var(--unitSize) * 6.4);
height: calc(var(--unitSize) * 5);
--x: calc(var(--unitSize) * 4.2);
--y: calc(var(--unitSize) * 8.7);
--r: 134deg;
}
.hatBase2 {
background: var(--white);
}
.hatP10 {
width: calc(var(--unitSize) * 2.7);
height: calc(var(--unitSize) * 3.8);
--x: calc(var(--unitSize) * -11.4);
--y: calc(var(--unitSize) * 4.7);
--r: 120deg;
}
.hatP11 {
width: calc(var(--unitSize) * 3.9);
height: calc(var(--unitSize) * 4.4);
--x: calc(var(--unitSize) * -9.1);
--y: calc(var(--unitSize) * 5.1);
--r: 108deg;
}
.hatP12 {
width: calc(var(--unitSize) * 3.8);
height: calc(var(--unitSize) * 8);
--x: calc(var(--unitSize) * -3.1);
--y: calc(var(--unitSize) * 6.6);
--r: 103deg;
}
.hatP13 {
width: calc(var(--unitSize) * 3);
height: calc(var(--unitSize) * 3.5);
--x: calc(var(--unitSize) * -5.2);
--y: calc(var(--unitSize) * 4.8);
--r: 80deg;
border-radius: calc(var(--unitSize) * 0.5);
}
.hatP14 {
width: calc(var(--unitSize) * 3.9);
height: calc(var(--unitSize) * 3.5);
--x: calc(var(--unitSize) * 2.1);
--y: calc(var(--unitSize) * 7.7);
--r: 109deg;
border-radius: calc(var(--unitSize) * 0.5);
}
.hatP15 {
width: calc(var(--unitSize) * 3.9);
height: calc(var(--unitSize) * 3.5);
--x: calc(var(--unitSize) * -1.1);
--y: calc(var(--unitSize) * 6.7);
--r: 109deg;
border-radius: calc(var(--unitSize) * 0.5);
}
.hatP16 {
width: calc(var(--unitSize) * 13.6);
height: calc(var(--unitSize) * 2.9);
--x: calc(var(--unitSize) * 5.7);
--y: calc(var(--unitSize) * -0.8);
--r: 83deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
background: var(--blue);
border-bottom: none;
border-radius: 50% / 100% 100% 0 0;
}
.hatP17 {
width: calc(var(--unitSize) * 10.5);
height: calc(var(--unitSize) * 1.4);
--x: calc(var(--unitSize) * -8.2);
--y: calc(var(--unitSize) * -0.7);
--r: -36deg;
--sx: 43deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
background: var(--blue);
border-bottom: none;
border-radius: 50% / 100% 100% 0 0;
}
.hatP18 {
width: calc(var(--unitSize) * 6.5);
height: calc(var(--unitSize) * 1.2);
--x: calc(var(--unitSize) * -1.3);
--y: calc(var(--unitSize) * -6);
--r: 124deg;
--sx: 34deg;
border: calc(var(--unitSize) * 0.5) solid var(--darkBlue);
border-bottom: none;
border-radius: 50% / 100% 100% 0 0;
}
.hatP19 {
width: calc(var(--unitSize) * 12.2);
height: calc(var(--unitSize) * 6.7);
--x: calc(var(--unitSize) * 1.8);
--y: calc(var(--unitSize) * -4.1);
--r: 7deg;
border-left: calc(var(--unitSize) * 5) solid transparent;
border-right: calc(var(--unitSize) * 5) solid transparent;
border-bottom: solid var(--blue);
border-bottom-width: calc(var(--unitSize) * 10.2);
}
.hatP20 {
width: calc(var(--unitSize) * 12.2);
height: calc(var(--unitSize) * 6.7);
--x: calc(var(--unitSize) * -4.9);
--y: calc(var(--unitSize) * 1.4);
--r: -33deg;
background: var(--blue);
}
.hatP21 {
width: calc(var(--unitSize) * 8.6);
height: calc(var(--unitSize) * 6.7);
--x: calc(var(--unitSize) * 1.3);
--y: calc(var(--unitSize) * 2.5);
--r: 8deg;
background: var(--blue);
}
.hatP22 {
width: calc(var(--unitSize) * 5.5);
aspect-ratio: 1/1;
--x: calc(var(--unitSize) * 2.3);
--y: calc(var(--unitSize) * -9.1);
background: var(--white);
border-radius: 50%;
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.blobHands {
--gold: #ffc162;
--border: #0004;
}
.blobHand {
width: calc(var(--unitSize) * 12.5);
height: calc(var(--unitSize) * 11.8);
--x: calc(var(--unitSize) * -7.7);
--y: calc(var(--unitSize) * 6.1);
--r: -157deg;
--sx: 0deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
background: var(--gold);
border-radius: 60% 40% 9% 5% / 60% 60% 40% 40%;
border-bottom: none;
}
.blobHand2 {
width: calc(var(--unitSize) * 12.7);
height: calc(var(--unitSize) * 11.7);
--x: calc(var(--unitSize) * 22.4);
--y: calc(var(--unitSize) * 17.7);
--r: -152deg;
--sx: 2deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
background: var(--gold);
border-radius: 60% 40% 10% 6% / 70% 60% 40% 30%;
border-bottom: none;
}
.cabinet {
--lightBrown: #AF6D50;
--brown: #9C6147;
--darkBrown: #80503B;
--border: #0004;
--gold: #ffc550;
outline: calc(var(--unitSize) * 0.5) solid;
--x: calc(var(--unitSize) * -34.9);
--y: calc(var(--unitSize) * -10.3);
}
.cabinetP1 {
background: var(--brown);
width: calc(var(--unitSize) * 17);
height: calc(var(--unitSize) * 23.9);
/* --x: calc(var(--unitSize) * -3); */
--sx: 27.9deg;
/* --y: calc(var(--unitSize) * 23); */
--r: -47.9deg;
padding: calc(var(--unitSize) * 3.2);
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.cabinetP2 {
background: var(--darkBrown);
/* background: red; */
width: calc(var(--unitSize) * 11.6);
height: calc(var(--unitSize) * 11.8);
--x: calc(var(--unitSize) * 13);
--y: calc(var(--unitSize) * 9);
--sy: -48deg;
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-block-width: calc(var(--unitSize) * 0.7);
border-radius: calc(var(--unitSize) * 0.5);
}
.cabinetP3 {
background: var(--lightBrown);
width: calc(var(--unitSize) * 26.3);
height: calc(var(--unitSize) * 28.5);
--x: calc(var(--unitSize) * -5.6);
--sy: 14.5deg;
--y: calc(var(--unitSize) * 20.2);
border: calc(var(--unitSize) * 0.5) solid var(--border);
padding-inline: calc(var(--unitSize) * 2);
border-radius: calc(var(--unitSize) * 0.5);
display: flex;
justify-content: space-evenly;
flex-direction: column;
}
.drawer {
position: relative;
background: var(--brown);
border: calc(var(--unitSize) * 0.5) solid var(--border);
height: calc(var(--unitSize) * 6);
display: flex;
justify-content: center;
align-items: center;
}
.drawer::before {
background: var(--gold);
aspect-ratio: 1/1;
border-radius: 50%;
width: calc(var(--unitSize) * 3.5);
border: calc(var(--unitSize) * 0.5) solid var(--border);
}
.lamp {
--x: calc(var(--unitSize) * -34.4);
--y: calc(var(--unitSize) * -19.2);
--blue: #245894;
--gold: #FFB352;
--brightGold: #ffd19c;
--border: #0004;
}
.lampBody {
background: var(--blue);
border-radius: 20% / 50%;
border: calc(var(--unitSize) * 0.4) solid var(--border);
border-bottom: none;
width: calc(var(--unitSize) * 15);
height: calc(var(--unitSize) * 20);
}
.lampBase {
background: var(--blue);
border-radius: 50%;
border: calc(var(--unitSize) * 0.4) solid var(--border);
width: calc(var(--unitSize) * 12);
height: calc(var(--unitSize) * 5.4);
--y: calc(var(--unitSize) * 8.6);
}
.lampCone {
background: var(--gold);
width: calc(var(--unitSize) * 25.9);
height: calc(var(--unitSize) * 16.6);
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-radius: 20% 20% 50% 50% / 80% 80% 20% 20%;
--y: calc(var(--unitSize) * -8.1);
}
.lampConeTop {
background: var(--brightGold);
width: calc(var(--unitSize) * 19.2);
height: calc(var(--unitSize) * 5);
border: calc(var(--unitSize) * 0.5) solid var(--border);
border-radius: 50%;
--y: calc(var(--unitSize) * -15.3);
}
.wall {
background: #02020252;
width: calc(var(--unitSize) * 50);
height: calc(var(--unitSize) * 0.5);
--x: calc(var(--unitSize) * -62.8);
--y: calc(var(--unitSize) * 30.7);
--r: -48deg;
}
.wall2 {
background: #0202026b;
width: calc(var(--unitSize) * 50);
height: calc(var(--unitSize) * 0.5);
--x: calc(var(--unitSize) * -42);
--y: calc(var(--unitSize) * -24.2);
--r: 90deg;
}
.canvas {
filter: brightness(0.8);
}
.mouthSnore {
border-radius: 50% / 75% 75% 25% 25%;
background: var(--orange);
border: calc(var(--unitSize) * 0.5) solid var(--border);
width: calc(var(--unitSize) * 8);
height: calc(var(--unitSize) * 4.3);
animation: snore var(--duration) ease-out infinite;
}
.mouthSnore::before {
bottom: calc(var(--unitSize) * -1.7);
right: calc(var(--unitSize) * -1.6);
background: lightskyblue;
border: calc(var(--unitSize) * 0.4) solid var(--border);
width: calc(var(--unitSize) * 2);
height: calc(var(--unitSize) * 2);
position: absolute;
border-radius: 10% 60% 50% 50% / 10% 50% 50% 60%;
transform-origin: 0 0;
transform: scale(0.9, 1.2) rotate(45deg);
}
@keyframes snore {
50% {
border-radius: 50%;
width: calc(var(--unitSize) * 3);
height: calc(var(--unitSize) * 3);
transform: translate(calc(var(--unitSize) * -1), calc(var(--unitSize) * 0));
}
}
@keyframes faceSnore {
50% {
transform: translate(calc(var(--unitSize) * 0), calc(var(--unitSize) * 0));
}
}
.blobFaceAnimation {
animation: faceSnore var(--duration) ease-out infinite;
transform: translate(calc(var(--unitSize) * 0.5), calc(var(--unitSize) * -0.5));
}
.blobBody {
animation: breathe var(--duration) ease-out infinite;
transform: scaleY(1.05);
}
@keyframes breathe {
50% {
transform: translate(calc(var(--unitSize) * 0), calc(var(--unitSize) * 0));
}
}
.hatAnimation {
animation: hatMove var(--duration) ease-out infinite;
transform: translate(calc(var(--unitSize) * 1), calc(var(--unitSize) * -0.5)) rotate(2deg);
}
@keyframes hatMove {
50% {
transform: none;
}
}
const SIZE_OFFSET = 1.25;
function resize(e) {
const minSize = Math.min(window.innerHeight, window.innerWidth);
document.querySelector(".canvas").style
.setProperty("--unitSize", SIZE_OFFSET / 100 * minSize + "px");
}
resize();
window.addEventListener("resize", resize)
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.