:root{--bg: #faf7f0;--ink: #6f6a60;--sage: #8fa389;--sand: #a4977f;--taupe: #a09786;--line: #eee7db;--faded: #b3a78f}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;background:var(--bg)}body{font-family:Quicksand,sans-serif;color:var(--ink)}.invite{max-width:480px;margin:0 auto;min-height:100vh;overflow-x:hidden}.script{font-family:Great Vibes,cursive;font-weight:400;color:var(--sage);margin:0}.serif{font-family:Cormorant Garamond,serif}h2.script{font-size:34px}.muted{font-size:14px;color:var(--taupe);line-height:1.7;text-wrap:pretty;margin:10px 0 20px}.tiny{font-size:12px;color:var(--faded);margin:12px 0 0}.btn{display:inline-flex;align-items:center;gap:10px;border:none;cursor:pointer;font-family:Quicksand,sans-serif;font-weight:700;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;padding:15px 30px;border-radius:999px;text-decoration:none;transition:transform .25s ease,box-shadow .25s ease,filter .25s ease}.btn:hover{transform:translateY(-2px);filter:saturate(1.06)}.btn:active{transform:translateY(0) scale(.97)}.btn-sage{background:#dfe8da;color:#5d7355;padding:13px 30px}.btn-sage:hover{box-shadow:0 10px 22px #8fa38959}.btn-mint{background:#cfe6d3;color:#4c6b52}.btn-mint:hover{box-shadow:0 10px 22px #4c6b5247}.btn-rose{background:#eedbdf;color:#94606f}.btn-rose:hover{box-shadow:0 10px 22px #94606f47}.btn[disabled]{opacity:.6;pointer-events:none}.hero{position:relative;padding:0 0 44px;text-align:center;border-bottom:1px solid var(--line)}.floral{width:100%;height:auto;display:block;mix-blend-mode:multiply}.hero-inner{padding:26px 28px 0}.eyebrow{font-size:12px;letter-spacing:3.5px;text-transform:uppercase;color:var(--sand);font-weight:600;line-height:2;text-wrap:pretty;margin:0}.hero-title{font-size:58px;margin:22px 0 4px;line-height:1}.arch{margin:26px auto 0;width:260px;height:330px;border-radius:130px 130px 18px 18px;overflow:hidden;box-shadow:0 10px 30px #8fa38940;border:6px solid #ffffff;background:#f1ece2}.arch img{width:100%;height:100%;object-fit:cover;object-position:60% 20%;display:block;animation:hero-zoom 16s ease-in-out infinite alternate}@keyframes hero-zoom{0%{transform:scale(1)}to{transform:scale(1.06)}}.name{font-size:44px;color:var(--ink);line-height:1.15;margin:0}.arch+.name{margin-top:36px}.amp{font-family:Cormorant Garamond,serif;font-size:24px;color:#c9a9b4;margin:2px 0}.date-row{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:28px}.rule{flex:1;max-width:60px;height:1px;background:#d9cfbf}.day{letter-spacing:3px;font-size:16px;color:var(--ink)}.date-mid{display:flex;flex-direction:column;align-items:center;text-align:center}.small-caps{font-size:11px;letter-spacing:3px;color:var(--sand);font-weight:600}.big{font-size:44px;font-weight:600;color:var(--sage);line-height:1}.countdown{padding:38px 24px 8px;text-align:center}.countdown h2{margin-bottom:18px}.count-row{display:flex;gap:10px;justify-content:center}.count-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 0;width:72px}.count-val{font-size:32px;font-weight:600;color:var(--ink);line-height:1}.count-val.tick{animation:tick .5s ease}@keyframes tick{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.count-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--faded);margin-top:6px}.place{padding:44px 32px 8px;text-align:center}.place-name{font-size:22px;font-weight:600;margin:10px 0 0}.place .muted{margin:6px 0 0}.place .btn{margin-top:18px}.dress{margin:44px 24px 0;background:#fff;border:1px solid var(--line);border-radius:24px;padding:30px 24px;text-align:center}.dress h2{margin-bottom:6px}.dress .muted{margin:0 0 20px}.swatches{display:flex;gap:10px;justify-content:center;margin-bottom:22px}.swatch{width:34px;height:34px;border-radius:50%;border:1px solid;display:inline-block}.swatch.rv{transform:scale(.3)}.swatch.rv.in{transform:scale(1)}.kids{display:inline-block;border-top:1px solid var(--line);padding-top:16px;font-style:italic;font-size:18px;margin:0}.rsvp{padding:48px 28px 8px;text-align:center}.us{padding:48px 24px 0;text-align:center}.us h2{margin-bottom:20px}.collage{position:relative;width:100%;aspect-ratio:3 / 4.5}.collage img{position:absolute;aspect-ratio:3 / 4;object-fit:cover;border-radius:12px;border:5px solid #ffffff;box-shadow:0 8px 22px #6f6a6038;filter:saturate(.72) brightness(1.07) contrast(.9) sepia(.16);transform:rotate(var(--r));transition:transform .9s cubic-bezier(.22,1,.36,1),opacity .9s ease}.collage img.rv{opacity:0;transform:translateY(26px) rotate(0) scale(.92)}.collage img.rv.in{opacity:1;transform:translateY(0) rotate(var(--r)) scale(1)}.arch img,.collage img{cursor:zoom-in}.gallery{padding:48px 24px 20px;text-align:center}.grid{columns:2;column-gap:12px;margin-top:26px;text-align:left}.tile{position:relative;display:inline-block;width:100%;break-inside:avoid;margin-bottom:12px;background:#fff;padding:6px 6px 12px;border-radius:6px;box-shadow:0 8px 22px #6f6a6038;transform:rotate(var(--tilt, 0deg));transition:transform .45s cubic-bezier(.22,1,.36,1);animation:tile-in .6s cubic-bezier(.22,1,.36,1)}.tile:hover{transform:rotate(0) scale(1.03);z-index:2}@keyframes tile-in{0%{opacity:0;transform:translateY(16px) rotate(0) scale(.88)}to{opacity:1;transform:translateY(0) rotate(var(--tilt, 0deg)) scale(1)}}.tile img{width:100%;height:auto;display:block;border-radius:3px;cursor:zoom-in}.tile.uploading{aspect-ratio:1}.tile .rm{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;border:none;cursor:pointer;background:#0006;color:#fff;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center}.tile.uploading:after{content:"";position:absolute;inset:0;margin:auto;width:26px;height:26px;border-radius:50%;border:3px solid rgba(143,163,137,.3);border-top-color:var(--sage);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.foot{text-align:center;padding:34px 0 0;border-top:1px solid var(--line);margin-top:20px}.bye{font-size:40px}.initials{font-size:20px;letter-spacing:4px;color:var(--taupe);margin:10px 0 0}.foot .floral{margin-top:18px}.lightbox{position:fixed;inset:0;z-index:50;background:#26231de0;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .25s ease}@keyframes fade{0%{opacity:0}}.lightbox img{max-width:100%;max-height:92vh;border-radius:14px;box-shadow:0 20px 60px #0006}.lightbox button{position:absolute;top:14px;right:18px;width:40px;height:40px;border-radius:50%;border:none;background:#ffffff26;color:#fff;font-size:22px;cursor:pointer}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:60;background:#6f6a60;color:#faf7f0;font-family:Quicksand,sans-serif;font-size:13px;padding:12px 20px;border-radius:999px;box-shadow:0 10px 26px #00000040;animation:toast-in .3s ease;max-width:88vw;text-align:center}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}.rv{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,1,.36,1);transition-delay:var(--d, 0ms)}.rv.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}
