* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-size: 16px;
}

*:before,
*:after {
  content: "";
  position: absolute;
}

.container {
  height: 80vh;
  width: 80em;
  max-width: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
}
@media only screen and (max-width: 48em) {
  .container {
    flex-wrap: wrap;
    height: 100%;
  }
}

.dessert {
  position: relative;
  width: 25%;
  height: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
@media only screen and (max-width: 48em) {
  .dessert {
    width: 50%;
  }
}
.dessert::before {
  width: 8em;
  height: 1em;
  background: radial-gradient(ellipse at 45% 60%, #f0f1f4cc, transparent);
  border-radius: 50%;
  bottom: 0;
}
.dessert .cup {
  position: absolute;
  width: 7.8em;
  height: 3.75em;
  bottom: 0.5em;
  background: lightblue;
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  border-radius: 2px 2px 40px 40px;
  z-index: 2;
}
.dessert.dessert-b .cup {
  background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), repeating-conic-gradient(at 50% 250%, rgba(255, 255, 255, 0.2) 0 1deg, rgba(255, 255, 255, 0.4) 0 2deg, rgba(255, 255, 255, 0) 0 3deg), linear-gradient(transparent 0.2rem, #40C6FF 0.2rem), radial-gradient(#40C6FF 50%, #73d5ff 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
}
@-moz-document url-prefix() {
  .dessert.dessert-b .cup {
    background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), linear-gradient(transparent 0.2rem, #40C6FF 0.2rem), radial-gradient(#40C6FF 50%, #73d5ff 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
  }
}
.dessert.dessert-g .cup {
  background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), repeating-conic-gradient(at 50% 250%, rgba(255, 255, 255, 0.2) 0 1deg, rgba(255, 255, 255, 0.4) 0 2deg, rgba(255, 255, 255, 0) 0 3deg), linear-gradient(transparent 0.2rem, #06BB9C 0.2rem), radial-gradient(#06BB9C 50%, #08ecc5 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
}
@-moz-document url-prefix() {
  .dessert.dessert-g .cup {
    background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), linear-gradient(transparent 0.2rem, #06BB9C 0.2rem), radial-gradient(#06BB9C 50%, #08ecc5 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
  }
}
.dessert.dessert-y .cup {
  background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), repeating-conic-gradient(at 50% 250%, rgba(255, 255, 255, 0.2) 0 1deg, rgba(255, 255, 255, 0.4) 0 2deg, rgba(255, 255, 255, 0) 0 3deg), linear-gradient(transparent 0.2rem, #FFCC6A 0.2rem), radial-gradient(#FFCC6A 50%, #ffdd9d 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
}
@-moz-document url-prefix() {
  .dessert.dessert-y .cup {
    background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), linear-gradient(transparent 0.2rem, #FFCC6A 0.2rem), radial-gradient(#FFCC6A 50%, #ffdd9d 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
  }
}
.dessert.dessert-r .cup {
  background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), repeating-conic-gradient(at 50% 250%, rgba(255, 255, 255, 0.2) 0 1deg, rgba(255, 255, 255, 0.4) 0 2deg, rgba(255, 255, 255, 0) 0 3deg), linear-gradient(transparent 0.2rem, #88011d 0.2rem), radial-gradient(#88011d 50%, #bb0128 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
}
@-moz-document url-prefix() {
  .dessert.dessert-r .cup {
    background: radial-gradient(ellipse at 0% 0%, transparent 60%, rgba(0, 0, 0, 0.1) 70%), linear-gradient(transparent 0.2rem, #88011d 0.2rem), radial-gradient(#88011d 50%, #bb0128 51% 74%, transparent 75%) 0 0/0.5rem 0.5rem;
  }
}
.dessert .cake {
  position: absolute;
  width: 8em;
  height: 2em;
  bottom: calc(0.5em + 3.75em - 0.8em);
  border-radius: 50%;
  background: linear-gradient(#805231 45%, #5b3a23 55%);
}
.dessert .cake.vanilla {
  background: linear-gradient(#E7AC4E 45%, #e19721 55%);
}

.icing {
  position: absolute;
  bottom: calc(3.75em + 1.2em);
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
}
.icing.icing-strawberry .layer1, .icing.icing-strawberry .layer2, .icing.icing-strawberry .layer3 {
  background: linear-gradient(#FCE3E7 70%, #f28798 98%, #ca1633);
  box-shadow: inset -8px -8px rgba(202, 22, 51, 0.08);
}
.icing.icing-chocolate .layer1, .icing.icing-chocolate .layer2, .icing.icing-chocolate .layer3 {
  background: linear-gradient(#805231 70%, #362315 98%, black);
  box-shadow: inset -8px -8px rgba(0, 0, 0, 0.08);
}
.icing.icing-caramel .layer1, .icing.icing-caramel .layer2, .icing.icing-caramel .layer3 {
  background: linear-gradient(#ebc6a8 70%, #d89055 98%, #78451c);
  box-shadow: inset -8px -8px rgba(120, 69, 28, 0.08);
}
.icing.icing-cream .layer1, .icing.icing-cream .layer2, .icing.icing-cream .layer3 {
  background: linear-gradient(#E7E3D7 70%, #c1b697 98%, #776b48);
  box-shadow: inset -8px -8px rgba(119, 107, 72, 0.08);
}
.icing .layer1 {
  width: 7.6em;
  height: 1.2em;
  border-radius: 1rem;
  position: relative;
}
.icing .layer2 {
  width: 6.8em;
  height: 1.8em;
  border-radius: 1.2rem 1.2rem 0.5rem 0.5rem;
  position: relative;
  bottom: -0.2rem;
}
.icing .layer3 {
  width: 5.2em;
  height: 2em;
  border-radius: 150% 20% 30% 50%;
  position: relative;
  bottom: -0.8rem;
}
.icing .layer1::before,
.icing .layer2::before,
.icing .layer3::before {
  content: '';
  position: absolute;
  width: 42%;
  height: 25%;
  border-radius: 50%;
  box-shadow: 0.5rem 0.6rem 0 0 #ffffff16;
}

.dessert-y > .icing .layer2,
.dessert-y > .icing .layer3 {
  display: none;
}
.dessert-y > .icing .layer1 {
  width: 8em;
  height: 1.8em;
  background: repeating-radial-gradient(circle at -25% -550%, white, #FCE3E7 0.08em, #f7b5c0 0.4em, #f28798 0.6em);
}
.dessert-y > .icing .layer1::after {
  content: '';
  position: absolute;
  width: 2.5em;
  height: 3.2em;
  left: 2.4em;
  bottom: calc(3.2em - 1.8em - 0.6em);
  background: #DD3D3D;
  border-radius: 29% 26% 45% 63%/32% 25% 70% 71%;
  transform: rotate(-64deg);
  background-image: radial-gradient(ellipse at 50% 0%, #E3A31C 10%, #ca1633 12% 20%, transparent 20%);
  background-size: 0.9em 0.9em;
  box-shadow: inset 0.4em -0.5em rgba(0, 0, 0, 0.15);
}
.dessert-y > .icing .layer2,
.dessert-y > .icing .layer2::before {
  all: unset;
  position: absolute;
  width: 0.8em;
  height: 1.2em;
  left: 1.6em;
  bottom: calc(3.2em - 0.8em);
  border-radius: 1em 0;
  background: #608D36;
  transform: rotate(15deg);
  box-shadow: inset -0.2em 0em rgba(0, 0, 0, 0.15);
}
.dessert-y > .icing .layer2::before {
  content: '';
  left: 0.3em;
  top: -0.6em;
  transform: rotate(125deg) scale(0.7);
  box-shadow: inset 0.2em 0em rgba(0, 0, 0, 0.15);
}

.dessert-b > .icing .layer3::after {
  content: '';
  position: absolute;
  width: 2.5em;
  height: 3.2em;
  background: white;
  transform: rotate(50deg);
  border-radius: 50%;
  right: 1.2em;
  top: -1.2em;
  z-index: -1;
  box-shadow: 1em 0 0 0.5em #805231;
}

.dessert-g > .icing .layer3 {
  height: 2.4em;
  width: 5.6em;
  border-radius: 2em 2em 0.4em 0.4em;
  background: linear-gradient(#805231 70%, #362315 98%, black);
  box-shadow: inset -8px -8px rgba(0, 0, 0, 0.08);
}
.dessert-g > .icing .layer3::after {
  content: '';
  position: absolute;
  width: 1em;
  height: 2.8em;
  background: linear-gradient(transparent 10%, #805231 20%, #5b3a23 28%, black 36%, #362315 46%);
  bottom: -1.6em;
  right: 1.8em;
  border-radius: 2em;
  box-shadow: 1em 0.8em 0 -0.2em #362315, 1.8em 0.5em 0 -0.1em #362315;
}

.dessert-r > .icing .layer3 {
  height: 1.8em;
  border-radius: 1em;
}
.dessert-r > .icing .layer3::after {
  content: '';
  width: 2.8em;
  height: 2.4em;
  border-radius: 50%;
  left: calc(2.6em - 1em);
  top: -1.4em;
  transform: rotate(-25deg);
  background: radial-gradient(ellipse at 92% 40%, #ed0233, #bb0128 20%, #88011d 59%, #E7E3D7 40%);
  box-shadow: 1.02em -2.18em 0 0.4em white, 1.1em -2em 0 0.3em #88011d;
}

.dessert-b::after {
  content: '';
  position: relative;
  position: absolute;
  width: 2em;
  height: 3.6em;
  bottom: calc(0.5em + 3.75em + 1.2em + 1.8em + 2em - 2.4em);
  left: calc(50% + 2em);
  transform: rotate(24deg);
  z-index: -2;
  background: radial-gradient(circle at 50% 0, #5b3a23 60%, transparent) 0 0/0.9em 0.3em, radial-gradient(circle at 50% 0, #5b3a23 60%, transparent) 1.05em 0/0.9em 0.3em, linear-gradient(to right, #dbbaa2 0.02em, #ffffff01 0.1em, transparent 0.3em 0.9em, #bf8358 0.9em 0.92em, white 0.95em 1.05em, #bf8358 1.05em 1.07em, #ffffff01 1.15em, transparent 1.35em), repeating-linear-gradient(#805231, #805231 0.4em, #E7E3D7 0.4em, #E7E3D7 0.6em);
  border-radius: 2px;
  background-repeat: no-repeat;
}

.dessert-g::after {
  content: '';
  position: relative;
  position: absolute;
  width: 2.4em;
  height: 3.6em;
  bottom: calc(0.5em + 3.75em + 1.2em + 1.8em + 2em - 1.2em);
  left: calc(50% - 0.8em);
  background: black;
  border-radius: 50%;
  box-shadow: -0.3em 0 #E7E3D7, -0.8em 0 black;
  transform: rotate(-20deg);
  z-index: -2;
  background-repeat: no-repeat;
}