/* Original Higgsfield artwork + editable invitation typography, collection 2027. */
@font-face{font-family:InvitationBodoni;src:url('fonts-2027/bodoni.woff2') format('woff2');font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:InvitationBodoni;src:url('fonts-2027/bodoni-italic.woff2') format('woff2');font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:InvitationManrope;src:url('fonts-2027/manrope.woff2') format('woff2');font-weight:200 800;font-display:swap}
@font-face{font-family:InvitationFraunces;src:url('fonts-2027/fraunces.woff2?v=2027-2') format('woff2');font-weight:100 900;font-display:swap}
.edition-2027,.collection-2027{--inv-display:InvitationBodoni,Georgia,serif;--inv-ui:InvitationManrope,Arial,sans-serif;--display-weight:450;--display-style:normal;--title-tracking:-.04em;--cover-align:center;--cover-justify:center;--art-rotate:0deg}
.edition-2027{background:var(--paper);font-family:var(--inv-ui)}
.edition-2027:after{opacity:.1}
.edition-2027 .generated-art{z-index:0;color:inherit;filter:hue-rotate(var(--art-rotate));transition:filter 400ms}
.generated-art img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center;pointer-events:none}
.edition-2027 .inv-composition{inset:25% 11% 17%;z-index:1;align-items:var(--cover-justify);text-align:var(--cover-align);justify-content:center}
.edition-2027 .inv-overline{font-family:var(--inv-ui);font-size:2.55cqw;letter-spacing:.34cqw;font-weight:650;line-height:1.6;max-width:95%;color:var(--ink)}
.edition-2027 .inv-names{font-family:var(--inv-display);font-size:calc(15.5cqw * var(--name-scale,1));font-weight:var(--display-weight);font-style:var(--display-style);letter-spacing:var(--title-tracking);line-height:1.08;margin:6cqw 0 0;text-transform:none;text-shadow:none;max-width:100%;overflow-wrap:anywhere}
.edition-2027 .inv-person{display:block}
.edition-2027 .inv-conjunction{display:block;font-family:InvitationBodoni,Georgia,serif;font-size:.42em;font-style:italic;font-weight:450;line-height:1.5;letter-spacing:0;margin:.06em 0}
.edition-2027 .inv-divider{display:block;width:10cqw;height:1px;min-height:1px;overflow:hidden;background:var(--accent);font-size:0;line-height:0;margin:5cqw 0 3cqw;opacity:.7}
.edition-2027 .inv-date{font-family:var(--inv-ui);font-size:3.1cqw;font-weight:650;line-height:1.5;letter-spacing:.45cqw;color:var(--ink);margin:0}
.edition-2027 .inv-small{font:450 3.4cqw/1.5 var(--inv-display);margin-top:4cqw;max-width:85%;text-wrap:pretty;color:var(--ink)}
.edition-2027.family-classic,.collection-2027.family-classic{--display-style:italic;--display-weight:450}
.edition-2027.family-botanical,.collection-2027.family-botanical{--display-weight:500;--cover-align:left;--cover-justify:flex-start;--art-rotate:calc(var(--palette-hue,93deg) - 93deg)}
.edition-2027.family-botanical .inv-composition{left:12%;right:16%;inset-block:26% 18%}
.edition-2027.family-botanical .inv-names{font-size:calc(16.5cqw * var(--name-scale,1));line-height:1.05}
.edition-2027.family-floral,.collection-2027.family-floral{--display-style:italic;--display-weight:500;--art-rotate:calc(var(--palette-hue,355deg) - 355deg)}
.edition-2027.family-floral .inv-composition{inset:30% 12% 18%}
.edition-2027.family-floral .inv-names{font-size:calc(17cqw * var(--name-scale,1))}
.edition-2027.family-mediterranean,.collection-2027.family-mediterranean{--inv-display:InvitationFraunces,Georgia,serif;--display-weight:550;--title-tracking:-.065em}
.edition-2027.family-mediterranean .inv-date{padding:2.5cqw 4cqw;border:1px solid var(--accent);border-radius:100px}
.edition-2027.family-deco,.collection-2027.family-deco{--inv-display:InvitationManrope,Arial,sans-serif;--display-weight:350;--title-tracking:.01em}
.edition-2027.family-deco .inv-names{font-size:calc(11cqw * var(--name-scale,1));text-transform:uppercase;line-height:1.22}
.edition-2027.family-deco .inv-overline{letter-spacing:.5cqw;font-weight:450}
.edition-2027.family-editorial,.collection-2027.family-editorial{--display-weight:650;--cover-align:left;--cover-justify:flex-start;--title-tracking:-.065em}
.edition-2027.family-editorial .inv-composition{inset:25% 10% 20%}
.edition-2027.family-editorial .inv-names{font-size:calc(17.5cqw * var(--name-scale,1));line-height:.98}
.edition-2027.family-editorial .inv-conjunction{display:inline;font-size:.58em;line-height:1.45;color:var(--accent)}
.edition-2027.family-editorial .inv-divider{display:block}
.edition-2027.family-clouds,.collection-2027.family-clouds{--inv-display:InvitationFraunces,Georgia,serif;--display-weight:450;--title-tracking:-.055em;--art-rotate:calc(var(--palette-hue,208deg) - 208deg)}
.edition-2027.family-clouds .inv-names{font-size:calc(22cqw * var(--name-scale,1))}
.edition-2027.family-dinosaur,.collection-2027.family-dinosaur{--inv-display:InvitationFraunces,Georgia,serif;--display-weight:650;--title-tracking:-.06em}
.edition-2027.family-dinosaur .inv-names{font-size:calc(22cqw * var(--name-scale,1));font-style:normal}
.edition-2027.family-teddy,.collection-2027.family-teddy{--inv-display:InvitationFraunces,Georgia,serif;--display-weight:400;--title-tracking:-.06em}
.edition-2027.family-teddy .inv-composition{inset:24% 12% 20%}
.edition-2027.family-teddy .inv-names{font-size:calc(22cqw * var(--name-scale,1))}
.edition-2027.family-teddy .inv-small,.edition-2027.family-dinosaur .inv-small{display:block}
.edition-2027.family-sunset,.collection-2027.family-sunset{--display-style:italic;--display-weight:500;--cover-align:left;--cover-justify:flex-start}
.edition-2027.family-sunset .inv-composition{inset:24% 12% 20%}
.edition-2027.family-sunset .inv-names{font-size:calc(17cqw * var(--name-scale,1))}
.edition-2027.family-neon,.collection-2027.family-neon{--inv-display:InvitationManrope,Arial,sans-serif;--display-weight:800;--title-tracking:-.065em;--cover-align:left;--cover-justify:flex-start;--art-rotate:calc(var(--palette-hue,265deg) - 265deg)}
.edition-2027.family-neon .inv-composition{inset:29% 10% 19%}
.edition-2027.family-neon .inv-names{font-size:calc(12cqw * var(--name-scale,1));text-transform:uppercase;line-height:.98;text-shadow:none}
.edition-2027.family-neon .inv-small{display:block;font-family:var(--inv-ui);font-size:2.8cqw;font-weight:450}
.edition-2027.family-neon .inv-date{letter-spacing:.1cqw}
.edition-2027.family-corporate,.collection-2027.family-corporate{--inv-display:InvitationManrope,Arial,sans-serif;--display-weight:550;--title-tracking:-.065em;--cover-align:left;--cover-justify:flex-start}
.edition-2027.family-corporate .inv-composition{inset:27% 12% 19%}
.edition-2027.family-corporate .inv-names{font-size:calc(12cqw * var(--name-scale,1));line-height:1.08}
.edition-2027.family-corporate .inv-small{font-family:var(--inv-ui);font-size:2.7cqw;font-weight:350}
.edition-2027.family-corporate[data-palette-name=silver] .generated-art{filter:grayscale(1)}
/* Public covers keep enough room for large names and real, longer text. */
.invitation-hero>.edition-2027{aspect-ratio:9/16;min-height:700px;max-height:none}
.invitation-hero .edition-2027 .inv-composition{position:relative;inset:auto;min-height:max(700px,176.8cqw);padding:46cqw 12% 44cqw;align-items:var(--cover-justify);text-align:var(--cover-align)}
.invitation-hero .edition-2027 .inv-overline{font-size:clamp(13px,2.5cqw,18px);line-height:1.7;letter-spacing:2px;max-width:95%;font-weight:650}
.invitation-hero .edition-2027 .inv-names{font-size:clamp(48px,calc(15.5cqw * var(--name-scale,1)),112px);line-height:1.08;margin:26px 0 0;letter-spacing:var(--title-tracking);font-weight:var(--display-weight);font-style:var(--display-style)}
.invitation-hero .edition-2027 .inv-conjunction{font-size:.43em;line-height:1.45;margin:0}
.invitation-hero .edition-2027 .inv-divider{width:42px;height:1px;min-height:1px;line-height:0;margin:26px 0 20px}
.invitation-hero .edition-2027 .inv-date{font-size:clamp(16px,3.2cqw,23px);letter-spacing:2px;line-height:1.5}
.invitation-hero .edition-2027 .inv-small{font:450 clamp(18px,4cqw,25px)/1.55 var(--inv-display);max-width:90%;margin-top:20px}
.invitation-hero .edition-2027.family-editorial .inv-names{font-size:clamp(48px,calc(17cqw * var(--name-scale,1)),124px);line-height:.98}
.invitation-hero .edition-2027.family-editorial .inv-conjunction{display:block;font-size:.52em;margin:6px 0}
.invitation-hero .edition-2027.family-deco .inv-names{font-size:clamp(38px,calc(11cqw * var(--name-scale,1)),84px);font-style:normal;letter-spacing:.015em;line-height:1.2}
.invitation-hero .edition-2027.family-clouds .inv-names,.invitation-hero .edition-2027.family-dinosaur .inv-names,.invitation-hero .edition-2027.family-teddy .inv-names{font-size:clamp(60px,calc(22cqw * var(--name-scale,1)),150px)}
.invitation-hero .edition-2027.family-neon .inv-names{font-size:clamp(37px,calc(12cqw * var(--name-scale,1)),88px);line-height:1.02;letter-spacing:-.065em;font-style:normal}
.invitation-hero .edition-2027.family-corporate .inv-names{font-size:clamp(40px,calc(12cqw * var(--name-scale,1)),90px);line-height:1.08;font-style:normal}
.invitation-hero .edition-2027.family-neon .inv-small,.invitation-hero .edition-2027.family-corporate .inv-small{font:450 clamp(16px,3.6cqw,22px)/1.7 var(--inv-ui)}
.collection-2027{font-family:var(--inv-ui);font-size:18px;background:var(--paper);color:var(--ink)}
.collection-2027 .inv-section{padding:72px 48px}
.collection-2027 .inv-section h2{font-family:var(--inv-display);font-weight:var(--display-weight);font-style:var(--display-style);font-size:clamp(42px,6vw,58px);letter-spacing:-.04em;line-height:1.14;margin:24px auto}
.collection-2027 .inv-section>p{font-family:var(--inv-ui);font-size:18px;line-height:1.85;font-weight:450}
.collection-2027 .inv-section-label{font-family:var(--inv-ui);font-size:12px;font-weight:650;letter-spacing:1.7px;line-height:1.8;color:var(--ink);opacity:.8}
.collection-2027 .inv-story:before{display:none}
.collection-2027 .inv-section:after{content:'';width:40px;height:1px;background:var(--accent);opacity:.5;margin:48px auto 0}
.collection-2027 .family-names{margin-top:40px;gap:28px}
.collection-2027 .family-names span{color:var(--ink);opacity:.75;font:600 12px/1.8 var(--inv-ui);letter-spacing:1.4px}
.collection-2027 .family-names p{font:450 30px/1.3 var(--inv-display);letter-spacing:-.03em;margin:12px 0}
.collection-2027 .countdown{gap:28px}
.collection-2027 .countdown strong{font-family:var(--inv-display);font-weight:450;font-size:56px;letter-spacing:-.04em}
.collection-2027 .countdown span{font:650 11px/1.7 var(--inv-ui);color:var(--ink);opacity:.75}
.collection-2027 .venue-grid{gap:18px}
.collection-2027 .venue-grid article{border-radius:16px;padding:32px 24px;border:1px solid color-mix(in srgb,var(--ink) 18%,transparent);background:color-mix(in srgb,var(--paper) 92%,#fff)}
.collection-2027 .venue-grid h3{font:500 34px/1.2 var(--inv-display);letter-spacing:-.035em}
.collection-2027 .venue-grid p{font:450 16px/1.8 var(--inv-ui)}
.collection-2027 .venue-grid .time{font:650 18px/1.6 var(--inv-ui);letter-spacing:1px}
.collection-2027 .venue-grid a{font-family:var(--inv-ui);font-size:14px;min-height:44px;text-decoration-thickness:1px}
.collection-2027 .inv-button{font:650 15px/1.5 var(--inv-ui);padding:15px 25px;min-height:52px;border-radius:100px;transition:filter 180ms,transform 180ms}
.collection-2027 .inv-button:hover{filter:brightness(1.06);transform:translateY(-1px)}
.collection-2027 .rsvp-section label,.collection-2027 .rsvp-section legend{font:550 15px/1.7 var(--inv-ui)}
.collection-2027 .rsvp-section input,.collection-2027 .rsvp-section select,.collection-2027 .rsvp-section textarea{font:450 17px/1.5 var(--inv-ui);border-radius:10px;border-color:color-mix(in srgb,var(--ink) 28%,transparent);min-height:50px}
.collection-2027 .rsvp-section .checkbox{font:450 13px/1.8 var(--inv-ui)}
.collection-2027 .rsvp-section input[type=checkbox],.collection-2027 .rsvp-section input[type=radio]{min-height:20px}
.collection-2027 .demo-rsvp-note,.collection-2027 .form-feedback{font:450 14px/1.8 var(--inv-ui)}
.collection-2027 .event-photo{border-radius:18px;max-width:100%;max-height:560px}
.collection-2027 .story-timeline h3{font:500 34px/1.2 var(--inv-display);letter-spacing:-.035em}
.collection-2027 .story-timeline p{font:450 17px/1.85 var(--inv-ui)}
.collection-2027 .story-timeline small{font:650 12px/1.7 var(--inv-ui);letter-spacing:1px}
.collection-2027 .person-menu-title{font-family:var(--inv-display);font-weight:500;font-size:31px}
.collection-2027 .invitation-closing p{font:450 36px/1.35 var(--inv-display);letter-spacing:-.03em}
.collection-2027 .invitation-closing small{font:450 12px/1.8 var(--inv-ui)}
.collection-2027 .invitation-closing:after{display:none}
.collection-2027 .opening-screen h1{font-family:var(--inv-display);font-weight:var(--display-weight);font-style:var(--display-style);letter-spacing:-.04em;max-width:100%;overflow-wrap:anywhere}
.collection-2027 .envelope-letter{font-family:var(--inv-display);letter-spacing:-.03em}
.collection-2027 .opening-overline{font-family:var(--inv-ui);font-weight:650}
.collection-2027 .opening-screen>p{font-family:var(--inv-ui);font-size:17px}
.collection-2027 .opening-hint{font-family:var(--inv-display)}
.collection-2027.family-botanical .inv-story,.collection-2027.family-editorial .inv-story,.collection-2027.family-sunset .inv-story{text-align:left}
.collection-2027.family-botanical .inv-story>p,.collection-2027.family-editorial .inv-story>p,.collection-2027.family-sunset .inv-story>p{margin-left:0;margin-right:0}
.collection-2027.family-editorial .inv-story>p{font-family:var(--inv-display);font-size:24px;line-height:1.55}
.collection-2027.family-mediterranean .venue-grid article{border-radius:28px;border-style:dashed;border-color:color-mix(in srgb,var(--accent) 65%,transparent)}
.collection-2027.family-deco .venue-grid article,.collection-2027.family-corporate .venue-grid article{border-radius:0;background:transparent}
.collection-2027.family-deco .inv-section h2,.collection-2027.family-corporate .inv-section h2{font-weight:450;font-style:normal;line-height:1.2}
.collection-2027.family-neon .inv-section h2{font:750 clamp(35px,6vw,52px)/1.08 var(--inv-display);letter-spacing:-.055em;text-transform:uppercase}
.collection-2027.family-neon .venue-grid article{border-radius:4px;background:color-mix(in srgb,var(--accent) 7%,var(--paper))}
.collection-2027.family-neon .inv-button,.collection-2027.family-corporate .inv-button{border-radius:8px}
.collection-2027.family-clouds .venue-grid article,.collection-2027.family-teddy .venue-grid article{border-radius:80px 80px 20px 20px}
.collection-2027.family-dinosaur .venue-grid article{border-radius:28px}
.collection-2027.family-floral .family-names p{font-style:italic}
.collection-2027.family-sunset .countdown-section{background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 12%,var(--paper)),var(--paper))}
@media(max-width:600px){.collection-2027 .inv-section{padding:55px 25px}.collection-2027 .inv-section>p{font-size:17px}.collection-2027 .countdown{gap:18px}.collection-2027 .countdown strong{font-size:43px}.collection-2027 .countdown span{font-size:10px;letter-spacing:.5px}.collection-2027 .family-names{grid-template-columns:1fr}.collection-2027 .family-names p{font-size:31px}.collection-2027 .inv-section h2{font-size:43px}.collection-2027 .inv-section-label{font-size:11px;letter-spacing:1.35px}.collection-2027.family-neon .inv-section h2{font-size:35px}}
@media(prefers-reduced-motion:reduce){.collection-2027 .inv-button:hover{transform:none}}
/* Keep the floral overline legible where a translucent petal reaches inward. */
.edition-2027.family-floral .inv-overline{background:color-mix(in srgb,var(--paper) 94%,transparent);padding:.7cqw 1.3cqw;border-radius:8px}
.collection-2027 .scroll-cue{background:var(--paper);border:1px solid color-mix(in srgb,var(--ink) 15%,transparent);border-radius:100px;padding:8px 16px;min-width:154px;font:550 12px/1.5 var(--inv-ui);letter-spacing:.3px}
.collection-2027 .scroll-cue span{font-size:17px;margin-top:2px;line-height:1.1}
/* Consistent portrait catalog previews reveal the complete artwork. */
.card-preview>.inv-design{aspect-ratio:9/16}
.edition-2027:not(.full-design) .inv-small{display:none}
.edition-2027.family-floral:not(.full-design) .inv-composition{inset:26% 11% 14%}
.edition-2027.family-floral:not(.full-design) .inv-names{font-size:calc(15cqw * var(--name-scale,1))}
.edition-2027.family-editorial:not(.full-design) .inv-composition{inset:24% 10% 16%}
.edition-2027.family-editorial:not(.full-design) .inv-names{font-size:calc(16cqw * var(--name-scale,1))}
.edition-2027.family-botanical .inv-overline{max-width:72%;text-align:left;align-self:flex-start}
.collection-2027 .inv-section-label,.collection-2027 .family-names span,.collection-2027 .countdown span,.collection-2027 .invitation-closing small,.collection-2027 .rsvp-section label>span,.collection-2027 .demo-rsvp-note{opacity:1}

