/* Layouts, not colour swaps. Customer images are reused in six distinct compositions. */
.presenter-layout.presenter-no-photo{grid-template-columns:1fr;text-align:center}
.premium-style-photo_story .rsvp-card :is(input,select,textarea){color:#10243e;background:#fff}
.premium-style-photo_story :is(.eyebrow,.quote){color:var(--accent)}
.premium-style-photo_story :is(.recipient-label,.detail small,.rsvp-card p){color:#d5dedf}
@font-face{font-family:NyanzaScript;src:url('../fonts/invitations/GreatVibes-Regular.ttf') format('truetype');font-display:swap;font-weight:400}
.invitation.premium-card .premium-hero{min-height:100svh;padding:36px 24px 100px;overflow:hidden;background:var(--primary);color:#fff;align-items:center;isolation:isolate}
.invitation.premium-card .premium-hero:before,.invitation.premium-card .premium-hero:after{display:none}
.premium-hero .hero-content{position:relative;max-width:none;width:100%;padding:0;z-index:2;text-shadow:none}
.premium-hero .kicker{font:700 10px/1.5 var(--sans);letter-spacing:3px;display:block}
.premium-hero .cover-note{margin:16px 0;font-size:18px}
.premium-hero .names{margin:12px 0 20px;font-size:clamp(38px,7vw,68px);line-height:1.08;overflow-wrap:anywhere}
.premium-hero .premium-personal{padding:12px 0;margin:20px auto;max-width:100%;font-size:12px}
.premium-hero .premium-personal strong{font-size:26px}.premium-hero .hero-music{margin:10px 0 18px}.premium-hero .scroll-cue{display:flex;align-items:center;flex-direction:column;margin:12px auto 0;font-size:10px}
.premium-hero-date{font:600 14px/1.6 var(--sans);letter-spacing:1px}.premium-hero-date span{display:block;font-size:12px;opacity:.8}
.premium-portrait{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%}.premium-hero figure{margin:0}
/* Royal: heraldic frame, oval portrait, engraved serif and measured scale entrance. */
.premium-style-royal_crest{--serif:Georgia,'Times New Roman',serif}
.royal-frame{position:relative;width:100%;padding:25px 22px;border:1px solid var(--accent);outline:1px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:7px}
.royal-crest{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 0 24px;color:var(--accent)}.royal-crest b{font:italic 25px Georgia;border:1px solid var(--accent);border-radius:50%;width:68px;height:68px;display:grid;place-items:center}.royal-crest span{font-size:16px}
.premium-hero .royal-portrait{width:min(240px,80%);height:260px;margin:0 auto 26px;padding:5px;border:1px solid var(--accent);border-radius:50% 50% 6px 6px;overflow:hidden}.royal-portrait img{border-radius:50% 50% 3px 3px}
.premium-style-royal_crest .section-title{font:500 clamp(28px,6vw,46px)/1.15 Georgia}.premium-style-royal_crest .detail-grid{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);padding-block:16px}
.premium-style-royal_crest .gallery figure{border-radius:50% 50% 8px 8px;padding:7px;border:1px solid var(--accent)}
/* Letter: paper sheet, tilted photo, handwriting and a generous left-aligned story. */
.invitation.premium-style-ivory_letter .premium-hero{background:#e8e0d1;color:var(--primary);padding:32px 20px 90px}
.letter-sheet{width:100%;padding:32px 25px;background:#fffdf5;box-shadow:0 20px 60px #36271720;transform:rotate(-1deg);position:relative}.letter-heading{display:flex;justify-content:space-between;padding-bottom:18px;border-bottom:1px solid var(--accent);font:italic 18px Georgia;margin-bottom:20px}.letter-heading i{font-style:normal;color:var(--accent)}
.premium-hero .letter-portrait{width:65%;height:220px;margin:10px auto 26px;padding:9px 9px 32px;background:white;box-shadow:0 6px 18px #33271922;transform:rotate(5deg)}
.premium-style-ivory_letter .names,.premium-style-ivory_letter .recipient-name,.letter-signature{font-family:NyanzaScript,cursive;font-weight:400;letter-spacing:0}.premium-style-ivory_letter .names{font-size:clamp(50px,9vw,78px);line-height:1.2}
.premium-style-ivory_letter .hero-content{text-align:left}.premium-style-ivory_letter .premium-personal{border:0;text-align:left}.premium-style-ivory_letter .premium-personal strong{margin-left:0;font-family:Georgia}.letter-signature{display:block;font-size:42px;text-align:right;margin-top:20px;color:var(--accent)}
.premium-style-ivory_letter .section{background:#fffdf5!important;text-align:left;padding-inline:clamp(24px,6vw,60px)}.premium-style-ivory_letter .section-title{font:400 40px/1.25 NyanzaScript,cursive}.premium-style-ivory_letter .ornament{display:none}.premium-style-ivory_letter .main-message{font:18px/1.9 Georgia}.premium-style-ivory_letter .gallery figure{padding:10px 10px 35px;background:white;border-radius:0;box-shadow:0 4px 15px #0002}.premium-style-ivory_letter .gallery figure:nth-child(odd){transform:rotate(-2deg)}
/* Garden: tall floral arch, photo-first composition, calligraphy, petal-like reveal. */
.invitation.premium-style-floral_arch .premium-hero{background:#f1f5ed;color:var(--primary);padding:28px 25px 90px}.garden-layout{width:100%;position:relative}.garden-layout:before,.garden-layout:after{content:'';position:absolute;width:160px;height:160px;background:url('../images/invitations/florals/eucalyptus.svg') center/contain no-repeat;pointer-events:none;z-index:1}.garden-layout:before{top:-20px;left:-28px}.garden-layout:after{top:225px;right:-35px;transform:rotate(180deg)}
.garden-arch{margin:0 auto 24px;width:min(290px,90%);height:340px;border-radius:150px 150px 12px 12px;padding:8px;border:1px solid var(--accent);background:#dfe7d8;overflow:hidden}.garden-arch img{border-radius:140px 140px 6px 6px}.garden-monogram{display:grid;place-items:center;height:100%;font:70px NyanzaScript,cursive;color:var(--primary)}
.premium-style-floral_arch .names{font:400 clamp(48px,9vw,78px)/1.18 NyanzaScript,cursive}.premium-style-floral_arch .section-title{font:400 clamp(35px,7vw,53px)/1.3 NyanzaScript,cursive}.premium-style-floral_arch .event-card{border-radius:100px 100px 18px 18px;border:1px solid var(--accent);text-align:center;padding:32px 20px}.premium-style-floral_arch .gallery figure{border-radius:120px 120px 12px 12px}
/* Cinema: full-bleed photography, bold sans titles and a dark editorial body. */
.invitation.premium-style-photo_story .premium-hero{padding:45svh 28px 90px;align-items:flex-end;background:#10243e;color:white}.cinema-portrait{position:absolute;inset:0;z-index:-2}.cinema-vignette{position:absolute;inset:0;background:linear-gradient(180deg,#0000,#0002 35%,#071827eb 95%);z-index:-1}.cinema-monogram{position:absolute;top:12%;left:0;right:0;font:120px Georgia;color:var(--accent);opacity:.45}
.premium-style-photo_story .names{font:850 clamp(40px,7vw,64px)/1.02 var(--sans);letter-spacing:-2px}.premium-style-photo_story .cover-note{font:14px var(--sans)}.premium-style-photo_story .hero-content{text-align:left}.premium-style-photo_story .premium-personal strong{font-family:var(--sans);font-style:normal;font-size:22px}.premium-style-photo_story .premium-personal{padding:16px;background:#ffffff12;backdrop-filter:blur(7px);border:1px solid #ffffff44;border-radius:18px}
.invitation.premium-style-photo_story{--paper:#10243e;--soft:#172e48;--ink:#f5f0e8;--serif:var(--sans)}.invitation.premium-style-photo_story .section,.invitation.premium-style-photo_story .detail,.invitation.premium-style-photo_story .dress-card,.invitation.premium-style-photo_story .rsvp-card{background:#10243e!important;color:#f5f0e8}.invitation.premium-style-photo_story :is(.section-title,.recipient-name,.family-intro,.detail b,.event-card h3,.programme-item span,.button.secondary,.rsvp-card label){color:#f5f0e8}.premium-style-photo_story .section-title{font:750 32px/1.2 var(--sans)}.premium-style-photo_story .gallery figure{border-radius:0;aspect-ratio:16/10}.premium-style-photo_story .pass{background:#172e48}
/* Editorial: magazine split photo/copy and ruled, asymmetric information blocks. */
.invitation.premium-style-editorial_split{max-width:1020px;--serif:'Times New Roman',Georgia,serif}.invitation.premium-style-editorial_split .premium-hero{padding:0 0 75px;background:#f0ece2;color:var(--primary)}.editorial-layout{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;width:100%;min-height:85svh}.editorial-portrait{background:#cbd4cb;min-height:420px}.editorial-portrait>span{display:grid;place-items:center;height:100%;font:72px Georgia}.editorial-copy{padding:38px 28px;display:flex;justify-content:center;flex-direction:column}.edition-line{display:flex;justify-content:space-between;letter-spacing:2px;font:700 10px var(--sans);padding-bottom:18px;border-bottom:2px solid var(--primary);margin-bottom:28px}.premium-style-editorial_split .hero-content{text-align:left}.premium-style-editorial_split .names{font:400 clamp(36px,5vw,64px)/1.05 'Times New Roman',serif;letter-spacing:-1.5px}.premium-style-editorial_split .cover-note{font:italic 17px Georgia}.premium-style-editorial_split .premium-personal strong{font:500 24px var(--sans);margin-left:0}.premium-style-editorial_split .section{padding-inline:clamp(26px,7vw,70px);text-align:left}.premium-style-editorial_split .ornament{display:none}.premium-style-editorial_split .section-title{font:400 38px/1.2 'Times New Roman',serif;border-top:2px solid var(--primary);padding-top:18px}.premium-style-editorial_split .programme-item{grid-template-columns:70px 1fr}.premium-style-editorial_split .programme-item b{background:none;color:var(--primary);font:48px Georgia}.premium-style-editorial_split .gallery figure{border-radius:0;aspect-ratio:4/5}
/* Ticket: segmented geometric blocks, perforations and typography-led information. */
.invitation.premium-style-modern_ticket .premium-hero{background:var(--primary);padding:42px 22px 100px}.ticket-layout{width:100%;background:#fffdf6;color:var(--primary);border-radius:20px;overflow:hidden;box-shadow:0 15px 45px #0003}.ticket-portrait{height:260px;background:var(--accent);overflow:hidden}.ticket-portrait>span{display:grid;place-items:center;height:100%;font:700 70px monospace}.ticket-perforation{height:1px;border-top:2px dashed var(--primary);margin:0 14px;position:relative}.ticket-perforation:before,.ticket-perforation:after{content:'';width:28px;height:28px;background:var(--primary);border-radius:50%;position:absolute;top:-15px}.ticket-perforation:before{left:-28px}.ticket-perforation:after{right:-28px}.ticket-copy{padding:26px 25px}.ticket-label{font:700 10px monospace;letter-spacing:3px;display:block;margin-bottom:20px}.premium-style-modern_ticket .names{font:850 clamp(34px,6vw,58px)/1.07 var(--sans);letter-spacing:-1px}.premium-style-modern_ticket .cover-note{font:14px var(--sans)}.premium-style-modern_ticket .premium-personal strong{font:700 24px var(--sans);font-style:normal}.premium-style-modern_ticket .section-title{font:800 30px/1.2 var(--sans);text-transform:uppercase;letter-spacing:-1px}.premium-style-modern_ticket .section{border-bottom:2px dashed var(--accent)}.premium-style-modern_ticket .ornament{display:none}.premium-style-modern_ticket .pass{border-radius:0;border:2px dashed var(--accent)}.premium-style-modern_ticket .gallery figure{border-radius:16px}
/* Presenter follows the selected visual style, without inserting demo people into real cards. */
.presenter-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:center;text-align:left;max-width:650px;margin:auto}.presenter-portrait{margin:0;min-width:0}.presenter-portrait img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:18px;object-position:50% 25%}.presenter-copy{min-width:0}.presenter-copy .section-title{overflow-wrap:anywhere;font-size:clamp(26px,5vw,42px)}.presenter-demo{display:block;font:11px/1.7 var(--sans);opacity:.8}.premium-style-royal_crest .presenter-portrait img{border-radius:50% 50% 8px 8px;border:1px solid var(--accent);padding:5px}.premium-style-floral_arch .presenter-portrait img{border-radius:140px 140px 10px 10px}.premium-style-ivory_letter .presenter-portrait{padding:8px 8px 28px;background:white;box-shadow:0 4px 18px #0002;transform:rotate(-3deg)}.premium-style-ivory_letter .presenter-portrait img,.premium-style-editorial_split .presenter-portrait img{border-radius:0}.premium-style-modern_ticket .presenter-layout{padding:20px;border:2px dashed var(--accent);border-radius:20px}
/* Entrances are finite and only start once the opening gate has been dismissed. */
@keyframes crest-enter{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes letter-enter{from{opacity:0;transform:translateY(24px) rotate(2deg)}to{opacity:1;transform:none}}
@keyframes garden-enter{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:none}}
@keyframes cinema-enter{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes editorial-enter{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes ticket-enter{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.premium-open.premium-style-royal_crest .royal-frame{animation:crest-enter .8s ease both}.premium-open.premium-style-ivory_letter .letter-sheet{animation:letter-enter .9s ease both}.premium-open.premium-style-floral_arch .garden-layout{animation:garden-enter .85s ease both}.premium-open.premium-style-photo_story .hero-content{animation:cinema-enter .75s ease both}.premium-open.premium-style-editorial_split .editorial-copy{animation:editorial-enter .85s ease both}.premium-open.premium-style-modern_ticket .ticket-layout{animation:ticket-enter .55s ease both}
.premium-style-editorial_split .reveal:not(.visible){transform:translateX(20px)}.premium-style-royal_crest .reveal:not(.visible){transform:scale(.97)}.premium-style-floral_arch .reveal:not(.visible){transform:translateY(28px)}
@media(max-width:600px){.editorial-layout{grid-template-columns:1fr}.editorial-portrait{height:42svh;min-height:260px}.editorial-copy{padding:30px 28px}.premium-style-editorial_split .names{font-size:46px}.premium-style-editorial_split .premium-personal{margin-block:18px}.premium-hero .premium-personal strong{overflow-wrap:anywhere}.presenter-layout{gap:18px}.presenter-copy .section-title{font-size:27px}}
@media(max-width:350px){.royal-frame{padding:22px 14px}.premium-hero .names{font-size:36px}.premium-style-floral_arch .names,.premium-style-ivory_letter .names{font-size:47px}.letter-sheet{padding:25px 19px}.presenter-layout{grid-template-columns:1fr}.presenter-portrait{width:min(240px,100%);margin:auto}}
@media(prefers-reduced-motion:reduce){.premium-card *, .premium-card *:before,.premium-card *:after{animation:none!important;transition:none!important}.premium-card .reveal{opacity:1;transform:none!important}}
@media print{.premium-hero{min-height:0!important}.premium-card .reveal{opacity:1;transform:none}.cinema-vignette{background:#10243e99}.premium-hero .scroll-cue,.premium-hero .hero-music{display:none}}
