@import url("https://fonts.googleapis.com/css2?family=Courgette&display=swap"); * { box-sizing:border-box } html,body { height:100%; font-family:"Courgette",cursive } body { display:flex; justify-content:center; align-items:center; background-color:#ffffff; overflow:hidden } .baloon { height:calc(1.2 * var(--width)); width:var(--width); border:2px solid black; border-radius:50% 50% 50% 50%/45% 45% 55% 55%; background-color:red; position:absolute; margin-bottom:20px; top:100%; -webkit-animation:animate 5s ease-in-out infinite; animation:animate 5s ease-in-out infinite; -webkit-animation-delay:calc(var(--animationDelay) * 0.15); animation-delay:calc(var(--animationDelay) * 0.15); z-index:1; opacity:0.75 } .baloon::before,.baloon::after { content:""; position:absolute; top:0; margin:auto; border-radius:inherit; opacity:0.25 } .baloon::before { border-left:calc(var(--width) * 0.15) solid #ffffff; left:4px; height:100%; width:calc(0.95 * var(--width)) } .baloon::after { height:100%; width:80%; right:4px; border-right:calc(var(--width) * 0.15) solid #000000 } .baloon span { display:inline-flex; position:absolute; height:calc(0.4 * var(--width)); width:calc(0.04 * var(--width)); top:100%; left:0; right:0; margin:auto; background-image:inherit; z-index:-1; border-radius:20px; border:2px solid black } .baloon span::before,.baloon span::after { content:""; position:absolute; top:0; left:50%; transform:translatex(-50%); border-radius:4px; background-image:inherit; margin:auto; width:calc(0.1 * var(--width)); height:calc(0.12 * var(--width)); border-radius:500px; border:2px solid black } .baloon span::after { top:calc(0.14 * var(--width)); width:calc(0.08 * var(--width)); height:calc(0.02 * var(--width)) } .wishes { font-size:4rem; color:#242423 } @-webkit-keyframes animate { from { top:100% } to { top:-55% } }@keyframes animate { from { top:100% } to { top:-55% } }