.generated-art.art-loading:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#ffffff28 48%,transparent 72%);background-size:220% 100%;animation:art-placeholder 1.8s ease-in-out infinite}
@keyframes art-placeholder{from{background-position:180% 0}to{background-position:-80% 0}}
@media(prefers-reduced-motion:reduce){.generated-art.art-loading:after{animation:none}}

/* Romance collection: source photographs remain intact behind editable typography. */
.romance-design.edition-2027 .generated-art{filter:none}
.romance-design.edition-2027 .inv-composition{position:absolute;min-height:0;width:auto;inset:23% 11% 17%;padding:5cqw 3cqw;background:color-mix(in srgb,var(--paper) 88%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:36cqw 36cqw 3cqw 3cqw;align-items:center;text-align:center;box-shadow:0 2cqw 8cqw #00000008}
.romance-design.edition-2027 .inv-names{font-size:calc(14cqw * var(--name-scale,1));margin-top:3cqw}
.romance-design.edition-2027 .inv-overline{font-size:2.25cqw;letter-spacing:.25cqw}
.romance-design.edition-2027 .inv-small{font-size:3.1cqw;margin-top:3cqw}
.romance-design.edition-2027 .inv-divider{margin:3.5cqw 0 2.5cqw}
.romance-design.romance-navy .romance-art img{object-position:82% center}
.romance-design.romance-navy .inv-composition{border-radius:0;outline:1px solid var(--accent);outline-offset:-2cqw;background:color-mix(in srgb,var(--paper) 92%,transparent)}
.romance-design.romance-lace .inv-composition{border-radius:50%;inset:22% 8% 16%;border:0}
.romance-design.romance-coast .inv-composition{inset:28% 13% 15%;background:color-mix(in srgb,var(--paper) 90%,transparent)}
.romance-design.romance-emerald .inv-composition{background:color-mix(in srgb,var(--paper) 83%,transparent);border-radius:0}
.romance-design.romance-lunar .inv-composition{inset:23% 12% 18%;border:0;background:color-mix(in srgb,var(--paper) 80%,transparent)}
.invitation-hero>.romance-design{aspect-ratio:4/5;min-height:700px}
.invitation-hero .romance-design .inv-overline{font-size:clamp(13px,2.25cqw,18px)}
.invitation-hero .romance-design .inv-names{font-size:clamp(36px,calc(13cqw * var(--name-scale,1)),100px)}
.invitation-hero .romance-design .inv-small{font-size:clamp(18px,3.1cqw,24px);line-height:1.4}

/* A deliberate three-part opening: release the seal, unfold, reveal the card. */
.invitation-wrap .opening-screen{min-height:740px;height:100svh;max-height:940px;overflow:hidden;perspective:1000px;transition:none;background:radial-gradient(ellipse at 50% 40%,color-mix(in srgb,var(--accent) 11%,var(--paper)),var(--paper) 70%)}
.invitation-wrap .envelope{display:block;flex:none;padding:0;cursor:pointer;border-radius:4px;transform:perspective(900px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform 450ms cubic-bezier(.2,.7,.2,1),box-shadow 450ms;touch-action:none;isolation:isolate;overflow:visible}
.invitation-wrap .envelope:hover{box-shadow:0 20px 50px color-mix(in srgb,var(--accent) 25%,transparent)}
.invitation-wrap .envelope:after{z-index:2}
.invitation-wrap .envelope:focus-visible{outline:2px solid var(--accent);outline-offset:9px}
.invitation-wrap .envelope-letter{overflow:hidden;height:155px;border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:3px;box-shadow:0 -4px 20px #00000010;transition:none;z-index:1}
.invitation-wrap .envelope-letter .inv-art{position:absolute;inset:0;width:100%;height:100%;opacity:.42}
.invitation-wrap .envelope-letter-name{position:relative;z-index:1;font-size:22px;line-height:1.25;color:var(--ink);background:color-mix(in srgb,var(--paper) 85%,transparent);padding:7px 12px;border-radius:3px}
.invitation-wrap .envelope-flap{transition:none;backface-visibility:visible;filter:drop-shadow(0 3px 2px #00000008)}
.invitation-wrap .envelope-seal{box-shadow:0 3px 9px #00000020;transition:box-shadow .4s}
.invitation-wrap .envelope:hover .envelope-seal{box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 15%,transparent),0 4px 14px #00000020}
.invitation-wrap .opening-hint{font:400 12px/1.6 var(--inv-ui,var(--sans));max-width:280px;margin-top:23px}
.invitation-wrap .opening-skip{position:absolute;bottom:28px;border:0;background:none;color:var(--ink);text-decoration:underline;text-underline-offset:4px;font:400 12px/1.5 var(--sans);padding:10px;cursor:pointer;z-index:8}
.invitation-wrap .opening-replay{position:absolute;top:18px;right:18px;z-index:3;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);border-radius:30px;background:var(--paper);color:var(--ink);font:500 11px/1.5 var(--sans);padding:9px 14px;cursor:pointer}
.invitation-wrap .opening-screen.opening{opacity:1;transform:none;pointer-events:auto;animation:gi-opening-fade 3400ms cubic-bezier(.22,.61,.36,1) both}
.invitation-wrap .opening-screen.opening .envelope-seal{animation:gi-seal-release 550ms ease-in both}
.invitation-wrap .opening-screen.opening .envelope-flap{animation:gi-flap-unfold 1400ms 350ms cubic-bezier(.3,.05,.2,1) both}
.invitation-wrap .opening-screen.opening .envelope-letter{animation:gi-letter-rise 1600ms 1000ms cubic-bezier(.22,.61,.36,1) both}
.invitation-wrap .opening-screen.opening>h1,.invitation-wrap .opening-screen.opening>p,.invitation-wrap .opening-screen.opening>.inv-button,.invitation-wrap .opening-screen.opening>.opening-hint{animation:gi-opening-copy 800ms 500ms ease both}
.invitation-wrap .invitation-content.is-revealing[inert]{height:auto;visibility:visible;overflow:hidden;animation:gi-content-arrive 3400ms ease both}
@keyframes gi-seal-release{0%{transform:scale(1) rotate(0);opacity:1}45%{transform:scale(1.14) rotate(-8deg);opacity:1}100%{transform:translateY(24px) scale(.8) rotate(16deg);opacity:0}}
@keyframes gi-flap-unfold{0%{transform:rotateX(0);z-index:3}55%{z-index:3}56%,100%{z-index:0}100%{transform:rotateX(180deg)}}
@keyframes gi-letter-rise{0%{transform:translateY(0)}100%{transform:translateY(-110px) scale(1.06)}}
@keyframes gi-opening-copy{to{opacity:0;transform:translateY(10px)}}
@keyframes gi-opening-fade{0%,72%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.035)}}
@keyframes gi-content-arrive{0%,65%{opacity:0;transform:translateY(16px)}100%{opacity:1;transform:none}}
@media(max-width:600px){.invitation-wrap .opening-screen{min-height:650px;max-height:850px;padding:35px 22px}.invitation-wrap .envelope-letter{height:140px}.invitation-wrap .opening-screen h1{font-size:42px}.invitation-wrap .opening-overline{margin-bottom:30px}.invitation-wrap .opening-screen>p{font-size:15px}.invitation-wrap .opening-replay{top:12px;right:12px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.invitation-wrap .opening-screen,.invitation-wrap .opening-screen *,.invitation-wrap .invitation-content{animation:none!important;transition:none!important}.invitation-wrap .envelope{transform:none!important}}

/* Atelier: each palette uses its own generated background, with readable live type. */
.atelier-design.edition-2027 .inv-composition{background:color-mix(in srgb,var(--paper) 86%,transparent)}
.atelier-design.romance-atelier-palat-baroc .inv-composition,.atelier-design.romance-atelier-marmura-imperiala .inv-composition,.atelier-design.romance-atelier-gradina-tropicala .inv-composition{border-radius:2cqw;outline:1px solid color-mix(in srgb,var(--accent) 50%,transparent);outline-offset:-2cqw}
.atelier-design.romance-atelier-herbar-boem .inv-composition{border-radius:2cqw;background:color-mix(in srgb,var(--paper) 80%,transparent)}
.atelier-design.romance-atelier-seara-la-lumina-lumanarilor .inv-composition,.atelier-design.romance-atelier-trandafiri-de-catifea .inv-composition{background:color-mix(in srgb,var(--paper) 80%,transparent);border-radius:28cqw 28cqw 3cqw 3cqw}

/* Joy: full-height artwork keeps the small characters visible on every screen. */
.inv-design.joy-design{aspect-ratio:9/16}
.invitation-hero>.joy-design{aspect-ratio:9/16;min-height:0}
.joy-design.edition-2027 .inv-composition{inset:20% 12% 24%;border-radius:30cqw 30cqw 4cqw 4cqw;background:color-mix(in srgb,var(--paper) 70%,transparent);box-shadow:none}
.joy-design.romance-joy-carusel-fermecat .inv-composition,.joy-design.romance-joy-micul-navigator .inv-composition{border-radius:3cqw;border-style:dashed}
.joy-design.romance-joy-confetti-de-matase .inv-composition,.joy-design.romance-joy-fluturi-de-acuarela .inv-composition{border:0;border-radius:45%;background:color-mix(in srgb,var(--paper) 65%,transparent)}
.joy-design.romance-joy-noapte-de-gala .inv-composition{border-radius:0;outline:1px solid var(--accent);outline-offset:-2cqw;background:color-mix(in srgb,var(--paper) 84%,transparent)}

.joy-design.romance-joy-iepuras-in-flori .inv-composition{bottom:36%}

/* Occasions: portrait artwork for direct-link seasonal and friends' invitations. */
.inv-design.occasion-design,.invitation-hero>.occasion-design{aspect-ratio:9/16;min-height:0}
.occasion-design.edition-2027 .inv-composition{inset:22% 12% 24%;border-radius:3cqw;background:color-mix(in srgb,var(--paper) 88%,transparent);box-shadow:none;outline:1px solid color-mix(in srgb,var(--accent) 50%,transparent);outline-offset:-1.8cqw}
.occasion-design.edition-2027 .inv-names{font-size:calc(12.5cqw * var(--name-scale,1));line-height:1.08}
.occasion-design.edition-2027 .inv-small{font-size:3cqw}
.occasion-design.romance-occasion-poveste-de-iarna-2026 .inv-composition,.occasion-design.romance-occasion-seara-fetelor-fleurs .inv-composition{border-radius:35cqw 35cqw 3cqw 3cqw;outline:0}
.occasion-design.romance-occasion-seara-fetelor-disco .inv-composition,.occasion-design.romance-occasion-seara-baietilor-game-night .inv-composition{border-radius:2cqw;border-color:var(--accent);box-shadow:0 0 7cqw color-mix(in srgb,var(--accent) 18%,transparent)}
