:root{--wine:#5a0b18;--dark:#3d0710;--cream:#fff4de;--gold:#c39236;--light:#f0c865;--ink:#4a2316;--soft:#7a4a32;--stage:100svh}*{box-sizing:border-box}html{background:var(--dark)}body{margin:0;background:radial-gradient(ellipse at 50% 0%,#7a1527,var(--dark) 72%) fixed;color:var(--ink);font:17px/1.5 'Cormorant Garamond',Georgia,serif;-webkit-font-smoothing:antialiased;overflow-x:clip}body.locked{overflow:hidden}h1,h2,h3,p{margin:0}img{max-width:100%;display:block}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--light);outline-offset:4px}button:focus:not(:focus-visible),a:focus:not(:focus-visible){outline:none}#invitation{position:relative;max-width:460px;margin:auto;background:var(--cream);overflow:clip;box-shadow:0 0 80px #0007}.script{font:400 42px/1.08 'Pinyon Script',cursive}.caps{font-family:'Marcellus',Georgia,serif;letter-spacing:.07em;text-transform:uppercase}.editable{position:relative;transform:translate(var(--x,0px),var(--y,0px)) rotate(var(--rot,0deg)) scale(var(--scale,1));opacity:var(--opacity,1);z-index:var(--z,auto)}.editable img{width:100%;height:100%;object-fit:var(--fit,contain);object-position:var(--pos,50% 50%)}.absolute{position:absolute}.full{position:absolute;inset:0}.btn{border:0;border-radius:40px;display:inline-flex;align-items:center;justify-content:center;padding:12px 22px;min-height:42px;font:13px 'Marcellus',serif;letter-spacing:.1em;text-transform:uppercase;box-shadow:0 5px 15px #3008;background:linear-gradient(#f7d87e,#d3a03e);color:var(--dark)}.btn.wine{background:var(--wine);color:var(--light)}.scene{position:relative}.stage{position:sticky;top:0;height:100vh;height:var(--stage);overflow:hidden}.scene.hero{height:330vh}.scene.family{height:238vh}.scene.story{height:420vh}.scene.rsvp{height:240vh}.gate{position:fixed;inset:0;z-index:100;background:var(--dark);display:grid;place-items:center;transition:opacity .65s}.gate[hidden]{display:none}.gate-canvas{position:relative;width:min(100%,460px);height:100%;overflow:hidden;perspective:1400px;background:var(--dark)}.door{position:absolute;top:0;bottom:0;width:50%;backface-visibility:hidden;transition:transform var(--door-time,1.5s) cubic-bezier(.65,0,.35,1) .2s}.door.left{left:0;transform-origin:left}.door.right{right:0;transform-origin:right}.door-picture{width:100%;height:100%;overflow:hidden}.door-picture img{width:200%;max-width:none;height:100%;object-fit:fill}.door.right img{margin-left:-100%}.cover-panel{position:absolute;left:50%;top:50%;translate:-50% -56%;width:min(84%,340px);padding:28px 20px 26px;border:1px solid #d9ac5b99;border-radius:180px 180px 14px 14px;background:radial-gradient(at 50% 0%,#5a0b18f3,#2d060cf3);box-shadow:0 20px 60px #0008,inset 0 0 0 5px #5a0b18,inset 0 0 0 6px #f0c86555;text-align:center;color:var(--cream);transition:opacity .4s,translate .5s}.cover-panel .tagline{font-size:14px;color:var(--light)}.cover-panel .script{font-size:38px;margin:10px 0 6px;color:var(--light)}.cover-name{font-size:24px;line-height:1.2}.cover-amp{font:26px/1.1 'Pinyon Script',cursive;color:var(--light);margin:4px}.cover-date{font-size:15px;margin-top:14px;letter-spacing:.06em}.cover-panel .btn{margin-top:20px}.gate.opening .door.left{transform:rotateY(-108deg)}.gate.opening .door.right{transform:rotateY(108deg)}.gate.opening .cover-panel{opacity:0;translate:-50% -62%}.gate.faded{opacity:0;pointer-events:none}
.hero-sky{background:#359be9}.hero-sky img{object-fit:cover;object-position:center bottom}.hero-names{position:absolute;inset:9% 12px auto;text-align:center;color:white;text-shadow:0 2px 14px #063c7655}.hero-names .tagline{font-size:13px;letter-spacing:.05em;margin-bottom:5px}.hero-names .name{font:clamp(34px,10.5vw,50px)/1.05 'Marcellus',serif;text-transform:uppercase;letter-spacing:.06em}.hero-names .weds{font:28px 'Pinyon Script',cursive;margin:6px 0 4px;display:flex;align-items:center;justify-content:center;gap:10px}.weds:before,.weds:after{content:'';height:1px;width:46px;background:#fff9}.hero-temple{position:absolute;bottom:0;left:4%;width:92%;transform-origin:50% 90%}.hero-temple img{height:auto}.hero-tree{position:absolute;bottom:-3%;width:66%}.hero-tree.left{left:-12%}.hero-tree.right{right:-12%;scale:-1 1}.hero-cloud{position:absolute;width:50%;left:-12%;top:31%}.hero-cloud.c2{left:auto;right:-14%;top:40%;width:46%}.hero-cloud.c3{left:-4%;top:3%;width:34%}.hero-cloud.c4{left:auto;right:-6%;top:6%;width:30%}.scroll-hint{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:#fff;font:12px 'Marcellus',serif;letter-spacing:.24em;text-shadow:0 1px 8px #333}.scroll-hint:after{content:'⌄';display:block;font-size:28px;animation:nudge 1.6s ease-in-out infinite}.hero-glow{pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse,#fffaf0,#f7e6c6);opacity:0}.wall{background:radial-gradient(at 50% 30%,#fbefd6,#f1dfbd 75%)}.pillar{position:absolute;top:0;bottom:0;width:18%;background-size:100% auto;background-repeat:repeat-y}.pillar.left{left:0}.pillar.right{right:0}.toran{position:absolute;inset:0 0 auto;z-index:5}.toran img{height:auto}.arch-card{position:absolute;inset:13% 19% -1px;border:2px solid var(--gold);background:var(--cream);border-radius:48% 48% 0 0 / 9% 9% 0 0;box-shadow:0 10px 24px #78461430}.card-copy{position:absolute;inset:5% 0 3%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px;padding:12px}.card-copy .symbol{width:60px;height:80px}.card-copy .small{font-size:14.5px;line-height:1.35;color:var(--soft)}.card-copy .parents{font-size:15.5px;font-weight:600;color:var(--wine)}.card-copy .fullname{font:clamp(20px,6.2vw,27px)/1.15 'Marcellus',serif;letter-spacing:.03em;color:#b8822c}.card-copy .amp{font:28px 'Pinyon Script',cursive;color:#d8432c}.card-copy .date{font:13px 'Marcellus',serif;letter-spacing:.08em;color:var(--wine);text-transform:uppercase}.gold-rule{width:70%;height:12px;background:radial-gradient(circle,#c39236 0 3px,transparent 3.5px) center/14px 10px no-repeat,linear-gradient(#c39236,#c39236) center/100% 1px no-repeat}.events{padding:14px 20px 32px;position:relative;background:var(--cream)}.lotus-band{margin:0 -20px 12px}.events-heading{text-align:center;color:#2b7fa8;font-size:42px;margin:0 -6px 24px}.event-list{display:grid;gap:18px}.event-card{background:#fffaf0;border:1px solid #c392368c;border-radius:16px;overflow:hidden;box-shadow:0 10px 26px #7846141f}.event-image{aspect-ratio:2;position:relative}.event-image .photo{height:100%;width:100%}.event-image img{object-fit:cover}.event-image:after{content:'';position:absolute;inset:40% 0 0;background:linear-gradient(transparent,#280804b8);pointer-events:none}.event-name{position:absolute;bottom:10px;left:16px;right:12px;z-index:2;color:#fff;font:21px 'Marcellus',serif;text-shadow:0 2px 8px #0006}.event-body{padding:14px 18px 18px}.event-meta{display:grid;grid-template-columns:44px 1fr;gap:3px 10px;font-size:16px;color:var(--soft)}.meta-label{font:11px 'Marcellus',serif;letter-spacing:.1em;padding-top:5px;color:#8a6020}.event-body .btn{margin-top:14px;padding:10px 18px;font-size:12px}.cloud-divider{height:45px;background:radial-gradient(ellipse 45px 30px at 45px 0,var(--cream) 98%,transparent) 0 0/90px 45px repeat-x,#8dcff4;margin:30px -20px -32px}
.story-stage{background:#9ed8f8}.world{position:absolute;inset:0 0 auto;height:200%}.story-sky{position:absolute;inset:0 0 50%;background:linear-gradient(#7cc4f2,#e3f4fd)}.floor{position:absolute;inset:44% 0 0;background:radial-gradient(ellipse at 50% 0%,#fbe6be,#d6af76)}.floor:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 90px,#9e713533 91px 92px),repeating-linear-gradient(90deg,transparent 0 95px,#9e713522 96px 97px)}.story-cloud{position:absolute;width:45%;top:5%;left:-6%}.story-cloud.right{left:auto;right:-8%;top:9%}.story-temple{position:absolute;left:14%;top:20%;width:72%}.story-side{position:absolute;top:32%;width:44%;left:-9%}.story-side.right{left:auto;right:-9%}.pavilion{position:absolute;top:46%;left:-20%;width:140%}.ceremony{position:absolute;top:54%;left:31%;width:38%;height:24%;overflow:hidden;border-radius:48% 48% 4px 4px}.ceremony img{object-fit:cover}.story-banana{position:absolute;top:54%;left:-12%;width:40%}.story-banana.right{left:auto;right:-12%;scale:-1 1}.story-lotus{position:absolute;bottom:2%;left:-20%;width:140%}.caption{position:absolute;left:5%;right:5%;top:12%;z-index:10;text-align:center;pointer-events:none;opacity:0}.caption.second{top:auto;bottom:7%}.caption-panel{display:inline-flex;flex-direction:column;max-width:100%;padding:14px 24px;background:#fff4deeb;border:1px solid #c3923699;border-radius:100px 100px 18px 18px;box-shadow:0 10px 30px #5a280a2e}.caption-panel .script{font-size:38px}.caption-panel .caps{font-size:12.5px;margin-top:6px}.petals{position:absolute;inset:0;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-25px;width:10px;height:15px;border-radius:80% 0 80% 0;animation:petal 10s linear infinite}.maroon{background:radial-gradient(circle at 25% 20%,#f0c86512 0 30px,transparent 31px) 0 0/90px 90px,radial-gradient(circle at 75% 70%,#f0c8650e 0 18px,transparent 19px) 0 0/90px 90px,linear-gradient(#7a1527,#5a0b18);color:var(--cream)}.couple{padding:40px 0 0;position:relative;overflow:hidden}.couple-heading{text-align:center;padding:0 58px;color:var(--light);font-size:40px}.lantern{position:absolute;top:0;width:54px;transform-origin:top;animation:swing 4.5s ease-in-out infinite}.lantern.left{left:12px}.lantern.right{right:12px;animation-delay:-2.2s}.couple-arch{position:relative;margin:28px 22px 0;padding:100px 22px 30px;background:var(--cream);border:2px solid var(--light);border-radius:49% 49% 0 0 / 18% 18% 0 0;color:var(--ink);text-align:center}.couple-story{font-size:16.5px;line-height:1.45;color:var(--soft);max-width:34ch;margin:auto}.portrait-frame{width:76%;margin:22px auto 0;padding:12px;background:linear-gradient(135deg,#f9dc84,#b98327 40%,#f6d57a 60%,#a8741f);border-radius:6px;box-shadow:0 14px 30px #3c140059}.portrait-frame .photo{aspect-ratio:4/5;border:3px solid #7a5216}.portrait-frame img{object-fit:cover}.duo{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px;font-size:17px;color:var(--wine)}.couple-sub{margin-top:12px;font-style:italic;font-size:15px;color:var(--soft)}.venue{text-align:center;padding:36px 0 0;overflow:hidden;position:relative}.venue .script{font-size:46px;color:var(--light)}.venue-name{font:20px/1.5 'Marcellus',serif;text-transform:uppercase;letter-spacing:.1em;color:#fff;padding:0 24px;margin-top:8px}.venue-address{font-size:16px;color:#f0d6b8;margin-top:4px;padding:0 24px}.venue .btn{margin-top:18px}.venue-art{width:100%;height:260px;position:relative;margin-top:26px;opacity:.5;filter:sepia(1);mix-blend-mode:screen}.venue-art img{object-fit:contain;object-position:50% 100%}
.rsvp-stage{background:linear-gradient(var(--wine),var(--dark))}.rsvp-arch{position:absolute;inset:12% 7% 5%;border:2px solid var(--light);border-radius:48% 48% 0 0 / 18% 18% 0 0;background:var(--cream)}.rsvp-copy{position:absolute;inset:12% 7% 5%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:60px 22px 18px;color:var(--ink)}.rsvp-copy .script{font-size:52px;color:var(--wine)}.rsvp-copy p{font-size:16px;max-width:30ch;color:var(--soft)}.curtain{position:absolute;top:0;bottom:0;width:51%;z-index:20;background:repeating-linear-gradient(90deg,#30020b 0%,#80152a 8%,#c43e4c 12%,#6c0c20 17%,#30020b 23%);border-bottom:18px solid var(--gold);box-shadow:0 6px 16px #0008}.curtain:after{content:'';position:absolute;bottom:12px;left:0;right:0;height:12px;border-top:2px solid #ffdc80;border-bottom:2px solid #ffdc80;background:repeating-linear-gradient(90deg,var(--light) 0 2px,transparent 3px 8px)}.curtain.left{left:0}.curtain.right{right:0}.valance{position:absolute;inset:0 0 auto;height:65px;display:flex;overflow:hidden;z-index:21;pointer-events:none}.valance i{width:20%;height:49px;background:radial-gradient(ellipse at 50% 0%,#3d0710,#a52b40 55%,#4e0614 57%,#99203a 72%,#dcaf55 74%);border-radius:0 0 50% 50%;border:3px solid var(--gold)}.bells{position:absolute;top:14px;left:7%;right:7%;z-index:9;display:flex;justify-content:space-around}.bells svg{width:22px;height:70px;transform-origin:top;animation:swing 3.2s ease-in-out infinite}.paper{background:radial-gradient(at 50% 40%,#fdf3e1,#f3e2c4 90%);position:relative;overflow:hidden}.countdown{text-align:center;padding:56px 20px 34px}.countdown .script{font-size:44px;color:var(--wine)}.mandala{position:absolute;width:420px;height:420px;top:-120px;left:-150px;opacity:.55;pointer-events:none}.count-grid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:340px;margin:22px auto 0}.count-cell{background:#ffffffbf;border:1px solid #c3923673;border-radius:12px;padding:12px 4px 8px;box-shadow:0 6px 14px #7846141a}.count-cell b{display:block;font:27px 'Marcellus',serif;color:var(--wine);font-variant-numeric:tabular-nums}.count-cell span{font:11px 'Marcellus',serif;letter-spacing:.12em;text-transform:uppercase;color:#8a6020}.count-date{margin-top:16px;font-size:16px;color:var(--soft)}.countdown .btn{margin-top:16px}.gallery{height:78svh;min-height:520px;cursor:pointer;touch-action:manipulation}.gallery-heading{position:absolute;top:8%;left:0;right:0;text-align:center}.gallery-heading .script{font-size:42px;color:var(--wine)}.gallery-heading p{font-size:15px;color:var(--soft);margin-top:6px}.tap{font:11px 'Marcellus',serif;letter-spacing:.2em;color:#8a6020;margin-top:14px}.polaroid{position:absolute;left:0;top:0;width:100px;padding:6px 6px 16px;background:#fffdf8;box-shadow:0 8px 20px #3c1e0a47;border-radius:2px;pointer-events:none}.polaroid .photo{aspect-ratio:1}.polaroid img{object-fit:cover}.footer{background:var(--dark);text-align:center;color:#e9cfae;padding:34px 20px 26px;font-size:15px}.footer .script{font-size:32px;color:var(--light);margin-bottom:6px}.credit{font:12px/1.6 system-ui,sans-serif;margin-top:22px;color:#c9a978}.music{position:fixed;bottom:18px;right:max(14px,calc(50% - 216px));z-index:50;width:44px;height:44px;border-radius:50%;border:1px solid var(--gold);background:var(--wine);color:var(--light);font-size:20px;box-shadow:0 4px 14px #0006}.music[hidden]{display:none}
@keyframes nudge{50%{translate:0 6px}}@keyframes swing{0%,100%{rotate:4deg}50%{rotate:-4deg}}@keyframes petal{to{transform:translate(40px,110svh) rotate(540deg)}}
body.studio{--stage:760px;overflow:auto!important;background:#252126}body.studio .gate{position:relative;height:760px;z-index:1}body.studio .scene{height:auto!important}body.studio .stage{position:relative}body.studio .story-stage{height:1500px}body.studio .world{height:100%}body.studio .hero-temple{scale:.8;transform-origin:bottom}body.studio .caption{opacity:1}body.studio .curtain{width:10%}body.studio .editable{cursor:move;pointer-events:auto!important}body.studio .editable:hover{outline:1px dashed #58acfa}body.studio .editable.selected{outline:2px solid #3aabff;outline-offset:3px}body.studio .petal,body.studio .lantern,body.studio .bells svg{animation:none}body.studio .music{display:none}body.studio .polaroid{pointer-events:auto}.select-box{position:absolute;border:1px solid #3aabff;pointer-events:none;z-index:999}.handle{position:absolute;width:10px;height:10px;background:#fff;border:1px solid #1685eb;pointer-events:auto;touch-action:none}.handle.nw{left:-5px;top:-5px;cursor:nwse-resize}.handle.ne{right:-5px;top:-5px;cursor:nesw-resize}.handle.sw{left:-5px;bottom:-5px;cursor:nesw-resize}.handle.se{right:-5px;bottom:-5px;cursor:nwse-resize}.handle.rotate{left:calc(50% - 5px);top:-27px;border-radius:50%;cursor:grab}
@media(max-height:620px){.card-copy{gap:5px}.card-copy .symbol{width:40px;height:54px}.card-copy .small{font-size:12px}.card-copy .fullname{font-size:21px}.cover-panel{padding:20px}.cover-panel .script{font-size:30px}.cover-name{font-size:21px}.cover-panel .btn{margin-top:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.scene{height:auto!important}.stage{position:relative}.hero-temple{scale:.8;transform-origin:bottom}.story-stage{height:1500px}.world{height:100%}.caption{opacity:1}.curtain{width:8%}.hero-glow{display:none}}
.curtain-motion{position:absolute;top:0;bottom:0;width:51%;z-index:20}.curtain-motion.left{left:0}.curtain-motion.right{right:0}.curtain-motion>.curtain{width:100%}body.studio .curtain-motion{width:10%}.card-copy>.enter{width:100%}.card-copy .symbol{margin:auto}.editable[data-kind="text"]{white-space:pre-line}body.studio .gallery-heading{pointer-events:auto}@media(prefers-reduced-motion:reduce){.curtain-motion{width:8%}}

/* Proportional artwork and no-library fallback. */
.pillar{background-size:100% auto;background-position:center top}.toran{height:auto}.toran img{height:auto}.door-picture img{object-fit:cover}
.no-motion .scene{height:auto!important}.no-motion .stage{position:relative}.no-motion .caption{opacity:1}.no-motion .story-stage{height:1500px}.no-motion .world{height:100%}.no-motion .curtain-motion{width:8%}.no-motion .hero-glow{display:none}
body.studio .editable{touch-action:none}body.studio .caption{pointer-events:auto}.count-number{display:block}#cover .cover-name{overflow-wrap:anywhere}
body.studio{overflow-x:hidden!important}

/* Muhurtham: a natural-ratio scene with an independently replaceable couple. */
#story{height:auto!important;background:#db9a45}
#story .story-stage{position:relative;height:auto;aspect-ratio:1/3;background:#db9a45;overflow:hidden}
#story .muhurtham-background{position:absolute;inset:0;width:100%;height:100%}
#story .muhurtham-background img{object-fit:contain}
#story .ceremony{top:14.2%;left:26%;width:48%;height:21%;border-radius:0;overflow:visible;filter:drop-shadow(0 5px 3px #70421a35)}
#story .ceremony img{object-fit:contain}
#story .caption.second{opacity:1;top:auto;bottom:5.3%;left:6%;right:6%;pointer-events:auto}
#story .caption-panel{padding:12px 18px;background:#fff4dee8;box-shadow:none;border:0}
#story .caption-panel .script{font-size:clamp(28px,8vw,38px)}
#story .caption-panel .caps{font-size:clamp(9px,2.6vw,12px)}
#story .petals{z-index:3}
