/* The invitation itself is the first screen. Text remains live HTML. */
.cinematic-invitation .invitation-front{background:transparent;overflow:hidden}
.cinematic-invitation .invitation-front .front-stage{position:relative;display:block;width:100%;max-width:560px;height:100%;min-height:0;padding:0;overflow:hidden;container-type:size;isolation:isolate;outline:none}
.cinematic-invitation .invitation-front .front-stage:after{display:none}
.invitation-front .cinema-gates{background:transparent;perspective:none}
.invitation-front .cinema-door{border:0;box-shadow:none}
.invitation-front .cinema-door-seam{display:none}
.invitation-front .front-door-art{inset:0;opacity:1;width:200%;height:100%}
.invitation-front .cinema-door-right .front-door-art{left:-100%}
.front-art{position:absolute;inset:0;overflow:hidden;pointer-events:none;isolation:isolate;color:var(--cinema-accent,var(--accent,#ae8b65))}
.front-paper{position:absolute;inset:0;background:var(--bg,#fff8f1)}
.front-wash{position:absolute;inset:0;background:radial-gradient(ellipse at 15% 20%,color-mix(in srgb,var(--art-wash,#edc8b8) 22%,transparent),transparent 43%),radial-gradient(ellipse at 75% 80%,color-mix(in srgb,var(--art-wash,#edc8b8) 15%,transparent),transparent 48%)}
.cinematic-invitation .invitation-front .front-foil{position:absolute;inset:3% 3%;width:94%;height:94%;fill:none;stroke:#a78b62;stroke-width:1.1;opacity:.42;transform:none}
.front-foil path+path{stroke-width:.55;opacity:.5}
.front-bouquet{position:absolute;display:block;width:82%;height:70%;z-index:1}
.invitation-front .front-bouquet img{position:static;display:block;width:100%;height:100%;object-fit:contain;object-position:left bottom;max-width:none;transform-origin:5% 95%}
.front-bouquet-bl{left:-5%;bottom:-4%;animation:front-bloom-enter-bl 1.8s cubic-bezier(.22,1,.36,1) both}
.front-bouquet-tr{right:-5%;top:-6%;rotate:180deg;animation:front-bloom-enter-tr 1.8s cubic-bezier(.22,1,.36,1) both}
.front-bouquet img{animation:front-botanical-sway 4s ease-in-out infinite alternate}
.front-bouquet-tr img{animation-delay:-2s}
.front-painting{position:absolute;inset:0}
.front-painting>.design-art{width:100%;height:100%;object-fit:cover}
.front-design-art:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 43%,var(--bg) 0%,color-mix(in srgb,var(--bg) 94%,transparent) 33%,transparent 72%);opacity:.9}
.front-painting-tr{mask-image:radial-gradient(ellipse at 100% 0%,#000 12%,transparent 58%);transform-origin:95% 5%;animation:front-painted-sway 8s ease-in-out infinite alternate}
.front-painting-bl{mask-image:radial-gradient(ellipse at 0% 100%,#000 12%,transparent 58%);transform-origin:5% 95%;animation:front-painted-sway 8s -4s ease-in-out infinite alternate-reverse}
.invitation-front .front-design-art .art-sway{animation:front-botanical-sway 7s ease-in-out infinite alternate}
.invitation-front .front-design-art .art-delay{animation-delay:-3.5s}
.invitation-front .front-design-art .art-float{animation:front-moon-float 9s ease-in-out infinite alternate}
.front-motes{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.front-motes i{position:absolute;left:8%;top:24%;width:7px;height:7px;border-radius:50%;background:currentColor;opacity:0;animation:front-mote 8s ease-in-out infinite}
.front-motes i:nth-child(2){left:88%;top:69%;width:11px;height:11px;animation-delay:-3s}
.front-motes i:nth-child(3){left:15%;top:76%;width:5px;height:5px;animation-delay:-6s}
.front-motes i:nth-child(4){left:80%;top:32%;width:4px;height:4px;animation-delay:-2s}
.front-motes i:nth-child(5){left:24%;top:12%;width:9px;height:9px;animation-delay:-5s}
.front-motes i:nth-child(6){left:73%;top:85%;width:6px;height:6px;animation-delay:-7s}
.cinematic-invitation .invitation-front .front-content{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:none;height:100%;margin:0;padding:clamp(34px,7cqh,80px) 12% clamp(24px,4cqh,48px)!important;text-align:center;animation:none;background:none;color:var(--accent-ink,var(--ink))}
.cinematic-invitation .invitation-front .front-content:before{display:none}
.invitation-front .front-kicker{font:600 clamp(11px,3.2cqw,15px)/1.5 var(--font-display,Georgia);letter-spacing:.17em;text-transform:uppercase;margin:0;color:inherit}
.cinematic-invitation .invitation-front .front-content .front-names{font-family:var(--font-script,"Great Vibes"),cursive;font-size:clamp(39px,14cqw,70px);font-weight:400;line-height:1.08;letter-spacing:0;overflow-wrap:anywhere;text-wrap:balance;max-width:100%;margin:clamp(17px,3cqh,30px) 0;color:inherit;text-shadow:0 1px 1px #fff8}
.cinematic-invitation:not(.theme-royal) .invitation-front .front-content{color:var(--ink)}
.cinematic-invitation:not(.theme-royal) .invitation-front .front-content .front-names{font-size:clamp(36px,12.4cqw,62px);text-shadow:none}
.front-names>span{display:block}
.cinematic-invitation .invitation-front .front-names .amp{font:400 .53em/1.15 var(--font-script,"Great Vibes"),cursive;margin:0;opacity:.9}
.cinematic-invitation .invitation-front .front-names.front-long-names{font-size:clamp(31px,11cqw,53px)}
.front-calendar{display:block;width:min(100%,280px);margin:0;color:inherit;font:500 12px/1.4 var(--font-display,Georgia);text-transform:uppercase;font-variant-numeric:lining-nums}
.front-month,.front-year,.front-hijri{display:block}
.front-month{letter-spacing:.16em;margin-bottom:3px}
.front-date-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px}
.front-date-row .front-day,.front-date-row .front-time{padding:4px 1px;border-top:1px solid currentColor;border-bottom:1px solid currentColor;font-size:clamp(9px,2.7cqw,12px);letter-spacing:.035em;line-height:1.3}
.front-number{font:500 clamp(33px,10.5cqw,48px)/1.15 var(--font-display,Georgia)}
.front-year{font-size:14px;letter-spacing:.12em;margin-top:2px}
.front-hijri{font-size:10px;letter-spacing:.045em;margin-top:3px;opacity:.85}
.front-location{display:block;max-width:100%;margin:clamp(16px,3cqh,28px) 0 0;font:500 clamp(10px,2.9cqw,13px)/1.45 var(--font-display,Georgia);text-wrap:balance;letter-spacing:.045em}
.front-location strong{display:block;font-weight:600;text-transform:uppercase}
.front-location>span{display:block;margin-top:3px;font-size:.92em;opacity:.9}
.cinematic-invitation .invitation-front .front-open{display:inline-flex;align-items:center;justify-content:center;min-height:42px;min-width:0;width:min(230px,92%);margin:clamp(16px,3cqh,27px) 0 0!important;padding:10px 16px;border:1px solid var(--btn-bg,var(--accent-ink));border-radius:3px;box-shadow:none;background:var(--btn-bg,var(--accent-ink));color:var(--btn-ink,#fffaf1);font:500 11px/1.3 var(--font-display,Georgia);letter-spacing:.09em;text-transform:uppercase;gap:12px}
.theme-royal .invitation-front .front-open{background:#96715d;border-color:#96715d;color:#fffaf2}
.invitation-front .front-open svg{width:15px;height:15px}
.cinematic-invitation .invitation-front .front-skip{display:block;min-height:26px;margin:6px auto 0;padding:4px 8px;font:400 9px/1.4 var(--font-ui);letter-spacing:.02em;color:inherit;opacity:.7;text-underline-offset:3px}
.front-content>.front-kicker{animation:front-copy-enter 1.1s .15s both}
.front-content>.front-names{animation:front-copy-enter 1.3s .35s both}
.front-content .front-calendar{animation:front-copy-enter 1.2s .6s both}
.front-content .front-location{animation:front-copy-enter 1.2s .8s both}
.front-information{display:contents}
.front-information .front-calendar{margin-left:auto;margin-right:auto}
.front-content>.front-open,.front-content>.front-skip{animation:front-copy-enter 1s 1s both}
.invitation-front.is-opening .front-content>*{animation-play-state:paused}
.invitation-front.cinema-css-opening .front-content{animation:cinema-content-out .6s .2s ease-in-out forwards}
.invitation-front.cinema-css-opening .cinema-door{animation-duration:1.35s;animation-delay:.35s}
.art-offscreen .front-art *{animation-play-state:paused!important}
@keyframes front-copy-enter{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}
@keyframes front-bloom-enter-bl{from{opacity:0;translate:-18px 20px}to{opacity:1;translate:0 0}}
@keyframes front-bloom-enter-tr{from{opacity:0;translate:18px -20px}to{opacity:1;translate:0 0}}
@keyframes front-botanical-sway{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}
@keyframes front-painted-sway{from{transform:rotate(-.75deg) scale(1.01)}to{transform:rotate(.75deg) scale(1.015)}}
@keyframes front-moon-float{from{transform:translateY(-2px)}to{transform:translateY(3px)}}
@keyframes front-mote{0%,100%{opacity:0;transform:translate3d(0,26px,0)}40%{opacity:.18}70%{opacity:.08}90%{transform:translate3d(5px,-46px,0)}}
@container (max-height:620px){.cinematic-invitation .invitation-front .front-content{padding-top:20px!important;padding-bottom:14px!important}.cinematic-invitation .invitation-front .front-content .front-names{font-size:clamp(35px,12cqw,57px);margin:14px 0}.front-location{margin-top:13px}.front-hijri{font-size:9px}.cinematic-invitation .invitation-front .front-open{margin-top:14px!important;min-height:38px}.front-bouquet{height:75%}}
@container (max-height:480px){.cinematic-invitation .invitation-front .front-content .front-names{font-size:clamp(29px,10cqw,44px);margin:10px 0}.front-location>span,.front-hijri{display:none}.front-calendar{font-size:10px}.front-number{font-size:30px}.front-year{font-size:11px}.front-location{margin-top:10px}.cinematic-invitation .invitation-front .front-open{min-height:34px;margin-top:10px!important}.front-kicker{font-size:10px}}
@container (max-height:620px){.cinematic-invitation .invitation-front .front-content .front-names.front-long-names{font-size:clamp(27px,9.5cqw,42px)}}
@media(max-height:480px){.cinematic-invitation .invitation-front .front-stage{overflow-y:auto}.cinematic-invitation .invitation-front .front-content{height:auto;min-height:100%;padding-top:18px!important;padding-bottom:18px!important}}
@media(prefers-reduced-motion:reduce){.invitation-front *, .invitation-front *:before,.invitation-front *:after{animation:none!important;transition:none!important;opacity:1;translate:none}.front-motes{display:none}}

/* Collection-specific illustrations share the same stable reading area. */
.cinematic-invitation .invitation-front .front-geometry{position:absolute;inset:0;width:100%;height:100%;opacity:1;transform:none;pointer-events:none}
.front-reading-veil{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 50% 44%,var(--bg) 8%,color-mix(in srgb,var(--bg) 84%,transparent) 38%,transparent 72%);opacity:.22}
.front-theme-royal .front-reading-veil{opacity:0}
.front-layout-tlbr .front-bouquet-bl{left:auto;right:-5%;scale:-1 1}
.front-layout-tlbr .front-bouquet-tr{right:auto;left:-5%;scale:-1 1}
.front-layout-garden .front-bouquet{width:76%;height:65%;bottom:-5%;top:auto}
.front-layout-garden .front-bouquet-bl{left:-12%}
.front-layout-garden .front-bouquet-tr{right:-12%;rotate:0deg;scale:-1 1}
.front-theme-sakinah .front-reading-veil{opacity:.34}
.front-theme-seri .front-bouquet{width:80%;height:68%}
.front-theme-samudera .front-bouquet{width:86%;height:74%}
.front-theme-zaitun .front-bouquet{width:78%;height:75%}
.front-theme-puspita .front-bouquet{width:88%;height:74%}
.front-theme-rimba .front-bouquet{width:90%;height:77%}
.front-theme-mawar .front-reading-veil,.front-theme-rimba .front-reading-veil{opacity:.34}
.front-kind-woven .front-paper{background:linear-gradient(90deg,#00000009,transparent 35%,#0000000c),var(--bg)}
.front-kind-celestial .front-paper{background:radial-gradient(ellipse at 50% 0%,#30466a77,transparent 48%),var(--bg)}
.front-kind-architectural .front-wash{opacity:.65}
.front-kind-architectural .front-reading-veil{opacity:.08}
.invitation-front .front-native-starfield{animation:front-star-breathe 6s ease-in-out infinite alternate;transform-origin:center}
.invitation-front .front-native-moon{animation:front-moon-float 7s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
.invitation-front .front-native-medallion{animation:front-gold-breathe 6s ease-in-out infinite alternate}
.invitation-front .front-native-orbit{animation:front-moon-float 12s ease-in-out infinite alternate;transform-box:fill-box}
.invitation-front .front-native-sun{animation:front-sun-breathe 9s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
.front-ribbon{position:absolute;z-index:1;top:3.5%;left:50%;translate:-50% 0;width:45%;height:19%;animation:front-ribbon-enter 1.5s both}
.invitation-front .front-ribbon img{position:static;width:100%;height:100%;object-fit:contain;max-width:none;transform-origin:50% 12%;animation:front-ribbon-sway 6s ease-in-out infinite alternate}
.front-landscape{position:absolute;inset:auto -5% -3%;height:36%;z-index:1;animation:front-landscape-enter 1.6s cubic-bezier(.22,1,.36,1) both}
.invitation-front .front-landscape img{position:static;width:100%;height:100%;object-fit:contain;object-position:center bottom;max-width:none}
.theme-embun .invitation-front .front-kicker{font-family:var(--font-ui);font-weight:400;font-size:10px;letter-spacing:.24em}
.theme-embun .invitation-front .front-content .front-names{font-family:"Italiana",Georgia,serif;line-height:1.16;letter-spacing:.015em}
.theme-embun .front-calendar{font-family:var(--font-ui);font-weight:300;font-size:10px}
.theme-embun .front-number{font-family:"Italiana",Georgia,serif}
.theme-songket .front-motes i,.theme-purnama .front-motes i{border-radius:0;width:3px;height:3px;rotate:45deg}
.cinematic-invitation .cover[hidden] *{animation-play-state:paused!important}
@keyframes front-ribbon-sway{from{transform:rotate(-1deg)}to{transform:rotate(1deg)}}
@keyframes front-ribbon-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes front-star-breathe{from{opacity:.4}to{opacity:.8}}
@keyframes front-gold-breathe{from{opacity:.6}to{opacity:1}}
@keyframes front-sun-breathe{from{opacity:.75;transform:scale(.99)}to{opacity:1;transform:scale(1.01)}}
@keyframes front-landscape-enter{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.invitation-front .front-native-moon,.invitation-front .front-native-starfield,.invitation-front .front-native-medallion,.invitation-front .front-native-orbit,.invitation-front .front-native-sun,.invitation-front .front-ribbon img{animation:none!important}}
@container(max-height:740px){.invitation-front .front-native-medallion{translate:0 -40px}.invitation-front .front-native-moon{translate:0 -24px}.invitation-front .front-native-sun{translate:0 -32px}.front-ribbon{top:2%;height:14%}}
