@import url('https://fonts.googleapis.com/css2?family=Allura&family=Be+Vietnam+Pro:wght@300;400;500;600&family=Cormorant+Garamond:wght@400;500;600&display=swap');
:root{--cream:#f7f0e9;--paper:#fffaf5;--ink:#4a3730;--rose:#a66b63;--line:#d9c2b7;--green:#607062}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'Be Vietnam Pro',sans-serif;font-weight:300;overflow-x:hidden}.section{position:relative;max-width:760px;margin:auto;padding:86px 24px;text-align:center}.hero{max-width:none;min-height:100svh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 20% 15%,#fff 0 2%,transparent 28%),linear-gradient(150deg,#efe3d8,#f9f4ef 55%,#e4d4ca)}.grain{position:absolute;inset:0;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E")}.hero-frame{position:relative;width:min(680px,100%);min-height:calc(100svh - 56px);display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(111,75,63,.36);padding:45px 18px}.hero-frame:before,.hero-frame:after{content:'❦';position:absolute;font-size:31px;color:var(--rose)}.hero-frame:before{top:-18px;background:var(--cream);padding:0 20px}.hero-frame:after{bottom:-18px;background:var(--cream);padding:0 20px;transform:rotate(180deg)}.eyebrow{font-size:11px;letter-spacing:.32em;font-weight:500}.year{font-family:'Cormorant Garamond';letter-spacing:.35em;margin:20px 0 8px}.date-lockup{display:flex;align-items:center;gap:18px}.date-lockup>strong{font-family:'Cormorant Garamond';font-size:80px;line-height:1;font-weight:400;border-inline:1px solid var(--line);padding:0 20px}.date-side{display:flex;flex-direction:column;gap:8px;width:105px}.date-side span{font-family:'Cormorant Garamond';font-size:19px;text-transform:uppercase}.date-side small{font-size:9px;line-height:1.5}.time-line{font-size:11px;letter-spacing:.16em}.names{font-family:'Allura';font-size:52px;line-height:1.1;margin:28px 0;display:flex;flex-direction:column}.names i{font-family:'Cormorant Garamond';font-size:25px}.save-date{font-family:'Cormorant Garamond';letter-spacing:.34em}.scroll-hint{color:inherit;text-decoration:none;font-size:11px;margin-top:18px}.scroll-hint b{display:block;font-size:22px;animation:bounce 1.5s infinite}.script{font-family:'Allura';font-size:48px;margin:0 0 4px;color:var(--rose)}h2{font-family:'Cormorant Garamond';font-size:35px;font-weight:500;margin:8px 0 24px;text-transform:uppercase;letter-spacing:.05em}.calendar-wrap{background:var(--paper)}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;max-width:520px;margin:35px auto}.calendar b{font-size:10px;letter-spacing:.1em;padding-bottom:12px;border-bottom:1px solid var(--line)}.calendar span{height:42px;display:grid;place-items:center;position:relative;font-family:'Cormorant Garamond';font-size:18px}.calendar .chosen{border:1px solid var(--rose);border-radius:50%;color:var(--rose);font-weight:600}.calendar .chosen i{position:absolute;right:-6px;top:-7px;font-size:13px;background:var(--paper)}.our-day{text-transform:uppercase;letter-spacing:.35em;font:14px 'Cormorant Garamond'}.couple{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;align-items:center}.portrait{aspect-ratio:3/4;border-radius:180px 180px 12px 12px;overflow:hidden}.placeholder{display:grid;place-items:center;background:linear-gradient(145deg,#d9c6bb,#f5ebe4);border:8px solid rgba(255,255,255,.45);outline:1px solid var(--line)}.placeholder span{font-size:10px;letter-spacing:.18em}.person p{font-family:'Allura';font-size:31px;margin:20px 0 0;color:var(--rose)}.person h2{font-size:26px}.amp{font-family:'Allura';font-size:45px;color:var(--rose)}.story{background:var(--green);color:#fff;max-width:none}.story>*{max-width:700px;margin-left:auto;margin-right:auto}.story-card{position:relative;border:1px solid rgba(255,255,255,.35);padding:40px 42px;line-height:2}.quote{font:70px 'Cormorant Garamond';position:absolute;left:16px;top:-7px;opacity:.45}.quote.end{left:auto;right:16px;top:auto;bottom:-40px}.quote-line{color:#f7ded5!important;font-size:32px!important;margin-top:40px!important}.families{display:grid;grid-template-columns:1fr auto 1fr;gap:30px}.family{border-block:1px solid var(--line);padding:34px 12px}.family p{letter-spacing:.25em;font-size:11px}.family h3{font:21px 'Cormorant Garamond';font-weight:500}.heart-mark{align-self:center;font-size:38px;color:var(--rose)}.venue{background:var(--paper);max-width:none}.venue>*{max-width:660px;margin-left:auto;margin-right:auto}.outline-btn,form button,.heart-btn{display:inline-block;border:1px solid var(--rose);background:transparent;color:var(--ink);padding:13px 25px;text-decoration:none;text-transform:uppercase;letter-spacing:.16em;font-size:10px;cursor:pointer;margin-top:20px}.disabled{pointer-events:none;opacity:.45}.timeline-list{max-width:520px;margin:40px auto}.timeline-list div{display:grid;grid-template-columns:90px 28px 1fr;align-items:center;text-align:left;min-height:82px}.timeline-list time{font:24px 'Cormorant Garamond';text-align:right;padding-right:16px}.timeline-list i{height:100%;position:relative;border-left:1px solid var(--rose)}.timeline-list i:before{content:'';position:absolute;width:11px;height:11px;border:1px solid var(--rose);border-radius:50%;background:var(--cream);left:-6px;top:50%;transform:translateY(-50%)}.timeline-list p{padding-left:20px;text-transform:uppercase;letter-spacing:.12em;font-size:12px}.rsvp{background:#e9ddd3;max-width:none}.rsvp>*{max-width:620px;margin-left:auto;margin-right:auto}form{display:grid;gap:12px;margin-top:30px}input,select,textarea{width:100%;border:0;border-bottom:1px solid #bda99f;background:rgba(255,255,255,.52);padding:15px;font:13px 'Be Vietnam Pro';color:var(--ink);outline:none}textarea{min-height:100px;resize:vertical}form button{justify-self:center;background:var(--rose);color:#fff}.form-message{min-height:22px;font-size:12px}.countdown{background:var(--paper);max-width:none}#countdown{display:flex;justify-content:center;gap:clamp(12px,5vw,46px)}#countdown div{min-width:70px}#countdown b{font:42px 'Cormorant Garamond';display:block}#countdown span{font-size:10px;text-transform:uppercase;letter-spacing:.16em}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.gallery-item{border:0;padding:0;background:none;cursor:zoom-in;overflow:hidden}.gallery-item:nth-child(3n){grid-column:span 2}.gallery-item img{width:100%;display:block;aspect-ratio:4/5;object-fit:cover;transition:.5s}.gallery-item:hover img{transform:scale(1.035)}.gallery-item:nth-child(3n) img{aspect-ratio:16/9}.wishes{background:#e2d2c7;max-width:none}.wishes>*{max-width:620px;margin-left:auto;margin-right:auto}.wish-list{display:grid;gap:12px;margin-top:35px}.wish-card{background:rgba(255,255,255,.55);padding:17px 20px;text-align:left;border-left:2px solid var(--rose)}.wish-card b{font:20px 'Cormorant Garamond'}.wish-card p{font-size:12px;line-height:1.7;margin-bottom:0}.thanks{min-height:70vh;display:flex;flex-direction:column;justify-content:center}.thanks h2 i{font-family:'Allura';color:var(--rose);text-transform:none}.thanks p{max-width:560px;margin-inline:auto;line-height:1.9}.heart-btn{border-radius:50px}.music-btn{position:fixed;right:16px;top:16px;z-index:20;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.8);background:rgba(74,55,48,.72);color:white;font-size:20px;backdrop-filter:blur(8px);cursor:pointer}.music-btn.playing{animation:spin 4s linear infinite}.lightbox{position:fixed;inset:0;background:rgba(26,17,14,.92);z-index:50;display:none;place-items:center;padding:25px}.lightbox.open{display:grid}.lightbox img{max-width:94vw;max-height:88vh}.lightbox button{position:absolute;top:15px;right:22px;background:none;border:0;color:white;font-size:40px}.reveal{opacity:0;transform:translateY(25px);transition:.8s ease}.reveal.visible{opacity:1;transform:none}.heart-float{position:fixed;bottom:-20px;z-index:100;color:#bd6d73;animation:fly 3.2s ease-out forwards;pointer-events:none}@keyframes bounce{50%{transform:translateY(8px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fly{to{transform:translate(var(--x),-110vh) rotate(40deg);opacity:0}}@media(max-width:600px){.section{padding:70px 18px}.hero{padding:12px}.hero-frame{min-height:calc(100svh - 24px)}.date-lockup{gap:8px}.date-lockup>strong{font-size:65px;padding:0 12px}.date-side{width:78px}.names{font-size:44px}.couple{grid-template-columns:1fr 1fr;gap:12px}.couple .amp{position:absolute;left:50%;transform:translateX(-50%);z-index:2;background:var(--cream);border-radius:50%;width:43px;height:43px;display:grid;place-items:center}.person h2{font-size:20px}.families{grid-template-columns:1fr}.heart-mark{height:1px}.gallery-grid{gap:7px}.script{font-size:42px}h2{font-size:29px}}

/* Custom photo edition */
.hero{background-image:linear-gradient(180deg,rgba(40,27,19,.22),rgba(40,27,19,.55)),var(--hero-image);background-size:cover;background-position:center 38%;color:#fff}
.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(61,41,28,.18));pointer-events:none}
.hero-frame{z-index:1;background:rgba(50,34,25,.18);border-color:rgba(255,255,255,.62);text-shadow:0 2px 14px rgba(0,0,0,.45);backdrop-filter:blur(1px)}
.hero-frame:before,.hero-frame:after{background:transparent;color:#fff}.scroll-hint{color:#fff}.portrait img{width:100%;height:100%;object-fit:cover;display:block}.bride-card .portrait img{object-position:45% center}.groom-card .portrait img{object-position:center 30%}
.couple{background:linear-gradient(180deg,#f8f1e9,#fffaf4)}
.gallery-item{border-radius:4px;box-shadow:0 8px 25px rgba(70,45,30,.12)}
.gallery-item img{background:#eee}
@media(max-width:600px){.hero{background-position:center 32%}.hero-frame{justify-content:flex-end;padding-bottom:70px;background:linear-gradient(180deg,transparent 28%,rgba(45,29,20,.58))}.eyebrow,.year,.date-lockup,.time-line{display:none}.names{font-size:52px;margin:0 0 10px}.save-date{margin:0}.portrait{aspect-ratio:3/4}.bride-card .portrait img{object-position:48% center}.groom-card .portrait img{object-position:center 20%}}
