:root{--paper:#f6f0e7;--ink:#352d28;--red:#802738;--pink:#eee1d7;--serif:'Cormorant Garamond',Georgia,serif;--hand:'La Belle Aurore',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.75 var(--sans)}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #bc7283;outline-offset:5px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.05}h2{font-size:clamp(43px,7vw,65px);letter-spacing:-1px}h2 strong{font-weight:600}h2 em{font-weight:400}.hand{font-family:var(--hand);color:var(--red);line-height:1.15}.muted{color:#75695f}.paper{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.045' filter='url(%23n)'/%3E%3C/svg%3E")}
.btn{display:inline-flex;justify-content:center;align-items:center;gap:12px;border:1px solid var(--red);padding:14px 23px;border-radius:4px;text-decoration:none;background:var(--red);color:var(--paper);font-size:13px;min-height:48px}.btn.light{background:transparent;color:var(--red)}.btn:hover{filter:brightness(1.08)}.link{display:inline-block;font-size:13px;text-decoration:none;border-bottom:1px solid currentColor;padding:6px 0}.section{max-width:1080px;margin:auto;padding:85px 38px}.section p{max-width:470px}.center{text-align:center}.center p{margin-left:auto;margin-right:auto}.reveal{opacity:1;transform:none}.motion .reveal{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s ease}.motion .reveal.visible{opacity:1;transform:none}
/* Opening: a complete, unmasked sheet lifts above the envelope. */
.cover{min-height:100svh;display:grid;place-items:center;padding:50px 22px;background:var(--paper);overflow:visible}.cover-inner{text-align:center;width:min(600px,100%)}.cover .intro{font-size:30px;margin:0 0 65px;transform:rotate(-4deg);transition:opacity .25s}.cover.opening .intro{opacity:0}.envelope{--w:min(420px,calc(100vw - 64px));position:relative;width:var(--w);height:calc(var(--w)*.63);margin:0 auto 42px;perspective:1000px;transform:rotate(-4deg);border:0;padding:0;background:transparent;display:block;color:var(--paper);overflow:visible;isolation:isolate}
.env-back{position:absolute;inset:0;z-index:0;background:linear-gradient(140deg,#672236,#3a1220);border-radius:7px;box-shadow:0 2px 2px #30131b40,0 16px 22px -6px #30131b4d,0 30px 48px -16px #30131b40,inset 0 1px 1px #b8797f70}
.env-letter{position:absolute;inset:18px 25px 22px;z-index:8;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:20px 10px;background:linear-gradient(130deg,#fffaf1,#efe2d2);color:var(--ink);border:1px solid #d9c8b7;border-radius:2px;box-shadow:0 5px 15px #2e081b35;opacity:0;transform:translateY(12px) scale(.85);pointer-events:none;transition:opacity .3s ease,transform .7s cubic-bezier(.2,.65,.3,1)}.env-letter small{font:11px/1.5 var(--sans);letter-spacing:1.5px}.env-letter span{display:block;font:italic 40px/1.2 var(--serif)}
.env-side,.env-front,.env-bottom{position:absolute;inset:0;border-radius:6px;transition:filter .6s}.env-side{z-index:2;background:linear-gradient(105deg,#76273f,#591a2b 48%,#702238);clip-path:polygon(0 100%,0 0,50% 55%,100% 0,100% 100%)}.env-front{z-index:3;background:linear-gradient(125deg,#74263c,#631e32 50%,#792c41);clip-path:polygon(0 0,50% 50%,100% 0,100% 100%,0 100%)}.env-bottom{z-index:4;background:linear-gradient(160deg,#88364d,#70273b 48%,#531a2b);clip-path:polygon(0 100%,50% 43%,100% 100%);filter:drop-shadow(0 -2px 2px #30091745)}
.env-flap{position:absolute;inset:0;z-index:5;background:linear-gradient(155deg,#8c3a51,#70283e 60%,#591d32);clip-path:polygon(0 0,100% 0,50% 54%);transform-origin:top center;transition:transform .6s ease;filter:drop-shadow(0 3px 2px #2f081b70);border-radius:5px;backface-visibility:visible}
.seal{position:absolute;z-index:6;width:70px;height:66px;left:calc(50% - 35px);top:calc(52% - 33px);border-radius:48% 53% 46% 51%;border:3px solid #651c30;background:radial-gradient(ellipse at 30% 18%,#963f55,#6d2438 55%,#4c1528);color:#e7bab1;text-shadow:0 1px 1px #2f0718;box-shadow:0 4px 5px #2d061c66,0 1px 1px #cb79816b inset,0 -2px 4px #2e051a80 inset;font:23px var(--serif);display:flex;align-items:center;justify-content:center;gap:3px;transition:opacity .2s,transform .2s}.seal i{font-size:17px;font-weight:400}.seal:after{content:'';position:absolute;inset:6px;border:1px solid #a45b6659;border-radius:50%}
.envelope.open .seal{opacity:0;transform:scale(.9)}.envelope.open .env-flap{transform:rotateX(178deg)}.envelope.extract .env-letter{opacity:1;transform:translateY(-72px) scale(1) rotate(3deg)}.envelope.extract .env-flap{z-index:1}.cover .note{font-size:13px;color:#6d5b55}.cover-foot{margin-top:30px;color:var(--red);font:24px var(--hand)}.cover.leaving{animation:leave .45s ease forwards}@keyframes leave{to{opacity:0;transform:translateY(-15px)}}
.hero{position:relative;overflow:hidden;padding-top:75px;padding-bottom:90px}.hero-head{position:relative;z-index:2}.hero h1{font-size:clamp(70px,10vw,116px);letter-spacing:-2px;display:flex;justify-content:center;align-items:center;gap:13px}.hero h1 .amp{font:italic .7em/1 Georgia,serif;letter-spacing:-3px;color:var(--red);transform:rotate(-8deg);margin:0 2px}.hero .sub{font:500 24px/1.5 var(--serif);color:var(--red);margin:8px 0 32px}.photo-frame{width:min(340px,75vw);margin:28px auto 32px;background:#fffaf2;padding:12px 12px 34px;box-shadow:0 7px 20px #3d211c17;transform:rotate(-4deg);position:relative;z-index:1}.photo-frame:before{content:'';position:absolute;top:-11px;left:36%;width:30%;height:25px;background:#c8b59a5c;transform:rotate(4deg);clip-path:polygon(1% 5%,100% 0,98% 90%,0 100%)}.photo-frame img{display:block;width:100%;height:365px;object-fit:cover;object-position:center 46%}.photo-frame figcaption{font:26px/1.2 var(--hand);color:var(--red);margin:13px 0 -18px}.hero-copy{max-width:470px;margin:30px auto 0;position:relative}.hero-copy .link{margin-top:25px;color:var(--red)}
.hero-misc{position:absolute;inset:0;pointer-events:none;color:var(--red)}.misc-dash{position:absolute;top:305px;left:calc(50% - 225px);width:70px;height:125px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;border-radius:8% 20% 55% 45%;transform:rotate(18deg)}.misc-loop{position:absolute;top:460px;right:calc(50% - 235px);width:95px;height:55px;border:2px solid currentColor;border-radius:50%;transform:rotate(-28deg)}.misc-loop:after{content:'';position:absolute;width:65px;height:80px;left:30px;top:35px;border-right:2px solid currentColor;border-radius:50%;transform:rotate(-25deg)}
/* Deckled edges: each colored block has its own paper contour. */
.torn{--sheet:#ede2d5;position:relative;background:var(--sheet);margin:18px 0}.torn:before,.torn:after{content:'';position:absolute;left:0;right:0;height:20px;background:var(--sheet);clip-path:polygon(0 100%,0 39%,2% 49%,4% 28%,7% 47%,10% 38%,13% 60%,16% 31%,18% 45%,21% 25%,24% 55%,27% 43%,29% 63%,32% 33%,35% 51%,38% 30%,41% 48%,44% 35%,47% 58%,50% 33%,53% 52%,56% 27%,59% 51%,62% 36%,65% 55%,68% 28%,71% 46%,74% 33%,77% 56%,80% 35%,83% 50%,86% 25%,89% 42%,92% 34%,95% 53%,98% 31%,100% 46%,100% 100%);pointer-events:none}.torn:before{top:-19px}.torn:after{bottom:-19px;transform:rotate(180deg)}
.date-section{--sheet:#eee4d7;text-align:center}.date-section .section{max-width:800px}.date-note{font-size:37px;transform:rotate(-5deg);margin-bottom:15px}.month-name{font:400 32px var(--serif);margin-bottom:15px}.calendar{display:flex;justify-content:center;align-items:center;max-width:480px;margin:20px auto 45px}.cal-day{width:33.333%;padding:10px 8px;text-align:center;position:relative}.cal-day+.cal-day{border-left:1px solid #aa8f8040}.cal-day b{font:500 77px/1.4 var(--sans);letter-spacing:-3px;display:block}.cal-day.chosen b{font-weight:600}.cal-day.chosen:after{content:'';position:absolute;inset:-5px 8px;border:2px solid var(--red);border-radius:46% 53% 49% 47%;transform:rotate(-10deg)}.cal-day.chosen:before{content:'';position:absolute;inset:-2px 12px;border:1px solid #802738a0;border-radius:53% 45% 49% 52%;transform:rotate(7deg)}
.celebration-title{font-size:clamp(42px,6vw,65px);line-height:1.1}.celebration-title>span{font-weight:400}.celebration-title>strong{font-weight:600}.celebration-title em{color:var(--red);font-weight:500}.celebration-title .hand{font-size:1.15em;display:inline-block;transform:rotate(-4deg)}.time{font:26px var(--serif);margin-top:30px}.count-wrap{margin-top:42px}.count-heading{font-size:28px}.count{display:flex;justify-content:center;gap:30px;margin:22px 0 10px;color:var(--red)}.count b{font:500 44px/1 var(--sans);font-variant-numeric:tabular-nums;display:block;letter-spacing:-1px}.count span{font-size:11px;display:block;margin-top:10px}.date-section .link{margin-top:25px;color:var(--red)}
.venue{display:grid;grid-template-columns:1fr 1fr;gap:55px;align-items:center}.venue h2{margin-bottom:22px}.venue h2 em{color:var(--red)}.venue h3{font-size:32px;margin-bottom:10px}.venue-scribble{font-size:28px;line-height:1.2;margin:0 0 26px;transform:rotate(-2deg)}.venue .address{margin:23px 0;color:#6b5d54;font-size:14px;padding-left:14px;border-left:2px solid var(--red)}.location-note{font-size:12px;margin-top:20px}.map-frame{background:#fff9f1;border:1px solid #d9cbbc;border-radius:23px;overflow:hidden;box-shadow:0 8px 25px #432b1d0c;transform:rotate(1deg)}.map-frame iframe{display:block;border:0;width:100%;height:330px;filter:grayscale(.25)}.map-caption{padding:18px 20px 23px;text-align:center}.map-frame .hand{font-size:30px}
.dress{--sheet:#eee1d7}.dress .section{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.dress-label{font-size:30px;transform:rotate(-5deg);margin-bottom:22px}.dress h2 em{color:var(--red)}.dress-illustration{width:230px;max-width:100%;height:auto;margin-top:25px;color:var(--red);transform:rotate(-5deg)}.dress-copy p+p{margin-top:22px}.tip{padding-top:6px}.dress-copy .hand{font-size:27px!important;transform:rotate(-2deg);margin-top:30px}
.organic-divider{max-width:1080px;margin:45px auto 5px;color:var(--red);padding:0 24px}.organic-divider svg{display:block;width:100%;height:40px;overflow:visible}.organic-divider path{fill:none;stroke:currentColor;stroke-width:1.6;vector-effect:non-scaling-stroke}
.story-photo{display:grid;grid-template-columns:1fr 1fr;max-width:1020px;margin:auto;padding:60px 38px 95px;align-items:center;gap:70px}.story-photo .photo-frame{width:100%;max-width:340px;margin:0;transform:rotate(4deg)}.story-photo img{height:400px;object-position:center 42%}.quote .lyric{font-size:51px;font-weight:500;line-height:1.05;margin:0 0 18px;transform:rotate(-4deg)}.quote .lyric-credit{font:18px var(--serif);margin-bottom:28px;color:var(--red)}.quote>p:last-child{font-size:15px}
.gift{--sheet:#e9ded3}.gift .section{max-width:800px}.gift h2{margin-bottom:26px}.gift h2 em{color:var(--red)}.gift p+p{margin-top:17px}.aliases{display:flex;justify-content:center;flex-wrap:wrap;gap:23px;margin-top:25px}.alias{display:inline-block;padding:18px 15px;min-width:235px;text-align:center;border:1px solid #a67b6a;border-radius:47% 5% 8% 7% / 7% 11% 6% 12%;transform:rotate(-2deg);font-size:14px;background:#fffaf133}.alias:nth-child(2){transform:rotate(2deg)}.alias span{display:block;font:28px var(--hand);color:var(--red);margin:7px 0 12px}.alias .btn{font-size:12px;padding:10px 15px}.alias-copy:disabled{opacity:.65;cursor:wait}.gift>.section>.hand{font-size:29px;margin-top:24px;transform:rotate(-3deg)}
.rsvp{padding-top:60px}.rsvp h2{margin-bottom:24px}.rsvp h2 em{color:var(--red)}.rsvp .btn{margin-top:25px}.cheers{font-size:55px;white-space:nowrap;overflow:hidden;color:var(--red);padding:25px 0;text-align:center;transform:rotate(-3deg)}.ending{padding-top:40px;padding-bottom:60px}.ending h2{font-size:clamp(60px,9vw,95px)}.ending .hand{font-size:36px;margin-bottom:15px}.closing-line{font-size:14px;margin-top:26px}.share-btn{margin-top:30px;background:transparent;border:0;color:var(--red);text-decoration:underline;font-size:13px;padding:12px}.status{font-size:12px;min-height:22px;margin-top:12px;color:var(--red)}
dialog{border:0;background:var(--paper);color:var(--ink);width:min(460px,calc(100% - 32px));padding:32px;border-radius:8px;box-shadow:0 15px 80px #3b1b2340}dialog::backdrop{background:#33251ecc;backdrop-filter:blur(4px)}dialog h2{font-size:40px;margin-bottom:20px}.modal-close{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:24px;width:40px;height:40px}dialog label{display:block;font-size:13px;margin:15px 0 6px}dialog input,dialog textarea{display:block;width:100%;background:#fffaf3;border:1px solid #cab6a6;padding:12px;font-size:16px;color:var(--ink)}dialog textarea{min-height:90px}dialog p{font-size:13px}dialog .btn{margin-top:20px;width:100%}
@media(max-width:650px){.section{padding:66px 27px}.cover{padding:45px 22px}.cover .intro{font-size:27px;margin-bottom:58px}.env-letter{inset:15px 20px 17px;gap:8px}.env-letter span{font-size:32px}.env-letter small{font-size:10px}.envelope.extract .env-letter{transform:translateY(-58px) scale(1) rotate(3deg)}.hero{padding-top:55px;padding-bottom:75px}.hero h1{font-size:clamp(52px,15vw,82px);gap:10px;letter-spacing:-1px}.hero h1 .amp{font-size:.73em;letter-spacing:-2px}.hero .sub{font-size:23px}.photo-frame{width:min(330px,80vw)}.photo-frame img{height:350px}.photo-frame figcaption{font-size:25px}.misc-dash{left:10px;top:280px;width:55px;height:105px}.misc-loop{right:10px;top:415px;width:65px;height:42px}.calendar{max-width:380px;margin-bottom:35px}.cal-day b{font-size:65px}.cal-day.chosen:after{inset:-2px 5px}.cal-day.chosen:before{inset:1px 9px}.date-note{font-size:33px}.month-name{font-size:29px}.celebration-title{font-size:42px}.celebration-title .hand{font-size:1.18em}.count{gap:24px}.count b{font-size:34px}.venue,.dress .section,.story-photo{grid-template-columns:1fr;gap:35px}.venue h3{font-size:31px}.venue-scribble{font-size:25px}.map-frame{transform:none;border-radius:22px}.map-frame iframe{height:275px}.dress .section{text-align:center}.dress-illustration{width:205px;margin-top:22px}.dress-copy{text-align:left}.dress-copy .hand{text-align:center}.story-photo{padding:50px 35px 75px;gap:40px}.story-photo .photo-frame{width:85%;margin:auto}.story-photo img{height:350px}.story-photo .quote{text-align:center}.quote .lyric{font-size:44px}.quote .lyric-credit{font-size:18px}.organic-divider{margin-top:25px}.aliases{gap:22px}.alias{width:100%;max-width:290px}.ending{padding-top:30px}.cheers{font-size:45px}}
@media(max-width:360px){.section{padding-left:22px;padding-right:22px}.env-letter{inset:12px 18px 15px}.env-letter span{font-size:28px}.env-letter small{font-size:9px}.hero h1{font-size:50px}.photo-frame img{height:315px}.photo-frame figcaption{font-size:23px}.cal-day b{font-size:57px}.celebration-title{font-size:36px}.count{gap:20px}.count b{font-size:31px}.quote .lyric{font-size:39px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.motion .reveal{opacity:1;transform:none;transition:none}.env-flap,.env-letter,.seal{transition:none}.cover.leaving{animation:none}}

/* Type and composition refinements */
p{text-wrap:pretty}h1,h2,h3{text-wrap:balance}strong{font-weight:600}
.cover .intro{font-family:var(--serif);font-style:italic;font-size:28px}.cover-foot{font:500 16px var(--sans);letter-spacing:1px}
.announcement{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:225px;margin:16px auto 30px;padding:10px 27px 3px;border:1.6px solid var(--red);border-radius:48% 49% 44% 53% / 49% 44% 52% 48%;transform:rotate(-5deg);color:var(--red);background:var(--paper)}
.announcement:before{content:'';position:absolute;inset:-4px -2px;border:1px solid var(--red);border-radius:50% 46% 48% 52% / 45% 51% 44% 52%;transform:rotate(2deg)}
.announcement:after{content:'';position:absolute;bottom:-9px;right:41px;width:17px;height:17px;border-right:1.6px solid var(--red);border-bottom:1.6px solid var(--red);background:var(--paper);transform:rotate(48deg) skew(10deg,10deg)}
.announcement p{font:35px/1.35 var(--hand);position:relative;z-index:1;white-space:nowrap}.burst{position:absolute;width:18px;height:20px;border-top:2px solid var(--red);transform:rotate(-30deg);left:-31px;top:17px}.burst:before,.burst:after{content:'';position:absolute;width:16px;left:0;border-top:2px solid var(--red)}.burst:before{top:7px;transform:rotate(27deg)}.burst:after{top:16px;transform:rotate(47deg)}.burst-right{left:auto;right:-33px;transform:rotate(153deg)}
.hero>.photo-frame{padding-bottom:15px}.photo-frame figcaption{font:500 17px/1.4 var(--serif);margin-bottom:-14px}.hero-copy{max-width:485px}.hero-copy strong{color:var(--red);font-weight:600}.hero-copy p:last-of-type{max-width:365px}
.celebration-title{font:400 clamp(32px,4.4vw,48px)/1.2 var(--sans);letter-spacing:-1.3px}.celebration-title strong{font-weight:600;color:var(--red)}.time{font:400 21px/1.5 var(--sans);letter-spacing:0;margin-top:27px}.time strong{font-weight:600}.date-note{font:italic 34px/1.15 var(--serif);transform:rotate(-3deg)}.count-heading{font:500 25px/1.3 var(--serif)}
.venue-art{display:block;width:min(350px,100%);height:auto;margin:-10px 0 20px}.venue-scribble{font:italic 25px/1.25 var(--serif);transform:none;margin-bottom:24px}.map-caption .hand{font:italic 27px/1.2 var(--serif)}
.dress .section{grid-template-columns:1.1fr .9fr;gap:45px}.dress-content h2{margin-bottom:23px}.dress-copy p{margin-top:0;max-width:46ch}.dress-copy p+p{margin-top:18px}.dress-signoff{font:italic 21px/1.5 var(--serif);max-width:32ch}.dress-signoff strong{font-weight:600}.dress-art img{display:block;width:100%;max-width:390px;margin:auto;height:auto}.dress-copy .tip strong:last-child{white-space:nowrap}
.story-photo img{height:auto;aspect-ratio:3/4;object-fit:cover;object-position:center;filter:grayscale(1)}.quote .lyric{font:italic 500 49px/1.1 var(--serif);letter-spacing:-.7px;margin-bottom:26px;transform:rotate(-3deg)}
.gift-copy{max-width:525px;margin:0 auto;text-align:left}.gift-copy p{max-width:none!important;font-size:15px;line-height:1.8}.gift-copy strong{color:var(--red)}.gift-copy .gift-alias-intro{margin-top:26px;font-size:14px}.alias span{font:500 18px/1.4 var(--sans);margin:10px 0 14px}.gift>.section>.hand{font:italic 26px/1.3 var(--serif)}
.rsvp>.reveal>p{max-width:350px}.cheers{font:400 clamp(34px,5vw,58px)/1.7 'Nothing You Could Do',Georgia,serif;word-spacing:14px;padding:25px 0 15px}.cheers em{font-family:var(--serif);font-size:1.18em;font-weight:500}.ending .hand{font:italic 31px var(--serif)}.closing-line{font:500 23px/1.4 var(--serif);margin-top:23px}
@media(max-width:650px){.announcement{margin:16px auto 26px;min-width:215px;padding-left:24px;padding-right:24px}.announcement p{font-size:34px}.hero-copy p{max-width:36ch}.celebration-title{font-size:34px;letter-spacing:-1px}.time{font-size:20px}.date-note{font-size:31px}.venue-art{width:310px;margin:0 0 19px}.venue-scribble{font-size:23px}.dress .section{grid-template-columns:1fr;gap:22px;text-align:left}.dress-content h2{margin-bottom:22px}.dress-copy p{max-width:none}.dress-signoff{font-size:21px!important;text-align:left}.dress-art img{width:86%;max-width:320px}.quote .lyric{font-size:43px}.gift-copy p{font-size:15px;line-height:1.7}.cheers{font-size:36px;word-spacing:10px}.cover .intro{font-size:25px}}
@media(max-width:360px){.announcement{min-width:195px;padding-left:18px;padding-right:18px}.announcement p{font-size:30px}.burst{left:-25px;width:14px}.burst-right{right:-25px;left:auto}.celebration-title{font-size:29px;letter-spacing:-.7px}.time{font-size:18px}.quote .lyric{font-size:38px}.gift-copy p{font-size:14px}}

/* Handwritten annotations and a shared editorial treatment. */
.story-photo .photo-frame figcaption{font:400 27px/1.35 var(--hand);margin-top:13px;margin-bottom:-15px;transform:rotate(-2deg)}
.date-note{font:400 39px/1.25 var(--hand);transform:rotate(-4deg);margin-bottom:20px}
.celebration-title{font:400 clamp(36px,5vw,57px)/1.2 'Bodoni Moda',Georgia,serif;letter-spacing:-1px}.celebration-title strong{font-weight:500;font-style:italic;color:var(--red)}
.map-caption .hand{font:400 32px/1.3 var(--hand);transform:rotate(-2deg)}
.dress-signoff{font:400 29px/1.35 var(--hand)!important;transform:rotate(-3deg);margin-top:25px!important;max-width:100%!important}
.venue h3{margin-bottom:22px}.venue-art{width:235px;margin:0 auto 24px;filter:grayscale(1) sepia(.7) saturate(1.35) hue-rotate(310deg);mix-blend-mode:multiply}
.venue>.reveal{text-align:center}.venue>.reveal>p{margin-left:auto;margin-right:auto}.venue h2 em,.dress h2 em{position:relative}.venue h2 em:after,.dress h2 em:after{content:'';position:absolute;bottom:-7px;left:8%;width:85%;height:9px;border-bottom:1.5px solid var(--red);border-radius:50%;transform:rotate(-3deg)}
.venue .address{display:flex;align-items:flex-start;justify-content:center;gap:10px;border-left:0;padding-left:0;text-align:left;margin-top:24px}.location-icon{width:20px;height:24px;flex:none;fill:none;stroke:var(--red);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;margin-top:3px}
.dress .section{max-width:840px;grid-template-columns:1.2fr .8fr;gap:30px}.dress-content{text-align:center}.dress-copy p{margin-left:auto;margin-right:auto;text-align:center;max-width:43ch}.dress-art img{width:100%;max-width:240px;filter:grayscale(1) sepia(.7) saturate(1.35) hue-rotate(310deg);mix-blend-mode:multiply;transform:rotate(4deg)}
@media(max-width:650px){.date-note{font-size:35px}.celebration-title{font-size:38px;letter-spacing:-.7px}.map-caption .hand{font-size:30px}.dress .section{grid-template-columns:1fr;gap:18px}.dress-content h2{margin-bottom:27px}.dress-copy p{max-width:38ch}.dress-art img{max-width:215px;width:75%;margin:8px auto 0}.dress-signoff{font-size:28px!important;text-align:center!important;line-height:1.4!important}.venue-art{width:210px;margin-bottom:22px}.story-photo .photo-frame figcaption{font-size:26px}.venue .address{max-width:34ch}}
@media(max-width:360px){.celebration-title{font-size:33px}.date-note{font-size:32px}.dress-signoff{font-size:25px!important}.story-photo .photo-frame figcaption{font-size:24px}.venue .address{font-size:13px}}

/* Minimal pen drawings and the dark paper chapter. */
.venue-art{width:195px;filter:none;mix-blend-mode:normal;margin-bottom:24px}.dress-art img{width:190px;max-width:100%;filter:none;mix-blend-mode:normal;transform:rotate(3deg)}
.date-note{font:400 27px/1.5 'Nothing You Could Do',Georgia,serif;letter-spacing:-.3px;transform:rotate(-2deg);color:var(--red)}
.cheers em{font:inherit;color:inherit;letter-spacing:inherit}
.gift{--sheet:#5f1c2e;color:var(--paper);margin-top:45px;margin-bottom:45px}.gift:before,.gift:after{display:none}.gift .section{position:relative;z-index:1}.gift h2 strong,.gift h2 em,.gift-copy strong,.gift>.section>.hand,.gift .status{color:var(--paper)}
.gift .alias{background:var(--paper);color:var(--ink);border-color:#f6f0e7;box-shadow:0 4px 0 #3f102566}.gift .alias span,.gift .alias .btn.light{color:var(--red)}
.gift-wave{position:absolute;left:0;width:100%;height:45px;display:block;fill:var(--sheet);pointer-events:none}.gift-wave-top{top:-44px}.gift-wave-bottom{bottom:-44px;transform:rotate(180deg)}
.gift-flourish{position:absolute;width:95px;height:75px;right:max(20px,calc((100% - 800px)/2));top:28px;fill:none;stroke:#f6f0e7;stroke-width:1.2;stroke-linecap:round;opacity:.25;pointer-events:none}
@media(max-width:650px){.venue-art{width:175px}.dress-art img{width:175px}.date-note{font-size:25px}.gift-flourish{width:70px;right:9px;top:13px;opacity:.2}.gift .section{padding-top:78px;padding-bottom:74px}.gift-wave{height:34px}.gift-wave-top{top:-33px}.gift-wave-bottom{bottom:-33px}}
@media(max-width:360px){.date-note{font-size:23px}.dress-art img{width:165px}}

/* Warm red date paper and two lightly inked heart stamps. */
.date-section{--sheet:#8c303d;color:var(--paper)}
.date-section .section{position:relative;z-index:1}
.date-section .date-note,.date-section .celebration-title strong,.date-section .count,.date-section .link{color:var(--paper)}
.date-section .cal-day+.cal-day{border-left-color:#f6f0e72b}
.date-section .cal-day.chosen:after{border-color:var(--paper)}
.date-section .cal-day.chosen:before{border-color:#f6f0e798}
.heart-stamp{position:absolute;width:112px;height:112px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;pointer-events:none;opacity:.09}
.date-section>.heart-stamp{right:max(24px,calc((100% - 900px)/2));top:48px;transform:rotate(17deg)}
.gift>.heart-stamp{left:max(24px,calc((100% - 950px)/2));bottom:45px;transform:rotate(-16deg);opacity:.075}
@media(max-width:650px){.heart-stamp{width:86px;height:86px}.date-section>.heart-stamp{top:17px;right:10px}.gift>.heart-stamp{bottom:20px;left:10px;width:75px;height:75px}}

/* Keep the countdown annotation readable on red paper. */
.date-section .count-heading{color:var(--paper);font-size:28px;line-height:1.4}
.date-section #count-message{color:var(--paper)}
.cheers{white-space:normal;overflow:visible;word-spacing:0;line-height:1.5;padding:28px 20px 20px;font-size:clamp(30px,4.7vw,54px)}
.cheers span{display:inline-block;white-space:nowrap}
@media(max-width:650px){.cheers{font-size:30px}.cheers span{display:block}.date-section .count-heading{font-size:27px}}
@media(max-width:360px){.cheers{font-size:27px}}

.gift-heart{position:absolute;right:max(24px,calc((100% - 900px)/2));top:28px;width:95px;height:95px;fill:var(--paper);stroke:var(--paper);stroke-width:1.2;opacity:.1;transform:rotate(14deg);pointer-events:none}
@media(max-width:650px){.gift-heart{width:74px;height:74px;top:15px;right:13px;opacity:.09}}

/* Small pen accents stay attached to the photo at every screen width. */
.hero>.photo-frame{width:min(330px,calc(100% - 42px))}
.photo-doodle{position:absolute;fill:none;stroke:var(--red);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.photo-heart{width:39px;height:46px;right:-29px;top:18%;transform:rotate(17deg)}
.photo-rays{width:31px;height:42px;left:-27px;bottom:18%;transform:rotate(-7deg)}
@media(max-width:650px){.announcement{min-width:0;padding:9px 22px 5px;max-width:calc(100% - 36px)}.announcement p{font-size:clamp(27px,8.5vw,34px)}.announcement .burst{width:12px;left:-23px;top:14px}.announcement .burst:before,.announcement .burst:after{width:12px}.announcement .burst-right{left:auto;right:-23px}.photo-heart{width:32px;height:39px;right:-23px}.photo-rays{width:26px;height:36px;left:-22px}.hero>.photo-frame img{height:auto;aspect-ratio:4/5;object-fit:cover}}

/* Clear ampersands in the wax seal and the opening letter. */
.seal{color:#f5d9cb;gap:4px}
.seal i{font:400 20px/1 Georgia,'Times New Roman',serif;letter-spacing:0}
.env-letter .letter-names{font-style:normal;line-height:1.25;white-space:nowrap}
.env-letter .letter-amp{display:inline-block;font:400 .78em/1 Georgia,'Times New Roman',serif;vertical-align:baseline;letter-spacing:0;margin:0 3px}
.story-photo .photo-frame figcaption{text-align:center;width:100%;margin:14px auto -15px;transform:none;text-wrap:balance;line-height:1.35}
@media(max-width:360px){.env-letter .letter-names{font-size:26px}.env-letter .letter-amp{margin:0 1px}}
