:root{--paper:#f5eee4;--ink:#705647;--soft:#8e7865;--line:#b5a08a;--linen:#e7dccd}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--linen);font-family:Heebo,Arial,sans-serif;-webkit-font-smoothing:antialiased}body:before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.35' d='M0 0h180v180H0z'/%3E%3C/svg%3E");z-index:-1}a{color:inherit}.defs{position:absolute;width:0;height:0;overflow:hidden}.wrap{max-width:1100px;margin:auto;padding:0 30px}.top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 0}.brand{font:27px Georgia,serif;direction:ltr;white-space:nowrap;letter-spacing:3px}.actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.btn{min-height:48px;display:inline-flex;justify-content:center;align-items:center;padding:13px 25px;background:var(--ink);border:1px solid var(--ink);color:#fffaf1;text-decoration:none;font-size:13px;border-radius:2px;transition:background .2s,transform .2s}.btn:hover{background:#5c4438;transform:translateY(-2px)}.btn.secondary{color:var(--ink);background:#f8f2e8aa;border-color:#a8927d}.btn.secondary:hover{background:#fff8ed}.btn:focus-visible,a:focus-visible{outline:3px solid #8d7154;outline-offset:5px}.paper{position:relative;background:var(--paper);box-shadow:0 18px 50px #66543f16,0 2px 5px #66543f13}.framed:before,.framed:after{content:'';position:absolute;pointer-events:none;border:1px solid var(--line);inset:19px}.framed:after{inset:24px;border-color:#c7b7a4}.corner{position:absolute;width:76px;height:76px;color:#9b866e;z-index:1;background:var(--paper)}.tl{top:9px;left:9px}.tr{top:9px;right:9px;transform:rotate(90deg)}.br{bottom:9px;right:9px;transform:rotate(180deg)}.bl{bottom:9px;left:9px;transform:rotate(270deg)}.invitation{max-width:850px;margin:12px auto 0;text-align:center;padding:65px 65px 57px}.verse{font:400 clamp(16px,2.3vw,21px)/1.7 'Frank Ruhl Libre',serif;margin:5px 0 28px;color:#8d7c60}.monogram{font:400 59px/1.2 Georgia,serif;letter-spacing:6px;direction:ltr;margin:0 0 24px}.invitation h1{font:400 clamp(48px,7vw,82px)/1.25 'Frank Ruhl Libre',serif;letter-spacing:3px;margin:0 0 24px;font-weight:400}.amp{font:400 .77em Georgia,serif;margin:0 13px}.intro{font:400 23px/1.65 'Frank Ruhl Libre',serif;margin:0 auto;max-width:500px}.day{font:400 18px 'Frank Ruhl Libre',serif;margin:24px 0 14px}.date{display:flex;gap:25px;justify-content:center;align-items:center;direction:ltr;font:400 44px Georgia,serif;letter-spacing:6px}.date i{display:block;height:49px;width:1px;background:#a18b74;transform:rotate(4deg)}.venue{font:400 21px/1.7 'Frank Ruhl Libre',serif;margin:24px 0 0}.venue small{display:block;font:13px Heebo,Arial;margin-top:2px}.schedule{display:flex;justify-content:center;gap:44px;margin-top:25px}.schedule>div{min-width:125px}.schedule>div+div{border-right:1px solid #bcaa94;padding-right:44px}.schedule svg{width:41px;height:41px;display:block;margin:0 auto 7px;color:#a08a70}.schedule time{font:23px Georgia,serif;display:block;margin-bottom:5px}.schedule span{font:18px 'Frank Ruhl Libre',serif}.flowers{position:fixed;width:310px;height:510px;right:-80px;top:85px;z-index:-1;opacity:.72;transform:rotate(14deg);pointer-events:none}.flowers.second{right:auto;left:-110px;top:auto;bottom:-50px;transform:rotate(190deg);opacity:.47}.memories{padding:60px 0 0;max-width:980px;margin:auto}.section-head{text-align:center;margin-bottom:26px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--soft);margin:0 0 12px}.section-head h2{font:400 36px/1.35 'Frank Ruhl Libre',serif;margin:0}.cards{display:grid;grid-template-columns:1fr 1fr;gap:25px}.card{padding:40px 38px 36px;text-align:center;display:flex;flex-direction:column;align-items:center}.card:before{inset:10px}.card:after{inset:14px}.card svg.icon{height:36px;width:36px;color:#a08a70;margin-bottom:14px}.card h3{font:400 31px 'Frank Ruhl Libre',serif;margin:0 0 13px}.card p{font-size:13px;line-height:1.95;margin:0 0 23px;color:#806b59;max-width:340px}.card .btn{margin-top:auto}.closing{text-align:center;padding:57px 0 35px}.closing h2{font:400 31px/1.5 'Frank Ruhl Libre',serif;margin:0 0 12px}.closing p{font-size:12px;line-height:1.9;margin:0 0 23px;color:#85715f}.bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #bdad99;padding:20px 0 25px;font-size:10px;color:#8c7865}.bottom span:last-child{font:13px Georgia,serif;letter-spacing:2px;direction:ltr}
@media(min-width:1000px){.invitation{transform:rotate(-.6deg)}.card:first-child{transform:rotate(.5deg)}.card:last-child{transform:rotate(-.6deg)}}
@media(max-width:620px){.wrap{padding:0 16px}.top{flex-direction:column;padding:20px 0 15px;gap:15px}.top .actions{width:100%;gap:8px;flex-wrap:nowrap}.top .btn{font-size:11px;padding:11px 10px;flex:1;white-space:nowrap}.invitation{padding:53px 29px 46px;margin-top:4px}.framed:before{inset:12px}.framed:after{inset:17px}.corner{width:56px;height:56px}.tl,.tr{top:4px}.tl,.bl{left:4px}.tr,.br{right:4px}.bl,.br{bottom:4px}.verse{font-size:15px;margin:0 0 22px}.monogram{font-size:43px;letter-spacing:4px;margin-bottom:23px}.invitation h1{font-size:45px;letter-spacing:1px;margin-bottom:20px;white-space:nowrap}.amp{margin:0 6px}.intro{font-size:20px}.day{font-size:16px;margin-top:21px}.date{font-size:35px;gap:18px;letter-spacing:4px}.date i{height:36px}.venue{font-size:20px}.venue small{font-size:12px}.schedule{gap:23px;margin-top:23px}.schedule>div{min-width:98px}.schedule>div+div{padding-right:23px}.schedule span{font-size:16px}.schedule time{font-size:21px}.flowers{right:-130px;width:260px;opacity:.45}.memories{padding-top:38px}.section-head h2{font-size:29px}.cards{grid-template-columns:1fr;gap:18px}.card{padding:35px 30px}.card:before{inset:10px}.card:after{inset:14px}.closing{padding:39px 5px 30px}.closing h2{font-size:28px}.closing .actions{flex-direction:column}.bottom{font-size:9px}.bottom span:last-child{font-size:11px}}
@media(max-width:360px){.invitation h1{font-size:39px}.invitation{padding-left:25px;padding-right:25px}.top .btn{font-size:10px}.date{font-size:31px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.btn{transition:none}}
.top{justify-content:center;padding:20px 0 12px}.invitation{padding-top:48px;padding-bottom:45px}.invitation .verse{margin-bottom:18px}.invitation h1{margin-bottom:12px}.invitation .date{font-size:29px;gap:18px;letter-spacing:4px;margin-bottom:22px}.invitation .date i{height:30px}.invitation .intro{font-size:21px}.hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:27px auto 0;max-width:640px}.hero-actions .btn{flex-direction:column;gap:7px;padding:22px 15px;min-height:100px;box-shadow:0 5px 13px #70564717}.hero-actions strong{font-size:18px;font-weight:500}.hero-actions small{font-size:11px;font-weight:400}.hero-actions .secondary{border:2px solid #705647;background:#e6d6c0;color:#594335}.closing .btn{min-height:56px;font-size:15px}@media(max-width:620px){.top{padding:15px 0 10px}.brand{font-size:24px}.invitation{padding-top:42px;padding-bottom:35px}.invitation .verse{font-size:14px;margin-bottom:15px}.invitation h1{font-size:44px}.invitation .date{font-size:25px;gap:15px;margin-bottom:17px}.invitation .date i{height:25px}.invitation .intro{font-size:18px}.hero-actions{grid-template-columns:1fr;margin-top:22px;gap:12px}.hero-actions .btn{min-height:85px;padding:16px 10px}.hero-actions strong{font-size:17px}.hero-actions small{font-size:10px}.memories{padding-top:32px}}@media(max-width:360px){.invitation h1{font-size:38px}.hero-actions strong{font-size:15px}}
.invitation{padding-bottom:88px}@media(max-width:620px){.invitation{padding-bottom:65px}}
.couple-humor{max-width:900px;margin:0 auto;padding-top:45px}.couple-notes{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid #bdaa93;border-bottom:1px solid #bdaa93}.couple-notes article{text-align:center;padding:27px 32px}.couple-notes article+article{border-right:1px solid #bdaa93}.note-label{font-size:11px;letter-spacing:1px;color:#8b7561;margin:0 0 12px}.couple-notes h3{font:400 28px/1.35 'Frank Ruhl Libre',serif;margin:0 0 10px}.couple-notes article>p:last-child{font-size:13px;line-height:1.9;margin:0 auto;max-width:280px}.couple-punchline{text-align:center;font:400 25px/1.6 'Frank Ruhl Libre',serif;margin:27px 0}.dance-card{text-align:center;padding:32px 28px;border:1px solid #bdaa93}.dance-card h3{font:400 30px/1.3 'Frank Ruhl Libre',serif;margin:0 0 17px}#dance-line{font:400 23px/1.65 'Frank Ruhl Libre',serif;min-height:78px;display:flex;align-items:center;justify-content:center;max-width:590px;margin:0 auto 18px}#dance-excuse{font-family:Heebo,Arial,sans-serif;cursor:pointer;min-width:240px}#dance-excuse[hidden]{display:none}.dance-fineprint{font-size:10px;line-height:1.8;color:#88735e;margin:18px 0 0}.site-joke{text-align:center;font-size:11px;line-height:1.8;color:#806a56;margin:0 auto 23px;max-width:560px}.hero-actions small{line-height:1.7;text-align:center}@media(max-width:620px){.couple-humor{padding-top:32px}.couple-notes{grid-template-columns:1fr}.couple-notes article{padding:23px 19px}.couple-notes article+article{border-right:0;border-top:1px solid #c6b7a5}.couple-notes h3{font-size:27px}.couple-punchline{font-size:23px}.dance-card{padding:27px 19px}.dance-card h3{font-size:27px}#dance-line{font-size:21px;min-height:104px}#dance-excuse{min-width:0;width:100%;font-size:12px;padding:14px 8px}.site-joke{font-size:10px;padding:0 10px}.hero-actions small{font-size:10px;max-width:250px}}
