/* Festidi printables: letter-size sheets that look the same on screen (scaled) and on paper.
   Everything inside a sheet is sized in container units (cqw), so 100cqw = the sheet's width = 8.5 in when printed. */
.pr-head { padding: 36px 0 10px; }
.pr-head h1 { font-size: clamp(2.1rem, 5vw, 3.2rem); }
.pr-list { display: grid; gap: 34px; padding: 18px 0 10px; }
.pr-item { display: grid; gap: 10px; max-width: 816px; margin: 0 auto; width: 100%; }
.pr-bar { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; justify-content: space-between; }
.pr-bar > div { flex: 1 1 260px; min-width: 0; }
.pr-bar h2 { font-size: 1.35rem; } .pr-bar p { margin: 2px 0 0; color: var(--ink-3); font-size: .88rem; }
.sheet { container-type: inline-size; position: relative; width: 100%; aspect-ratio: 8.5 / 11; background: #fff; color: #181512; box-shadow: 0 24px 60px -30px rgba(0,0,0,.5), 0 0 0 1px rgba(0,0,0,.06); overflow: hidden; font-family: var(--sans); }
.sheet * { box-sizing: border-box; }
.sheet p, .sheet h3, .sheet dl { margin: 0; }
.sheet .serif { font-family: var(--serif); font-weight: 350; letter-spacing: -.015em; font-variation-settings: "opsz" 144; }
.sheet .ph { display: block; width: 100%; height: 100%; object-fit: cover; }
.sheet .mark { position: absolute; font: 600 1.25cqw/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; }
.sheet .fill { display: inline-block; min-width: 30cqw; border-bottom: .22cqw solid #181512; height: 1em; vertical-align: -.1em; }
.sheet .fill.s { min-width: 9cqw; }
.sheet .cut { position: absolute; left: 3cqw; right: 3cqw; border-top: .2cqw dashed #b9b1a4; }
.sheet .cutv { position: absolute; top: 3cqw; bottom: 3cqw; border-left: .2cqw dashed #b9b1a4; }

/* invitation: two per sheet, each 8.5 x 5.5 in */
.inv2 { position: absolute; left: 0; right: 0; height: 50%; display: grid; grid-template-columns: 44% 1fr; padding: 4.7cqw; gap: 4.4cqw; }
.inv2.b { top: 50%; }
.inv2 .pic { border-radius: 2cqw; overflow: hidden; background: #ddd; }
.inv2 .txt { display: grid; align-content: center; gap: 1.6cqw; min-width: 0; }
.inv2 .eb { font: 600 1.35cqw var(--sans); letter-spacing: .16em; text-transform: uppercase; color: #6f675d; }
.inv2 .big { font-size: 4.6cqw; line-height: 1.25; }
.inv2 .big .fill { min-width: 19cqw; } .inv2 .big .fill.s { min-width: 7cqw; }
.inv2 .tag { font: italic 300 2cqw/1.3 var(--serif); color: #4a443d; }
.inv2 dl { display: grid; grid-template-columns: auto 1fr; gap: 1.3cqw 1.8cqw; margin: 1cqw 0 0; font-size: 1.7cqw; }
.inv2 dt { font-weight: 600; letter-spacing: .08em; text-transform: uppercase; font-size: 1.2cqw; color: #6f675d; padding-top: .7cqw; }
.inv2 dd { margin: 0; border-bottom: .18cqw solid #181512; min-height: 3cqw; }
.inv2 .site { font: 600 1.15cqw var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; margin-top: 1cqw; }

/* four cards per sheet, each 4.25 x 5.5 in */
.q4 { position: absolute; width: 50%; height: 50%; padding: 3.6cqw; display: grid; }
.q4.tr { left: 50%; } .q4.bl { top: 50%; } .q4.br { left: 50%; top: 50%; }
.ty { grid-template-rows: 38% auto 1fr auto; gap: 2cqw; }
.ty .pic { border-radius: 1.8cqw; overflow: hidden; background: #ddd; }
.ty h3 { font-size: 5.6cqw; font-style: italic; font-weight: 300; margin: 0; }
.ty .lines { display: grid; gap: 2.9cqw; align-content: start; font-size: 1.6cqw; color: #4a443d; }
.ty .lines span { border-bottom: .18cqw solid #181512; min-height: 2.2cqw; display: block; }
.ty .site, .note4 .site { font: 600 1cqw var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; }
.note4 { display: grid; grid-template-rows: auto auto 1fr auto; gap: 1.6cqw; border: .25cqw solid #181512; border-radius: 2cqw; padding: 3cqw; min-height: 0; }
.note4 .eb { font: 600 1.15cqw var(--sans); letter-spacing: .16em; text-transform: uppercase; color: #6f675d; }
.note4 h3 { font-size: 3.6cqw; line-height: 1.1; margin: 0; }
.note4 .lines { display: grid; gap: 1.6cqw; align-content: start; font-size: 1.45cqw; color: #4a443d; }
.note4 .lines b { font-weight: 600; color: #181512; margin-top: 1cqw; }
.note4 .lines span { border-bottom: .18cqw solid #181512; min-height: 2.6cqw; display: block; }

/* door sign */
.door { position: absolute; inset: 0; display: grid; grid-template-rows: 58% 1fr; }
.door .pic { position: relative; margin: 4.7cqw 4.7cqw 0; border-radius: 2.4cqw; overflow: hidden; background: #ddd; }
.door .txt { display: grid; align-content: center; justify-items: center; text-align: center; gap: 2.2cqw; padding: 3cqw 7cqw 7cqw; }
.door .eb { font: 600 1.6cqw var(--sans); letter-spacing: .2em; text-transform: uppercase; color: #6f675d; }
.door h3 { font-size: 11cqw; line-height: .95; margin: 0; font-style: italic; font-weight: 300; }
.door .who { font-size: 4.2cqw; line-height: 1.2; }
.door .who .fill { min-width: 34cqw; }
.door .site { position: absolute; bottom: 4.2cqw; left: 0; right: 0; text-align: center; font: 600 1.3cqw var(--sans); letter-spacing: .16em; text-transform: uppercase; color: #6f675d; }

/* bingo: two cards per sheet */
.bingo { position: absolute; left: 0; right: 0; height: 50%; padding: 4.2cqw 9cqw; display: grid; grid-template-rows: auto 1fr auto; gap: 1.6cqw; }
.bingo.b { top: 50%; }
.bingo .hd { display: flex; justify-content: space-between; align-items: baseline; gap: 2cqw; }
.bingo h3 { font-size: 4.6cqw; margin: 0; } .bingo h3 em { font-style: italic; font-weight: 300; }
.bingo .hd span { font: 600 1.2cqw var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; white-space: nowrap; }
.bingo .grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 1fr); border: .3cqw solid #181512; border-radius: 1.6cqw; overflow: hidden; }
.bingo .grid span { display: grid; place-items: center; text-align: center; padding: .8cqw; border-right: .2cqw solid #181512; border-bottom: .2cqw solid #181512; font: 600 2.1cqw/1.15 var(--sans); }
.bingo .grid span:nth-child(4n) { border-right: 0; } .bingo .grid span:nth-child(n+13) { border-bottom: 0; }
.bingo .ft { font-size: 1.25cqw; color: #6f675d; display: flex; justify-content: space-between; gap: 2cqw; }
.caller { position: absolute; inset: 0; padding: 6cqw 7cqw; display: grid; grid-template-rows: auto auto 1fr auto; gap: 2cqw; }
.caller h3 { font-size: 5cqw; margin: 0; }
.caller p { margin: 0; font-size: 1.7cqw; color: #4a443d; }
.caller .grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 1fr); }
.caller .grid span { display: grid; place-items: center; text-align: center; border: .2cqw dashed #b9b1a4; font: 400 2.8cqw/1.1 var(--serif); padding: 1cqw; margin: -.1cqw 0 0 -.1cqw; }
.caller .site { font: 600 1.2cqw var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; }

/* baby predictions: two per sheet */
.pred { position: absolute; left: 0; right: 0; height: 50%; padding: 4.7cqw 7cqw; display: grid; grid-template-columns: 30% 1fr; gap: 4cqw; }
.pred.b { top: 50%; }
.pred .pic { border-radius: 2cqw; overflow: hidden; background: #ddd; }
.pred .txt { display: grid; align-content: center; gap: 1.2cqw; }
.pred h3 { font-size: 4.4cqw; margin: 0 0 1cqw; } .pred h3 em { font-style: italic; font-weight: 300; }
.pred dl { display: grid; grid-template-columns: auto 1fr; gap: 1.4cqw 1.8cqw; margin: 0; }
.pred dt { font: 600 1.2cqw var(--sans); letter-spacing: .08em; text-transform: uppercase; color: #6f675d; padding-top: .8cqw; white-space: nowrap; }
.pred dd { margin: 0; border-bottom: .18cqw solid #181512; min-height: 2.8cqw; }
.pred .site { font: 600 1.1cqw var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6f675d; }

@media (max-width: 640px) { .pr-bar .btn { min-height: 40px; } }
@media print {
  @page { size: letter; margin: 0; }
  html, body { background: #fff !important; }
  .nav, .foot, .pr-head, .pr-bar, .no-print, .skip { display: none !important; }
  .wrap { max-width: none; padding: 0; }
  .pr-list { display: block; padding: 0; }
  .pr-item { display: block; max-width: none; margin: 0; }
  .sheet { width: 8.5in; height: 11in; aspect-ratio: auto; box-shadow: none; break-inside: avoid; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .sheet + .sheet, .pr-item + .pr-item .sheet:first-of-type { break-before: page; page-break-before: always; }
  .fineprint { display: none; }
  body.print-one .pr-item:not(.on) { display: none; }
}
