:root{--ink: #2a2721;--muted: #6e665a;--olive: #8a6a2c;--paper: #fbf8f0;--table: #1c211a;--line: #ddd2bd;--green: #23301f;--lx: 0;--ly: 0;--w: 340px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Cormorant Garamond,Georgia,serif;color:var(--ink);background:var(--table);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}img{display:block}p{margin:0}.caps{font-variant:small-caps;text-transform:lowercase;letter-spacing:.18em;font-size:15px;font-weight:500}.ital{font-style:italic}.small{font-size:15px}.center{text-align:center}.pre{white-space:pre-line}.script{font-family:Pinyon Script,cursive;font-weight:400}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 26px;border-radius:2px;background:var(--green);color:#f3e2b0;font-variant:small-caps;text-transform:lowercase;letter-spacing:.16em;font-size:17px;font-weight:500;text-decoration:none}.btn:disabled{opacity:.4;cursor:default}.btn.wide{width:100%}.link{font-style:italic;font-size:17px;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px;min-height:40px}.eyebrow{font-size:12.5px;letter-spacing:.22em;color:var(--muted)}.velvet{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:24px 0 0;overflow:hidden;color:#e9dcc0;background:radial-gradient(ellipse at calc(50% + var(--lx) * 20%) calc(30% + var(--ly) * 15%),#34402e 0%,var(--table) 70%)}.above{color:#cdbb8e}.foil-text,.gold,.detail-title{background:linear-gradient(calc(110deg + var(--lx) * 40deg),#6b4c16,#b08834 calc(30% + var(--lx) * 18%),#e6c674 calc(42% + var(--lx) * 22%),#b58e3c calc(54% + var(--lx) * 22%),#7a5a20 80%,#a47e33);-webkit-background-clip:text;background-clip:text;color:transparent}.face .foil-text,.detail-title{filter:drop-shadow(calc(var(--lx) * -.6px) calc(.6px + var(--ly) * -.6px) 0 rgba(70,48,12,.4))}.link.gold{text-decoration-color:#b8913e;font-size:18px}.stage{width:100%;height:calc(var(--w) * 1.48);perspective:1700px;display:flex;justify-content:center;touch-action:pan-y;user-select:none;-webkit-user-select:none}.tilt{position:relative;width:0;height:100%;transform-style:preserve-3d;transform:rotateY(calc(var(--lx) * 6deg)) rotateX(calc(var(--ly) * -5deg));transition:transform .3s ease-out}.hinge{position:absolute;top:0;left:0;width:var(--w);height:100%;transform-style:preserve-3d;transform-origin:0 50%;transition:transform 1.1s cubic-bezier(.45,.05,.2,1)}.hinge .hinge{left:100%}.face,.back{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:2px;overflow:hidden;color:var(--ink);background:linear-gradient(#f8f2e5bd,#f8f2e5bd),url(/images/paper.webp) center / cover}.face{display:flex;align-items:center;justify-content:center;box-shadow:0 16px 34px #00000059}.back{transform:rotateY(180deg)}.face,.back{transition:opacity .6s}.gone{opacity:0}.face:after,.back:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#3c280f2e,#3c280f00 30%,#fffaeb00 70%,#fffaeb29);opacity:calc(.55 + var(--lx) * var(--s) * .45)}.face:before{content:"";position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light;background:radial-gradient(circle at calc(50% + var(--lx) * 45%) calc(40% + var(--ly) * 40%),#ffffffd9,#fff0 55%)}.cover{position:relative;z-index:1;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:24px 20px;text-align:center}.pressed{color:#d6c8a8;text-shadow:calc(var(--lx) * 1.2px) calc(var(--ly) * 1.2px + .8px) 0 rgba(255,255,255,1),calc(var(--lx) * -1.2px) calc(var(--ly) * -1.2px - .8px) .6px rgba(70,50,20,.6)}.pressed.caps{color:#b9a986}.monogram{display:flex;align-items:baseline;gap:6px;font:italic 500 calc(var(--w) * .17)/1 "Bodoni Moda","Cormorant Garamond",serif;margin-bottom:14px;padding:18px 26px;border:1.5px solid #c9a24a;border-radius:50%}.monogram i{font-size:.4em}.small-gap{font-size:11.5px;letter-spacing:.24em;margin-bottom:4px}.fname{font-size:calc(var(--w) * .11);line-height:1.05}.and{font-size:16px}.foil-rule,.inv .rule{display:block;width:40px;height:1px;margin:14px 0 10px;background:linear-gradient(90deg,#8c6a28,#f3dc96,#8c6a28)}.fdate{font-size:15px;letter-spacing:.2em;font-weight:600}.fvenue{font-size:13px;letter-spacing:.24em;font-weight:600;margin-top:4px}.ftown{font-size:11px;letter-spacing:.24em}.foil-hint{display:flex;flex-direction:column;align-items:center;gap:6px;color:#cdbb8e;min-height:96px}.foil-hint .ital{font-size:17px}.open-hint{font-size:11px;opacity:.7}.inv{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 18px;gap:3px}.inv .name{font-size:calc(var(--w) * .118);line-height:1.02;color:#1f1c18}.inv .amp{font-style:italic;font-size:17px;color:var(--muted);margin:-2px 0}.inv .eyebrow:first-child{margin-bottom:6px}.inv .request{font-size:16.5px;line-height:1.35;margin-top:6px;color:var(--muted)}.inv .rule{margin:10px 0 8px}.inv .big-date{font-size:27px;line-height:1.05;font-weight:500;margin:2px 0 4px}.inv .ital{font-size:16.5px;line-height:1.4;color:var(--muted)}.inv .venue{font-size:23px;font-weight:500;line-height:1.1}.inv .after{margin-top:6px;font-size:15.5px}.detail{position:relative;z-index:1;padding:26px 24px;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.detail-title{font-weight:500;font-size:calc(var(--w) * .1);line-height:1.05;margin:6px 0 18px;letter-spacing:-.01em}.detail dl{margin:0;width:100%;text-align:left}.detail dl>div{padding:10px 0;border-top:1px solid var(--line)}.detail dl>div:last-child{border-bottom:1px solid var(--line)}.detail dt{font-size:12px;color:var(--olive);letter-spacing:.2em}.detail dd{margin:3px 0 0;font-size:18px;line-height:1.3}.detail .note{color:var(--muted);font-size:15.5px;line-height:1.4;margin-top:14px;max-width:32ch}.prints{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;margin-bottom:14px}.prints figure{margin:0;background:#fff;padding:6px 6px 8px;box-shadow:0 2px 6px #3c280f2e}.prints figure:first-child{transform:rotate(-2deg)}.prints figure:last-child{transform:rotate(1.6deg) translateY(8px)}.prints img{width:100%;aspect-ratio:4 / 5;object-fit:cover}.prints figcaption{font-size:14px;margin-top:6px;color:var(--muted)}.story-text{font-size:17px;line-height:1.45}.places{list-style:none;margin:0;padding:0;width:100%;text-align:left}.places li{padding:11px 0;border-top:1px solid var(--line);font-size:17px;line-height:1.3;color:var(--muted)}.places li:last-child{border-bottom:1px solid var(--line)}.place-name{font-size:20px;font-weight:500;color:var(--ink)}.price{font-size:12px;color:var(--olive);margin-left:6px}.by{font-size:19px;margin-top:-8px}.pocket{position:relative;width:86%;height:calc(var(--w) * .58);margin:16px 0 10px}.reply-card{position:absolute;left:7%;right:7%;top:0;height:88%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;padding-top:16px;border-radius:2px;color:var(--muted);background:linear-gradient(#fcf9f1db,#fcf9f1db),url(/images/paper.webp) center / cover;box-shadow:0 2px 8px #3c280f40}.reply-card .caps{font-size:20px;font-weight:600;letter-spacing:.3em}.reply-card .ital{font-size:15px}.pocket-front{position:absolute;left:0;right:0;bottom:0;height:62%;pointer-events:none;border-radius:0 0 2px 2px;background:linear-gradient(#f0e8d5db,#f0e8d5db),url(/images/paper.webp) center / cover;clip-path:polygon(0 0,50% 22%,100% 0,100% 100%,0 100%);box-shadow:inset 0 1px #fff9;filter:drop-shadow(0 -2px 2px rgba(60,40,15,.15))}.fold-nav{display:flex;flex-direction:column;align-items:center;gap:10px;min-height:96px;position:relative;width:min(100%,420px);padding:0 16px}.fold-nav p{display:flex;flex-direction:column;align-items:center;color:#cdbb8e}.fold-nav .count{font-size:11px;opacity:.75}.fold-nav .ital{font-size:19px}.back-btn{position:absolute;left:12px;top:-4px;width:44px;height:44px;font-size:32px;line-height:1;color:#e9dcc0}.unfold{min-width:230px;background:linear-gradient(110deg,#8c6a28,#c9a24a 45%,#e8cd85 55%,#a07c33);color:#22180a}.rsvp{position:fixed;inset:0;z-index:50;background:#0f120d99;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:24px 12px;animation:fade .3s}@keyframes fade{0%{opacity:0}}.rsvp-card{position:relative;width:min(100%,460px);border-radius:2px;padding:38px 26px 28px;box-shadow:0 20px 40px #00000059;color:var(--ink);background:linear-gradient(#faf6ece6,#faf6ece6),url(/images/paper.webp) center / cover}.rsvp-card .detail-title{font-size:40px}.rsvp-card .x{position:absolute;top:6px;right:8px;width:44px;height:44px;font-size:30px;color:var(--muted)}.rsvp form,.thanks{display:flex;flex-direction:column;gap:18px}.thanks{align-items:center;text-align:center;padding:20px 0}.field{display:flex;flex-direction:column;gap:6px}.field .caps{font-size:13px;color:var(--muted)}.rsvp input{font:19px Cormorant Garamond,Georgia,serif;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--line);padding:8px 2px;outline:none;border-radius:0}.rsvp input:focus{border-bottom-color:var(--olive)}.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice button,.meals button{min-height:46px;border:1px solid var(--line);border-radius:2px;font-size:18px;font-style:italic}.choice button.on,.meals button.on{background:var(--green);border-color:var(--green);color:#f3e2b0}.guest{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.guest legend{font-size:13px;color:var(--muted);margin-bottom:8px}.meals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.meals button{font-size:17px}.madeby{padding:14px 0 16px;text-align:center}.madeby a{display:inline-flex;align-items:baseline;gap:6px;padding:8px 14px;font-size:16px;color:#cdbb8e;text-decoration:none;font-family:Figtree,system-ui,sans-serif}.madeby-mark{font:italic 24px/1 "DM Serif Display",Georgia,serif;color:#e85a8c}@media(prefers-reduced-motion:reduce){.hinge,.tilt{transition:none}}.painting img,.painting canvas{mix-blend-mode:multiply}.painting{position:absolute;inset:0}.painting img,.painting canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom}.cover{padding:0;justify-content:flex-start}.cover-text{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:calc(var(--w) * .1);opacity:0;transform:translateY(8px);transition:opacity 1.4s ease,transform 1.4s ease}.cover-text.on{opacity:1;transform:none}.cover-names{font-size:calc(var(--w) * .15);line-height:1.1;color:#3d3427}.cover .pressed.caps{color:#8d7f62;text-shadow:none}.inv-face{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;padding-top:calc(var(--w) * .05)}.crest{position:relative;width:calc(var(--w) * .36);aspect-ratio:1;margin-bottom:-6px}.crest img{width:100%;height:100%}.monogram-in{position:absolute;inset:0;display:flex;align-items:baseline;justify-content:center;padding-top:34%;gap:3px;font:italic 500 calc(var(--w) * .085)/1 "Bodoni Moda","Cormorant Garamond",serif}.monogram-in i{font-size:.45em}.inv-face .inv{padding:0 18px 12px;gap:1px}.inv-face .inv .name{font-size:calc(var(--w) * .095)}.inv-face .inv .request{font-size:15px;margin-top:4px}.inv-face .inv .rule{margin:7px 0 6px}.inv-face .inv .big-date{font-size:24px}.inv-face .inv .ital{font-size:15px}.inv-face .inv .venue{font-size:21px}.inv-face .inv .after{display:none}.days{list-style:none;margin:0;padding:0;width:100%;text-align:left}.days li{display:grid;grid-template-columns:calc(var(--w) * .27) 1fr;gap:12px;align-items:center;padding:4px 0;font-size:17px;line-height:1.3}.days li+li{border-top:1px solid var(--line)}.days img{width:100%;aspect-ratio:1;object-fit:cover}.days .day{font-size:11.5px;color:var(--olive);letter-spacing:.2em}.map{width:calc(100% + 24px);height:calc(var(--w) * .8);object-fit:cover;object-position:center 64%;margin:-10px -12px 6px}.legs{list-style:none;margin:0;padding:0;width:100%;text-align:left;font-size:16px;line-height:1.3}.legs li{padding:6px 0;border-top:1px solid var(--line)}.legs .caps{font-size:11.5px;color:var(--olive);letter-spacing:.2em;margin-right:6px}.art-top{position:relative;z-index:1;width:100%;height:100%;display:flex;flex-direction:column}.band{width:100%;height:calc(var(--w) * .26);object-fit:cover;object-position:center 30%}.art-top .detail{padding-top:6px}.bouquet{position:absolute;z-index:3;right:-2%;bottom:-4%;width:72%;pointer-events:none;transform:rotate(-6deg)}
