[hidden]{display:none!important}
body.invitation-locked{overflow:hidden}
.invitation-cover{position:fixed;inset:0;z-index:100;background:#62272f;color:#fff4e2;isolation:isolate;overflow:hidden;transition:opacity .65s .45s}
.cover-paper{position:absolute;inset:0;background:linear-gradient(135deg,#722e3799,#401b2799);z-index:-2}
.cover-paper:after{content:'';position:absolute;inset:0;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.62' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.cover-flap{position:absolute;top:0;left:-1%;width:102%;height:65%;background:linear-gradient(160deg,#78323a66,#57212c);clip-path:polygon(0 0,100% 0,100% 67%,50% 100%,0 67%);transform-origin:top;transition:transform .9s ease;filter:drop-shadow(0 15px 8px #22070c55);z-index:-1}
.cover-lace{position:absolute;bottom:0;left:0;width:100%;height:34%;background:url("assets/lace.svg") center/100% 100% no-repeat;opacity:.65}
.cover-title{position:absolute;top:27%;left:20px;right:20px;text-align:center;transition:opacity .35s}
.cover-title>p{font:27px 'Cormorant Garamond',Georgia,serif}
.cover-title h1{font:62px/1.2 'Marck Script',cursive;margin-top:16px}
.cover-title h1 span{font:italic 42px 'Cormorant Garamond',Georgia,serif;padding:0 8px}
.cover-open{position:absolute;top:52%;left:50%;transform:translateX(-50%);padding:0;border:0;background:transparent;color:#fff4e2;display:flex;flex-direction:column;align-items:center;gap:35px;cursor:pointer;transition:opacity .4s,transform .4s;min-width:300px}
.cover-open img{width:160px;height:205px;object-fit:contain;filter:drop-shadow(2px 12px 7px #1d070a66)}
.cover-open>span{font:27px 'Cormorant Garamond',Georgia,serif}
.cover-open:hover img{filter:drop-shadow(2px 12px 7px #1d070a66) brightness(1.06)}
.cover-open:focus-visible{outline:1px solid #e8d5bd;outline-offset:12px;border-radius:5px}
.invitation-cover.is-opening{opacity:0;pointer-events:none}
.is-opening .cover-flap{transform:rotateX(160deg)}
.is-opening .cover-title{opacity:0}
.is-opening .cover-open{opacity:0;transform:translateX(-50%) scale(.85)}
@media(max-width:700px){.cover-title{top:26%;left:15px;right:15px}
.cover-title>p{font-size:24px}
.cover-title h1{font-size:44px;margin-top:18px}
.cover-title h1 span{font-size:30px;padding:0 3px}
.cover-open{top:51%;gap:34px}
.cover-open img{width:135px;height:175px}
.cover-open>span{font-size:25px}}
@media(max-height:650px){.cover-title{top:16%}
.cover-title h1{font-size:40px}
.cover-open{top:45%;gap:15px}
.cover-open img{height:145px;width:110px}
.cover-open>span{font-size:22px}}
@media(prefers-reduced-motion:reduce){.invitation-cover,.cover-flap,.cover-title,.cover-open{transition:none}}
.invitation-cover{cursor:pointer}
@media(max-width:700px){.cover-title h1{font-size:clamp(32px,9vw,44px);white-space:nowrap}
.cover-title h1 span{font-size:.68em}}
/* Ivory lace stationery and airy blush bridal bouquet. */
.invitation-cover{background:#f5efe4;color:#72594e}
.cover-paper{background:#f5efe4 url("assets/ivory-envelope-v2.png") center/100% 100% no-repeat;z-index:-2;transition:transform 1.1s ease}
.cover-paper:after{display:none}
.cover-flap{background:none;filter:none}
.cover-lace{display:none}
.cover-title{top:27%}
.cover-open{color:#72594e;top:51%;gap:42px}
.cover-open img{width:clamp(150px,30vw,210px);height:clamp(190px,38vw,267px);filter:drop-shadow(2px 9px 7px #79604544)}
.cover-open:hover img{filter:drop-shadow(2px 9px 7px #79604544) brightness(1.02)}
.cover-open:focus-visible{outline-color:#72594e}
.is-opening .cover-paper{transform:translateY(-4%) scale(1.03)}
@media(max-width:700px){.cover-title{top:27%}
.cover-open{top:51%;gap:35px}}
@media(max-height:650px){.cover-title{top:16%}
.cover-open{top:43%;gap:15px}
.cover-open img{width:105px;height:140px}}
@media(prefers-reduced-motion:reduce){.cover-paper{transition:none}}
/* Painterly cover and layered stationery. */
@font-face{font-family:WeddingCalligraphy;src:url('assets/miama-nueva.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
.invitation-cover{background:#817b65;color:#fff9ea}
.cover-paper{background:#817b65 url('assets/cover-painting.png') center/cover no-repeat;filter:brightness(.81)}
.cover-flap{display:none}
.cover-title{top:22%;left:20px;right:20px;text-shadow:0 1px 10px #49483788}
.cover-title>p{font:24px 'Cormorant Garamond',Georgia,serif;font-variant:small-caps}
.cover-title h1{font:italic 76px/1.15 WeddingCalligraphy,'Cormorant Garamond',serif;white-space:nowrap;letter-spacing:0;margin-top:16px}
.cover-title h1 span{font:inherit;padding:0 9px}
.cover-open{top:43%;gap:24px;color:#fff9ea;min-width:0;width:min(370px,76vw)}
.cover-open>span:last-child{font:24px 'Cormorant Garamond',Georgia,serif;font-variant:small-caps;text-shadow:0 1px 8px #363a2c}
.mini-envelope{width:100%;aspect-ratio:1.22;background:#f5efe4 url('assets/ivory-envelope-v2.png') center/100% 100% no-repeat;position:relative;box-shadow:0 12px 30px #2d302f55;transition:transform .8s}
.cover-open .mini-envelope img{position:absolute;width:19%;height:28%;object-fit:contain;left:50%;top:57%;transform:translate(-50%,-30%);filter:drop-shadow(1px 3px 2px #8f795744)}
.cover-open:hover .mini-envelope{transform:translateY(-3px)}
.cover-open:focus-visible{outline-color:#f8f2df}
.is-opening .mini-envelope{transform:translateY(-30px) rotateX(18deg)}
@media(max-width:700px){.cover-title{top:23%}
.cover-title>p{font-size:20px}
.cover-title h1{font-size:clamp(43px,11vw,62px);line-height:1.25;margin-top:14px}
.cover-title h1 span{font-size:inherit;padding:0 5px}
.cover-open{top:42%;width:min(355px,73vw);gap:24px}
.cover-open>span:last-child{font-size:22px}
.cover-open .mini-envelope img{width:21%;height:29%}}
@media(max-height:650px){.cover-title{top:15%}
.cover-title h1{font-size:48px}
.cover-open{top:36%;width:min(260px,55vw);gap:14px}
.cover-open>span:last-child{font-size:19px}}
@media(prefers-reduced-motion:reduce){.mini-envelope{transition:none}}
.cover-title h1{font-size:clamp(31px,7.8vw,48px)}
@media(max-width:700px){.cover-title h1{font-size:clamp(30px,7.8vw,46px)}}
.mini-envelope{background-size:100% 160%;background-position:center 75%}
.cover-open .mini-envelope img{top:51%}
/* Fold seams meet at the seal; lace ends at the top corners. */
.mini-envelope{background-image:url('assets/ivory-envelope-v4.png');background-size:100% 100%;background-position:center}
.cover-open .mini-envelope img{top:49%}
/* Keep the cover independent of the invitation's form-button styling. */
.cover-open{margin:0;letter-spacing:normal;justify-content:flex-start}.cover-open:hover{background:transparent}
