:root{--paper:#fcf8f2;--ink:#655951;--accent:#a77f67;--muted:#8d8279;--line:#d9c8b8;--serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes',cursive;--sans:'Manrope',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:#e4d9cc;color:var(--ink);font:14px/1.9 var(--sans);-webkit-font-smoothing:antialiased}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #71573f;outline-offset:5px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}.svg-library{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.desktop-story{position:fixed;left:0;top:0;width:calc(100% - 520px);height:100svh;background:#b6aa9c;color:#fff8ef;overflow:hidden}.desktop-photo{width:100%;height:100%;object-fit:cover;object-position:center 35%}.desktop-shade{position:absolute;inset:0;background:linear-gradient(180deg,#30291e35,#30291e08 30%,#30291ea6)}.desktop-top,.desktop-bottom{position:absolute;left:48px;right:48px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:2.2px}.desktop-top{top:35px}.desktop-bottom{bottom:30px}.desktop-copy{position:absolute;bottom:14%;left:10%;right:8%}.desktop-copy h1{font:500 clamp(64px,6.5vw,110px)/1.1 var(--serif);margin:18px 0 26px}.desktop-copy h1 i{font-weight:400}.desktop-copy p:last-child{font:italic 24px/1.6 var(--serif)}.hairline{height:1px;width:70px;background:#fff8ef80}.invitation{width:520px;margin-left:auto;position:relative;min-height:100svh;overflow:clip;background-color:var(--paper);background-image:radial-gradient(ellipse at 10% 24%,#e8cabb22 0,transparent 34%),radial-gradient(ellipse at 96% 54%,#d9b9a925 0,transparent 40%),url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%239d8167' opacity='.035' filter='url(%23n)' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.corners{position:fixed;right:0;top:0;width:520px;height:100svh;pointer-events:none;z-index:15;overflow:hidden}.corner{position:absolute;width:164px;height:182px;opacity:.93}.corner img{width:100%;height:100%;object-fit:contain;transform-origin:8% 8%;animation:sway 8s ease-in-out infinite alternate}.tl{left:-22px;top:-18px}.tr{right:-22px;top:-18px;transform:scaleX(-1)}.bl{left:-24px;bottom:-35px;transform:scaleY(-1)}.br{right:-24px;bottom:-35px;transform:scale(-1)}.tr img{animation-delay:-3s}.bl img{animation-delay:-5s}.br img{animation-delay:-1.5s}@keyframes sway{from{transform:rotate(-3deg) translateY(0)}to{transform:rotate(4deg) translateY(4px)}}.cover{position:fixed;right:0;top:0;width:520px;height:100svh;z-index:12;background:var(--paper);transition:transform 1.2s cubic-bezier(.65,0,.2,1),opacity .9s;overflow:hidden}.cover.opened{transform:translateY(-105%);opacity:0;pointer-events:none}.cover-photo{position:absolute;inset:0;width:100%;height:66%;object-fit:cover;object-position:50% 32%}.cover-fade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 27%,#fcf8f230 38%,#fcf8f2ef 55%,var(--paper) 64%,#efe0d757)}.cover-content{position:absolute;inset:auto 20px max(50px,7svh);text-align:center}.tiny-tag{display:block;font-size:8px;letter-spacing:3px;margin-bottom:14px;color:#8b7764}.eyebrow{font-size:10px;letter-spacing:3px;font-weight:600;line-height:1.8;margin:0 0 20px}.cover .eyebrow{margin-bottom:9px}.script{font:400 62px/1.4 var(--script);color:var(--accent);margin:0 0 10px}.cover-date{font-size:9px;letter-spacing:3px;margin:1px 0 20px}.cover-line{width:45px;height:1px;background:var(--line);margin:0 auto 20px}.salutation{font-size:11px;color:#8a8178;margin:0 0 6px}.guest-name{font:500 25px/1.3 var(--serif);overflow-wrap:anywhere;margin:0 auto 22px;max-width:320px}.primary{border:0;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:45px;padding:11px 26px;background:linear-gradient(135deg,#b99b84,#a67d64);border-radius:99px;color:white;font-size:11px;letter-spacing:.3px;box-shadow:0 5px 16px #96755e15;transition:transform .2s,box-shadow .2s}.primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px #96755e30}.primary svg{width:16px;height:16px}.cover-note{font-size:8px;color:#9a8e83;margin:17px 0 0}.section{text-align:center;padding:90px 48px;position:relative}.intro{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:95px;padding-bottom:100px}.portrait-frame{position:relative;width:270px;height:315px;margin:8px 0 24px}.portrait-frame>img:first-child{width:100%;height:100%;object-fit:cover;object-position:50% 35%;border-radius:150px 150px 110px 110px;border:1px solid #b69a83;padding:6px;box-shadow:0 8px 30px #7a5f4115}.portrait-flower{position:absolute;right:-48px;bottom:-10px;width:145px;transform:rotate(175deg);animation:flowerFloat 7s ease-in-out infinite alternate}.intro .script{font-size:60px}.intro-text{font:19px/1.6 var(--serif);margin:0 0 23px}.date-rule{display:flex;gap:12px;align-items:center;margin-bottom:20px}.date-rule span{height:1px;width:25px;background:var(--line)}.date-rule p{font-size:9px;letter-spacing:1.3px;margin:0}.scroll-hint{font-size:7px;letter-spacing:2px;margin-top:38px;color:var(--muted)}.scroll-hint span{display:block;font-size:19px;margin-top:8px;animation:arrow 2s infinite}@keyframes arrow{50%{transform:translateY(5px)}}@keyframes flowerFloat{to{transform:rotate(181deg)}}.serif{font:400 45px/1.12 var(--serif);margin:0 0 26px}.serif em{display:block;font-weight:400;color:var(--accent)}.quote-section{background:#e8d8ca70;border-top:1px solid #e2d1c033;border-bottom:1px solid #e2d1c050}.quote-section>p:not(.eyebrow):not(.verse){font:italic 21px/1.8 var(--serif)}.ornament{display:block;color:#aa8e72;font:45px var(--serif);margin-bottom:25px}.verse{font-size:9px;letter-spacing:2px;margin-top:27px}.couple-section>.eyebrow{font-size:8px;letter-spacing:1.5px}.couple-section>p:not(.eyebrow):not(.demo-caption){font-size:11px;line-height:2}.couple-card{margin:38px 0 0}.small-portrait{width:155px;height:190px;overflow:hidden;border-radius:90px 90px 8px 8px;margin:0 auto 18px;padding:5px;border:1px solid var(--line)}.small-portrait img{width:100%;height:100%;object-fit:cover;transform:scale(1.65);transform-origin:25% 25%}.bride img{transform-origin:83% 25%}.couple-card h3{font-size:55px;margin-bottom:0}.couple-card p{font-size:11px;margin:0}.ampersand{font:italic 45px var(--serif);color:#b7987c;display:block;margin-top:32px}.date-section{background:#eee1d555}.countdown{display:flex;justify-content:center;gap:11px;margin:32px 0 26px}.countdown>div{background:#fffaf4c9;border:1px solid #cbb39b60;border-radius:40px 40px 8px 8px;width:68px;padding:14px 0 10px}.countdown b{font:400 31px var(--serif);display:block;color:var(--accent);font-variant-numeric:tabular-nums}.countdown span{font-size:7px;letter-spacing:1.4px}.event-date{font-size:12px;margin-bottom:28px}.event-card{padding:28px 20px;background:#fffcf7b3;border:1px solid #d7c4af80;margin:18px 0;border-radius:100px 100px 8px 8px}.event-card>svg{width:25px;height:25px;color:var(--accent);margin-top:8px}.event-card h3{font:400 33px var(--serif);margin:14px 0 7px}.event-card p{font-size:11px;margin:0}.fine-line{width:45px;background:var(--line);height:1px;margin:18px auto}.event-card h4{font:500 20px var(--serif);margin:0 0 5px}.demo-caption{font-size:9px;color:#938578;line-height:1.7;margin-top:30px}.gallery-grid{display:grid;grid-template-columns:1.15fr 1fr;grid-template-rows:155px 155px;gap:10px;margin-top:34px}.gallery-tile{border:0;padding:0;background:#e3d9cc;overflow:hidden;border-radius:5px}.gallery-tile img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.gallery-tile:hover img{transform:scale(1.06)}.gallery-tile.tall{grid-row:span 2;border-radius:100px 100px 5px 5px}.detail-one img{object-position:20% 20%;transform:scale(1.8);transform-origin:30% 20%}.detail-two img{transform:scale(1.8);transform-origin:80% 30%}.gallery-note{font:22px/1.6 var(--serif);margin:28px 0 0}.gallery-note em{color:var(--accent)}.wishes-section{background:#e8d8ca60}.wishes-section>p:not(.eyebrow){font-size:11px}.rsvp-form{text-align:left;background:#fffcf8c9;padding:25px;border:1px solid #ddcdbd;border-radius:8px;margin-top:30px}.rsvp-form label{display:block;font-size:10px;letter-spacing:.3px;margin-bottom:7px}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{display:block;width:100%;padding:12px;background:#fffdf9;border:1px solid #ddd1c4;border-radius:5px;font-size:11px;color:var(--ink);margin-bottom:18px}.rsvp-form textarea{resize:vertical}.rsvp-form .primary{width:100%}.form-note{font-size:9px;line-height:1.7;color:#958779;margin-bottom:0}.wish-list{text-align:left}.wish-item{padding:18px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.wish-item h4{font:600 18px var(--serif);margin:0 0 5px}.wish-item small{font-size:9px;color:var(--accent)}.wish-item p{font-size:11px;margin:7px 0}.closing{padding-top:80px;padding-bottom:140px}.closing-portrait{width:220px;height:220px;margin:0 auto 35px;border-radius:50%;border:1px solid var(--line);padding:5px}.closing-portrait img{width:100%;height:100%;object-fit:cover;border-radius:50%}.closing>p:not(.footer-label):not(.demo-caption){font-size:12px;line-height:2}.closing-greeting{color:var(--accent);margin:25px 0 10px}.closing .script{font-size:57px}.closing .ornament{margin:20px 0}.footer-label{font-size:8px;letter-spacing:3px}.closing .demo-caption{margin-top:10px}.bottom-nav{position:fixed;right:43px;bottom:max(17px,env(safe-area-inset-bottom));z-index:20;display:flex;width:434px;justify-content:space-around;padding:10px 13px;border:1px solid #e8ded3;background:#fffdf8ed;backdrop-filter:blur(12px);border-radius:20px;box-shadow:0 5px 25px #59442a20}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#ae9783;gap:4px;width:58px;padding:7px 0;border-radius:11px;transition:background .3s,color .3s}.bottom-nav a.active{background:#ad8b73;color:white}.bottom-nav svg{width:20px;height:20px}.bottom-nav span{font-size:7px;letter-spacing:.3px}.music-toggle{position:fixed;z-index:21;right:19px;bottom:108px;border:1px solid #fff;background:#b5947b;color:#fff;width:37px;height:37px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #5a412d24}.music-toggle.playing svg{animation:musicPulse 3s infinite}.music-state{position:absolute;bottom:4px;width:3px;height:3px;border-radius:50%;background:white}.music-toggle:not(.playing):after{content:'';height:23px;width:1px;position:absolute;background:currentColor;transform:rotate(-45deg)}@keyframes musicPulse{50%{transform:rotate(12deg)}}.reveal{opacity:0;transform:translateY(20px);transition:opacity .9s,transform .9s}.reveal.visible{opacity:1;transform:translateY(0)}dialog{padding:0;border:1px solid #e7d8c9;border-radius:9px;max-width:min(90vw,650px);background:#eee6dc;overflow:visible}dialog::backdrop{background:#28211dce;backdrop-filter:blur(6px)}dialog>img{display:block;max-height:82svh;max-width:85vw;border-radius:8px}#close-photo{position:absolute;right:8px;top:8px;width:35px;height:35px;border:0;border-radius:50%;background:#fff9ed;color:#6e5946;font-size:24px}#form-status{font-size:11px;color:#6c7656;margin:12px 0 0}
@media(min-width:1450px){.invitation,.cover,.corners{width:560px}.desktop-story{width:calc(100% - 560px)}.bottom-nav{right:63px}.cover-content{bottom:8svh}}@media(max-width:900px){.desktop-story{display:none}.invitation{margin:auto;width:100%;max-width:520px}.cover,.corners{right:50%;transform:translateX(50%);width:100%;max-width:520px}.cover.opened{transform:translate(50%,-105%)}.bottom-nav{right:50%;transform:translateX(50%);width:min(calc(100% - 52px),434px)}.music-toggle{right:max(16px,calc((100vw - 520px)/2 + 16px))}}@media(max-width:390px){.section{padding-left:31px;padding-right:31px}.corner{width:133px;height:151px}.cover-content{bottom:6svh}.cover .script{font-size:53px}.portrait-frame{width:230px;height:270px}.intro .script{font-size:54px}.intro{padding-top:85px}.rsvp-form{padding:20px}.serif{font-size:41px}}@media(max-height:740px){.cover-content{bottom:38px}.cover .tiny-tag{display:none}.cover-line{margin-bottom:12px}.cover-date{margin-bottom:13px}.cover .script{font-size:52px}.guest-name{margin-bottom:16px}.intro{padding-top:75px}.portrait-frame{width:225px;height:260px}.intro .script{font-size:53px}.scroll-hint{margin-top:23px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
