There aren't any tried and true "formulas" for stuff like this. It's really more art than science in general. There are some general missteps to avoid - i.e. too small type, not enough leading, too tight margins, etc - but what is "too small" or "too tight" has to be determined visually. It's often based upon a typeface and an audience.
One has to look at a page and then determine if margins are sufficient to allow comfortable line lengths and visual tracking by readers. In addition, one has to consider page count. Greater page counts will have more creep. This will change margins from a technical standpoint. You'll want to keep text out of gutters so it can easily be read.
In "blanket" type size terms... 11pt ain't "bad" but depends greatly upon the typeface. And older audiences would more easily read something larger, like 12pt or 13pt... remember nature has a way of really altering vision past 40-45 years of age, making it difficult for some to see smaller type as they age. (Even for those who have never needed glasses.) A younger audience may be able to read as small as 9pts comfortably.
Leading will also play a large role. Most software will default to 120% for leading. Again, depending upon the audience 120% may not be enough leading.
Opinion:
I'm not familiar with Cardo. That is to say, I've never used it in my work. However, merely looking at the Google spec' page.. 16px(pts) is way too small for readability in print. In fact, the 21px size on the spec page would be more in line for adequate readability... but I've never set any body copy at anything even close to 21pts. So, I'd have to install the font and test (via printouts).
Just based on that spec page..

11pt Cardo may require a magnifying glass to actually read.
Even if set it at some ridiculous size like 18-21pts...

I still don't like it. For my taste, it's too tight. Cardo really needs more letter spacing in my opinion. I realize one can increase letter-spacing in most apps. But if the typeface itself needs this as a "global" adjustment, I tend to go find some other typeface.
In broad, general terms, using a go-to serif typeface I like for text - Stone Informal .... for a relatively young audience (20-40) I'll use 11pt type with 16pts leading. For an older audience (40+) I tend to default to 12pt type with 17pts leading. Realize I like Stone Informal because it has a larger x-height and counters and looks larger than it actually may be set at. These are not "rules" or set in stone. It's merely my preference for the work I do. It may not fit your specific piece.
I keep hearing Jack Butler in my head.... 220-221 ... whatever it takes...