@font-face{font-family:Invitation;src:url('cormorant.ttf') format('truetype');font-weight:400 600;font-display:swap}
:root{--wine:#7c222c;--paper:#fff3db;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:#eee8dd;color:var(--wine);font-family:Invitation,Georgia,serif;-webkit-font-smoothing:antialiased}html{scrollbar-gutter:stable}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #883b3c;outline-offset:5px}[hidden]{display:none!important}
#welcome{min-height:100svh;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:100px 20px 70px;gap:35px;overflow:hidden}
#cover-heading{text-align:center;margin-bottom:12px}#cover-heading p{font-size:13px;letter-spacing:.15em;margin:0 0 14px}h1{font-size:clamp(34px,6vw,51px);font-weight:500;margin:0}h1 span{font-style:italic;color:#a77d50}
#envelope{position:relative;width:min(650px,100%);aspect-ratio:3/2;perspective:1400px;filter:drop-shadow(0 18px 22px #75573a25)}#envelope img{width:100%;height:100%;display:block}.lining{position:absolute;inset:0;background:linear-gradient(#e6d6bc,#fff1d5);border:1px solid #d6bd94}.pocket{position:absolute;inset:0;clip-path:polygon(0 0,50% 70%,100% 0,100% 100%,0 100%);z-index:3}.flap{position:absolute;inset:0;transform-origin:center top;transform-style:preserve-3d;z-index:4}.flap>img,.flap-back{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 70%);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flap>img{transform:translateZ(.3px)}.flap-back{transform:rotateX(180deg);background:linear-gradient(#f8ecd6,#ecd9b5)}
#seal{position:absolute;z-index:6;width:clamp(70px,12vw,105px);aspect-ratio:1;border-radius:48% 51% 47% 49%;border:5px double #c28a6a;box-shadow:0 4px 9px #4e202350,inset 0 0 0 3px #76282a,inset 4px 4px 8px #d0806d55;background:radial-gradient(ellipse at 32% 22%,#a95751,#762630 75%);color:#f7dbaf;transform:translate(-50%,-50%);font:33px Invitation,serif;transition:filter .2s}#seal:hover{filter:brightness(1.08)}#seal i{font-size:.6em}#seal:disabled{cursor:wait}#prompt{font-size:21px;margin:0;text-align:center}#card{position:relative;width:min(720px,calc(100% - 24px));aspect-ratio:2/3;margin:24px auto 40px;container-type:inline-size;box-shadow:0 15px 40px #68503822;background:var(--paper)}#art{display:block;width:100%;height:100%;position:absolute;inset:0}#flames{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.ink{position:absolute;width:100%;left:0;text-align:center;margin:0;transform:translateY(-50%);font-weight:500;white-space:nowrap;color:var(--wine);line-height:1.2}.names{font-style:italic;letter-spacing:-.025em}.intro,.blessing{font-style:italic}.kicker,.label{letter-spacing:.16em}.date{letter-spacing:.035em}#names:focus{outline:none}#maps{position:absolute;top:83.7%;left:50%;transform:translateX(-50%);width:48%;height:4.5%;display:flex;align-items:center;justify-content:center;background:var(--wine);border-radius:5px;color:#fff4df;text-decoration:none;font-size:2.9cqw;white-space:nowrap;min-height:32px}#maps:hover{background:#641d25}#close{position:absolute;z-index:3;top:7px;right:7px;width:44px;height:44px;border:0;border-radius:50%;background:#fff5e5cc;color:var(--wine);font:29px/1 Georgia,serif}#close:hover{background:#fff5e5}#paper-motion{position:fixed;inset:0;z-index:40;width:100%;height:100%;pointer-events:none}.motion-active{overflow:hidden}.motion-active #card{visibility:hidden}.motion-active #seal,.motion-active #cover-heading,.motion-active #prompt{pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.no-script{text-align:center;padding:20px}
@media(max-width:600px){#welcome{padding:85px 18px 70px;gap:32px}#cover-heading{margin-bottom:2px}#card{width:calc(100% - 16px);margin:8px auto 24px}#maps{width:60%;font-size:3.5cqw;min-height:34px}#close{width:40px;height:40px;top:4px;right:4px;font-size:25px}#prompt{font-size:19px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}
/* Fixed square geometry: text and browser button padding cannot stretch the wax. */
#seal{--seal-size:clamp(78px,14vw,110px);width:var(--seal-size);height:var(--seal-size);min-width:var(--seal-size);min-height:var(--seal-size);padding:0;appearance:none;display:grid;place-items:center;border-radius:50%;border:5px ridge #a95649;background:radial-gradient(circle at 34% 26%,#a94c48 0%,#852c32 55%,#661e28 100%);box-shadow:0 5px 9px #4e202350,inset 0 0 0 2px #d89b6a,inset 0 0 0 6px #75232d,inset 0 0 0 7px #b96f50;font-size:clamp(25px,4.3vw,35px);line-height:1;white-space:nowrap}
#seal span{white-space:nowrap;display:block;letter-spacing:-.04em;font-style:italic}#seal::before,#seal::after{content:'❧';position:absolute;left:0;width:100%;text-align:center;font:18px Georgia;color:#d9b179}#seal::before{top:9px;transform:rotate(180deg)}#seal::after{bottom:9px}
#maps{width:auto;min-width:104px;height:44px;min-height:44px;padding:0 14px;background:transparent;border-radius:0;color:#805c43;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;font-size:3cqw}#maps:hover{background:transparent;color:var(--wine)}
.motion-active #envelope{visibility:hidden}
.motion-active #seal{z-index:41}
#seal{background:transparent url('wax-seal.svg') center/contain no-repeat;border:0;box-shadow:none;filter:drop-shadow(0 3px 2px #4b231a48)}
#seal:hover{filter:drop-shadow(0 3px 3px #4b231a58) brightness(1.04)}
#seal span,#seal::before,#seal::after{display:none}
.venue-mark{position:absolute;left:50%;transform:translateX(-50%);pointer-events:none}.pin{top:72.1%;width:2.5%}.sprig{top:88.45%;width:13%}
#maps{top:80.9%;height:6.5%;min-height:44px;font-size:clamp(12px,2.5cqw,18px)}
@container(max-width:600px){#maps{width:60%;font-size:3.5cqw;top:82%;min-height:44px}.blessing{font-size:3.2cqw!important}}
#maps{top:81.8%;height:6.7%;min-height:44px;flex-direction:column;gap:0;line-height:1;z-index:2;pointer-events:auto;text-decoration:none}
#maps .pin{position:static;transform:none;width:clamp(9px,2.4cqw,16px)}#maps span{text-decoration:underline;text-underline-offset:3px}.sprig{top:88.9%}
#paper-stock{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
@media(max-width:600px) and (orientation:portrait){
 #card{margin:8px auto;min-height:calc(100vh - 16px);min-height:calc(100dvh - 16px)}
}
