@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600&family=Cormorant+Garamond:wght@400;500;600&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Great+Vibes&family=DM+Sans:wght@400;500;600&display=swap');
:root{--green:#062d23;--deep:#021c16;--gold:#c8a35b;--cream:#f7f0df;--ink:#594b32}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:12px}body{margin:0;background:radial-gradient(ellipse at 20% 30%,#314332,#071c17 60%,#110d0b);color:var(--ink);font:14px/1.6 'DM Sans',sans-serif}.sealed{overflow:hidden}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #c49a48;outline-offset:5px}h1,h2,h3,p{margin:0}h2,h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400}h2{font:clamp(43px,6vw,62px)/1.2 'Great Vibes','Cormorant Garamond',serif;margin:14px 0 20px;color:#a48039}h3{font-size:28px;line-height:1.3}small{font-size:.65em}[hidden]{display:none!important}.definitions{width:0;height:0;position:absolute}main{position:relative;max-width:620px;margin:auto;background:var(--cream);box-shadow:0 0 100px #0007;overflow:hidden}.desktop-note{position:fixed;left:4%;top:45%;width:calc((100vw - 700px)/2);text-align:center;color:#d3bc83}.desktop-note>span,.desktop-note small{font-size:9px;letter-spacing:2px}.desktop-note p{font:42px 'Great Vibes',serif;margin:20px 0}.desktop-note i{font:italic 24px Georgia}.chapter-nav{position:fixed;right:3%;top:34%;z-index:6;width:calc((100vw - 740px)/2);display:flex;flex-direction:column;gap:16px;color:#d4c49c;font-size:10px;letter-spacing:1px}.chapter-nav a:before{content:'◇';margin-right:12px;color:#a58b54}.chapter-nav a.current{color:#fff1c2}.chapter-nav a.current:before{content:'◆'}.cover{position:fixed;inset:0;z-index:20;background:#031b16;display:grid;place-items:center;transition:opacity .8s 2.7s,visibility 0s 3.5s}.door-stage{position:relative;height:100svh;width:min(100vw,calc(100svh * 2 / 3));max-width:620px;overflow:hidden;perspective:1400px;background:#062d23;box-shadow:0 0 80px #000}.behind-doors{position:absolute;inset:0;background:url('assets/palace.webp') center/100% 100%;transform:scale(1.12);transition:transform 3s}.door{position:absolute;top:0;bottom:0;width:50.1%;background-image:url('assets/doors.webp');background-size:200% 100%;transition:transform 2.5s cubic-bezier(.45,0,.2,1),filter 2.5s;backface-visibility:hidden}.door.left{left:0;background-position:left;transform-origin:left}.door.right{right:0;background-position:right;transform-origin:right}.cover #open{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);height:110px;width:110px;border-radius:50%;background:radial-gradient(circle,#e8d59b,#9e702c 73%,#f4e2ad 75%,#8b682d 80%);border:double 5px #dac58b;box-shadow:0 6px 20px #0009,0 0 0 5px #a4864b99;color:#453412;transition:opacity .4s,transform .6s}.cover #open:before{content:'';position:absolute;inset:8px;border-radius:50%;border:1px dashed #775621}.cover #open span{font:34px 'Great Vibes',serif}.cover #open i{font:italic 17px Georgia}.cover-caption{position:absolute;bottom:10%;left:10%;right:10%;padding:18px 12px;text-align:center;background:#03271be6;border:1px solid #baa15c;box-shadow:0 6px 30px #0005;color:#f0dfaf;transition:opacity .5s}.cover-caption span{font-size:8px;letter-spacing:2.5px}.cover-caption p{font:italic 23px 'Cormorant Garamond',serif;margin-top:5px}.cover.opened{opacity:0;visibility:hidden;pointer-events:none}.opened .left{transform:rotateY(-105deg);filter:brightness(.5)}.opened .right{transform:rotateY(105deg);filter:brightness(.5)}.opened #open{opacity:0;transform:translate(-50%,-50%) scale(1.25)}.opened .cover-caption{opacity:0}.opened .behind-doors{transform:scale(1)}.names-scene{position:relative;aspect-ratio:2/3;min-height:680px;background:#032d20 url('assets/palace.webp') center/100% 100%;text-align:center;color:#f2dda2;isolation:isolate}.name-copy{position:absolute;top:36%;left:16%;right:16%;z-index:2}.eyebrow{display:block;font-size:8px;letter-spacing:2.3px;font-weight:500;line-height:1.8}.name-copy .eyebrow{font-size:7px}.wedding-of{font:italic 21px 'Cormorant Garamond',Georgia;margin-top:16px;color:#dcc58e}.name-copy h1{font:clamp(64px,9vw,100px)/.95 'Great Vibes',serif;font-weight:400;margin:25px 0 12px;text-shadow:0 2px 20px #0007}.name-copy h1 span{display:block}.name-copy h1 i{font:italic 30px 'Cormorant Garamond',serif;display:block;margin:6px}.gold-rule{display:flex;align-items:center;justify-content:center;gap:12px;color:#caae6c;margin:22px 0}.gold-rule:before,.gold-rule:after{content:'';width:40px;height:1px;background:#b09655}.hero-date{font-size:8px;letter-spacing:2px}.scroll-hint{display:inline-block;font-size:7px;letter-spacing:2px;margin-top:28px}.scroll-hint span{display:block;font-size:20px;margin-top:7px;animation:float 2s ease-in-out infinite}.sparkles{position:absolute;inset:0;overflow:hidden;pointer-events:none}.sparkles i{position:absolute;left:var(--x);top:var(--y);height:3px;width:3px;background:#fff1c4;border-radius:50%;box-shadow:0 0 10px 2px #fadd8d;animation:twinkle var(--d) infinite alternate}.chapter{position:relative;text-align:center;padding:70px 46px;isolation:isolate}.chapter:before{content:'';position:absolute;inset:10px;border:1px solid #bca25c66;pointer-events:none;z-index:-1}.paper{background:radial-gradient(ellipse at 15% 20%,#fdfaf1,#efe7d5);color:#655438}.paper:after{content:'';position:absolute;inset:0;z-index:-1;opacity:.25;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cg fill='none' stroke='%23baa87e' stroke-width='.4'%3E%3Cpath d='M75 10Q35 45 75 75Q115 105 75 140Q35 105 75 75Q115 45 75 10Z M10 75Q45 35 75 75Q105 115 140 75Q105 35 75 75Q45 115 10 75Z'/%3E%3C/g%3E%3C/svg%3E");mask-image:linear-gradient(90deg,#000,transparent 25%,transparent 75%,#000)}.section-ornament{font-size:38px;line-height:1;color:#ae8c45;margin-bottom:18px}.paper .eyebrow{color:#9b7c44}.arabic{font:25px/1.8 Georgia,serif;margin:30px auto;color:#a2864a}.letter-body{font:20px/1.7 'Cormorant Garamond',Georgia;margin:20px auto;max-width:400px}.formal-names{font:39px/1.2 'Great Vibes',serif;color:#9c7a35;margin:25px 0}.formal-names span{font:italic 19px 'Cormorant Garamond',serif;display:block;margin:14px}.invitation-box{width:180px;height:105px;margin:36px auto 24px;background:linear-gradient(#092b1b33,#092b1b33),url('assets/doors.webp') center/100% auto;transform:perspective(500px) rotateX(14deg);border:double 5px #ad8c46;box-shadow:0 13px 0 #3e3925,0 15px 0 #a5894b,0 22px 22px #5e512c40;display:grid;place-items:center}.invitation-box span{background:#eee1b5;color:#876b30;padding:5px 12px;font:25px 'Great Vibes';border:double 3px #b69a5c}.tiny{font-size:8px;letter-spacing:1.6px}.emerald{background:linear-gradient(#032b22eb,#03261eea),url('assets/doors.webp') center/cover;color:#ddcda2}.emerald h2{color:#e1c784}.emerald .eyebrow{color:#ccb77c}.filigree{color:#c6a65b;margin:24px 0;font-size:20px}.family{padding:20px 0}.family h3{color:#dfc88c;font-size:33px;margin:10px 0}.family p{font:18px/1.7 'Cormorant Garamond',Georgia}.floret{width:70px;height:70px;color:#b49851;margin:12px auto}.family-end{font:italic 19px 'Cormorant Garamond',Georgia;margin:35px 0 8px;color:#cdb782}.intro{font:20px/1.6 'Cormorant Garamond',Georgia;color:#8b7754;margin-bottom:32px}.event{padding:34px 0;border-top:1px solid #bfa77466}.event:first-child{border:0}.event-top{display:grid;grid-template-columns:130px 1fr;gap:24px;align-items:center;text-align:left}.event:nth-child(even) .event-top{grid-template-columns:1fr 130px}.event:nth-child(even) .event-arch{order:2}.event:nth-child(even) .event-summary{text-align:right}.event-arch{height:190px;background:url('assets/palace.webp') center/100% 100%;display:grid;place-items:center;box-shadow:0 7px 20px #624e2828;border-radius:60px 60px 2px 2px;color:#ead49b}.event-arch b{font:50px 'Cormorant Garamond',Georgia;padding-top:45px}.event h3{font:34px/1.15 'Great Vibes','Cormorant Garamond',serif;color:#9b7834;margin:9px 0}.event .date{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#907847}.event .venue{font:20px/1.4 'Cormorant Garamond',Georgia;margin:20px 0 8px;color:#715932}.event .address{font-size:11px;line-height:1.9;color:#8d7d62;max-width:390px;margin:auto}.event .time{font-size:10px;color:#725b32;margin:16px auto 0}.event .actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:20px 0 0}.event .actions a,.event .actions button{color:#8a6d35;background:none;border:0;border-bottom:1px solid #baa46d;padding:5px 0;font-size:9px;letter-spacing:.5px}.event details{margin-top:15px;font-size:10px;color:#947b48}.event summary{cursor:pointer}.event iframe{border:1px solid #c6b489;width:100%;height:210px;margin-top:15px}.clock-pendant{width:290px;max-width:100%;aspect-ratio:1;margin:65px auto 32px;position:relative;border-radius:50%;padding:19px;background:repeating-conic-gradient(#c9ad62 0 1deg,#5c4a27 1deg 3deg,#e6d29b 3deg 4deg);box-shadow:0 0 0 3px #937237,0 0 0 8px #04271c,0 0 0 9px #b49856,0 14px 40px #0005}.clock-pendant:before{content:'♧';position:absolute;top:-57px;left:calc(50% - 30px);width:60px;font:60px Georgia;color:#b49b53}.clock-face{height:100%;border-radius:50%;border:double 5px #bca067;background:radial-gradient(circle,#fbf6e7,#e2d7bc);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#796132}.clock-face strong{font:77px/.95 'Cormorant Garamond',serif}.clock-face .tiny{font-size:7px;margin:8px 0}#clock-rest{font:22px 'Cormorant Garamond',serif;letter-spacing:2px}.clock-face small{font-size:6px;letter-spacing:1px;margin-top:6px}.timing{font:19px/1.8 'Cormorant Garamond',serif;margin:20px 0 10px}.nudge{font:italic 23px 'Cormorant Garamond',serif;color:#ead59a;margin-bottom:18px}form{text-align:left;max-width:420px;margin:30px auto}label{display:block;font-size:10px;margin:18px 0;color:#796642}label span{opacity:.7}input,select,textarea{display:block;width:100%;padding:12px;border:1px solid #cdbb94;background:#fffcf4aa;color:#544c39;border-radius:2px;margin-top:6px;font-size:16px}textarea{min-height:95px;resize:vertical}fieldset{border:1px solid #cbb98f;padding:10px 15px;margin:20px 0}legend{font-size:10px;padding:0 7px}fieldset label{display:flex;align-items:center;gap:10px;margin:10px 0;font-size:11px}input[type=checkbox]{width:17px;height:17px;margin:0;accent-color:#31593b}.button{display:block;width:100%;padding:14px 18px;background:linear-gradient(110deg,#96743a,#d8c287,#af8b45);color:#2e2e1c;border:1px solid #a18b51;font-size:11px;letter-spacing:1px}.form-note{font-size:9px;color:#9a8966;text-align:center;line-height:1.8;margin:14px 0}#form-status{font-size:12px;text-align:center;color:#765e30}.contacts{margin-top:50px;padding-top:25px;border-top:1px solid #c7b78f}.contacts a{display:flex;justify-content:space-between;gap:10px;font-size:10px;max-width:340px;margin:17px auto;color:#85734c}.contacts .eyebrow{margin-bottom:25px}.closing{padding-bottom:40px}.closing .arabic{color:#dcc48a;font-size:25px;line-height:2;margin:40px 0 25px}.blessing{font:italic 20px/1.7 'Cormorant Garamond',serif;max-width:330px;margin:auto}.closing h2{margin:40px 0 20px}.closing-palace{width:100%;height:190px;color:#c3a456;margin-top:30px}.replay{color:#c4ae76;font-size:9px;letter-spacing:1px;background:none;border:0;padding:15px}.chapter .reveal-item{transition:opacity .9s,transform .9s}.js-reveal .reveal-item{opacity:0;transform:translateY(22px)}.js-reveal.visible .reveal-item{opacity:1;transform:none}@keyframes twinkle{from{opacity:0;transform:scale(.5)}to{opacity:.8;transform:scale(1.3)}}@keyframes float{50%{transform:translateY(7px)}}@media(max-width:1100px){.desktop-note,.chapter-nav{display:none}}@media(max-width:620px){main{width:100%}.cover #open{width:85px;height:85px}.names-scene{min-height:640px}.name-copy h1{font-size:75px}.name-copy{top:36%}.wedding-of{font-size:18px}.gold-rule{margin:18px 0}.scroll-hint{margin-top:20px}.chapter{padding:55px 30px}.event-top{grid-template-columns:100px 1fr;gap:16px}.event:nth-child(even) .event-top{grid-template-columns:1fr 100px}.event-arch{height:150px}.event h3{font-size:29px}.event-arch b{font-size:39px}.formal-names{font-size:34px}.chapter:before{inset:8px}.clock-pendant{width:260px}.family h3{font-size:29px}.closing .arabic{font-size:22px}}@media(max-width:360px){.name-copy h1{font-size:67px}.chapter{padding:50px 24px}.eyebrow{letter-spacing:1.4px}.formal-names{font-size:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.cover.opened{visibility:hidden}.js-reveal .reveal-item{opacity:1;transform:none}}
@media(max-width:620px){.name-copy{top:34%}.name-copy h1{font-size:65px;margin:18px 0 10px}.name-copy h1 i{font-size:23px}.wedding-of{font-size:17px;margin-top:12px}.gold-rule{margin:14px 0}.scroll-hint{margin-top:17px}}
/* Individual illustrated scenes and touch reveals. */
.art-tile{background-image:url('assets/ornaments.webp');background-size:300% 200%;background-repeat:no-repeat}.chest-button{display:block;position:relative;width:min(350px,100%);aspect-ratio:1;margin:20px auto 10px;padding:0;border:0;background:none;perspective:700px}.chest-art{display:block;position:absolute;inset:0;background-position:0 0;box-shadow:0 15px 40px #755c2522;transition:transform 1.3s,filter 1.3s;mask-image:radial-gradient(ellipse,#000 58%,transparent 75%)}.chest-lid{position:absolute;inset:25% 3% 24%;background:linear-gradient(#063a2b22,#063a2b44),url('assets/doors.webp') center/cover;border:double 6px #b99449;color:#f0dba4;display:grid;place-content:center;font:40px 'Great Vibes',serif;box-shadow:0 14px 0 #80632e,0 16px 0 #b7a169,0 22px 25px #59401f55;transform:rotateX(32deg);transform-origin:top;transition:transform 1.3s,opacity .8s}.chest-lid i{font:italic 20px Georgia}.chest-instruction{position:absolute;bottom:-9px;left:0;right:0;font:italic 20px 'Cormorant Garamond',serif;color:#967238}.is-open .chest-lid{transform:rotateX(110deg) translateY(-20px);opacity:0}.is-open .chest-art{transform:scale(1.03);filter:drop-shadow(0 0 18px #d9bc74)}.unfolded-letter{position:relative;margin:45px auto 10px;padding:35px 24px;background:#fff9e9;border:double 7px #b5a36c;box-shadow:0 12px 30px #69532d22;animation:unfold 1.1s ease both}.unfolded-letter:before{content:'';position:absolute;inset:8px;border:1px solid #b8a66f;pointer-events:none}.unfolded-letter .letter-body{font-size:18px}.unfolded-letter h3{font-size:27px}.unfolded-letter .formal-names{font-size:32px}.letter-seal{border:double 4px #b3944c;border-radius:50%;width:64px;height:64px;display:grid;place-items:center;margin:0 auto;color:#a3823f;font:22px 'Great Vibes',serif;background:#e8d8aa}.lantern-art{height:230px;width:230px;max-width:100%;margin:0 auto 18px;background-position:50% 0;mix-blend-mode:screen;transform-origin:50% 0;animation:lantern-sway 6s ease-in-out infinite;filter:drop-shadow(0 0 16px #dba95955)}#families{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;background:linear-gradient(#032b22e0,#03261ee8),url('assets/doors.webp') center/cover}#families>.eyebrow,#families>h2,#families>.filigree,#families>.family-end{grid-column:1/-1}#families>.floret{display:none}#families .family h3{font-size:26px}#families .family p{font-size:16px}#families .family:nth-of-type(2) .lantern-art{animation-delay:-3s}.event-top{grid-template-columns:180px 1fr}.event:nth-child(even) .event-top{grid-template-columns:1fr 180px}.event-arch{position:relative;width:180px;height:220px;border:0;border-radius:0;box-shadow:none;background:none;padding:0;overflow:hidden}.window-art{position:absolute;inset:0;display:block;background-size:300% 200%;transition:opacity 1s,transform 1.5s}.window-open{background-position:0 100%;transform:scale(.96)}.window-closed{background-position:100% 0;transform-origin:center;opacity:1}.window-revealed .window-closed{opacity:0;transform:scaleX(.2)}.window-revealed .window-open{transform:scale(1)}.window-hint{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:6px;letter-spacing:1px;background:#f7f0dfdd;color:#96753b;padding:5px}.clock-pendant{width:350px;padding:0;aspect-ratio:1;background-image:url('assets/ornaments.webp');background-size:300% 200%;background-position:50% 100%;box-shadow:none;border:0;border-radius:0;display:grid;place-items:center;margin-top:35px}.clock-pendant:before{display:none}.clock-face{width:53%;height:53%;border:0;background:transparent;color:#e3ca90}.clock-face strong{font-size:62px}.clock-face .tiny{font-size:6px}.clock-face small{font-size:5px}.clock-face #clock-rest{font-size:19px}.palace-reflection{width:calc(100% + 92px);margin:30px -46px 0;aspect-ratio:1;background-position:100% 100%;mask-image:linear-gradient(transparent,#000 15%);animation:palace-glow 6s ease-in-out infinite}.closing{padding-bottom:15px}.rsvp-ornament-row{display:flex;justify-content:center;gap:25px;color:#b79751;font-size:27px}#reply-form{padding:25px;border:double 6px #bda66a;background:#fff9e9aa;outline:1px solid #bda66a;outline-offset:5px}.names-scene .name-copy h1{animation:names-bloom 2s ease both}.sealed .name-copy h1{opacity:0}.cover:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse,#ffe7a199,transparent 65%);opacity:0;transition:opacity 1s}.cover.opened:after{animation:light-bloom 2.5s both}@keyframes unfold{from{opacity:0;transform:perspective(800px) rotateX(-30deg) translateY(25px)}to{opacity:1;transform:none}}@keyframes lantern-sway{0%,100%{transform:rotate(-2deg);filter:brightness(1) drop-shadow(0 0 12px #e6af5266)}50%{transform:rotate(2deg);filter:brightness(1.2) drop-shadow(0 0 22px #e6af5288)}}@keyframes palace-glow{50%{filter:brightness(1.12)}}@keyframes names-bloom{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes light-bloom{0%{opacity:0}40%{opacity:1}100%{opacity:0}}@media(max-width:620px){.event-top{grid-template-columns:140px 1fr;gap:10px}.event:nth-child(even) .event-top{grid-template-columns:1fr 140px}.event-arch{width:140px;height:175px}.event h3{font-size:27px}.lantern-art{height:165px;width:165px}.family{min-width:0}#families{gap:0 10px}#families .family h3{font-size:23px}#families .family p{font-size:14px}.clock-pendant{width:310px}.palace-reflection{width:calc(100% + 60px);margin-left:-30px;margin-right:-30px}.chest-button{width:280px}.unfolded-letter{padding:30px 17px}#reply-form{padding:20px 15px}}
/* Continuous entrance; the live name layer sits directly behind the doors. */
.cover{background:transparent;transition:visibility 0s 3s,opacity .5s 2.5s}.door-stage{background:transparent;box-shadow:none}.behind-doors{display:none}.names-scene{height:100svh;aspect-ratio:auto;min-height:640px;background-size:100% 100%}.cover:after{display:none}.name-copy h1{animation:none!important;opacity:0}.names-writing .name-copy h1{opacity:1}.name-copy h1>span{display:block;white-space:nowrap}.name-copy h1 .ink-letter{display:inline-block;opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(4px);animation:ink-write .65s ease forwards}.name-copy h1 i{opacity:0;transition:opacity 1s 1s}.names-writing .name-copy h1 i{opacity:1}.sealed .name-copy h1{opacity:0}.sealed.names-writing .name-copy h1{opacity:1}.name-copy .wedding-of,.name-copy>.eyebrow,.name-copy .gold-rule,.name-copy .hero-date,.name-copy .scroll-hint{opacity:0;transition:opacity 1.2s}.names-writing .name-copy .wedding-of,.names-writing .name-copy>.eyebrow,.names-writing .name-copy .gold-rule,.names-writing .name-copy .hero-date,.names-writing .name-copy .scroll-hint{opacity:1;transition-delay:.7s}@keyframes ink-write{to{opacity:1;clip-path:inset(0 0 0 0);transform:none}}
/* Quiet chest treatment; its letter unfolds in the natural scroll flow. */
.chest-button{width:230px;aspect-ratio:1;margin:20px auto 35px;pointer-events:none}.chest-lid{display:none}.chest-art{mask-image:radial-gradient(ellipse,#000 45%,transparent 72%);box-shadow:none;filter:none!important}.is-open .chest-art{transform:none}.chest-instruction{font-size:22px;bottom:-22px}.unfolded-letter{animation:letter-flow 1.3s ease both}.letter-seal{font-size:23px;white-space:nowrap;width:72px;height:72px}@keyframes letter-flow{from{opacity:0;transform:translateY(28px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
/* Shutters hinge away over one fixed courtyard scene. */
.event-arch{perspective:650px}.window-closed{opacity:1!important;transition:transform 1.8s cubic-bezier(.4,0,.2,1);backface-visibility:hidden}.shutter-left{clip-path:inset(0 50% 0 0);transform-origin:10% 50%}.shutter-right{clip-path:inset(0 0 0 50%);transform-origin:90% 50%}.window-revealed .shutter-left{transform:rotateY(-100deg)}.window-revealed .shutter-right{transform:rotateY(100deg)}.window-open{transform:none!important}.window-hint{display:none}
/* Full footer scene with copy over an emerald gradient. */
.closing{min-height:850px;overflow:hidden;padding-bottom:380px;background:#052d23}.closing .palace-reflection{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;margin:0;background-size:300% 200%;background-position:100% 100%;mask-image:none;animation:none;z-index:-2}.closing:after{content:'';position:absolute;inset:0;background:linear-gradient(#032a22 0%,#032a22f2 37%,#032a2299 52%,transparent 75%);z-index:-1}.closing:before{z-index:0}.closing .replay{position:absolute;bottom:20px;left:20%;right:20%;background:#032a22d9;color:#f0d99e;padding:12px}
/* Readable invitation scale. */
.eyebrow{font-size:11px;letter-spacing:1.7px}.tiny{font-size:11px;letter-spacing:1.2px}.chapter h2{font-size:58px}.letter-body,.unfolded-letter .letter-body{font-size:22px}.unfolded-letter h3{font-size:31px}.unfolded-letter .formal-names{font-size:38px}.event .date{font-size:12px}.event .venue{font-size:25px}.event .address{font-size:14px}.event .time{font-size:13px}.event .actions a,.event .actions button{font-size:12px;padding:9px 0}.event details{font-size:13px}.family p,#families .family p{font-size:19px}#families .family h3{font-size:29px}label,legend{font-size:13px}fieldset label{font-size:14px}.button{font-size:14px}.form-note{font-size:12px}.contacts a{font-size:13px}.name-copy .eyebrow{font-size:10px}.hero-date{font-size:11px}.scroll-hint{font-size:10px}.clock-face .tiny{font-size:9px}.clock-face small{font-size:7px}.clock-face #clock-rest{font-size:22px}.blessing{font-size:23px}@media(max-width:620px){.chapter{padding-left:24px;padding-right:24px}.chapter h2{font-size:48px}.name-copy{left:15%;right:15%;top:34%}.name-copy h1{font-size:70px}.name-copy .eyebrow{font-size:8px}.hero-date{font-size:9px}.unfolded-letter .formal-names{font-size:34px}.unfolded-letter .letter-body{font-size:20px}.event h3{font-size:31px}.event .venue{font-size:24px}#families .family h3{font-size:26px}#families .family p{font-size:17px}.closing{min-height:820px;padding-bottom:350px}.closing .arabic{font-size:25px}.chest-button{width:220px}.clock-face .tiny{font-size:8px}}@media(prefers-reduced-motion:reduce){.name-copy h1 .ink-letter{opacity:1;clip-path:none;transform:none}.cover.opened{visibility:hidden}.unfolded-letter{animation:none}}

/* Formal capitals and stronger reading hierarchy. */
h1,h2,h3,.formal-names,.desktop-note p{font-family:'Cinzel',Georgia,serif!important;font-style:normal!important;text-transform:capitalize;letter-spacing:.035em}.chapter h2{font-size:38px;line-height:1.4;font-variant:small-caps;text-transform:capitalize}.chapter h3{font-size:29px}.name-copy h1{font-size:70px;line-height:1.25;font-weight:400}.name-copy h1 i{font:24px 'Cormorant Garamond',serif}.name-copy h1 .ink-letter{letter-spacing:.02em}.desktop-note p{font-size:28px}.formal-names,.unfolded-letter .formal-names{font-size:30px;line-height:1.5}.event h3{font-size:27px;line-height:1.35}.letter-body,.family p,.blessing{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500}.name-copy{top:33%}.wedding-of{font-size:23px}.names-writing .name-copy h1{filter:drop-shadow(0 0 18px #e6c76f44)}
/* Gold light blooms behind the live text, then settles into a gentle glow. */
.names-scene:after{content:'';position:absolute;inset:15% 8% 10%;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 50% 47%,#f9d77c55,transparent 64%);opacity:0;mix-blend-mode:screen}.names-writing .names-scene:after{animation:golden-arrival 4s ease-out forwards}.names-writing .sparkles{animation:ambient-breathe 6s ease-in-out infinite}.cover.opened .door{transition-duration:2.8s}@keyframes golden-arrival{0%{opacity:0;transform:scale(.7)}35%{opacity:.95}100%{opacity:.23;transform:scale(1.1)}}@keyframes ambient-breathe{50%{filter:brightness(1.5)}}
/* Paper rises from the chest as its drawer expands, keeping the page flow smooth. */
.letter-drawer{display:grid;grid-template-rows:0fr;transition:grid-template-rows 2s cubic-bezier(.2,.7,.2,1);position:relative}.letter-overflow{min-height:0;overflow:hidden}.letter-drawer .unfolded-letter{animation:none;transform:translateY(-65%) scale(.35);transform-origin:50% 0;opacity:0;transition:transform 2s cubic-bezier(.2,.7,.2,1),opacity 1s .15s;margin-top:18px}.letter-emerging{grid-template-rows:1fr}.letter-emerging .unfolded-letter{transform:translateY(0) scale(1);opacity:1}.chest-button{margin-bottom:12px;z-index:2}.chest-art{animation:chest-breathe 5s ease-in-out infinite}.chest-instruction{font:18px 'Cormorant Garamond',Georgia;bottom:-4px}@keyframes chest-breathe{50%{filter:drop-shadow(0 0 12px #cda84e44)}}
/* A dedicated square clock asset and a geometrically centred overlay. */
.clock-pendant{position:relative;display:block;width:min(360px,100%);height:auto;aspect-ratio:1;padding:0;background:url('assets/dial.webp') center/contain no-repeat}.clock-face{position:absolute;left:25%;top:25%;width:50%;height:50%;margin:0;border:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;line-height:1.1;color:#f2dcaa}.clock-face strong{font:54px/1 'Cinzel',Georgia,serif}.clock-face .tiny{font-size:8px;letter-spacing:1px;margin:7px 0}.clock-face #clock-rest{font:18px/1.3 'Cormorant Garamond',Georgia;letter-spacing:1px;white-space:nowrap}.clock-face small{font-size:6px;letter-spacing:.6px;margin-top:5px}.clock-pendant:after{content:'';position:absolute;inset:9%;border-radius:50%;box-shadow:0 0 20px #dcbd6c33;pointer-events:none;animation:halo-pulse 5s ease-in-out infinite}@keyframes halo-pulse{50%{box-shadow:0 0 35px #dcbd6c66}}
/* The palace retains its square proportions, edge to edge at the footer base. */
.closing{min-height:0;padding-bottom:0;background:#052d23;display:flex;flex-direction:column;align-items:center}.closing .palace-reflection{position:relative;inset:auto;width:calc(100% + 92px);height:auto;aspect-ratio:1;flex-shrink:0;margin:5px -46px 0;background:url('assets/footer.webp') center/contain no-repeat;mask-image:linear-gradient(transparent,#000 17%);z-index:0;animation:palace-lights 7s ease-in-out infinite}.closing:after{display:none}.closing .replay{position:relative;inset:auto;width:100%;margin:0;padding:18px;background:#03251c;z-index:2}.closing h2{font-size:34px}.closing .blessing,.closing .arabic,.closing h2,.closing>.eyebrow,.closing>.tiny{position:relative;z-index:1}.closing:before{pointer-events:none;z-index:1}@keyframes palace-lights{50%{filter:brightness(1.12)}}.lantern-art{animation-duration:7s}.event-arch{transition:transform .8s,filter .8s}.event-arch:hover{transform:translateY(-4px);filter:drop-shadow(0 8px 10px #a1864740)}.gold-rule{animation:rule-shimmer 5s ease-in-out infinite}@keyframes rule-shimmer{50%{filter:drop-shadow(0 0 6px #fff2b2)}}
@media(max-width:620px){.chapter h2{font-size:31px;line-height:1.45}.name-copy h1{font-size:48px}.name-copy{top:36%}.name-copy .wedding-of{font-size:20px}.name-copy h1 i{font-size:23px}.formal-names,.unfolded-letter .formal-names{font-size:26px}.event h3{font-size:23px}.closing .palace-reflection{width:calc(100% + 48px);margin-left:-24px;margin-right:-24px}.closing h2{font-size:29px}.clock-pendant{width:min(320px,100%)}.clock-face strong{font-size:46px}.clock-face .tiny{font-size:7px}.clock-face #clock-rest{font-size:17px}.clock-face small{font-size:5px}#families .family h3{font-size:21px}.unfolded-letter h3{font-size:25px}}
@media(prefers-reduced-motion:reduce){.letter-drawer,.letter-drawer .unfolded-letter{transition:none}.letter-emerging .unfolded-letter{opacity:1;transform:none}.names-writing .names-scene:after{opacity:.2;animation:none}}
.clock-face{transform:translateY(-4px)}.clock-face .tiny{margin:5px 0}.clock-face strong{font-size:50px}.clock-face small{margin-top:3px}.clock-pendant{mask-image:radial-gradient(ellipse,#000 65%,transparent 74%)}@media(max-width:620px){.clock-face strong{font-size:43px}.clock-face .tiny{margin:4px 0}}
/* Travelling pools of golden light across the mirrorwork entrance. */
.hero-radiance{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;mix-blend-mode:screen;opacity:0;transition:opacity 1.5s}.names-writing .hero-radiance{opacity:1}.hero-radiance span{position:absolute;left:15%;top:5%;width:65%;height:55%;border-radius:50%;background:radial-gradient(ellipse,#fff0b388 0%,#f3cf6940 24%,transparent 67%);filter:blur(24px);animation:royal-glow-drift 9s ease-in-out infinite;will-change:transform,opacity}.hero-radiance span:nth-child(2){left:45%;top:0;width:35%;height:80%;background:linear-gradient(170deg,transparent,#f8dda35c,transparent);filter:blur(17px);animation:royal-light-sweep 11s ease-in-out infinite;animation-delay:-5s}.hero-radiance span:nth-child(3){left:-10%;top:55%;width:80%;height:40%;animation-delay:-4s;opacity:.4}.names-scene:after{animation:none!important;opacity:.12!important}.name-copy{z-index:3}.sparkles{z-index:2}@keyframes royal-glow-drift{0%,100%{transform:translate(-10%,-10%) scale(.9);opacity:.2}45%{transform:translate(25%,45%) scale(1.15);opacity:.8}75%{transform:translate(-8%,85%) scale(1);opacity:.45}}@keyframes royal-light-sweep{0%,100%{transform:translateX(-110%) rotate(-20deg);opacity:0}40%{opacity:.7}70%{transform:translateX(80%) rotate(-12deg);opacity:.4}}
/* Scroll-triggered lantern ignition and a connecting arc of light. */
#families{overflow:hidden;min-height:660px}#families .filigree{position:relative;width:80%;margin:28px auto 0;font-size:16px;line-height:1;height:22px}#families .filigree:before,#families .filigree:after{content:'';position:absolute;top:8px;height:1px;width:43%;background:linear-gradient(90deg,transparent,#ddc47d)}#families .filigree:before{left:0}#families .filigree:after{right:0;transform:scaleX(-1)}#families .family{position:relative;z-index:2;opacity:0;transform:translateY(22px);transition:opacity 1.4s .2s,transform 1.6s .2s}#families.lanterns-lit .family{opacity:1;transform:none}#families .family:nth-of-type(3){transition-delay:.5s}#families .lantern-art{position:relative;filter:brightness(.55);animation:none;transition:filter 2s .5s;mix-blend-mode:screen}#families.lanterns-lit .lantern-art{animation:lantern-sway 7s ease-in-out 1.8s infinite;filter:brightness(1.1) drop-shadow(0 0 18px #e7bc6477)}#families .lantern-art:after{content:'';position:absolute;inset:24% 28% 18%;border-radius:50%;background:radial-gradient(ellipse,#fff2b5aa,#ffcc5966 25%,transparent 68%);opacity:0;filter:blur(12px);transition:opacity 2s .7s;mix-blend-mode:screen}#families.lanterns-lit .lantern-art:after{opacity:.8;animation:flame-breathe 4s 2s ease-in-out infinite}.family-light-trail{position:absolute;left:8%;top:210px;width:84%;height:260px;z-index:3;pointer-events:none;overflow:visible;opacity:0;transition:opacity 1.2s 1.4s}.lanterns-lit .family-light-trail{opacity:.85}.family-light-trail path{fill:none;stroke:#f8e5a2;stroke-width:1}.trail-soft{filter:url('#light-blur');stroke-width:7!important;opacity:.8}.trail-line{stroke-dasharray:480;stroke-dashoffset:480}.lanterns-lit .trail-line{animation:draw-union 3s 1s ease forwards}.travelling-light{fill:#fff9db;filter:drop-shadow(0 0 6px #ffdc75) drop-shadow(0 0 12px #ffd567)}@keyframes draw-union{to{stroke-dashoffset:0}}@keyframes flame-breathe{50%{opacity:.4;transform:scale(.85)}}#contacts .contacts{margin-top:10px;border:0}#contacts{padding-top:55px;padding-bottom:55px}@media(max-width:620px){.family-light-trail{top:190px;height:210px;left:3%;width:94%}#families{min-height:600px}.hero-radiance span{filter:blur(18px)}}@media(prefers-reduced-motion:reduce){.hero-radiance{display:none}#families .family{opacity:1;transform:none}.family-light-trail{display:none}#families .lantern-art{filter:brightness(1)}#families .lantern-art:after{opacity:.5;animation:none}.travelling-light{display:none}}
#families .lantern-art{mask-image:radial-gradient(ellipse 38% 62% at 50% 50%,#000 66%,transparent 95%)}
/* Visible empty chest, folded note and a staged unfolding letter. */
.chest-chapter{background-color:#f4eedf;background-image:radial-gradient(ellipse at 25% 20%,#fffdf5aa,transparent 60%),repeating-linear-gradient(115deg,transparent 0 43px,#b6a9890a 45px,#fff9ec55 49px,transparent 55px)}.chest-chapter:after{opacity:.1}.chest-button{width:340px;max-width:100%;height:340px;aspect-ratio:1;isolation:isolate;perspective:900px;margin:-55px auto 0}.chest-art,.chest-front{position:absolute;inset:0;background:url('assets/chest.webp') center/100% 100% no-repeat;mask-image:none!important;animation:none!important;filter:none!important;transform:none!important}.chest-art{z-index:1}.chest-front{z-index:5;clip-path:inset(80% 0 0 0);pointer-events:none}.chest-button .chest-lid{display:grid;position:absolute;inset:44% 10% 18%;z-index:6;border:double 4px #c0a15c;font-size:30px;box-shadow:0 5px 0 #8e733b;transform:rotateX(12deg);transform-origin:50% 0;transition:transform 1.1s,opacity .8s}.chest-button.is-open .chest-lid{transform:rotateX(100deg);opacity:0}.folded-note{position:absolute;z-index:3;top:64%;left:29%;width:42%;height:27%;background:linear-gradient(155deg,#fffbed,#e8dec4);border:1px solid #c7b37e;box-shadow:0 4px 8px #382f2433;display:grid;place-items:center;opacity:0;transform:translateY(20%) scale(.8);transition:transform 1.5s .65s,opacity .5s .65s}.folded-note:before{content:'';position:absolute;inset:0;background:linear-gradient(32deg,transparent 49%,#bcac8544 50%,transparent 51%),linear-gradient(-32deg,transparent 49%,#bcac8544 50%,transparent 51%)}.folded-note i{display:grid;place-items:center;position:relative;font:20px 'Cormorant Garamond',serif;background:#ceb270;border:double 4px #91703a;border-radius:50%;width:42px;height:42px;color:#705321}.is-open .folded-note{opacity:1;transform:translateY(-120%) scale(1)}.chest-instruction{display:none}.letter-drawer{transition-delay:1.8s}.letter-drawer .unfolded-letter{transition-delay:1.8s;margin-top:0}.letter-overflow{padding:0 4px}.letter-emerging .unfolded-letter{transform:translateY(0) scale(1)}
/* Family composition follows the supplied portrait reference. */
#families{display:block;min-height:0;padding:42px 28px 52px;background-color:#052c23;background-image:linear-gradient(#062e2540,#031f1840),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 96 96'%3E%3Cg fill='none' stroke='%23947f43' stroke-opacity='.32'%3E%3Cpath d='M48 0L96 48 48 96 0 48Z'/%3E%3Cpath d='M40 0L48 9 56 0M96 40L87 48 96 56M40 96L48 87 56 96M0 40L9 48 0 56'/%3E%3C/g%3E%3Cg fill='%23b09b58' fill-opacity='.15'%3E%3Cellipse cx='48' cy='41' rx='4' ry='8'/%3E%3Cellipse cx='48' cy='55' rx='4' ry='8'/%3E%3Cellipse cx='41' cy='48' rx='8' ry='4'/%3E%3Cellipse cx='55' cy='48' rx='8' ry='4'/%3E%3Ccircle cx='48' cy='48' r='3'/%3E%3C/g%3E%3C/svg%3E");background-size:auto,96px 96px}#families h2{font-family:'Great Vibes','Cormorant Garamond',serif!important;text-transform:none;letter-spacing:0;font-variant:normal;font-size:50px;margin:3px 0 20px}#families>.eyebrow{font-size:9px;letter-spacing:2px}.family-tableau{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:18px;padding-top:10px}.hanging-rail{position:absolute;top:0;left:8%;right:8%;height:3px;background:linear-gradient(90deg,#8f7540,#dfc67c,#8f7540);box-shadow:0 1px 3px #e7ce8880}.hanging-rail:before,.hanging-rail:after{content:'';position:absolute;top:-3px;width:9px;height:9px;background:#d5bd75;border-radius:50%;box-shadow:0 0 4px #f8d989}.hanging-rail:before{left:-4px}.hanging-rail:after{right:-4px}.family-column{position:relative;z-index:2;opacity:0;transform:translateY(14px);transition:opacity 1.4s,transform 1.4s}.lanterns-lit .family-column{opacity:1;transform:none}.family-column:nth-child(3){transition-delay:.3s}.family-lantern{height:250px;position:relative;margin-bottom:5px}#families .lantern-art{position:absolute;inset:0;width:100%;height:100%;margin:0;background-size:300% 200%;mask-image:radial-gradient(ellipse 36% 65% at 50% 50%,#000 65%,transparent 96%)}.family-column>.tiny{font-size:9px;letter-spacing:1px;white-space:nowrap;color:#c8b67e}.family-column>p{font:21px/1.45 'Cormorant Garamond',serif;margin:8px 0;color:#e3d7b0}.family-column strong{font-weight:500}.union-light{position:absolute;z-index:3;inset:0;width:100%;height:295px;pointer-events:none;overflow:visible;opacity:0;transition:opacity 1s 1s}.lanterns-lit .union-light{opacity:1}.union-light path{fill:none;stroke:#f4e8b1;stroke-width:1.2}.union-haze{stroke-width:6!important;filter:blur(4px);opacity:.65}.union-stroke{stroke-dasharray:400;stroke-dashoffset:400}.lanterns-lit .union-stroke{animation:draw-union 2s .7s ease forwards}.union-stem{opacity:.7}.union-spark{fill:#fffde7;filter:drop-shadow(0 0 7px #ffe9a2)}.family-blessing{margin-top:32px}.family-blessing h3{font:42px 'Great Vibes','Cormorant Garamond',serif!important;letter-spacing:0;color:#d8c07e;text-transform:none}.family-blessing .arabic{font-size:25px;line-height:1.7;margin:20px 0 8px;color:#e5d8ab}.family-blessing>p:not(.arabic){font:italic 20px 'Cormorant Garamond',serif;color:#dfd1a6;margin-bottom:15px}.family-blessing .tiny{font-size:8px;color:#b6a36f;letter-spacing:2px}#families:before{border-color:#bda36066}.family-light-trail{display:none}@media(max-width:620px){.chest-button{width:300px;height:300px;margin-top:-40px}#families{padding:38px 20px 42px}.family-lantern{height:195px}.union-light{height:235px}.family-column>.tiny{font-size:7px;letter-spacing:.7px}.family-column>p{font-size:18px}.family-blessing h3{font-size:37px}.family-blessing{margin-top:28px}#families h2{font-size:44px}}@media(prefers-reduced-motion:reduce){.family-column{opacity:1;transform:none}.union-light{opacity:.65}.union-spark{display:none}.union-stroke{stroke-dashoffset:0}.folded-note,.letter-drawer,.letter-drawer .unfolded-letter{transition:none}}
/* The sheet unfolds above the chest instead of sliding up from below it. */
.chest-chapter{perspective:1200px}.letter-drawer{grid-template-rows:0fr;transition:grid-template-rows 1.8s cubic-bezier(.35,0,.2,1);transition-delay:2s;perspective:1000px;z-index:4}.letter-overflow{overflow:hidden;padding:0 4px}.letter-drawer .unfolded-letter{transform:rotateX(-88deg);transform-origin:50% 100%;opacity:0;clip-path:none;animation:none;transition:transform 1.8s cubic-bezier(.35,0,.2,1) 2s,opacity .5s 2s;backface-visibility:hidden;margin:0 auto 10px}.letter-emerging{grid-template-rows:1fr}.letter-emerging .unfolded-letter{transform:rotateX(0);opacity:1}.chest-button{margin-top:-45px}.chest-button .folded-note{transition:transform 1.3s .65s,opacity .45s .65s}.is-open .folded-note{animation:note-to-letter .6s 2s forwards}@keyframes note-to-letter{to{opacity:0;visibility:hidden}}@media(max-width:620px){.chest-button{margin-top:-40px}}@media(prefers-reduced-motion:reduce){.letter-drawer,.letter-drawer .unfolded-letter{transition:none}.letter-emerging .unfolded-letter{transform:none;opacity:1}.is-open .folded-note{opacity:0;visibility:hidden}}
