*{box-sizing:border-box}html{scroll-behavior:smooth;background:#e9e3d6}body{margin:0;color:#464638;font-family:'Cormorant Garamond',Georgia,serif}body.sealed{overflow:hidden}button,input,textarea,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid #a78d65;outline-offset:5px}button{color:inherit}main{width:min(100%,560px);margin:auto;box-shadow:0 0 75px #5b514422;overflow:hidden;background:#f5f0e7}section,footer{position:relative;text-align:center;isolation:isolate}section{padding:75px 38px}h1,h2,h3,p{margin:0}h2{font-size:47px;font-weight:400;line-height:1.05;margin:14px 0 23px}h2 i{font-weight:400}h3{font-size:24px;font-weight:500}p{font-size:18px;line-height:1.65}.eyebrow{font:9px/1.7 Georgia;letter-spacing:2.4px;text-transform:uppercase}.script,.small-script,.signature{font-family:'Italianno',cursive;font-size:39px;line-height:1}.signature{font-size:49px}.small-script{font-size:30px}.paper{background-color:#f5f0e7;background-image:repeating-linear-gradient(123deg,#c4a77e06 0 1px,transparent 1px 4px)}.hero{height:100svh;min-height:780px;max-height:1100px;background:url(coast.webp?v=20261115c) center/cover;padding:0}.hero-type{position:absolute;top:26%;left:14%;right:14%;text-align:center}.hero .eyebrow{font-size:8px;letter-spacing:2px}.hero h1{font-size:79px;font-weight:400;line-height:.91;margin:25px 0 23px}.hero h1 span{display:block;font-family:'Italianno',cursive;font-size:36px;line-height:.9;margin:8px 0}.hero .invite{font-size:16px;line-height:1.55}.hero .date{font-size:13px;letter-spacing:2px;margin:22px 0 8px}.place{font:8px Georgia;letter-spacing:2.5px}.quiet{border:0;background:none;font-size:12px;padding:20px 0 0;margin-top:12px;font-style:italic}.quiet span{display:block;margin-top:6px;font-style:normal;font-size:18px}.birds{position:absolute;top:56%;right:11%;font-size:32px;opacity:.45;animation:birds 7s ease-in-out infinite alternate}.countdown{padding-bottom:55px}.floral-arch{width:100%;height:355px;position:relative;margin:35px auto 0;max-width:370px}.arch-outline{position:absolute;inset:0 22px;border:1px solid #a3936e;border-radius:48% 48% 0 0;box-shadow:0 0 0 7px #f5f0e7,0 0 0 8px #b0a17e}.flowers{position:absolute;z-index:2;width:148px;height:285px;background:url(blossoms.webp?v=20261115c) left top/510px 285px;mix-blend-mode:multiply;top:-15px;pointer-events:none}.fleft{left:-26px;transform:rotate(-9deg)}.fright{right:-26px;background-position:right top;transform:rotate(9deg) scaleX(-1)}.count-inner{position:absolute;inset:100px 26px 10px}.count-inner .script{font-size:34px}.count{display:flex;align-items:center;justify-content:center;gap:12px;margin:20px 0}.count div{display:flex;flex-direction:column;min-width:45px;gap:4px}.count b{font-size:34px;line-height:1;font-weight:400}.count small{font:7px Georgia;letter-spacing:1.6px}.count em{font-style:normal;opacity:.5;font-size:20px}.count-inner>p{font-size:16px}.sprig{display:block;font-size:36px;margin:15px;color:#8d966d}.dark{background:#2e403a;color:#e9e2d1}.celebration{padding-top:65px;padding-bottom:180px;min-height:760px}.scallop{position:relative;padding:45px 20px 35px;border:1px solid #9ea68d;margin:30px 0 0;outline:1px solid #9ea68d66;outline-offset:7px;border-radius:25% 25% 8px 8px/7% 7% 8px 8px}.scallop:before,.scallop:after{position:absolute;content:'❦';font-size:22px;color:#aeb89b;left:calc(50% - 10px);top:-18px;background:#2e403a;padding:2px}.scallop:after{top:auto;bottom:-18px;transform:rotate(180deg)}.celebration h2{font-size:43px}.celebration .rule{color:#b3bc9d;font-size:24px;margin:15px 0}.celebration h3{font-size:24px;margin:12px 0 7px}.celebration .venue{font-family:'Italianno';font-size:41px;font-weight:400;margin-top:25px}.celebration p{font-size:16px}.outline{background:transparent;border:1px solid #a6a58b;min-height:43px;padding:10px 21px;font-size:14px;letter-spacing:.3px;margin-top:24px}.dark .outline{border-color:#c0c4aa;color:#ede6d3}.sample{font:7px/1.6 Georgia!important;letter-spacing:1px;opacity:.58;margin-top:13px}.paint-bottom{position:absolute;bottom:-1px;left:0;right:0;height:160px;background:linear-gradient(#2e403a,transparent 55%),url(village.webp?v=20261115c) center 48%/cover;mix-blend-mode:luminosity;opacity:.8;z-index:-1}.story{padding-bottom:30px}.story .script{display:block;font-size:28px;margin:-8px 0 28px}.story>p:not(.eyebrow){margin:17px auto;max-width:370px}.story .coast-vignette{height:225px;background:url(village.webp?v=20261115c) center/cover;mask-image:linear-gradient(transparent,#000 22% 80%,transparent);margin:30px -38px -40px}.story .signature{position:relative;margin:35px 0 5px}.day{padding-top:55px}.intro{font-size:17px;opacity:.8}.timeline{position:relative;margin:45px auto 0;max-width:340px;display:grid;grid-template-columns:1fr 1fr;gap:35px 20px}.timeline:before{content:'';position:absolute;left:50%;top:8px;bottom:20px;border-left:1px solid #c8c2aa}.timeline article{position:relative}.timeline time{display:block;font:9px Georgia;letter-spacing:1.4px;margin-bottom:10px}.timeline h3{font-size:23px;margin:5px 0}.timeline p{font-size:15px;line-height:1.4}.icon{height:65px;font-size:45px;font-weight:400;color:#8e9779;margin-bottom:10px}.dress{padding-top:45px;padding-bottom:70px}.dress .scallop{padding-top:40px;margin:15px 0}.dress h2{font-size:43px}.dress .script{font-size:47px}.fashion{width:220px;max-width:100%;margin:25px auto 15px;color:#d4d7bc}.fashion svg{width:100%;height:auto}.dress p{font-size:16px}.dress .eyebrow{font-size:8px}.palette{display:flex;justify-content:center;gap:9px;margin-top:25px}.palette i{width:19px;height:19px;border-radius:50%;background:#171e1a}.palette i:nth-child(2){background:#a4ac91}.palette i:nth-child(3){background:#d3c6b1}.palette i:nth-child(4){background:#8c6569}.stay{padding-top:70px}.hotels{display:flex;flex-direction:column;gap:25px;margin-top:35px}.hotel{border:1px solid #c4bea9;background:#eee9df;text-align:left}.hotel-picture{height:160px;background-image:url(coast.webp?v=20261115c);background-size:cover}.hotel-picture.first{background-position:15% 91%;background-size:160%}.hotel-picture.second{background-position:0 78%;background-size:190%;filter:sepia(.2)}.hotel-copy{padding:22px 23px}.hotel h3{font-size:26px}.hotel p{font-size:16px;margin:5px 0}.hotel .sample{display:block}.textlink{border:0;border-bottom:1px solid #b8b09c;background:none;padding:8px 0;font-size:13px;margin-top:10px}.gift{padding-top:0;padding-bottom:80px}.gift p{font-size:17px;margin:18px auto;max-width:360px}.rsvp h2{font-size:43px}.rsvp>p{font-size:16px}form{max-width:350px;margin:35px auto 0;text-align:left}form label{display:flex;flex-direction:column;font-size:15px;gap:8px;margin-bottom:20px}input,select,textarea{border:0;border-bottom:1px solid #bbc0a477;color:#ece6d7;background:#eff6d808;padding:10px;font-size:17px;border-radius:0;width:100%;resize:vertical}option{color:#263a2d}input::placeholder,textarea::placeholder{color:#eee8d97a}form .outline{width:100%;margin-top:3px}#reply-status{font-size:15px;margin:15px 0;line-height:1.4}footer{padding:65px 35px 35px}footer h2{font-family:'Italianno';font-size:57px;margin:0 0 8px}footer>p{font-size:16px}details{font-size:11px;line-height:1.7;opacity:.55;margin-top:30px}details p{font-size:12px;line-height:1.5;margin-top:10px}summary{cursor:pointer}.reveal{opacity:0;transform:translateY(18px);transition:opacity 1s,transform 1s}.reveal.visible{opacity:1;transform:none}#wrap{position:fixed;inset:0 auto 0 50%;transform:translateX(-50%);width:min(100%,560px);z-index:50;perspective:1600px;transition:visibility 0s 1.8s}.envelope-left,.envelope-right{position:absolute;top:0;bottom:0;width:50%;background-image:url(coast.webp?v=20261115c);background-size:200% 100%;backface-visibility:hidden;box-shadow:1px 0 15px #5a4a3320;transition:transform 1.9s cubic-bezier(.2,.6,.15,1),opacity 1.5s;transform-origin:left center}.envelope-left{left:0;background-position:left}.envelope-right{right:0;background-position:right;transform-origin:right center}.ribbon{position:absolute;background:linear-gradient(90deg,#c4beae99,#fffdf6dd 35%,#e9e6dcdd 65%,#b6b1a399);box-shadow:0 1px 15px #5f564e33;transition:transform 1s,opacity .9s}.vertical{width:48px;left:calc(50% - 24px);top:0;bottom:0;transform:rotate(-2deg)}.horizontal{height:48px;left:0;right:0;top:calc(50% - 24px);background:linear-gradient(#c8c1b6,#fffcf2dd 35%,#d7d2c6);transform:rotate(3deg)}#unseal{position:absolute;inset:0;border:0;background:none}.bow{position:absolute;top:calc(50% - 42px);left:calc(50% - 80px);width:80px;height:60px;border-radius:65% 30% 40% 35%;background:linear-gradient(140deg,#ded7c9 0,#fffdf4 35%,#c9c0b1 80%);box-shadow:0 5px 9px #55432933;transform:rotate(18deg);border:1px solid #c2b8a5;transition:transform 1s}.bow.right{left:50%;transform:scaleX(-1) rotate(18deg)}.knot{position:absolute;left:calc(50% - 22px);top:calc(50% - 22px);width:44px;height:44px;border-radius:50%;background:linear-gradient(120deg,#e0d2b1,#f4e9d0,#b9a781);box-shadow:0 2px 7px #4e483f55;display:grid;place-items:center;color:#766649;font:italic 11px Georgia}.open-caption{position:absolute;top:64%;left:8%;right:8%;font:8px/2.2 Georgia;letter-spacing:2px;color:#5a5747;text-shadow:0 1px 1px #fff}.opened #wrap{visibility:hidden;pointer-events:none}.opened .envelope-left{transform:rotateY(-112deg)}.opened .envelope-right{transform:rotateY(112deg)}.opened .ribbon.vertical{transform:translateY(-110%);opacity:0}.opened .ribbon.horizontal{transform:translateX(110%);opacity:0}.opened #unseal{opacity:0;transition:opacity .7s}.opened .hero-type{animation:word-enter 2.6s ease-out}.opened #sound{opacity:1;pointer-events:auto}#sound{position:fixed;right:max(17px,calc((100vw - 560px)/2 + 17px));bottom:max(22px,env(safe-area-inset-bottom));width:42px;height:42px;border-radius:50%;border:1px solid #b3aa90;background:#f6f0e8e6;color:#64705a;font-size:20px;z-index:45;opacity:0;pointer-events:none;box-shadow:0 2px 15px #453d2c22}#sound[aria-pressed=true]{animation:soundpulse 3s infinite}dialog{border:1px solid #bdb49e;background:#f6f0e5;color:#4c4b3e;width:min(88vw,420px);padding:40px 28px;text-align:center;box-shadow:0 20px 100px #0005}dialog::backdrop{background:#263b32aa;backdrop-filter:blur(4px)}dialog h2{font-size:35px}dialog p{font-size:18px}.close{position:absolute;top:5px;right:10px;border:0;background:none;font-size:27px}.dismiss{font-size:13px}@keyframes birds{to{transform:translate(-15px,-9px)}}@keyframes word-enter{0%,35%{opacity:0;transform:translateY(15px)}100%{opacity:1;transform:none}}@keyframes soundpulse{50%{box-shadow:0 0 0 5px #a8b29822,0 2px 15px #453d2c22}}@media(max-width:350px){section{padding-left:29px;padding-right:29px}h2{font-size:41px}.hero h1{font-size:69px}.hero-type{left:13%;right:13%}.hero .invite{font-size:15px}.hero .eyebrow{font-size:7px}.count{gap:8px}.count b{font-size:30px}.flowers{width:125px;background-size:450px 265px}.scallop{padding-left:14px;padding-right:14px}.celebration h2,.dress h2{font-size:37px}.timeline h3{font-size:21px}}@media(min-width:800px){.hero{min-height:900px}.hero h1{font-size:95px}.hero-type{top:25%}section{padding:90px 60px}.floral-arch{height:380px}.story .coast-vignette{margin-left:-60px;margin-right:-60px}h2{font-size:53px}.timeline{gap:45px 35px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}.reveal{opacity:1;transform:none}}
.flowers{width:102px;height:220px;top:-15px;background-size:contain;background-repeat:no-repeat;mix-blend-mode:multiply}.fleft{left:-10px;background-image:url(flowers-left.png?v=20261115c);background-position:left top;transform:rotate(-5deg)}.fright{right:-10px;background-image:url(flowers-right.png?v=20261115c);background-position:right top;transform:rotate(5deg)}.count-inner{inset:115px 26px 10px;z-index:3}.count-inner .script{font-size:32px}.count-inner .count{background:#f5f0e5df;padding:9px 0;margin:14px 0 10px}.floral-arch{height:355px}.hero .place,.hero .date{position:relative;text-shadow:0 1px 4px #fffaf0,0 0 7px #fffaf0}.open-caption{background:#f8f4e9cc;padding:8px 0;left:10%;right:10%;border-radius:2px}@media(max-width:350px){.flowers{width:86px;height:190px}.count-inner{inset:113px 20px 10px}}

/* Silk bow: loops, folded tails and a wrapped center knot. */
.tied-bow{position:absolute;left:50%;top:50%;width:290px;height:auto;transform:translate(-50%,-44%);overflow:visible}.tied-bow g{transform-box:fill-box;transform-origin:center}.open-caption{top:25%;left:12%;right:12%;padding:0;background:none;border-radius:0;text-shadow:0 1px 5px #fffdf5,0 0 10px #fffdf5;font-size:8px;line-height:2.3;letter-spacing:1.8px}.vertical{width:36px;left:calc(50% - 18px)}.horizontal{height:36px;top:calc(50% - 18px)}#wrap{transition:visibility 0s 5.2s}.envelope-left,.envelope-right{transition:transform 3s cubic-bezier(.32,.04,.24,1) 1.7s,opacity 2s 1.7s}.ribbon{transition:transform 2.3s cubic-bezier(.42,0,.25,1) .9s,opacity 1.9s 1s}.opened #unseal{opacity:1;transition:none}.opened .open-caption{opacity:0;transition:opacity .65s}.opened .loop-left{animation:untie-left 1.9s ease-in-out forwards}.opened .loop-right{animation:untie-right 1.9s ease-in-out forwards}.opened .tail-left{animation:tail-left 2.3s ease-in forwards}.opened .tail-right{animation:tail-right 2.3s ease-in forwards}.opened .bow-center{animation:knot-release 1.7s ease-in forwards}.opened .hero-type{animation:word-enter 5.3s ease-out}.opened #sound{animation:word-enter 5.3s ease-out,soundpulse 3s 5s infinite}.opening{overflow:hidden}@keyframes untie-left{0%{transform:none;opacity:1}40%{transform:translate(-15px,3px) rotate(-7deg) scaleX(.92);opacity:1}100%{transform:translate(-150px,24px) rotate(-24deg) scaleX(.18);opacity:0}}@keyframes untie-right{0%{transform:none;opacity:1}40%{transform:translate(15px,-3px) rotate(7deg) scaleX(.92);opacity:1}100%{transform:translate(150px,-24px) rotate(24deg) scaleX(.18);opacity:0}}@keyframes tail-left{0%,20%{transform:none;opacity:1}100%{transform:translate(-65px,180px) rotate(25deg);opacity:0}}@keyframes tail-right{0%,20%{transform:none;opacity:1}100%{transform:translate(65px,160px) rotate(-25deg);opacity:0}}@keyframes knot-release{0%,25%{transform:none;opacity:1}100%{transform:translateY(25px) rotate(20deg) scale(.4);opacity:0}}@media(prefers-reduced-motion:reduce){#wrap{transition:visibility 0s!important}.opened #unseal{opacity:0}.opening{overflow:auto}}
.opened .tied-bow>g{filter:none}
