/* Invitation covers – everything in em so one markup works as thumbnail and full screen. */
.cv{position:absolute;inset:0;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--serif),Georgia,serif;display:flex;align-items:center;justify-content:center;text-align:center}
.cv-script{font-family:var(--script),cursive;font-size:2.6em;line-height:1.05;color:var(--ink);font-weight:400}
.cv-small{font-size:.62em;letter-spacing:.32em;text-transform:uppercase;color:var(--ink);opacity:.8}
.cv-amp{font-family:var(--script),cursive;font-size:1.6em;color:var(--accent);line-height:1}
.cv-orn{width:12em;height:auto;display:block;margin:0 auto}
.cv-seal{position:absolute;left:50%;top:50%;width:4.6em;height:4.6em;margin:-2.3em 0 0 -2.3em;border-radius:50%;z-index:4;
  background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--accent) 55%,#fff) 0,var(--accent) 45%,color-mix(in srgb,var(--accent) 70%,#000) 100%);
  box-shadow:0 .25em .7em rgba(0,0,0,.28),inset 0 0 0 .32em color-mix(in srgb,var(--accent) 80%,#000);display:flex;align-items:center;justify-content:center}
.cv-seal span{font-family:var(--script),cursive;font-size:1.7em;color:color-mix(in srgb,var(--accent) 30%,#fff);text-shadow:0 1px 0 rgba(0,0,0,.25)}

/* envelope */
.cv-env{position:absolute;inset:0;background:var(--bg)}
.cv-env__body{position:absolute;inset:0;background:
  linear-gradient(to top right,transparent 49.6%,color-mix(in srgb,var(--ink) 9%,transparent) 50%,transparent 50.4%) left bottom/50% 55% no-repeat,
  linear-gradient(to top left,transparent 49.6%,color-mix(in srgb,var(--ink) 9%,transparent) 50%,transparent 50.4%) right bottom/50% 55% no-repeat,
  linear-gradient(160deg,var(--paper),var(--bg))}
.cv-env__flap{position:absolute;left:0;right:0;top:0;height:56%;background:linear-gradient(180deg,var(--paper),color-mix(in srgb,var(--bg) 85%,var(--ink)));
  clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 .2em .3em rgba(0,0,0,.12));transform-origin:top;transition:transform .9s cubic-bezier(.6,0,.3,1);z-index:3}
.cv-env__names{position:absolute;left:0;right:0;bottom:12%;display:flex;flex-direction:column;gap:.4em;z-index:2}
.cv-env__names .cv-script{font-size:2em}

/* gatefold */
.cv-gate{position:absolute;inset:0;background:var(--paper)}
.cv-gate__door{position:absolute;top:0;bottom:0;width:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:transform 1.1s cubic-bezier(.6,0,.3,1);
  box-shadow:inset 0 0 0 .5em color-mix(in srgb,var(--accent) 35%,transparent),inset 0 0 0 .62em var(--bg),inset 0 0 0 .7em color-mix(in srgb,var(--accent) 60%,transparent)}
.cv-gate__door--l{left:0;transform-origin:left;border-right:1px solid color-mix(in srgb,var(--accent) 50%,transparent)}
.cv-gate__door--r{right:0;transform-origin:right}
.cv-gate__orn{width:9em;transform:rotate(90deg)}
.cv-gate__door--r .cv-gate__orn{transform:rotate(-90deg)}

/* night */
.cv-night{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 20%,#2b3a66 0,var(--bg) 60%,#0b1022 100%);color:#f6efe0}
.cv-night .cv-script,.cv-night .cv-small{color:#f6efe0}
.cv-night .cv-script{color:var(--accent);font-size:2.4em}
.cv-night__text{position:absolute;left:0;right:0;top:24%;display:flex;flex-direction:column;gap:.6em;z-index:2}
.cv-star{position:absolute;width:.18em;height:.18em;border-radius:50%;background:#fff;opacity:.8;animation:cvTwinkle 3s ease-in-out infinite}
.cv-moon{position:absolute;right:16%;top:9%;width:2.2em;height:2.2em;border-radius:50%;box-shadow:.45em -.2em 0 0 #f3e3b5;transform:rotate(-20deg)}
.cv-night__hills{position:absolute;left:0;right:0;bottom:0;width:100%;height:32%}
@keyframes cvTwinkle{50%{opacity:.2}}

/* arch */
.cv-arch{position:absolute;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center}
.cv-arch__window{width:78%;height:78%;background:var(--paper);border-radius:50% 50% .6em .6em/30% 30% .6em .6em;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35em;
  box-shadow:0 0 0 .35em var(--paper),0 0 0 .45em var(--accent),0 .6em 1.4em rgba(0,0,0,.12);padding:1em}
.cv-arch__window .cv-orn{width:9em;margin-bottom:.4em}

/* frame */
.cv-frame{position:absolute;inset:6%;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35em;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 60%,transparent),inset 0 0 0 .5em var(--paper),inset 0 0 0 .58em color-mix(in srgb,var(--accent) 45%,transparent),0 .5em 1.4em rgba(0,0,0,.1)}
.cv-orn--top{margin-bottom:.6em}.cv-orn--bottom{margin-top:.6em;transform:rotate(180deg)}

/* mountain */
.cv-mtn{position:absolute;inset:0;background:linear-gradient(180deg,var(--paper) 0,var(--bg) 100%);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:22%;gap:.6em}
.cv-mtn__peaks{position:absolute;left:0;right:0;bottom:0;width:100%;height:42%}

/* ticket */
.cv-ticket{width:84%;background:var(--paper);border-radius:.6em;box-shadow:0 .6em 1.6em rgba(0,0,0,.15);text-align:left;font-family:'Inter',system-ui,sans-serif;overflow:hidden;transform:rotate(-3deg)}
.cv-ticket__head{background:var(--accent);color:#fff;font-size:.7em;letter-spacing:.18em;text-transform:uppercase;padding:.9em 1.1em;display:flex;align-items:center;gap:.6em}
.cv-ticket__head b{margin-left:auto;font-size:1.3em}
.cv-cross{width:1.3em;height:1.3em;background:#fff;position:relative;border-radius:.15em}
.cv-cross::before,.cv-cross::after{content:"";position:absolute;background:var(--accent);left:50%;top:50%;transform:translate(-50%,-50%)}
.cv-cross::before{width:.3em;height:.9em}.cv-cross::after{width:.9em;height:.3em}
.cv-ticket__route{display:flex;align-items:center;justify-content:space-between;padding:1em 1.1em .6em;gap:.5em}
.cv-ticket__route span{color:var(--accent);font-size:1.4em}
.cv-ticket small{display:block;font-size:.55em;letter-spacing:.12em;text-transform:uppercase;color:#888}
.cv-ticket b{font-family:var(--script),cursive;font-weight:400;font-size:1.9em;color:var(--ink)}
.cv-ticket__row{display:flex;justify-content:space-between;padding:.4em 1.1em 1em;border-top:1px dashed #ccc}
.cv-ticket__row b{font-family:'Inter',system-ui,sans-serif;font-size:1em;font-weight:700}
.cv-ticket__code{display:flex;gap:.18em;padding:0 1.1em 1em;height:2.2em}
.cv-ticket__code i{background:var(--ink);display:block}

/* polaroid */
.cv-pola{position:relative;width:76%}
.cv-pola__card{background:#fff;padding:.8em .8em 1.2em;box-shadow:0 .6em 1.6em rgba(0,0,0,.18);transform:rotate(-4deg);display:flex;flex-direction:column;gap:.3em}
.cv-pola__photo{aspect-ratio:1;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 40%,#fff),color-mix(in srgb,var(--accent) 80%,#333)) center/cover;margin-bottom:.4em}
.cv-pola .cv-script{font-size:2em}
.cv-pin{position:absolute;top:-.5em;left:50%;width:1.2em;height:1.2em;border-radius:50%;background:var(--accent);box-shadow:0 .2em .3em rgba(0,0,0,.3)}

/* calendar */
.cv-cal{width:82%;background:var(--paper);padding:1.4em 1em;box-shadow:0 .6em 1.6em rgba(0,0,0,.12);display:flex;flex-direction:column;gap:.5em}
.cv-cal .cv-script{font-size:2em}
.cv-cal__month{font-size:.8em;letter-spacing:.25em;text-transform:uppercase;color:var(--accent);margin-top:.4em}
.cv-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25em;font-size:.7em}
.cv-cal__grid i{font-style:normal;aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.cv-cal__grid i.on{border:2px solid var(--accent);border-radius:50%;color:var(--accent);font-weight:700;transform:scale(1.2)}

/* postcard */
.cv-post{width:86%;aspect-ratio:3/4;background:var(--paper);box-shadow:0 .6em 1.6em rgba(0,0,0,.15);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6em;transform:rotate(2deg)}
.cv-post__stamp{position:absolute;right:.9em;top:.9em;width:3.4em;height:4.1em;background:var(--bg);outline:.2em dotted var(--paper);box-shadow:0 0 0 .32em var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center}
.cv-post__orn{width:3em}.cv-post__stamp small{font-size:.5em;color:var(--accent);font-weight:700}
.cv-post__mark{position:absolute;right:3.3em;top:3.4em;width:3.6em;height:3.6em;border:1px solid var(--accent);border-radius:50%;font-size:.6em;display:flex;align-items:center;justify-content:center;color:var(--accent);transform:rotate(-14deg);opacity:.8}
.cv-post__lines{width:60%;display:flex;flex-direction:column;gap:.7em;margin-top:.8em}
.cv-post__lines i{display:block;border-bottom:1px solid color-mix(in srgb,var(--ink) 25%,transparent)}
