@font-face{font-family:Rungkut;src:url('./fonts/rungkut-400.woff2') format('woff2');font-display:swap}@font-face{font-family:'Cormorant Garamond';src:url('./fonts/cormorant-garamond-400.woff2') format('woff2');font-weight:400;font-display:swap}@font-face{font-family:'Cormorant Garamond';src:url('./fonts/cormorant-garamond-600.woff2') format('woff2');font-weight:600;font-display:swap}@font-face{font-family:'Hello Bride';src:url('./fonts/hello-bride-400.woff2') format('woff2');font-display:swap}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#201d19}body{font-family:'Cormorant Garamond',Georgia,serif;color:var(--ink,#604627)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent,#ad4360);outline-offset:5px}button:disabled{cursor:default}button[hidden]{display:none}.stage{width:100%;min-height:100svh;display:grid;place-items:center;padding:2svh 0;background:radial-gradient(ellipse at 70% 80%,color-mix(in srgb,var(--glow,#d0b99a) 22%,transparent),transparent 65%),#201d19}.stage__device{position:relative;isolation:isolate;width:min(100vw,calc(96svh * 9 / 19.5));aspect-ratio:9/19.5;overflow:hidden;container-type:inline-size;border-radius:26px;box-shadow:0 25px 90px #0006;background:#f5eee1;border:1px solid #fff2}.viewport,.scene{position:absolute;inset:0}.scene{overflow:hidden;isolation:isolate;background:#f5eee1}.scene[hidden]{display:none}.plate{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.scene:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(to bottom,transparent 3%,rgba(255,251,241,.27) 15%,rgba(255,251,241,.36) 42%,transparent 59%)}.scene--night:after{background:linear-gradient(to bottom,#14192b09,#14192b2e 20%,#14192b55 43%,transparent 61%)}.scene--night{color:#ffeed6;--ink:#ffeed6;--accent:#f6cbbb}.copy{position:absolute;z-index:5;top:15%;left:9%;width:82%;text-align:center;pointer-events:none}.eyebrow{font:500 calc(2.35 * var(--u))/1.5 Georgia,serif;letter-spacing:.21em;text-transform:uppercase;margin:0 0 calc(3 * var(--u))}.couple-names{font:400 calc(10.5 * var(--u))/1.45 Rungkut,Georgia,serif;margin:0;color:var(--ink)}.couple-names span{display:block}.couple-names b{display:block;font:400 calc(6.6 * var(--u))/1 'Cormorant Garamond',serif;margin:calc(1 * var(--u)) 0 calc(2 * var(--u));color:var(--accent)}.flourish{width:30%;height:1px;background:currentColor;opacity:.5;margin:calc(4 * var(--u)) auto;position:relative}.flourish:before,.flourish:after{content:'✧';position:absolute;font:400 calc(3.8 * var(--u))/1 Georgia,serif;top:calc(-1.65 * var(--u))}.flourish:before{left:calc(-2 * var(--u))}.flourish:after{right:calc(-2 * var(--u))}.dates{font:600 calc(4.25 * var(--u))/1.2 'Cormorant Garamond',serif;letter-spacing:.025em;margin:calc(4 * var(--u)) 0 calc(2 * var(--u))}.location{font:600 calc(4.2 * var(--u))/1.2 'Cormorant Garamond',serif;margin:calc(1.5 * var(--u)) 0}.location small{display:block;font-weight:400;font-size:calc(3.7 * var(--u));margin-top:calc(1 * var(--u))}.scene[data-scene=family] .copy{top:18%}.script{font:400 calc(11.6 * var(--u))/1.3 'Hello Bride',cursive;color:var(--accent);margin:0 0 calc(2.8 * var(--u))}.family-copy{font:400 calc(4.15 * var(--u))/1.3 'Cormorant Garamond',serif;margin:0}.family-block{margin-top:calc(4.2 * var(--u))}.family-block h3{font:400 calc(6.9 * var(--u))/1.35 Rungkut,Georgia,serif;margin:0 0 calc(.8 * var(--u))}.family-block p{font:400 calc(4.25 * var(--u))/1.25 'Cormorant Garamond',serif;margin:0}.family-join{font-size:calc(5.2 * var(--u));color:var(--accent);margin:calc(3 * var(--u)) 0 0}.event .copy{top:19%}.event .eyebrow{margin-bottom:calc(2 * var(--u))}.event .script{font-size:calc(12.6 * var(--u));line-height:1.22;margin-bottom:calc(3 * var(--u))}.event-date{font:500 calc(3.15 * var(--u))/1.3 Georgia,serif;letter-spacing:.1em;text-transform:uppercase;margin:0 0 calc(3 * var(--u))}.event-time{font:600 calc(7.8 * var(--u))/1 'Cormorant Garamond',serif;margin:0 0 calc(3 * var(--u))}.event-venue{font:600 calc(4.45 * var(--u))/1.2 'Cormorant Garamond',serif;margin:0 0 calc(2 * var(--u))}.event-note{font:400 calc(3.75 * var(--u))/1.25 'Cormorant Garamond',serif;margin:0 auto;max-width:92%}.scene[data-scene=closing] .copy{top:22%}.closing-copy{font:400 calc(5 * var(--u))/1.35 'Cormorant Garamond',serif;margin:calc(3 * var(--u)) 0}.families{font:400 calc(5.2 * var(--u))/1.5 Rungkut,Georgia,serif;margin:calc(4.5 * var(--u)) 0}.credit{position:absolute;bottom:7%;left:50%;transform:translateX(-50%);z-index:10;width:max-content;max-width:90%;display:flex;gap:5px;align-items:center;background:#fffaecdf;border-radius:5px;padding:4px 8px;color:#685341;font:8px/1.3 Georgia,serif;text-decoration:none;letter-spacing:.02em}.credit img{width:24px;height:18px;object-fit:contain}
.sprite-wrap{position:absolute;z-index:4;pointer-events:none;transform-origin:50% 90%}.sprite{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}.actor{width:51%;height:35%;left:24.5%;bottom:11%;z-index:6;filter:drop-shadow(0 3px 2px #5e38241a)}.scene[data-scene=cover] .actor{width:53%;height:34%;left:23.5%;bottom:9%}.prop-left{left:1%;bottom:12%;width:24%;height:23%}.prop-right{right:1%;bottom:13%;width:23%;height:24%}.pendant{width:21%;height:18%;top:4%;right:-2%;transform-origin:50% 0;z-index:3}.pendant.pendant-left{left:-2%;right:auto}.sprite-wrap.sway{animation:sway 5.5s ease-in-out infinite}.sprite-wrap.float{animation:float 6s ease-in-out infinite}.sprite-wrap.breathe{animation:breathe 5s ease-in-out infinite}.scene[hidden] .sprite-wrap{animation-play-state:paused}.hotspot{position:absolute;z-index:15;border:0;padding:0;background:transparent;color:inherit;touch-action:manipulation}.action{left:22%;bottom:10%;width:56%;height:35%;border-radius:48%}.action:after{content:'';position:absolute;left:50%;bottom:5%;width:calc(4.2 * var(--u));height:calc(4.2 * var(--u));margin-left:calc(-2.1 * var(--u));border-radius:50%;background:#fff8db;box-shadow:0 0 15px var(--glow);animation:tap-pulse 2.2s ease-out infinite}.gesture{position:absolute;z-index:14;bottom:8.2%;left:50%;transform:translateX(-50%);width:max-content;max-width:82%;padding:calc(2.2 * var(--u)) calc(4 * var(--u));border-radius:30px;background:#281c22c2;color:#fff7e9;font:400 calc(2.7 * var(--u))/1.2 Georgia,serif;letter-spacing:.07em;text-align:center;pointer-events:none;border:1px solid #daba7977}.ornament-touch{right:1%;top:4%;width:20%;height:19%;border-radius:30%}.ornament-touch:after{content:'';position:absolute;bottom:3%;left:47%;width:calc(1.5 * var(--u));height:calc(1.5 * var(--u));border:1px solid #fff9e5;border-radius:50%;opacity:.8}.glow{position:absolute;inset:0;z-index:2;background:radial-gradient(ellipse at 50% 72%,color-mix(in srgb,var(--glow) 70%,transparent),transparent 65%);opacity:0;pointer-events:none}.bloom{position:absolute;z-index:7;width:78%;height:22%;left:11%;bottom:30%;opacity:0;transform:scale(.7);pointer-events:none}.particle{position:absolute;z-index:20;left:50%;top:68%;pointer-events:none;will-change:transform,opacity}.particle--petal{width:calc(2 * var(--u));height:calc(3.2 * var(--u));background:var(--accent);border-radius:90% 5% 80% 10%;box-shadow:inset 0 1px 3px #fff7}.particle--gold{width:calc(1.1 * var(--u));height:calc(1.1 * var(--u));background:#f7d687;border-radius:50%;box-shadow:0 0 7px #ffdc87}.scene.arriving .actor{animation:actor-arrival 1s ease-out both}.scene.is-acting .gesture{opacity:0;transition:opacity .2s}.scene.is-acting .action:after{display:none}.scene[data-scene=family] .action{bottom:10%;height:26%}.scene[data-scene=family] .actor{display:none}.scene[data-scene=family] .prop-left{left:10%;width:27%;height:27%;bottom:12%}.scene[data-scene=family] .prop-right{right:10%;width:27%;height:27%;bottom:12%}.scene[data-scene=family] .bloom{height:22%;bottom:12%;z-index:6}.scene[data-scene=closing] .actor{height:28%;bottom:15%;width:44%;left:28%}.scene[data-scene=closing] .action{bottom:15%;height:27%}.scene[data-scene=closing] .gesture{bottom:11.5%}.scene[data-scene=closing] .prop-left,.scene[data-scene=closing] .prop-right{bottom:17%}.nav-layer{position:absolute;inset:0;z-index:40;pointer-events:none}.chrome{position:absolute;width:calc(8.3 * var(--u));height:calc(8.3 * var(--u));min-width:26px;min-height:26px;border-radius:50%;border:1px solid #fff6;background:#ede5ce70;color:#5d5138;display:grid;place-items:center;padding:0;pointer-events:auto;font:400 calc(5.7 * var(--u))/1 Georgia,serif;box-shadow:0 1px 8px #2016081a;backdrop-filter:blur(5px)}.sound{top:2.4%;right:4%;font-size:calc(4.3 * var(--u))}.auto{top:2.4%;left:4%;font:600 calc(3.4 * var(--u))/1 Georgia,serif}.previous{left:3.5%;bottom:16%;font-size:calc(7 * var(--u))}.next{right:3.5%;bottom:16%;font-size:calc(7 * var(--u))}.scene--night~.nav-layer .chrome{color:#fcf0d9}.dots{position:absolute;bottom:3.4%;left:0;width:100%;display:flex;justify-content:center;gap:calc(2.7 * var(--u));pointer-events:auto}.dot{border:0;border-radius:10px;width:calc(6 * var(--u));height:calc(6 * var(--u));padding:0;background:transparent;position:relative}.dot:after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(1.7 * var(--u));height:calc(1.7 * var(--u));border-radius:50%;background:#fffdf2;box-shadow:0 0 0 1px #46330d25;transition:width .4s,background .4s}.dot[aria-current=true]:after{width:calc(4.6 * var(--u));background:#d4a95f}.timer{position:absolute;bottom:1.3%;height:2px;left:20%;width:60%;background:#f6ead947;overflow:hidden;opacity:.7}.timer i{height:100%;width:100%;display:block;background:#d9b26b;transform:scaleX(0);transform-origin:left}.timer.running i{animation:timer 6s linear forwards}.load-error{position:absolute;inset:15% 8% auto;z-index:1001;text-align:center;background:#fff7e8;padding:25px;border-radius:15px}.load-error[hidden]{display:none}
@keyframes sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(calc(-1.4 * var(--u)))}}@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.018)}}@keyframes tap-pulse{0%{box-shadow:0 0 0 0 #fff8d8a0,0 0 15px var(--glow)}80%,100%{box-shadow:0 0 0 calc(4.5 * var(--u)) #fff8d800,0 0 15px var(--glow)}}@keyframes reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes actor-arrival{from{opacity:0;transform:translateY(6%)}to{opacity:1;transform:translateY(0)}}@keyframes timer{to{transform:scaleX(1)}}
@media(max-aspect-ratio:3/4){.stage{padding:0}.stage__device{width:100vw;height:100svh;aspect-ratio:auto;border:0;border-radius:0;box-shadow:none}.credit{bottom:6.5%}.scene{font-feature-settings:'case' 1}.dots{bottom:max(2.8%,env(safe-area-inset-bottom))}.timer{bottom:max(1.2%,calc(env(safe-area-inset-bottom) - 4px))}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.timer{display:none}.action:after{box-shadow:0 0 8px var(--glow)}}
/* Keep the hanging layer clear of the text column. */
.pendant{width:17%;height:14%;right:0}
.pendant.pendant-left{left:0}
.scene[data-scene="family"] .action{left:10%;width:80%}
.chrome{width:calc(9.5 * var(--u));height:calc(9.5 * var(--u));min-width:34px;min-height:34px}
.dot{width:calc(8 * var(--u));height:calc(8 * var(--u));min-width:32px;min-height:32px}
.dots{gap:calc(1.7 * var(--u))}
.replay{position:absolute;z-index:20;bottom:11.4%;left:50%;transform:translateX(-50%);border:1px solid #daba7977;border-radius:30px;background:#281c22c2;color:#fff7e9;padding:calc(2.2 * var(--u)) calc(4 * var(--u));font:400 calc(2.8 * var(--u))/1.2 Georgia,serif;letter-spacing:.05em}
.scene[data-scene="closing"] .gesture{display:none}
.prop-touch{left:1%;bottom:12%;width:24%;height:23%;border-radius:30%}
.scene[data-scene="family"] .prop-touch{left:10%;width:27%;height:27%;bottom:12%}
.scene[data-scene="closing"] .prop-touch{bottom:17%}

/* The upper paper field is reserved for copy; actors and interactive art live below it. */
.copy{top:9%;left:8%;width:84%;isolation:isolate;padding:calc(1.5 * var(--u)) 0 calc(3 * var(--u))}


.eyebrow{font-size:calc(2.1 * var(--u));letter-spacing:.15em;margin-bottom:calc(2 * var(--u))}
.couple-names{font-size:calc(9.7 * var(--u));line-height:1.15}.couple-names b{font-size:calc(5.5 * var(--u));margin:calc(1.3 * var(--u)) 0}.dates{font-size:calc(4.2 * var(--u));margin:calc(3 * var(--u)) 0 calc(1.5 * var(--u))}.location{font-size:calc(4.1 * var(--u))}.flourish{margin:calc(2.6 * var(--u)) auto}
.event .copy{top:10%}.event .eyebrow{margin-bottom:calc(2.2 * var(--u))}.event .script{font-size:calc(10.8 * var(--u));line-height:1.35;margin-bottom:calc(2.3 * var(--u));text-wrap:balance}.event-date{font-size:calc(2.9 * var(--u));letter-spacing:.065em;margin-bottom:calc(2.3 * var(--u))}.event-time{font-size:calc(7 * var(--u));line-height:1.1;margin-bottom:calc(2 * var(--u))}.event-venue{font-size:calc(4.2 * var(--u));line-height:1.25;margin-bottom:calc(1.4 * var(--u))}.event-note{font-size:calc(3.55 * var(--u));line-height:1.35;max-width:96%}
.scene[data-scene=family] .copy{top:10.5%}.scene[data-scene=family] .script{font-size:calc(9.2 * var(--u));line-height:1.3;margin-bottom:calc(2.3 * var(--u))}.family-copy{font-size:calc(3.65 * var(--u));line-height:1.25}.family-block{margin-top:calc(2.7 * var(--u))}.family-block h3{font-size:calc(5.8 * var(--u));line-height:1.3;margin-bottom:calc(.8 * var(--u))}.family-block p{font-size:calc(3.75 * var(--u));line-height:1.3}.family-join{font-size:calc(4 * var(--u));margin-top:calc(1.6 * var(--u))}
.scene[data-scene=closing] .copy{top:13%}.scene[data-scene=closing] .script{font-size:calc(10.5 * var(--u))}.closing-copy{font-size:calc(4.3 * var(--u));line-height:1.4}.families{font-size:calc(4.6 * var(--u));line-height:1.35;max-width:100%;margin-top:calc(3 * var(--u))}
.sprite{object-position:center bottom}.actor{width:46%;left:27%;height:34%;bottom:14%;transform-origin:50% 100%;animation:none!important;filter:none}
.actor:before{content:'';position:absolute;left:15%;bottom:calc(-.8 * var(--u));width:70%;height:calc(2.2 * var(--u));background:radial-gradient(ellipse,#51402a55,transparent 70%);z-index:-1;pointer-events:none}
.actor>.sprite{transform-origin:50% 100%}.scene[data-scene=cover] .actor{width:48%;left:26%;height:31%;bottom:11%}.scene[data-effect=haldi] .actor,.scene[data-effect=maiyan] .actor,.scene[data-effect=mehendi] .actor{width:51%;left:24.5%;height:29%;bottom:14%}
.prop-left{left:2%;width:20%;height:20%;bottom:14%}.prop-right{right:2%;width:19%;height:20%;bottom:14%}
.scene[data-scene=family] .prop-left{left:4%;width:20%;height:23%;bottom:14%}.scene[data-scene=family] .prop-right{right:4%;width:20%;height:23%;bottom:14%}
.scene[data-scene=closing] .actor{width:43%;left:28.5%;height:28%;bottom:19%}.scene[data-scene=closing] .prop-left,.scene[data-scene=closing] .prop-right{bottom:19%}
.scene.arriving .actor{animation:none}.sprite-wrap.float,.sprite-wrap.breathe{animation:none}.scene.is-acting .sprite-wrap.sway{animation-play-state:paused}
.gesture{bottom:6%;font-size:calc(2.55 * var(--u));letter-spacing:.035em;padding:calc(2.3 * var(--u)) calc(3 * var(--u));max-width:74%;line-height:1.35}.action{border-radius:18%}.action:after{left:50%;bottom:32%;width:calc(4 * var(--u));height:calc(4 * var(--u))}.action--left:after{bottom:40%}.action--hero:after{bottom:30%}.previous,.next{bottom:5.4%}.dots{bottom:1.3%}.timer{bottom:.5%}.credit{bottom:7%}.replay{bottom:12%}
.motion-art{position:absolute;z-index:8;pointer-events:none;transform-origin:50% 100%}.motion-art .sprite{object-fit:contain;object-position:center bottom}.story-mirror{width:34%;height:33%;left:33%;bottom:14%}.mirror-reflection{position:absolute;left:21%;top:16%;width:58%;height:65%;overflow:hidden;border-radius:50%;opacity:0}.mirror-reflection img{height:90%;width:93%;margin:10% auto 0;opacity:.62;transform:scaleX(-1)}.mirror-sheen{position:absolute;inset:16% 23% 19%;border-radius:50%;background:linear-gradient(100deg,transparent 20%,#fffdf9aa 50%,transparent 80%);opacity:0}
.wish-balloon{width:28%;height:32%;left:36%;bottom:15%}.wish-ribbon{position:absolute;bottom:3%;left:50%;transform:translateX(-50%);width:max-content;background:#fff3d9e8;padding:calc(1 * var(--u)) calc(2 * var(--u));border:1px solid #c8a16577;border-radius:calc(2 * var(--u));font:400 calc(3 * var(--u))/1.2 'Cormorant Garamond',serif;color:#725341;opacity:0}
.family-phulkari{left:24%;width:52%;height:26%;bottom:17%;overflow:hidden}.family-phulkari img{clip-path:inset(0 0 70% 0);transform:scaleY(.45);transform-origin:50% 0}
.scene[data-scene=family] .jasmine-welcome{opacity:1;left:13%;width:74%;height:20%;bottom:23%;transform:none;clip-path:inset(0 48% 0 48%)}
.scene[data-effect=haldi] .actor:after,.scene[data-effect=maiyan] .actor:after,.scene[data-effect=mehendi] .actor:after{content:'';position:absolute;z-index:-1;left:-4%;bottom:calc(-1 * var(--u));width:108%;height:calc(4 * var(--u));border-radius:50%;background:radial-gradient(ellipse,#ad794144,#ad79411a 55%,transparent 72%)}
.haldi-applicator{left:3%;width:25%;height:12%;bottom:25%;z-index:12;opacity:0;transform-origin:9% 46%}.haldi-stroke{position:absolute;z-index:10;width:calc(1.7 * var(--u));height:calc(.65 * var(--u));border-radius:45% 20% 38% 25%;background:#e9ac20;box-shadow:0 calc(.1 * var(--u)) calc(.4 * var(--u)) #b7862255;transform:rotate(-18deg);opacity:0;pointer-events:none}
.has-mehendi-hands .actor{width:43%;left:46%;height:27%;bottom:14%}.has-mehendi-hands .prop-left,.has-mehendi-hands .prop-right{display:none}.mehendi-hands{width:27%;height:25%;left:8%;bottom:15%;padding:calc(1.5 * var(--u));border-radius:50%;background:radial-gradient(ellipse,#fff4dfc9 0%,#fff4df00 70%)}.henna-applicator{width:20%;height:13%;left:18%;bottom:30%;opacity:0;z-index:12}
.rhythm-ring{position:absolute;inset:33% 0 15%;border:1px solid #e7bc74;border-radius:50%;opacity:0;box-shadow:0 0 8px #e7bc7455}.stage-beam{position:absolute;top:8%;height:76%;width:34%;z-index:2;transform-origin:50% 0;clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);background:linear-gradient(#f2dba660,#e8c7ad07);opacity:0;pointer-events:none}.beam-left{left:2%}.beam-right{right:2%;background:linear-gradient(#b3d6e77a,#b3d6e705)}
.jaggo-trail{position:absolute;left:10%;top:55%;width:79%;height:24%;pointer-events:none;z-index:7}.jaggo-bulb{position:absolute;width:calc(1.8 * var(--u));height:calc(2.8 * var(--u));border-radius:45%;background:#ffdda4;box-shadow:0 0 calc(3 * var(--u)) calc(1 * var(--u)) #edb34577;opacity:0}.scene[data-effect=jaggo] .prop-left{width:18%;height:22%;bottom:16%}
.scene[data-effect=garland][data-theme=neel-sarovar] .story-mirror{width:24%;height:29%;left:5%;bottom:14%}.scene[data-effect=garland][data-theme=neel-sarovar] .actor{width:43%;left:44%;height:33%}.scene[data-effect=garland][data-theme=neel-sarovar] .prop-left{display:none}
.ceremony-flowers{opacity:1;left:16%;width:68%;height:14%;bottom:43%;transform:none}.gurdwara-welcome{opacity:1;left:13%;width:74%;height:15%;bottom:43%;transform:none;clip-path:inset(0 50% 0 50%)}.ceremony-flowers img,.gurdwara-welcome img{object-position:center}
.falling-petal{position:absolute;width:calc(1.5 * var(--u));height:calc(2.3 * var(--u));z-index:10;background:var(--accent);border-radius:80% 10% 70% 20%;opacity:0;pointer-events:none}
.welcome-lamp{position:absolute;bottom:16%;width:24%;height:24%;z-index:7;opacity:0;background:radial-gradient(ellipse,#fff7cc9a,#e6b96944 25%,transparent 68%);pointer-events:none}.lamp-left{left:0}.lamp-right{right:0}
.evening-diyas{left:22%;width:56%;height:12%;bottom:13%;z-index:9}.lamp-flames{position:absolute;left:4%;right:4%;bottom:0;height:calc(15 * var(--u));display:flex;justify-content:space-between;align-items:flex-end;padding:0 3% calc(10 * var(--u));pointer-events:none}.tiny-flame{width:calc(1.5 * var(--u));height:calc(3.5 * var(--u));flex-shrink:0;background:linear-gradient(#fffbd8,#ffcd5a 60%,#ea8e28);border-radius:70% 30% 65% 35%;box-shadow:0 0 calc(5 * var(--u)) calc(1.5 * var(--u)) #ffcc5c66;opacity:0;transform-origin:50% 100%}
.reception-rang-mahal .actor,.reception-noor-e-mohabbat .actor{bottom:22%;height:31%}.reception-rang-mahal .prop-left,.reception-rang-mahal .prop-right,.reception-noor-e-mohabbat .prop-left,.reception-noor-e-mohabbat .prop-right{bottom:22%}
.lotus-wish{left:3%;width:31%;height:10%;bottom:13%;z-index:8}.lake-ripple{position:absolute;width:23%;height:2.4%;left:14%;bottom:12%;border:1px solid #d8e5dfa0;border-radius:50%;opacity:0;pointer-events:none;z-index:7}.reception-neel-sarovar .actor{bottom:25%;height:31%}.reception-neel-sarovar .prop-left{display:none}.reception-neel-sarovar .prop-right{bottom:25%}
@media(max-aspect-ratio:3/4){.dots{bottom:max(1.3%,env(safe-area-inset-bottom))}.timer{bottom:max(.5%,calc(env(safe-area-inset-bottom) - 4px))}}
@media(max-aspect-ratio:9/19){.copy{top:10%}.event .copy{top:11%}.scene[data-scene=family] .copy{top:12%}.scene[data-scene=closing] .copy{top:17%}}
@media(prefers-reduced-motion:reduce){.haldi-applicator,.henna-applicator{display:none}.falling-petal,.stage-beam{display:none}}
/* Hanging ornaments end above the event title, including its longest names. */
.pendant{width:12%;height:10%;top:3.5%;right:2%}.pendant.pendant-left{left:2%}.ornament-touch{top:3.5%;right:2%;width:12%;height:10%}
.scene[data-scene=family] .story-mirror{width:42%;left:29%;height:36%;bottom:14%}
.scene[data-scene=family] .wish-balloon{width:35%;left:32.5%;height:35%;bottom:15%}
.mehendi-hands>.sprite{position:absolute;inset:0;width:100%;height:100%;padding:calc(1.5 * var(--u))}.mehendi-pattern{clip-path:inset(0 0 100% 0)}
.reception-rang-mahal .actor,.reception-noor-e-mohabbat .actor{bottom:19%;height:31%}.reception-rang-mahal .prop-left,.reception-rang-mahal .prop-right,.reception-noor-e-mohabbat .prop-left,.reception-noor-e-mohabbat .prop-right{bottom:19%}
.reception-neel-sarovar .actor{width:39%;left:54%;height:31%;bottom:14%}.reception-neel-sarovar .prop-right{display:none}.lotus-wish{width:24%;left:2%;height:8%;bottom:16%}.lake-ripple{left:4%;width:25%;bottom:15%}
.family-phulkari img{clip-path:inset(0 0 65% 0);transform:none}.family-phulkari~.action:after{bottom:77%}
.scene[data-scene=family] .jasmine-welcome{clip-path:inset(0 25% 0 25%)}.gurdwara-welcome{clip-path:inset(0 33% 0 33%)}

.wish-balloon~.action:after{bottom:50%}
.welcome-lamp{bottom:12%;height:18%}

/* Maintain the portrait typography scale on shorter, wider phones as well. */
.stage__device{container-type:size}.viewport,.nav-layer{--u:min(1cqw,.461538cqh)}

/* Text is printed directly onto the artwork, with the original invitation reveal. */
.copy:before{display:none}.scene--night .copy{text-shadow:0 1px 2px #15263255}
.copy.text-writing>*{animation:invite-block-in 780ms cubic-bezier(.22,.61,.36,1) var(--text-delay,0ms) both}
.copy.text-writing>.ink-block{animation-name:invite-script-rise}
.copy.text-writing .ink-g{display:inline;animation:invite-ink-in 560ms cubic-bezier(.22,.61,.36,1) calc(var(--text-delay,0ms) + var(--letter,0)*38ms) both}
.couple-names .ink-g{display:inline}
@keyframes invite-block-in{from{opacity:0;transform:translate3d(0,calc(1.2 * var(--u)),0) scale(.982);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes invite-script-rise{from{opacity:1;transform:translate3d(0,calc(.93 * var(--u)),0) scale(.99)}to{opacity:1;transform:none}}
@keyframes invite-ink-in{from{opacity:0;filter:blur(9px)}to{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.copy.text-writing>*{animation:none}.copy.text-writing .ink-g{animation:none}}

/* The heirloom collection: clear upper copy, objects resting in the scene. */
.scene[data-theme=gulabi-darbaar] .plate,.scene[data-theme=padma-prangan] .plate,.scene[data-theme=rosewood-vows] .plate{object-position:50% 50%}
.scene[data-theme=gulabi-darbaar] .prop-left,.scene[data-theme=padma-prangan] .prop-left,.scene[data-theme=rosewood-vows] .prop-left{width:19%;height:19%;bottom:14%;left:3%}
.scene[data-theme=gulabi-darbaar] .prop-right,.scene[data-theme=padma-prangan] .prop-right,.scene[data-theme=rosewood-vows] .prop-right{width:18%;height:20%;bottom:14%;right:3%}
.frame-shutter{position:absolute;top:16%;height:65%;width:29%;background:linear-gradient(90deg,#a37f48,#e6cb8d,#ab844c);border:1px solid #977040;border-radius:40% 0 0 40%;z-index:3}.frame-shutter-left{left:21%;transform-origin:left}.frame-shutter-right{right:21%;transform-origin:right;border-radius:0 40% 40% 0}
.lotus-opening{left:33%;width:34%;height:18%;bottom:17%}.lotus-aura{position:absolute;left:0;right:0;bottom:0;height:20%;border:1px solid #cfb575;border-radius:50%;opacity:0}
.welcome-bouquet{left:35%;width:30%;height:25%;bottom:16%}.bouquet-ribbon{position:absolute;bottom:15%;left:50%;transform:translateX(-50%);width:max-content;background:#fff8e9;padding:calc(1.4 * var(--u)) calc(2.5 * var(--u));border:1px solid #c8b28b;font:400 calc(3.4 * var(--u))/1.2 Rungkut,serif;color:var(--ink);opacity:0}
.scene[data-effect=bouquet]:not([data-scene=family]) .welcome-bouquet,.scene[data-effect=lotus]:not([data-scene=family]) .lotus-opening{width:28%;left:4%;bottom:16%}
.scene[data-effect=bouquet] .actor,.scene[data-effect=lotus] .actor{width:43%;left:43%;height:31%;bottom:14%}
.scene[data-effect=bouquet] .prop-left,.scene[data-effect=lotus] .prop-left{display:none}
.opening-arch{width:73%;height:39%;left:13.5%;bottom:14%;z-index:5}.opening-arch img{clip-path:inset(0 43% 0 43%)}
.aisle-pool{position:absolute;width:18%;height:5%;bottom:13%;z-index:5;opacity:0;pointer-events:none;background:radial-gradient(ellipse,#fff2b79a,#e9c97750 30%,transparent 70%)}
.dinner-flame{position:absolute;left:44%;top:47%;width:12%;height:15%;border-radius:70% 30% 60% 40%;opacity:0;background:linear-gradient(#fffee2,#f9c24d);box-shadow:0 0 calc(5 * var(--u)) #ffe8b5;transform-origin:bottom}
.chapel-bells{width:23%;height:18%;left:5%;bottom:30%;transform-origin:50% 0}.chapel-bells:before{content:'';position:absolute;left:50%;width:1px;bottom:90%;height:calc(35 * var(--u));background:#90724988}.chapel-bells img{transform-origin:50% 0}
.bell-sound{position:absolute;inset:40% -4% -5%;border:1px solid #c7a06a;border-radius:50%;opacity:0}
.scene[data-effect=bells] .actor{width:46%;left:40%;bottom:14%;height:33%}.scene[data-effect=bells] .prop-left{display:none}
.scene[data-theme=rosewood-vows] .pendant{display:none}.scene[data-theme=rosewood-vows] .ornament-touch{display:none}
.waltz-note{position:absolute;bottom:40%;font:400 calc(5 * var(--u))/1 Georgia,serif;color:#eed0a0;opacity:0;z-index:8;pointer-events:none}
.scene[data-effect=waltz] .prop-left{display:none}

/* Place overlays against the artwork itself, without contain letterboxing. */
.story-mirror{height:auto!important;aspect-ratio:301/413}
.story-mirror>.sprite{position:absolute;inset:0;width:100%;height:100%}
.mirror-reflection{left:21%;top:12%;width:57%;height:74%;border-radius:50%;display:grid;align-items:end;justify-items:center}
.mirror-reflection img{width:94%;height:90%;margin:0;object-fit:contain;object-position:center bottom;opacity:.72;transform:scaleX(-1)}
.mirror-sheen{inset:12% 22% 14%}
.evening-diyas{height:auto;aspect-ratio:427/114}
.evening-diyas>.sprite{position:absolute;inset:0}
.evening-diyas .tiny-flame{position:absolute;bottom:96%;width:2.7%;height:22%;margin-left:-1.35%;box-shadow:0 0 calc(2 * var(--u)) #ffcc5c99}
/* The foreground steps provide a real surface for the closing portrait. */
.scene[data-theme=neel-sarovar][data-scene=closing] .actor{left:57%;width:34%;height:28%;bottom:15%}
.scene[data-theme=neel-sarovar][data-scene=closing] .prop-left{left:34%;width:14%;height:17%;bottom:17%}
.scene[data-theme=neel-sarovar][data-scene=closing] .prop-right{display:none}
/* Legible names with consistent capitals rather than decorative alternate glyphs. */
.scene[data-theme=noor-e-mohabbat] .couple-names,.scene[data-theme=noor-e-mohabbat] .family-block h3{font-family:'Cormorant Garamond',Georgia,serif;text-transform:uppercase;letter-spacing:.045em;font-weight:600}
.families{font-family:'Cormorant Garamond',Georgia,serif;text-transform:uppercase;letter-spacing:.04em}
.scene[data-theme=noor-e-mohabbat] .event-note{max-width:84%;text-wrap:balance}
.scene[data-theme=noor-e-mohabbat][data-scene=closing] .copy{left:12%;width:76%}
.scene[data-theme=noor-e-mohabbat] .closing-copy{font-size:calc(4 * var(--u));text-wrap:balance}
.scene[data-theme=noor-e-mohabbat][data-scene=family] .jasmine-welcome{height:18%;bottom:23%;width:64%;left:18%;clip-path:inset(0 48% 0 48%)}
/* Keep Punjabi copy inside the central paper field, clear of the side foliage. */
.scene[data-theme=phulkari-courtyard] .copy{left:15%;width:70%;top:13%}
.scene[data-theme=phulkari-courtyard].event .script{font-size:calc(9.2 * var(--u));line-height:1.35;text-wrap:balance}
.scene[data-theme=phulkari-courtyard].event .event-venue{font-size:calc(4 * var(--u))}
.scene[data-theme=phulkari-courtyard].event .event-note{max-width:90%;text-wrap:balance}
.scene[data-theme=phulkari-courtyard][data-scene=family] .script{font-size:calc(8.2 * var(--u))}
.scene[data-theme=phulkari-courtyard][data-scene=closing] .copy{top:15%}

/* A gentle resting state for interactive elements before a guest taps. */
.scene:not(.is-acting) .prop-left>.sprite,.scene:not(.is-acting) .prop-right>.sprite{animation:estate-glimmer 6s ease-in-out infinite}
.scene:not(.is-acting) .prop-right>.sprite{animation-delay:-3s}
.scene:not(.is-acting) .wish-balloon>.sprite{animation:estate-balloon 6s ease-in-out infinite;transform-origin:center bottom}
.scene:not(.is-acting) .mirror-sheen{animation:estate-mirror 7s ease-in-out infinite}
.scene:not(.is-acting)[data-effect=dance] .prop-left>.sprite,.scene:not(.is-acting)[data-effect=drum] .prop-left>.sprite{animation:estate-drum 4.8s ease-in-out infinite;transform-origin:center bottom}
.scene[hidden] .sprite,.scene[hidden] .mirror-sheen{animation-play-state:paused!important}
@keyframes estate-glimmer{0%,100%{filter:brightness(1)}50%{filter:brightness(1.09)}}
@keyframes estate-balloon{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
@keyframes estate-drum{0%,82%,100%{transform:rotate(0)}87%{transform:rotate(-2deg)}93%{transform:rotate(2deg)}}
@keyframes estate-mirror{0%,70%,100%{opacity:0;transform:translateX(-25%)}82%{opacity:.25}92%{opacity:0;transform:translateX(25%)}}

/* Classical serif capitals with conventional Z/Q glyphs for these names. */
.scene[data-theme=noor-e-mohabbat] .couple-names,.scene[data-theme=noor-e-mohabbat] .family-block h3,.scene[data-theme=noor-e-mohabbat] .families,.scene[data-theme=rosewood-vows] .couple-names,.scene[data-theme=rosewood-vows] .family-block h3,.scene[data-theme=rosewood-vows] .families{font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:.025em}

.chrome.auto,.chrome.previous,.chrome.next{display:flex;align-items:center;justify-content:center;padding:0;line-height:0}
.chrome .control-icon{display:block;width:46%;height:46%;flex:none;overflow:visible;pointer-events:none}
.chrome.auto .control-icon{width:44%;height:44%}

.chrome[hidden]{display:none}

/* Portable RSVP uses the per-invitation backend. */
.scene-rsvp-trigger,.scene-map{position:relative;z-index:30;display:inline-block;padding:9px 18px;border:1px solid currentColor;border-radius:24px;background:#fff9;color:var(--ink);font:600 15px system-ui;text-decoration:none;cursor:pointer;margin:12px auto 0;pointer-events:auto}.scene-rsvp-dialog{box-sizing:border-box;width:min(420px,92vw);max-height:90dvh;border:0;border-radius:24px;padding:26px;color:#382e25;background:#fffaf2;overflow:auto;font:16px system-ui}.scene-rsvp-dialog::backdrop{background:#160d0db3}.scene-rsvp-dialog h2{font:32px Georgia;margin:16px 0}.scene-rsvp-dialog label{display:block;font-size:14px;margin:14px 0}.scene-rsvp-dialog input,.scene-rsvp-dialog select,.scene-rsvp-dialog textarea{box-sizing:border-box;display:block;width:100%;padding:12px;margin-top:6px;border:1px solid #cfbdab;border-radius:10px;background:white;font:16px system-ui}.scene-rsvp-dialog button{border:0;padding:12px 20px;border-radius:20px;cursor:pointer}.scene-rsvp-submit{background:#693d3a;color:white;width:100%}.scene-rsvp-close{float:right;background:#efe5d9}.scene-rsvp-status{font-size:14px;line-height:1.5}.scene-inactive{display:grid;align-items:center;text-align:center;padding:30px;height:100%;box-sizing:border-box;background:#fbf2e5;color:#644839;font:24px Georgia}
