*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#eae6e0;color:#503321;font:18px/1.6 system-ui,-apple-system,sans-serif}button,input,textarea{font:inherit;color:inherit}button,a,summary{touch-action:manipulation}button,summary{cursor:pointer}button{min-height:46px;padding:10px 18px;background:#fff9f1;border:1px solid #bba491;border-radius:18px}button:focus-visible,a:focus-visible,summary:focus-visible,[contenteditable]:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #80583d;outline-offset:5px}a{color:inherit}[hidden]{display:none!important}h1,h2,h3,p{margin:0;overflow-wrap:anywhere}h1,h2{font-family:Georgia,'Times New Roman',serif;line-height:1.12;text-wrap:balance;font-weight:600}h1{font-size:clamp(46px,8cqw,84px);letter-spacing:-.035em}h2{font-size:clamp(30px,4.8cqw,49px);margin-bottom:18px;letter-spacing:-.025em}h3{font:inherit;font-weight:600;margin-bottom:10px}p{white-space:pre-line}img{display:block;max-width:100%;height:auto}label{display:block;font-size:16px;margin:14px 0}input:not([type=checkbox],[type=radio]),textarea{display:block;width:100%;min-height:46px;padding:10px;border:1px solid #bba491;border-radius:10px;background:#fffefa}textarea{min-height:94px;resize:vertical}.editor-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;background:#fffcf7f5;backdrop-filter:blur(10px);border-bottom:1px solid #dfd4c7}.editor-bar strong{display:block;font-size:18px}.editor-bar span{display:block;font-size:16px;color:#6b5748}#preview-toggle{background:#795d49;color:#fff;border:0}#editor{position:fixed;top:94px;bottom:0;left:0;width:300px;overflow:auto;background:#fffcf7;border-right:1px solid #dfd4c7;padding:24px;z-index:20}#editor h2{font:600 25px/1.2 system-ui}#editor p{font-size:16px;margin:18px 0}#invitation{margin-left:300px;padding:24px}.cloud-page{max-width:1000px;margin:auto;overflow:hidden;isolation:isolate;container-type:inline-size;background:#fff5e9;box-shadow:0 16px 65px #72544218}.scene{position:relative;padding:55px 7%;background:radial-gradient(ellipse at 0 70%,#f9dccc88,transparent 50%),radial-gradient(ellipse at 100% 10%,#dce7ee99,transparent 55%),#fff6ea}.scene:before{display:none}.scene:nth-of-type(2n){background:radial-gradient(ellipse at 100% 85%,#f8d9c388,transparent 60%),#fff6ea}.scene>*{position:relative;z-index:1}.split{display:grid;grid-template-columns:1.2fr 1fr;gap:22px;align-items:center}.split.reverse{grid-template-columns:1fr 1.2fr}.copy{min-width:0}.art{width:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 8px 12px #8663450d)}.hero{display:grid;grid-template-columns:1fr 1.06fr;gap:0;align-items:center;padding:65px 4% 34px 7%;min-height:530px;background:radial-gradient(ellipse at 85% 0,#d8e6ef,transparent 62%),radial-gradient(ellipse at 0 25%,#f9dccb,transparent 65%),#fff5e9}.hero:before{display:none}.hero .copy{z-index:2}.hero .copy>p{font-size:clamp(18px,2.8cqw,27px);line-height:1.4;margin:20px 0}.hero-art{width:115%;max-width:none;margin-left:-9%;align-self:end}.date-control{font-size:18px;border-radius:32px;border:1px solid #dfc2a9;background:#fff8eddd;box-shadow:0 4px 8px #9b785616}.clean .date-control{pointer-events:none}.editing .date-control:after{content:' ✎'}#music-toggle{position:absolute;z-index:5;right:20px;top:18px;font-size:17px;border:1px solid #d9b9a0;background:#f7d6c0}.intro{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:22px;padding-block:50px 65px}.intro .copy{text-align:center}.intro .art{width:140px}.intro p{max-width:580px;margin:auto}.venue h3{font-weight:400}.venue .copy>p{margin-block:12px}#map-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;background:#bfd3df;border:1px solid #9ab2c2;border-radius:28px;padding:10px 24px;text-decoration:none;color:#304d5c;margin-top:18px;box-shadow:0 4px 8px #59667518}.venue-upload{grid-column:1/-1;text-align:center}.venue-upload:has(img[hidden]){margin:0}.clean .venue-upload:has(img[hidden]){display:none}.venue-upload img{max-height:520px;width:auto;margin:0 auto 20px;border-radius:26px}.photo-edit{margin:8px auto}.schedule>div{display:flex;align-items:baseline;gap:14px;margin:12px 0}.schedule strong{font-size:20px;white-space:nowrap}.schedule p{font-size:18px}.outfit .art{width:90%;margin:auto}.gallery-section{text-align:center}.public-gallery{display:flex;justify-content:center;align-items:start;flex-wrap:wrap;gap:20px;margin:25px 0}.public-gallery figure{margin:0;width:calc(50% - 10px);max-width:440px}.public-gallery img{border-radius:20px;width:100%;height:auto!important}.gallery-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px}.gallery-tools button{font-size:16px}.invitation-details .copy{text-align:center}.invitation-details p+p,.invitation-details h3{margin-top:18px}.invitation-rsvp{text-align:center;padding-inline:12%}.stitches{display:flex;align-items:center;gap:20px;max-width:440px;margin:0 auto 20px;color:#b37550}.stitches span{font-size:44px;line-height:1}.stitches i{flex:1;height:22px;border-bottom:2px dashed #d5ab8d;border-radius:50%}.rsvp-disclosure{max-width:570px;margin:25px auto 0}.rsvp-disclosure summary{list-style:none;background:#edb394;color:#4a2d20;border:1px solid #d5a080;border-radius:32px;min-height:52px;padding:14px 24px;font-size:18px;font-weight:600;box-shadow:0 5px 12px #88644215}.rsvp-disclosure summary::-webkit-details-marker{display:none}.rsvp-disclosure__panel{text-align:left;padding:24px 0}fieldset{padding:0;border:0;margin:0 0 18px}fieldset label,.check{display:flex;align-items:center;gap:12px}input[type=radio],input[type=checkbox]{width:22px;height:22px;accent-color:#9a684a;flex-shrink:0}#rsvp-form p{font-size:16px;margin-top:16px}.closing{padding-top:65px;padding-bottom:20px;text-align:center}.closing .art{width:115%;max-width:none;margin-left:-7%}footer{position:relative;text-align:center;background:#fff5e9;padding:75px 20px 35px}footer a{font-size:14px;text-decoration:none}.small-control{display:block;margin:16px auto;font-size:16px}.editing [data-field]{outline:1px dashed #b8805859;outline-offset:4px;border-radius:5px;cursor:text;min-height:1em}.editing [data-field]:after{content:' ✎';font:16px/1 system-ui;color:#996343;white-space:nowrap}.editing [data-field]:empty:before{content:attr(data-placeholder);font:16px/1.5 system-ui;opacity:.7}.editing [data-field]:focus{outline:2px solid #a27453;background:#fff9}.editing [data-field]:hover{background:#fff5}.clean [data-field]:empty{display:none}.clean #editor,.clean .edit-only,.clean .gallery-tools,.clean .photo-edit{display:none!important}.clean .gallery-section:has(.public-gallery:empty){display:none}.clean #invitation{margin-left:0}.clean .editor-bar span{display:none}dialog{width:min(540px,calc(100% - 24px));max-height:85vh;overflow:auto;border:1px solid #d4b99f;border-radius:24px;padding:25px;background:#fff8ef;color:#503321}dialog::backdrop{background:#44332888;backdrop-filter:blur(5px)}dialog h2{font-size:29px}dialog p{font-size:16px;margin:15px 0}.close-dialog{float:right;width:44px;padding:0;border:0;font-size:28px}.scene.reveal-ready .copy,.scene.reveal-ready>h2,.scene.reveal-ready>p{transition:opacity .7s ease,translate .7s ease}.scene.reveal-ready .art{transition:opacity 1s ease .14s,translate 1s cubic-bezier(.2,.7,.3,1) .14s,scale 1s ease .14s}.scene.reveal-ready:not(.visible) .copy,.scene.reveal-ready:not(.visible)>h2,.scene.reveal-ready:not(.visible)>p{opacity:0;translate:0 14px}.scene.reveal-ready:not(.visible) .art{opacity:0;translate:15px 24px;scale:.97}.scene.reverse.reveal-ready:not(.visible) .art{translate:-15px 24px}
@media(max-width:1000px) and (min-width:761px){#editor{width:260px}#invitation{margin-left:260px;padding:12px}.hero{min-height:400px}.split{gap:15px}.schedule>div{display:block}.schedule strong{font-size:18px}}
@media(max-width:760px){#editor{display:none}#invitation{margin:0;padding:0}.editor-bar{padding:10px 12px;gap:8px}.editor-bar strong{font-size:16px}.editor-bar span{display:none}.editor-bar button{font-size:16px;padding:9px 12px;border-radius:14px}.cloud-page{box-shadow:none}.hero{padding:80px 4% 34px 6%;min-height:370px;grid-template-columns:1fr 1fr}.hero h1{font-size:clamp(38px,8.4cqw,61px)}.hero .copy>p{font-size:18px;margin-block:15px}.hero .date-control{padding:8px 12px;font-size:17px;max-width:100%}.hero-art{width:127%;margin-left:-18%;align-self:center}.scene{padding:45px 7%}.hero.scene{padding:80px 4% 34px 6%}h2{font-size:clamp(30px,6.8cqw,40px)}.split{grid-template-columns:1.12fr .88fr;gap:12px}.split.reverse{grid-template-columns:.88fr 1.12fr}.intro{grid-template-columns:1fr;text-align:center;gap:10px}.intro .art{width:95px;margin:0 auto}.intro p{max-width:90%}.schedule>div{display:block;margin:14px 0}.schedule strong{font-size:19px}.outfit .art{width:110%;max-width:none;margin-left:-5%}.venue h3{font-size:18px}#map-link{padding:9px 15px;font-size:17px}.venue .small-control{margin-inline:0}.closing h2{font-size:32px}.gallery-tools button{width:100%}.invitation-rsvp{padding-inline:9%}.small-control{font-size:16px}.public-gallery{gap:14px}.public-gallery figure{width:calc(50% - 7px)}}
@media(max-width:380px){.hero{grid-template-columns:1fr!important}.hero .copy{text-align:center}.hero h1{font-size:48px}.hero-art{width:70%;margin:6px auto 0}.split,.split.reverse{grid-template-columns:1fr}.split>.art{width:65%;max-width:250px;margin:10px auto}.split.reverse>.art{grid-row:2}.split .copy{text-align:center}.schedule>div{display:flex;justify-content:center}.venue .small-control{margin-inline:auto}.intro .art{width:80px}.closing .art{width:80%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.scene.reveal-ready .copy,.scene.reveal-ready>h2,.scene.reveal-ready>p,.scene.reveal-ready .art{opacity:1!important;translate:none!important;scale:1!important}}
/* Feather the pastel atmosphere into the cream canvas, without straight colour seams. */
.scene:not(.hero),.scene:nth-of-type(2n){background:#fff6ea}
.scene:not(.hero):after{content:'';position:absolute;z-index:0;pointer-events:none;inset:15% -5% 5%;background:radial-gradient(ellipse at 0 70%,#f7d8c666,transparent 55%),radial-gradient(ellipse at 100% 20%,#dbe7ec66,transparent 55%);filter:blur(24px)}
.scene:nth-of-type(2n):after{transform:scaleX(-1)}
footer{background:#fff6ea}

/* Unique plush sprites follow one another around each seam at staggered heights. */
.scene:not(.hero){padding-top:96px;padding-bottom:36px}
.scene > .cloud-seam{position:absolute;inset:-42px 0 auto;height:132px;overflow:hidden;pointer-events:none;z-index:2;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.seam-cloud{--cloud-width:clamp(168px,38cqw,240px);position:absolute;top:var(--cloud-level);left:calc(-1 * var(--cloud-width));width:var(--cloud-width);aspect-ratio:2.4;background-image:url("assets/cloud-atlas.0c909f8c8930.webp");background-size:500% 800%;background-repeat:no-repeat;filter:drop-shadow(0 3px 3px #97785430);animation:peach-cloud-circuit var(--duration) linear var(--delay) infinite;animation-play-state:paused}
.hero-art{transform-origin:55% 80%;animation:peach-elephant-sway 7s ease-in-out infinite;animation-play-state:paused}
.ambient-active .seam-cloud,.ambient-active .hero-art{animation-play-state:running}
@keyframes peach-cloud-circuit{from{left:calc(-1 * var(--cloud-width));transform:translateY(0)}50%{transform:translateY(4px)}to{left:100%;transform:translateY(0)}}
@keyframes peach-elephant-sway{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-5px) rotate(.6deg)}}
@media(prefers-reduced-motion:reduce){.hero-art{animation:none!important;transform:none}.seam-cloud{animation:none!important;left:var(--cloud-position);transform:translateX(-25%)}}
/* Bring the first drifting row up to the elephant's cloud. */
.intro.scene > .cloud-seam{top:-110px}
.intro.scene{padding-top:32px;padding-bottom:36px}
@media(max-width:760px){.scene:not(.hero):not(.intro){padding-top:90px}}
/* Simplified text scenes and more prominent toys. */
.intro.scene{display:block;padding-top:8px}
.intro .copy{max-width:720px;margin:auto}
.outfit.scene,.invitation-details.scene{display:block;text-align:center}
.outfit .copy,.invitation-details .copy{max-width:660px;margin:auto}
.outfit.scene .invitation-prose{text-align:center!important;hyphens:none}
.venue.split{grid-template-columns:1fr 1fr}
.program.split{grid-template-columns:1fr 1fr}
.venue > .art{width:118%;max-width:none;justify-self:start}
.program > .art{width:118%;max-width:none;margin-left:-18%}
.stitches .soft-star{position:relative;display:block;width:66px;height:72px;flex:0 0 66px;font-size:0;filter:drop-shadow(0 4px 4px #b6995638)}
.soft-star svg{display:block;width:100%;height:100%}
.stitches .star-glint{flex:none;border:0;border-radius:0;position:absolute;left:14px;top:16px;width:14px;height:14px;background:#fffef1;clip-path:polygon(50% 0,60% 39%,100% 50%,60% 61%,50% 100%,40% 61%,0 50%,40% 39%);animation:peach-star-glimmer 4.8s ease-in-out infinite;animation-play-state:paused}
.stitches .star-glint.small{left:auto;right:7px;top:43px;width:8px;height:8px;animation-delay:-2.4s}
.soft-star:last-child .star-glint{animation-delay:-1.6s}
.ambient-active .star-glint{animation-play-state:running}
@keyframes peach-star-glimmer{0%,100%{opacity:.2;transform:scale(.65)}45%,60%{opacity:1;transform:scale(1.15)}}
@media(max-width:380px){.venue.split,.program.split{grid-template-columns:1fr}.venue > .art,.program > .art{width:82%;max-width:320px;margin:12px auto;justify-self:center}}
@media(prefers-reduced-motion:reduce){.star-glint{animation:none!important;opacity:.8;transform:none}}
.venue.split{grid-template-columns:1.18fr 1fr}
@media(min-width:381px) and (max-width:760px){.venue h2{font-size:clamp(28px,6.1cqw,40px)}}
@media(max-width:380px){.venue.split{grid-template-columns:1fr}}
.closing > .art{transform-origin:50% 78%;animation:peach-duck-sway 6.8s ease-in-out infinite;animation-play-state:paused}
.closing.ambient-active > .art{animation-play-state:running}
@keyframes peach-duck-sway{0%,100%{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-5px) rotate(1.2deg)}}
@media(prefers-reduced-motion:reduce){.closing > .art{animation:none!important;transform:none}}
/* Keep the insertion point clear while an inline text field is being edited. */
.editing [data-field]:focus::after{display:none;content:none}
/* Gently rock the programme illustration while it is in view. */
.program > .art{transform-origin:50% 80%;animation:peach-program-sway 7.4s ease-in-out infinite;animation-play-state:paused}
.program.ambient-active > .art{animation-play-state:running}
@keyframes peach-program-sway{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-4px) rotate(1deg)}}
@media(prefers-reduced-motion:reduce){.program > .art{animation:none!important;transform:none}}
