:root{--cream:#fdfdfd;--sky:#c9deed;--ink:#606aad;--butter:#fcde85;--gold:#f6cc50;--ink-soft:#606aada6}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Quicksand,sans-serif;overflow-x:hidden}.script{font-family:Caveat,cursive}.serif{font-family:Fraunces,serif}.hero{background:var(--cream);flex-direction:column;justify-content:flex-start;align-items:center;min-height:100svh;padding:8vh 6vw 0;display:flex;position:relative;overflow:hidden}.sun-wrap{width:120px;height:120px;margin-bottom:1.2rem;animation:1s ease-in-out infinite sunPulse;position:relative}@keyframes sunPulse{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(1.05)rotate(8deg)}}.eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--ink);opacity:.7;margin-bottom:.6rem;font-size:.68rem;font-weight:700}.headline{text-align:center;color:var(--ink);text-shadow:2px 2px #fcde8580;font-size:clamp(3.2rem,11vw,7rem);font-weight:700;line-height:.95}.headline .name{font-size:clamp(2.6rem,8vw,5rem);display:block}.subhead{text-align:center;max-width:520px;color:var(--ink);opacity:.85;margin-top:.8rem;font-family:Fraunces,serif;font-size:clamp(1rem,2.4vw,1.25rem);font-style:italic}.detail-strip{border-top:1.5px dashed #606aad73;border-bottom:1.5px dashed #606aad73;flex-wrap:wrap;justify-content:center;margin-top:2.8rem;display:flex}.detail{color:var(--ink);border-left:1.5px dashed #606aad73;align-items:center;gap:.55rem;padding:1rem 1.6rem;font-size:.92rem;font-weight:600;display:flex}.detail:first-child{border-left:none}.detail svg{flex-shrink:0;width:22px;height:22px}.detail .label{letter-spacing:.12em;text-transform:uppercase;opacity:.55;font-size:.62rem;font-weight:700;display:block}.wave-divider{width:200%;height:100%;display:block;position:absolute;bottom:0;left:0}.wave-back{animation:8s linear infinite waveScroll}.wave-front{animation:5s linear infinite waveScroll}@keyframes waveScroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.scatter{opacity:.9;position:absolute}.info-section{background:var(--sky);text-align:center;padding:5rem 6vw 6rem;position:relative}.info-section h2{color:var(--ink);margin-bottom:2.5rem;font-family:Caveat,cursive;font-size:clamp(2.4rem,6vw,3.4rem)}.info-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1.6rem;max-width:960px;margin:0 auto;display:grid}.info-card{background:var(--cream);transform:rotate(var(--tilt,-1.5deg));border:1.5px solid #606aad59;border-radius:2px;padding:2rem 1.2rem 1.6rem;position:relative}.info-card:first-child{--tilt:-2deg}.info-card:nth-child(2){--tilt:1.5deg}.info-card:nth-child(3){--tilt:-1deg}.info-card:nth-child(4){--tilt:2deg}.info-card:before{content:"";background:var(--butter);opacity:.85;width:52px;height:20px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-3deg)}.info-card svg{width:38px;height:38px;margin-bottom:.7rem}.info-card h3{color:var(--ink);margin-bottom:.35rem;font-family:Fraunces,serif;font-size:1.05rem}.info-card p{color:var(--ink-soft);font-size:.88rem;font-weight:500;line-height:1.4}.info-card{cursor:pointer;transition:transform .25s,box-shadow .25s}.info-card:hover,.info-card:focus-visible{transform:rotate(0)translateY(-4px);box-shadow:0 12px 22px #606aad2e}.info-card:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.info-card .tap-hint{letter-spacing:.08em;text-transform:uppercase;color:var(--ink);opacity:.5;margin-top:.6rem;font-size:.68rem;font-weight:700;display:block}.gallery-section{background:var(--cream);text-align:center;position:relative}.gallery-edge{width:100%;height:40px;margin-top:-1px;display:block}.gallery-inner{padding:3.5rem 6vw 6rem}.gallery-section h2{color:var(--ink);margin-bottom:.4rem;font-family:Caveat,cursive;font-size:clamp(2.4rem,6vw,3.4rem)}.gallery-sub{color:var(--ink-soft);margin-bottom:3rem;font-family:Fraunces,serif;font-size:.98rem;font-style:italic}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-items:start;gap:2rem 1.6rem;max-width:1040px;margin:0 auto;display:grid}.photo{cursor:pointer;width:100%;font:inherit;color:inherit;text-align:center;transform:rotate(var(--tilt,-1.5deg));background:#fffef8;border:1.5px solid #606aad59;border-radius:2px;padding:10px 10px 34px;transition:transform .25s,box-shadow .25s;display:block;position:relative}.photo:nth-child(5n+1){--tilt:-2.2deg}.photo:nth-child(5n+2){--tilt:1.4deg}.photo:nth-child(5n+3){--tilt:-.8deg}.photo:nth-child(5n+4){--tilt:2deg}.photo:nth-child(5n+5){--tilt:-1.4deg}.photo:before{content:"";background:var(--butter);opacity:.85;width:46px;height:18px;transform:translateX(-50%) rotate(var(--tape,-3deg));position:absolute;top:-9px;left:50%}.photo:nth-child(2n):before{--tape:4deg;background:var(--sky)}.photo:hover,.photo:focus-visible{transform:rotate(0)translateY(-4px);box-shadow:0 12px 22px #606aad2e}.photo:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.photo-img{aspect-ratio:1;background:var(--sky);width:100%;display:block;overflow:hidden}.photo:nth-child(3n+1) .photo-img{aspect-ratio:4/5}.photo-img img,.photo-img svg{object-fit:cover;width:100%;height:100%;display:block}.photo-cap{color:var(--ink);font-family:Caveat,cursive;font-size:1.15rem;line-height:1;position:absolute;bottom:6px;left:0;right:0}@media (width>=700px){.photo:nth-child(3n+2){margin-top:1.6rem}}@media (width<=480px){.gallery-grid{grid-template-columns:repeat(2,1fr);gap:1.6rem 1rem}}.photo-frame{text-align:center;opacity:0;background:#fffef8;border:1.5px solid #606aad66;width:100%;max-width:560px;max-height:92vh;padding:2.6rem 1.2rem 1.2rem;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .3s;position:relative;overflow-y:auto;transform:scale(.92)translateY(16px)}.overlay.show .photo-frame{opacity:1;transform:scale(1)translateY(0)}.photo-stage{background:var(--sky)}.photo-stage img,.photo-stage svg{object-fit:contain;width:100%;max-height:68vh;display:block}.photo-stage svg{aspect-ratio:1}.photo-caption{min-height:1.6rem;color:var(--ink);margin-top:.8rem;font-family:Caveat,cursive;font-size:1.6rem}.photo-nav{justify-content:space-between;align-items:center;margin-top:.6rem;display:flex}.photo-nav button{border:1.5px solid var(--ink);background:var(--cream);color:var(--ink);cursor:pointer;border-radius:3px;padding:.5rem 1.1rem;font-family:Quicksand,sans-serif;font-size:1rem;font-weight:700;transition:all .2s}.photo-nav button:hover{background:var(--ink);color:#fffef8}.photo-count{letter-spacing:.1em;color:var(--ink-soft);font-size:.78rem;font-weight:700}.rsvp-scene{background:var(--cream);text-align:center;padding:5rem 6vw 0;position:relative;overflow:hidden}.rsvp-scene h2{margin-bottom:.4rem;font-family:Caveat,cursive;font-size:clamp(2.4rem,6vw,3.4rem)}.rsvp-scene .instruction{opacity:.75;margin-bottom:1.5rem;font-family:Fraunces,serif;font-size:.98rem;font-style:italic}.bottle-stage{max-width:480px;height:420px;margin:0 auto;position:relative}.bottle-btn{cursor:pointer;filter:drop-shadow(0 12px 14px #606aad40);background:0 0;border:none;padding:0;animation:3.6s ease-in-out infinite bob;position:absolute;bottom:150px;left:50%;transform:translate(-50%)}.bottle-btn:focus-visible{outline:3px solid var(--ink);outline-offset:6px;border-radius:12px}@keyframes bob{0%,to{transform:translate(-50%)translateY(0)rotate(-3deg)}50%{transform:translate(-50%)translateY(-14px)rotate(3deg)}}.bottle-btn.uncorking{animation:.5s bottleShake}@keyframes bottleShake{0%{transform:translate(-50%)rotate(-3deg)}20%{transform:translate(-50%)rotate(6deg)}45%{transform:translate(-50%)rotate(-8deg)}70%{transform:translate(-50%)rotate(4deg)}to{transform:translate(-50%)rotate(0)}}#cork{transform-origin:65px 15px}.bottle-btn.uncorking #cork{animation:.55s forwards corkPop}@keyframes corkPop{0%{opacity:1;transform:translate(0)rotate(0)}55%{opacity:1;transform:translate(10px,-40px)rotate(45deg)}to{opacity:0;transform:translate(16px,-58px)rotate(70deg)}}.bottle-hint{letter-spacing:.06em;text-transform:uppercase;color:var(--ink);opacity:.55;margin-top:.4rem;font-size:.78rem;font-weight:600;display:inline-block}.waterline{height:170px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.waterline svg{width:200%;height:100%;display:block;position:absolute;bottom:0;left:0}.waterline .wl-back{animation:8.5s linear infinite waveScroll}.waterline .wl-front{animation:5.3s linear infinite waveScroll}.overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;opacity:0;visibility:hidden;pointer-events:none;background:#606aad59;justify-content:center;align-items:center;padding:5vw;transition:opacity .35s,visibility 0s linear .35s;display:flex;position:fixed;inset:0}.overlay.show{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}.note-card{transform-origin:50% 100%;opacity:0;clip-path:polygon(0% 2%,4% 0%,9% 1.5%,14% 0%,19% 1.5%,24% 0%,29% 1.5%,34% 0%,39% 1.5%,44% 0%,49% 1.5%,54% 0%,59% 1.5%,64% 0%,69% 1.5%,74% 0%,79% 1.5%,84% 0%,89% 1.5%,94% 0%,100% 2%,100% 100%,0% 100%);background:#fffef8;border:1.5px solid #606aad66;width:100%;max-width:440px;max-height:90vh;padding:2.6rem 2.2rem 2rem;transition:transform .6s cubic-bezier(.19,1,.22,1),opacity .35s 50ms;position:relative;overflow-y:auto;transform:scale(.15)translateY(50px)}.overlay.show .note-card{opacity:1;transform:scale(1)translateY(0)}.note-close{cursor:pointer;color:var(--ink);opacity:.5;background:0 0;border:none;font-family:Quicksand,sans-serif;font-size:1.4rem;line-height:1;position:absolute;top:14px;right:16px}.note-close:hover{opacity:1}.note-card h3{color:var(--ink);text-align:center;margin-bottom:.2rem;font-family:Caveat,cursive;font-size:2.6rem}.note-card .note-sub{text-align:center;color:var(--ink-soft);margin-bottom:1.6rem;font-family:Fraunces,serif;font-size:.85rem;font-style:italic}.card-modal-body{text-align:left;margin-top:1.2rem}.card-modal-body p{color:var(--ink);margin-bottom:.9rem;font-size:.92rem;line-height:1.55}.card-modal-body p:last-child{margin-bottom:0}.map-link{color:var(--ink);border-bottom:1.5px solid var(--ink);margin-top:.2rem;font-family:Fraunces,serif;font-size:.92rem;font-style:italic;font-weight:600;text-decoration:none;display:inline-block}.qr-code{border:1.5px dashed #606aad66;justify-content:center;margin:.5rem 0 1rem;padding:1rem;display:flex}.qr-code img{background:#fff;width:200px;max-width:100%;height:auto;display:block}.attire-ideas-label{text-align:center;margin-top:1.4rem;font-family:Caveat,cursive;font-size:1.6rem!important}.attire-ideas{border:1.5px dashed #606aad66;margin:.4rem 0 .6rem;padding:.5rem;display:block}.attire-ideas img{width:100%;height:auto;display:block}.qr-note a{color:var(--ink);font-weight:700}.qr-note{opacity:.7;text-align:center;font-size:.78rem!important}.field{text-align:left;margin-bottom:1.1rem}.field label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink);opacity:.6;margin-bottom:.35rem;font-size:.7rem;font-weight:700;display:block}.field input,.field textarea,.field select{border:none;border-bottom:2px solid var(--sky);width:100%;color:var(--ink);background:0 0;padding:.4rem .1rem;font-family:Quicksand,sans-serif;font-size:.95rem;font-weight:600}.field input:focus,.field textarea:focus,.field select:focus{border-bottom-color:var(--ink);outline:none}.field textarea{resize:vertical;min-height:60px}.attend-toggle{gap:.6rem;display:flex}.attend-toggle button{border:1.5px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;border-radius:3px;flex:1;padding:.6rem;font-family:Quicksand,sans-serif;font-size:.85rem;font-weight:700;transition:all .2s}.attend-toggle button.active{background:var(--ink);color:#fffef8}.send-btn{border:1.5px solid var(--ink);background:var(--cream);width:100%;color:var(--ink);letter-spacing:.01em;cursor:pointer;border-radius:3px;margin-top:1rem;padding:.9rem;font-family:Fraunces,serif;font-size:1rem;font-style:italic;font-weight:600;transition:all .2s;position:relative}.send-btn:after{content:" →";font-style:normal}.send-btn:hover:not(:disabled){background:var(--ink);color:#fffef8}.send-btn:disabled{opacity:.45;cursor:default}.guest-options{background:#fffef8;border:1.5px solid #606aad66;border-radius:3px;margin-top:.4rem;list-style:none}.guest-option{cursor:pointer;flex-direction:column;padding:.55rem .7rem;font-size:.95rem;font-weight:600;display:flex}.guest-option+.guest-option{border-top:1px solid #606aad26}.guest-option small{color:var(--ink-soft);font-family:Fraunces,serif;font-size:.78rem;font-style:italic;font-weight:400}.guest-option.active{background:var(--sky)}.no-match,.rsvp-status{color:var(--ink-soft);text-align:center;margin-top:.6rem;font-family:Fraunces,serif;font-size:.82rem;font-style:italic;line-height:1.45}.rsvp-status{margin:0 0 1rem}.group-head{flex-direction:column;align-items:center;gap:.15rem;margin-bottom:1.2rem;display:flex}.group-label{letter-spacing:.08em;text-transform:uppercase;opacity:.6;font-size:.7rem;font-weight:700}.group-name{font-family:Caveat,cursive;font-size:1.9rem;line-height:1.1}.link-btn{color:var(--ink);cursor:pointer;background:0 0;border:none;border-bottom:1px solid;padding:.2rem;font-family:Fraunces,serif;font-size:.85rem;font-style:italic}.thankyou .link-btn{margin-top:1.1rem}.member-list{border:none}.member-list legend{letter-spacing:.08em;text-transform:uppercase;opacity:.6;margin-bottom:.35rem;font-size:.7rem;font-weight:700}.member-row{border-bottom:2px solid var(--sky);justify-content:space-between;align-items:center;gap:.8rem;padding:.5rem 0;display:flex}.member-name{font-size:.95rem;font-weight:600}.member-name small{opacity:.6;font-weight:500}.attend-toggle.small{flex:none;gap:.4rem}.attend-toggle.small button{flex:none;min-width:3.6rem;padding:.4rem .6rem;font-size:.8rem}.sun-loader{outline:none;flex-direction:column;justify-content:center;align-items:center;gap:1.2rem;min-height:260px;display:flex}.sun-loader-sun{animation:1s ease-in-out infinite sunPulse}.sun-loader-sun svg{animation:3.5s linear infinite sunSpin;display:block}@keyframes sunSpin{to{transform:rotate(360deg)}}.sun-loader p{color:var(--ink-soft);text-align:center;font-family:Fraunces,serif;font-size:.92rem;font-style:italic}.thankyou{text-align:center;padding:1rem 0 .5rem}.thankyou svg{width:56px;height:56px;margin-bottom:1rem}.thankyou h3{color:var(--ink);margin-bottom:.4rem;font-family:Caveat,cursive;font-size:2.4rem}.thankyou p{color:var(--ink-soft);font-family:Fraunces,serif;font-size:.92rem;font-style:italic}.hidden{display:none}footer{background:var(--sky);text-align:center;padding:3rem 6vw 3.5rem}footer .sign{color:var(--ink);font-family:Caveat,cursive;font-size:2rem}footer .fine{color:var(--ink-soft);letter-spacing:.04em;margin-top:.5rem;font-size:.78rem;font-weight:600}@media (prefers-reduced-motion:reduce){.sun-wrap,.sun-loader-sun svg,.bottle-btn,.wave-back,.wave-front,.wl-back,.wl-front{animation:none!important}.parallax-el{transform:none!important}}
