/* Geometry pass: preserve the image ratio on compact portrait screens. */
.formal-frame{min-height:0;aspect-ratio:2/3}
.formal-content{padding:26% 17% 12%}
.formal-content .names-space{height:clamp(76px,24vw,115px)}
.formal-content .formal-space{height:clamp(35px,12vw,57px)}
.formal-content .fine-rule{margin:18px auto}
/* Material pass: the generated letterpress artwork supplies actual embossed detail. */
.lid-face{background-image:linear-gradient(#f8f4ec33,#f8f4ec66),url('../assets/images/frame.webp');background-size:100% auto;background-position:top center}
.fold-bottom{background-image:linear-gradient(#f8f4ec66,#f8f4ec33),url('../assets/images/frame.webp');background-size:100% auto;background-position:bottom center}
.lid-face .emboss,.lower-emboss{opacity:.08}
.frame-art{mask-image:linear-gradient(transparent,#000 3%,#000 97%,transparent)}
.hero-arch{mask-image:linear-gradient(transparent,#000 5%,#000 93%,transparent)}
/* Motion pass: give the invitation a slow physical lift before its dissolve. */
.opening-out .inner-paper{box-shadow:0 10px 30px #92795926}
.opening[hidden]{display:none}
.canvas:focus{outline:none}
@media(max-height:650px){.envelope{min-height:100svh}.seal-trigger{width:78px;min-height:78px;left:calc(50% - 39px)}}
