@import url('https://fonts.googleapis.com/css2?family=Great+Vibes&family=Playfair+Display:wght@400;500;600;700&family=Roboto:wght@300;400;500;600&display=swap');
:root{--red:#8e0509;--red2:#a20b10;--wine:#780608;--cream:#fff3d9;--cream2:#fff8e9;--gold:#d6a854;--ivory:#f6e8cf;--ink:#820b12;--serif:'Playfair Display',Georgia,serif;--sans:Roboto,Arial,sans-serif;--script:'Great Vibes',cursive}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--red);color:var(--cream);font-family:var(--sans);min-width:320px}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}img{max-width:100%}.sr-only{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}
.site{max-width:600px;margin:auto;overflow:hidden;min-height:100vh;background:linear-gradient(130deg,#8a060a,#9c080d 65%,#7e050a);box-shadow:0 0 120px #45010377;position:relative}.floating-nav{position:fixed;z-index:8;right:max(12px,calc((100vw - 690px)/2));top:45%;transform:translateY(-50%);background:#fff6e9ed;border:1px solid #d2a2598a;box-shadow:0 8px 35px #3c00036e;border-radius:40px;padding:8px 5px;display:flex;flex-direction:column;gap:7px}.floating-nav a{color:#94090c;font-size:20px;display:grid;place-items:center;width:34px;height:34px;text-decoration:none;border-radius:50%}.floating-nav a:hover{background:#f3d5ac}
.intro{position:fixed;z-index:100;inset:0;height:100vh;height:100svh;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;background:radial-gradient(circle at 50% 28%,#af1719,#800508 75%);transition:transform .9s cubic-bezier(.7,0,.2,1),visibility 0s linear .9s;will-change:transform}.intro::-webkit-scrollbar{display:none}.intro.opened{transform:translateY(-100%);visibility:hidden;pointer-events:none}.intro::before{position:fixed;content:'囍   囍    囍   囍';font:8rem var(--serif);white-space:pre-wrap;text-align:center;color:#eeaa7c09;letter-spacing:80px;transform:rotate(-10deg);inset:10% -20%;pointer-events:none}.intro-flower{width:360px;height:360px;background:url('assets/images/flower-outline.svg') center/contain no-repeat;position:fixed;opacity:.17;pointer-events:none}.flower-one{left:-130px;top:-130px}.flower-two{right:-160px;bottom:50px;transform:rotate(170deg)}.intro-ornament{font:90px var(--serif);color:#e8b4591f;margin-bottom:12px}
.envelope{width:min(88vw,450px);height:auto;min-height:0;max-height:none;position:relative;filter:drop-shadow(0 16px 28px #3f00066b);perspective:900px;display:flex;justify-content:center}.envelope-paper{position:relative;inset:auto;width:90%;flex:none;background:linear-gradient(115deg,#fff4e0,#ffeed0 70%,#f1dcba);color:var(--ink);text-align:center;border:2px solid var(--gold);outline:1px solid var(--gold);outline-offset:-12px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 24px 20px;z-index:3;box-shadow:inset 0 0 45px #e8bd7d45}.envelope-corner{position:absolute;right:22px;top:18px;color:#a88643;font-size:28px}.envelope-paper .eyebrow{margin:16px 0 9px;font-size:11px;letter-spacing:5px}.envelope-paper h1{font:clamp(30px,6vw,46px)/1.12 var(--script);margin:15px 0 14px;display:flex;flex-direction:column}.ampersand{font:26px var(--serif);padding:5px}.small-flower{font-size:26px;color:#b88e43}.envelope-date{font:17px var(--serif);margin:13px 0}.guest-line{font:italic 25px var(--script);margin:6px 0 17px}.guest-line span{display:block;width:min(100%,240px);min-height:31px;margin:2px auto 0;color:#a20b10;font:700 19px/1.35 var(--serif);letter-spacing:.3px;text-shadow:0 1px #fff3d9;padding:2px 10px 4px;border-bottom:1px dotted #a88643;max-width:100%;overflow-wrap:anywhere}.intro-help{font-size:12px;opacity:.74;letter-spacing:1px;margin-top:18px}.primary-button{background:var(--red);border:1px solid var(--red);color:#fff6e5;text-decoration:none;padding:12px 28px;display:inline-flex;justify-content:center;align-items:center;gap:9px;text-transform:uppercase;letter-spacing:1.2px;font-size:12px;border-radius:3px;transition:.2s}.primary-button:hover{background:#620106;transform:translateY(-2px)}
.paper-panel{background:var(--cream);color:var(--ink);position:relative;border:1px solid #dba659;padding:17px 16px 84px;margin:0 22px;box-shadow:0 7px 22px #4a00042d;border-radius:45px 45px 4px 4px}.paper-inner{min-height:200px;border:1px solid #dfae6c;border-radius:35px;padding:28px 21px 25px;text-align:center;position:relative}.hero{margin:0;min-height:810px;border-radius:0;padding:22px 22px 150px;background:#fff4dc url('assets/images/paper-texture.svg') center/cover;overflow:hidden}.hero .paper-inner{border:0;padding:25px 18px 0}.hero-stamp{position:absolute;font:210px var(--serif);color:#f3ddc5;top:-125px;left:-32px;z-index:0}.couple-hero-names{position:relative;z-index:1;display:flex;justify-content:space-around;align-items:center;gap:9px;margin-top:14px}.couple-hero-names>div{min-width:0;flex:1}.couple-hero-names small{display:block;font-size:13px;margin-bottom:13px}.couple-hero-names strong{font:700 clamp(17px,3.8vw,25px) Georgia,serif;white-space:nowrap}.couple-hero-names img{width:52px;flex-shrink:0}.hero-photo-shell{position:relative;margin:32px auto 0;border:3px solid #840609;max-width:410px;height:590px;border-radius:115px 115px 46% 46% / 105px 105px 13% 13%;overflow:hidden;background:#c80c1e;box-shadow:0 10px 0 #bc6f52,0 12px 0 #a60b10}.hero-photo-shell img{width:100%;height:100%;object-fit:cover}.photo-hint{position:absolute;bottom:23px;left:12%;right:12%;background:#fff4dbd9;color:#7e0d0d;border-radius:5px;padding:7px;font-size:11px}.large-happiness{display:flex;justify-content:space-between;height:95px;align-items:center;overflow:hidden;color:#e7473a4a;font:100px Georgia,serif;margin:-16px 0 0}.large-happiness span{transform:translateX(-22%)}.large-happiness span+span{transform:translateX(22%)}
.section-space{margin-top:80px}.info-section{margin-top:10px;padding-bottom:96px}.section-kicker{font-family:var(--serif);letter-spacing:1.5px;text-transform:uppercase;font-size:12px;font-weight:700;line-height:1.7}.section-kicker.light{color:#f6dfb2}.family-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:22px auto 28px;font:13px/1.7 var(--serif)}.family-grid h3{font:700 14px var(--serif);margin:0 0 5px}.family-grid p{margin:0}.invite-small{font:11px/1.8 var(--serif);text-transform:uppercase;letter-spacing:.3px}.script-name{display:flex;flex-direction:column;gap:5px;font:clamp(42px,8vw,55px)/1.1 var(--script);margin:18px 0 15px;font-weight:400}.script-name em{font:24px var(--serif)}.fine-divider{font-size:20px;color:#bc9457;padding:10px}.ceremony-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ceremony-grid>div{border:1px solid #e3c9a3;padding:12px 4px;border-radius:8px}.small-label{font:700 11px/1.7 var(--serif);letter-spacing:.4px;text-transform:uppercase}.ceremony-grid strong{font:24px var(--serif)}.big-day{display:flex;align-items:center;justify-content:center;gap:8px;font:44px var(--serif);margin:20px 0}.big-day span,.serif-number span{font:11px/1.4 var(--serif);text-align:left}.venue{font:12px/1.7 var(--serif)}.section-heading{font:26px var(--serif);margin:8px 0 26px;font-weight:500}.section-heading.light{color:#fff1d9}.album-section,.map-section,.rsvp-section,.wishes-section,.gift-section{text-align:center;position:relative;padding:35px 38px 50px}.album-section{padding-top:20px}.vines{position:absolute;width:180px;height:230px;background:url('assets/images/flower-outline.svg') center/contain no-repeat;opacity:.3;pointer-events:none}.vines-left{left:-65px;top:-50px}.vines-right{right:-65px;top:-25px;transform:scaleX(-1)}.carousel{display:flex;align-items:center;justify-content:center;gap:13px}.carousel-arrow{color:var(--cream);background:#ffffff13;border:1px solid #ffdbb58c;border-radius:50%;font-size:30px;width:40px;height:40px;flex-shrink:0}.photo-frame{margin:0;min-width:0;width:min(360px,75%);filter:drop-shadow(0 8px 8px #38010588)}.photo-frame img{width:100%;height:380px;object-fit:cover;border:4px solid #f2d8a2;border-radius:18px;display:block;background:#b80014}.photo-frame figcaption{font:italic 19px var(--script);margin-top:12px}.photo-counter{font:13px var(--serif);letter-spacing:2px}.red-title{font:14px var(--serif);text-transform:uppercase;margin:30px 0 12px}.serif-number{font:60px var(--serif);display:flex;align-items:center;justify-content:center;gap:16px;margin:0 0 15px}.serif-number span{font-size:14px}.countdown{display:flex;gap:8px;justify-content:center;margin:30px 0}.countdown div{border-right:1px solid #dab881;min-width:20%;padding:2px 7px}.countdown div:last-child{border:0}.countdown strong{font:25px var(--serif);display:block}.countdown small{font:11px var(--serif)}.calendar-block{border:1px solid #d6b68e;border-radius:8px;padding:16px 14px 20px;margin:25px auto;max-width:340px}.calendar-block h3{font:italic 19px var(--script);margin:0 0 12px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px 1px;font:11px Georgia,serif}.calendar>*{height:23px;display:flex;align-items:center;justify-content:center}.calendar b{font-size:10px}.calendar .special-date{background:var(--red);color:#fff;border-radius:50%;font-weight:700;position:relative}.time-panel{padding-bottom:90px}.time-panel .primary-button{margin:24px 0 2px}.map-section .section-heading{margin-bottom:10px}.muted-light{color:#f4d5bc;font:13px/1.6 var(--serif)}.map-fallback{width:min(100%,400px);height:235px;margin:26px auto 20px;background:linear-gradient(145deg,#f2e3d0,#d3d0c4);color:#82070b;border:5px solid var(--cream);border-radius:13px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:7px;box-shadow:0 10px 24px #50000b6e}.map-fallback .map-pin{font-size:47px}.map-fallback p{margin:0;font:21px var(--serif)}.map-fallback small{font-size:11px;color:#755d56;padding:0 18px}.outline-button{border:1px solid #f3c880;background:transparent;padding:12px 26px;color:#ffebc7;text-decoration:none;display:inline-block;border-radius:6px;letter-spacing:.5px;font:13px var(--serif)}.outline-button[aria-disabled=true]{opacity:.65;cursor:not-allowed}.dress-title{margin:50px 0 10px}.swatches{display:flex;justify-content:center;gap:14px;margin:22px 0}.swatches span{width:30px;height:30px;border-radius:50%;border:1px solid #e8d3bb5c}.timeline-panel{padding-bottom:90px}.timeline{max-width:350px;margin:20px auto 5px}.timeline-row{display:grid;grid-template-columns:70px 30px 1fr;gap:12px;min-height:55px;align-items:start;text-align:left;position:relative;font:13px/1.5 var(--serif)}.timeline-row:not(:last-child)::after{content:'';position:absolute;left:96px;top:20px;bottom:-2px;width:1px;background:var(--red)}.timeline-row time{text-align:right;font-weight:700}.timeline-icon{position:relative;z-index:1;border:1px solid var(--red);border-radius:50%;width:22px;height:22px;display:grid;place-items:center;background:#fff4da;font-size:15px}.timeline-row p{margin:0}.field-form{max-width:400px;margin:20px auto;display:flex;flex-direction:column;gap:12px}.field-form label{text-align:left;display:block;font-size:12px;color:#ffeed6}.field-form input,.field-form select,.field-form textarea{width:100%;background:#8c050b99;color:#ffeed6;border:1px solid #ffce9c90;border-radius:6px;padding:13px 14px;margin-top:6px;outline:none;resize:vertical}.field-form input::placeholder,.field-form textarea::placeholder{color:#f8d0b9b8}.field-form input:focus,.field-form select:focus,.field-form textarea:focus{border-color:#fff1d8}.field-form option{background:#71030b}.cream-button{border:0;background:#f8e4bc;color:#79010a;border-radius:7px;padding:13px;font:700 12px var(--serif);letter-spacing:1.2px}.cream-button:hover{background:#fff5df}.form-message{font-size:12px;line-height:1.7;margin:0;color:#ffe8a6}.wishes-list{max-width:400px;margin:20px auto;display:flex;flex-direction:column;gap:10px}.wish-card{border:1px solid #eeb97c6e;background:#ffffff0b;border-radius:9px;padding:13px 15px;text-align:left;font:13px/1.6 var(--serif)}.wish-card strong{color:#ffe7b5}.wish-card p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.empty-wishes{font:italic 15px var(--serif);color:#f2d5b3}.gift-section{padding-bottom:70px;background-image:repeating-radial-gradient(ellipse at 50% 115%,#dda45524 0 2px,transparent 3px 15px);background-size:80px 40px;background-repeat:repeat-x;background-position:bottom}.gift-illustration{height:230px;position:relative;margin:25px auto 5px;max-width:310px}.gift-envelope{position:absolute;top:28px;left:64px;width:135px;height:167px;background:var(--cream);border:3px double #ae4447;transform:rotate(-25deg);box-shadow:0 6px 25px #30030855;display:flex;justify-content:center;align-items:center;color:#bc1418;font-size:58px;background-image:radial-gradient(#ce48432e 1px,transparent 1px);background-size:9px 9px}.gift-envelope.right{transform:rotate(24deg);left:140px;top:31px}.gift-details{margin:20px auto;padding:15px;border:1px solid #f9cf9c88;border-radius:8px;max-width:350px;font-size:13px}.gift-details[hidden]{display:none}.footer-names{font:45px var(--script);margin:50px 0 3px}.footer-date{font:14px var(--serif)}footer{text-align:center;padding:25px 16px 40px;color:#efcaaf;font:11px/1.7 var(--sans)}
@media(min-width:720px){.intro{background:radial-gradient(circle,#a61417,#620106)}.site{border-left:1px solid #ba8450;border-right:1px solid #ba8450}.hero{min-height:850px}.hero-photo-shell{height:620px}.paper-panel:not(.hero){margin-left:28px;margin-right:28px}}
@media(max-width:440px){.intro-ornament{display:none}.envelope{min-height:450px;height:76vh}.envelope-paper{padding:22px 14px}.envelope-paper h1{font-size:38px}.floating-nav{right:4px;padding:6px 2px}.floating-nav a{width:25px;height:28px;font-size:15px}.hero{min-height:690px;padding:14px 13px 130px}.hero .paper-inner{padding:20px 3px 0}.hero-photo-shell{height:470px;margin-top:25px;border-radius:95px 95px 30% 30% / 90px 90px 10% 10%}.couple-hero-names{gap:3px}.couple-hero-names strong{font-size:17px}.couple-hero-names img{width:40px}.paper-panel:not(.hero){margin-left:14px;margin-right:14px;padding:12px 10px 74px}.paper-inner{padding:24px 10px}.section-space{margin-top:58px}.info-section{margin-top:0}.family-grid{gap:10px}.section-kicker{font-size:11px}.ceremony-grid{gap:4px}.ceremony-grid>div{padding:9px 3px}.ceremony-grid strong{font-size:20px}.big-day{font-size:36px}.album-section,.map-section,.rsvp-section,.wishes-section,.gift-section{padding-left:25px;padding-right:25px}.photo-frame img{height:320px}.timeline-row{grid-template-columns:57px 22px 1fr;gap:8px}.timeline-row:not(:last-child)::after{left:76px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01s!important;animation:none!important}}

@media(prefers-reduced-motion:reduce){.intro{transition:none;will-change:auto}.intro.opened{transform:translateY(-100%)}}
body.modal-open{overflow:hidden}
.album-stage{position:relative;flex:1;min-width:0;height:415px;perspective:850px;transform-style:preserve-3d;touch-action:pan-y}
.album-card{--album-center:translateX(-50%) translateZ(80px) rotateY(0deg) scale(1);--album-left:translateX(-102%) translateZ(-75px) rotateY(44deg) scale(.83);--album-right:translateX(2%) translateZ(-75px) rotateY(-44deg) scale(.83);--album-far-left:translateX(-135%) translateZ(-190px) rotateY(55deg) scale(.62);--album-far-right:translateX(35%) translateZ(-190px) rotateY(-55deg) scale(.62);position:absolute;top:8px;left:50%;width:min(73%,295px);height:370px;transform-origin:50% 50%;padding:0;border:3px solid #f9e0bc;background:#f1e0c4;border-radius:12px;box-shadow:0 15px 24px #39020391;overflow:hidden;backface-visibility:hidden;will-change:transform,opacity;transition:transform .65s cubic-bezier(.22,.8,.24,1),opacity .65s ease,filter .65s ease;display:block}
.album-card img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;user-select:none}
.album-card[data-position="0"]{transform:var(--album-center);z-index:3;opacity:1}
.album-card[data-position="-1"]{transform:var(--album-left);z-index:2;opacity:.74;filter:saturate(.75)}
.album-card[data-position="1"]{transform:var(--album-right);z-index:2;opacity:.74;filter:saturate(.75)}
.album-card[data-position="-2"]{transform:var(--album-far-left);z-index:1;opacity:0;pointer-events:none}
.album-card[data-position="2"]{transform:var(--album-far-right);z-index:1;opacity:0;pointer-events:none}
.album-card:hover{filter:brightness(1.06)}
.album-instructions{font:11px/1.6 var(--sans);color:#edd0adbb;margin:8px auto}
.lightbox{position:fixed;z-index:250;inset:0;background:#150405ec;display:flex;gap:10px;align-items:center;justify-content:space-evenly;padding:55px 10px}
.lightbox[hidden]{display:none}.lightbox img{object-fit:contain;max-width:min(80vw,720px);max-height:82vh;border:2px solid #edd4a6;box-shadow:0 10px 50px #0007}
.lightbox-close{position:absolute;right:20px;top:18px;background:transparent;color:#fff4df;border:0;font-size:42px;line-height:1}
.lightbox-arrow{border:1px solid #f8dcb3;border-radius:50%;background:#ffffff1d;color:#fff6e1;font-size:33px;width:44px;height:44px;flex-shrink:0}
.lightbox p{position:absolute;bottom:16px;left:0;right:0;text-align:center;font:14px var(--serif)}
.map-fallback:has(iframe){padding:0;overflow:hidden}.map-fallback iframe{border:0;display:block;width:100%;min-height:270px}
.gift-account{border:1px solid #ffecbd66;border-radius:8px;padding:20px 10px;margin:16px auto;display:grid;justify-items:center;gap:8px;max-width:320px}
.gift-account strong{font:600 19px var(--serif)}.gift-account p{margin:0;font-size:13px}.gift-account b{font-size:20px;letter-spacing:1px}.gift-account img{max-width:180px;object-fit:contain}
.copy-account{margin-top:8px}
.music-toggle{position:fixed;right:8px;bottom:22px;z-index:20;display:none;place-items:center;width:46px;height:46px;padding:10px;border:1px solid #d6a854;border-radius:50%;background:#fff3d9;color:#9a0810;box-shadow:0 3px 15px #34000391}
.music-toggle svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.music-toggle .music-speaker{fill:currentColor;stroke:none}
.music-toggle .music-muted-mark{display:none}
.music-toggle.muted .music-wave{display:none}
.music-toggle.muted .music-muted-mark{display:block}
.music-toggle:focus-visible{outline:3px solid #d6a854;outline-offset:3px}
body.invitation-opened .music-toggle{display:grid}
@media(max-width:440px){.album-stage{height:340px}.album-card{height:305px;width:80%;--album-left:translateX(-94%) translateZ(-75px) rotateY(45deg) scale(.82);--album-right:translateX(-6%) translateZ(-75px) rotateY(-45deg) scale(.82);--album-far-left:translateX(-120%) translateZ(-190px) rotateY(55deg) scale(.62);--album-far-right:translateX(20%) translateZ(-190px) rotateY(-55deg) scale(.62)}.carousel-3d{gap:3px}.carousel-3d .carousel-arrow{width:29px;height:33px;font-size:26px}.lightbox{gap:2px;padding:50px 2px}.lightbox-arrow{width:33px;height:33px;font-size:24px}.lightbox img{max-width:77vw}}
.open-invitation-button{position:relative;display:grid;place-items:center;flex:0 0 58px;width:58px;height:58px;min-height:58px;margin-top:3px;padding:0;border:1px solid #d5aa5a;border-radius:50%;background:radial-gradient(circle at 35% 25%,#a8161b,var(--red) 72%);color:var(--cream);box-shadow:0 0 0 7px #d5aa5a24,0 6px 18px #60000655;transition:box-shadow .2s}
.open-invitation-button:hover{box-shadow:0 0 0 9px #d5aa5a30,0 8px 22px #60000666}
.open-invitation-button:focus-visible{outline:3px solid #8e0509;outline-offset:5px}
.invitation-icon{width:34px;height:34px;overflow:visible;fill:none;stroke:#fff1ce;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.envelope-flap{transform-box:fill-box;transform-origin:50% 0%}
.tap-spark{position:absolute;right:1px;bottom:1px;width:18px;height:18px;display:grid;place-items:center;border:1px solid #e8c87d;border-radius:50%;background:#fff0d4;color:#97090e;font-size:10px}
.intro-help{margin-top:22px;font-size:12px;opacity:.86;letter-spacing:1.2px}
@media(max-height:820px){.envelope-paper{padding:18px 20px 14px}.envelope-paper>img{width:44px;height:44px}.envelope-paper .eyebrow{margin:8px 0 4px}.envelope-paper h1{font-size:clamp(28px,6vw,42px);line-height:1;margin:7px 0 5px}.ampersand{font-size:21px;padding:2px}.small-flower{font-size:20px;line-height:1}.envelope-date{font-size:15px;margin:8px 0}.guest-line{font-size:21px;margin:3px 0 8px}.guest-line span{font-size:17px;padding:1px 8px 2px}.open-invitation-button{flex-basis:52px;width:52px;height:52px;min-height:52px}.invitation-icon{width:30px;height:30px}.tap-spark{width:16px;height:16px;font-size:9px}.intro-help{margin-top:10px}}
@media(max-height:560px){.intro{justify-content:flex-start;padding:0}.intro-ornament{display:none}.envelope{flex-shrink:0}.intro-help{flex-shrink:0}}
@media(prefers-reduced-motion:reduce){.open-invitation-button,.envelope-flap,.tap-spark{transition:none!important}}
.intro::before{content:none}
.intro-pattern{position:fixed;inset:10% -20%;display:flex;justify-content:space-around;align-items:center;transform:rotate(-10deg);pointer-events:none}
.intro-pattern .intro-ornament{font-size:8rem;color:#eeaa7c09;letter-spacing:0;margin:0}
.floating-nav .intro-ornament{display:inline;font-size:20px;line-height:1;color:inherit;margin:0}
.hero-stamp.intro-ornament{display:inline;font-size:210px;color:#f3ddc5;margin:0}
.large-happiness .intro-ornament{display:inline;font-size:100px;line-height:1;color:inherit;margin:0}
.celebration-effect{position:fixed;z-index:200;inset:0;overflow:hidden;pointer-events:none}
.celebration-particle{position:absolute;left:50%;top:50%;display:block;font:700 clamp(20px,5vw,42px)/1 var(--serif);color:var(--particle-color);text-shadow:0 2px 12px #420006a6;margin:0;opacity:0;will-change:transform,opacity;animation:celebration-burst var(--duration) cubic-bezier(.12,.68,.32,1) var(--delay) both}
@keyframes celebration-burst{0%{opacity:0;transform:translate3d(0,0,0) scale(.2) rotate(0)}12%{opacity:.95}100%{opacity:0;transform:translate3d(var(--dx),var(--dy),0) scale(var(--scale)) rotate(var(--rotation))}}
.falling-flowers{position:fixed;z-index:6;inset:0;overflow:hidden;pointer-events:none;visibility:hidden}
.falling-flowers.is-active{visibility:visible}
.falling-flower{position:absolute;top:-48px;left:var(--left);color:var(--flower-color);font:var(--flower-size)/1 Georgia,serif;text-shadow:0 1px 5px #5b0d1426;opacity:.82;will-change:transform;animation:falling-blossom var(--fall-duration) linear var(--fall-delay) infinite}
@keyframes falling-blossom{from{transform:translate3d(0,-48px,0) rotate(0)}to{transform:translate3d(var(--sway),calc(100vh + 96px),0) rotate(var(--spin))}}
@media(max-width:440px){.intro-pattern .intro-ornament{display:none}}
@media(max-height:560px){.intro-pattern .intro-ornament{display:none}}
@media(prefers-reduced-motion:reduce){.falling-flowers{display:none}}
.paper-panel#gia-dinh,.paper-panel#thoi-gian,.paper-panel#dia-diem{border:1px solid #dba659;border-radius:35px;padding:12px}
.paper-panel#gia-dinh .paper-inner,.paper-panel#thoi-gian .paper-inner,.paper-panel#dia-diem .paper-inner{padding:18px 16px}
.paper-panel#gia-dinh{padding-bottom:20px}
.paper-panel#thoi-gian{padding-bottom:20px}
.paper-panel#dia-diem{padding-bottom:20px}
.album-title{font:clamp(34px,8vw,48px)/1.2 var(--script);font-weight:400;margin:8px 0 14px;color:#fff1d9}
.album-instructions{color:#f6dfd0;font:13px/1.6 var(--serif);margin:8px auto}
.carousel-arrow{position:relative;z-index:4}
.calendar .special-date{width:32px;height:32px;justify-self:center;align-self:center;border-radius:50%}
.venue-address{margin:0 0 16px;font:16px/1.5 var(--serif);color:#6e1617}
.venue-schedule{display:flex;justify-content:center;align-items:baseline;gap:8px 12px;flex-wrap:wrap;margin:0 auto 18px;font:12px var(--serif)}
.venue-schedule span{font-weight:700;letter-spacing:.5px}
.venue-schedule strong{font:700 19px var(--serif);color:var(--red)}
.venue-map{width:100%;height:220px;margin:0 auto 16px;overflow:hidden;border:3px solid #d6a854;border-radius:12px;box-shadow:0 6px 16px #4a000426}
.venue-map iframe{display:block;width:100%;height:100%;border:0}
footer{font:clamp(23px,6vw,32px)/1.35 var(--script);color:#fff1d9;padding:30px 22px 42px}
.attending-options{margin:0;padding:12px;border:1px solid #ffce9c90;border-radius:6px;text-align:left}
.attending-options legend{padding:0 5px;color:#ffeed6;font-size:12px}
.field-form .attending-options label{display:flex;align-items:center;gap:9px;padding:6px 2px}
.field-form input[type=radio]{appearance:auto;width:18px;height:18px;flex:0 0 18px;margin:0;padding:0;accent-color:#f8e4bc;background:transparent;border:0}
.field-form input[type=number]{appearance:textfield;-moz-appearance:textfield}
.field-form input[type=number]::-webkit-inner-spin-button,.field-form input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.couple-hero-names>div{font:16px/1.45 var(--serif)}
.couple-hero-names small{font:600 16px/1.4 var(--serif);margin-bottom:10px}
.couple-hero-names strong{font-size:clamp(19px,4vw,27px)}
.couple-hero-names>div{flex:1 1 0;min-width:0}
.couple-hero-names strong{display:block;font-size:clamp(13px,3.8vw,23px);line-height:1.25;white-space:normal;overflow-wrap:anywhere}
.family-grid p{font:15px/1.6 var(--serif)}
.family-parent-names span{display:block}
.family-parent-names span[hidden]{display:none}
.family-grid--bride-first>[data-family-house="girl"]{order:-1}
.dinner-invitation[hidden]{display:none}
.paper-panel#dinnerInvitation{border-radius:35px}
.dinner-details{display:flex;justify-content:center;gap:24px;margin-top:22px}
.dinner-details p{display:flex;flex-direction:column;gap:6px;margin:0;font:12px/1.6 var(--serif)}
.dinner-details span{font-size:11px;font-weight:700;letter-spacing:.5px}
.dinner-details strong{font-size:16px}
.protected-img{-webkit-user-drag:none;pointer-events:none;user-select:none;-webkit-user-select:none}
.invitation-error{max-width:260px;margin:12px auto;color:#a20b10;font:13px/1.5 var(--serif)}
.open-invitation-button:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.4)}
.external-browser-help{display:flex;flex-direction:column;align-items:center;gap:7px;max-width:300px;margin-top:12px;color:#780608;font:12px/1.45 var(--serif);text-align:center}
.external-browser-help[hidden]{display:none}
.external-browser-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 18px;border:1px solid #a20b10;border-radius:22px;color:#8e0509;font-weight:700;text-decoration:none}
.external-browser-link:focus-visible{outline:3px solid #d5aa5a;outline-offset:3px}
.carousel-arrow{width:40px;height:40px;min-width:40px;min-height:40px;flex:0 0 40px;aspect-ratio:1;border-radius:50%;padding:0;display:grid;place-items:center;line-height:1}
.toast{position:fixed;z-index:120;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translate(-50%,12px);max-width:calc(100vw - 32px);padding:12px 20px;border:1px solid #e8c98f;border-radius:999px;background:#fff8e9;color:#780608;box-shadow:0 6px 24px #35000438;font:14px/1.4 var(--serif);text-align:center;opacity:0;transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.toast[hidden]{display:none}
.toast-visible{opacity:1;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){.toast{transition:none}}
.small-label{font:700 13px/1.7 var(--serif)}
.small-label b{font-size:17px}
.date-stack{display:inline-flex;flex-direction:column;line-height:1.25;vertical-align:middle}
.date-month{font-size:15px}
.date-year{font-size:20px;font-weight:600}
.big-day .date-month{font-size:15px}
.big-day .date-year{font-size:20px}
.serif-number .date-month{font-size:17px}
.serif-number .date-year{font-size:23px}
.paper-panel#thoi-gian{padding-bottom:44px}
.hero-photo-shell{border:0;border-radius:26px}
.hero-photo-shell img{display:block;border:4px solid #840609;border-radius:26px}
