:root{--bg: #f7efe8;--card: #fdfbf4;--ink: #2b2823;--muted: #837b6b;--ok: #4f6b54;--error: #9c5b50;--border: #e2dccd;--hairline: #d6cfbe;--accent: #d19a96;--radius: 4px;--field-radius: 13px;--serif: "EB Garamond", "Cormorant Garamond", Georgia, "Times New Roman", serif;--display: "Cormorant Garamond", Georgia, "Times New Roman", serif;--sans: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}html{scroll-behavior:smooth}body{overflow-x:hidden}#app{max-width:660px;margin:0 auto;padding:0 1.25rem}.site-footer{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:clamp(2.5rem,7vh,4.5rem) 1.25rem clamp(2.5rem,6vh,3.5rem);font-family:var(--serif);font-size:.8rem;letter-spacing:.02em;color:var(--muted);opacity:.7}.footer-heart{display:inline-flex;width:.78rem;color:var(--accent)}.footer-heart svg{display:block;width:100%;height:auto}.snap-section{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(2rem,5vh,3.5rem) 0}.flip-scroll{position:relative;height:200vh}.flip-stage{position:sticky;top:0;height:100svh;display:flex;align-items:center;justify-content:center}.content,.rsvp-section{position:relative}.rsvp-section>.card{position:relative;z-index:1;width:100%;max-width:620px}.form-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s ease}.form-wrap.open{grid-template-rows:1fr}.form-inner{overflow:hidden;min-height:0}.loading{text-align:center;padding:4rem 0;color:var(--muted)}.overline,.venue,.card h3,.btn,.lang-toggle,.status{text-transform:uppercase;letter-spacing:.2em}.flip-card--invitation{width:min(100%,390px);height:min(82vh,760px);aspect-ratio:auto}.invitation-face{justify-content:center;padding:clamp(2.5rem,6vh,4rem) clamp(1.5rem,6vw,2.5rem);border:1px solid rgba(43,40,35,.14);box-shadow:inset 0 0 0 1px #fffcf580,0 18px 50px #2b282329;border-radius:2px;overflow:hidden;background:linear-gradient(#fdfbf4bd,#fdfbf4bd),url(/img/texture.png) center / cover no-repeat,var(--card);background-blend-mode:normal,multiply,normal}.menu-divider{border:none;border-top:1px solid var(--hairline);width:64px;margin:1.5rem auto}.hero h1{font-family:var(--serif);font-weight:500;text-transform:uppercase;font-size:clamp(2.3rem,8vw,3.4rem);letter-spacing:.14em;line-height:1.18;margin:.4rem 0 .6rem}.overline{font-weight:300;font-size:.8rem;letter-spacing:.28em;color:var(--ink);margin:0}.event-link{display:block;width:max-content;max-width:90%;margin:1.25rem auto 0;color:var(--ink);text-decoration:none}.event-when,.event-venue{display:block;text-transform:uppercase}.event-when{font-size:1rem;letter-spacing:.2em}.event-when>span{display:block;line-height:1.85}.event-venue{font-size:1rem;letter-spacing:.14em}.event-addr{display:block;font-size:1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:.25rem}.event-tag{display:inline-block;margin-top:.4rem;font-size:1rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--hairline);padding-bottom:1px;transition:color .15s ease,border-color .15s ease}.event-link:hover .event-tag{color:var(--ink);border-color:var(--muted)}.rule{border:none;border-top:1px solid var(--hairline);width:90px;margin:1.75rem auto 0}.lang-toggle{position:fixed;top:1rem;right:1.1rem;z-index:10;font-size:.7rem}.polaroid{margin:0;background:#fff;padding:.6rem .6rem 0;width:clamp(118px,33vw,172px);border-radius:2px;box-shadow:0 10px 26px #2b28232e}.polaroid-photo{aspect-ratio:1 / 1;border-radius:1px;box-shadow:inset 0 0 0 1px #2b28230f}.polaroid--a .polaroid-photo{background:linear-gradient(145deg,#f4ddd7,#e3bdb6)}.polaroid--b .polaroid-photo{background:linear-gradient(145deg,#e4e7d6,#c5cdb2)}.polaroid--c .polaroid-photo{background:linear-gradient(145deg,#f4ead2,#e3d2a6)}.polaroid--d .polaroid-photo{background:linear-gradient(145deg,#dfe3e6,#bcc6cd)}.polaroid--e .polaroid-photo{background:linear-gradient(145deg,#f0dcdf,#d6b3bd)}.polaroid figcaption{font-family:var(--display);font-style:italic;text-align:center;font-size:.92rem;letter-spacing:.02em;color:var(--muted);padding:.5rem .25rem .7rem}.polaroid-chin{height:1.7rem}.frame{position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:min(100vw,1500px);pointer-events:none;z-index:0}.frame-item{position:absolute;width:clamp(150px,16vw,250px);box-shadow:0 16px 38px #2b282338;transform:rotate(var(--rot, 0deg))}.frame-l{left:0;transform:translate(-18%) rotate(var(--rot, 0deg))}.frame-r{right:0;transform:translate(18%) rotate(var(--rot, 0deg))}.flip-card{width:min(86vw,360px);aspect-ratio:3 / 4;perspective:1600px}.flip-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.flip-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(1.5rem,5vw,2.6rem);border-radius:3px;background:var(--card);box-shadow:0 18px 50px #2b282329;text-align:center;backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip-back{transform:rotateY(180deg);gap:.9rem;border:1px solid var(--border)}.letter-line{font-family:var(--serif);font-size:clamp(.92rem,2.4vw,1.02rem);line-height:1.7;color:var(--ink);max-width:34ch;margin:0}.letter-sign{margin:.4rem 0 0;font-family:var(--display);font-style:italic;font-size:1.15rem;color:var(--muted);white-space:pre-line}@media(prefers-reduced-motion:reduce){.flip-scroll{height:auto}.flip-stage{position:static;height:auto;padding:clamp(2rem,8vh,4rem) 0}.flip-card,.flip-card--invitation{height:auto;aspect-ratio:auto;perspective:none}.flip-card-inner{transform:none!important;transform-style:flat;display:flex;flex-direction:column;gap:1.25rem}.flip-face{position:relative;transform:none}}.invitation-face .monogram-name{font-size:clamp(2rem,11vw,3.1rem)}.invitation-face .monogram-amp{font-size:clamp(4.5rem,26vw,6.5rem)}.scroll-cue{position:absolute;bottom:clamp(1.25rem,4vh,2.25rem);left:50%;transform:translate(-50%);width:26px;color:var(--muted);opacity:.55;animation:cue-bob 2.4s ease-in-out infinite}.scroll-cue svg{display:block;width:100%;height:auto}@keyframes cue-bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,6px)}}@media(prefers-reduced-motion:reduce){.scroll-cue{animation:none}}.travel-section,.attire-section{text-align:center}.attire-note{display:inline-block;margin:1.6rem 0 0;font-family:var(--sans);text-transform:uppercase;letter-spacing:.18em;font-size:.72rem;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:var(--radius);padding:.55rem 1.1rem}.travel-inner{width:min(100%,580px);margin:0 auto}.travel-grid{margin-top:clamp(1.5rem,4vh,2.5rem);display:grid;gap:clamp(1.75rem,5vh,2.75rem);text-align:left}.travel-title{font-family:var(--display);font-weight:600;text-transform:uppercase;font-size:clamp(2.2rem,7vw,3.2rem);letter-spacing:.1em;line-height:1.1;margin:.3rem 0 0;color:var(--ink)}.travel-intro{font-size:1.02rem;line-height:1.7;color:var(--muted);margin:1rem auto 1.75rem;max-width:46ch}.map-frame{position:relative;width:100%;aspect-ratio:4 / 3;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 10px 30px #2b28231a;background:var(--card)}.map-embed{display:block;width:100%;height:100%;border:0;filter:saturate(.9) contrast(.98)}.map-caption{margin:.85rem 0 0;font-family:var(--sans);text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;color:var(--muted);text-align:center}.map-caption span{display:block;line-height:1.75}.rec-heading{font-family:var(--sans);text-transform:uppercase;letter-spacing:.2em;font-size:.7rem;font-weight:600;color:var(--muted);margin:2.4rem 0 1rem}.rec-list,.help-links{list-style:none;margin:0;padding:0}.rec+.rec{margin-top:.5rem}.rec-link{display:block;padding:.85rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:var(--ink);transition:border-color .15s ease,background .15s ease}.rec-link:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.rec-name{display:block;font-family:var(--display);font-size:1.25rem;letter-spacing:.02em}.rec-note{display:block;font-size:.9rem;line-height:1.5;color:var(--muted);margin-top:.15rem}.help-links li+li{margin-top:.6rem}.help-links a{font-family:var(--serif);font-size:.98rem;color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 45%,transparent);padding-bottom:1px;transition:border-color .15s ease}.help-links a:hover{border-color:var(--accent)}@media(max-width:1040px){.frame{display:none}}@media(max-width:760px){.content .snap-section{min-height:auto;padding:clamp(1.25rem,4vh,2rem) 0}.travel-grid{margin-top:1.1rem;gap:1.4rem}.travel-intro{margin-bottom:1.1rem}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:2rem 1.75rem;text-align:center}.card h2{font-family:var(--serif);font-weight:500;font-size:1.9rem;letter-spacing:.02em;line-height:1.2;margin:0 0 .5rem}.family-name{text-transform:uppercase;letter-spacing:.09em;font-style:italic;color:var(--accent)}.allowance strong{font-weight:600}.allowance strong:first-of-type{font-size:1.15rem}.card h3{font-size:.74rem;font-weight:500;color:var(--muted);margin:2rem 0 1rem}.allowance{color:var(--muted);font-size:.9rem;margin-top:0}.adults-only{font-family:var(--serif);font-style:normal;font-size:.92rem;line-height:1.5;color:var(--ink);text-align:center;background:transparent;border:1px solid var(--hairline);border-radius:var(--radius);max-width:280px;padding:.7rem 1.1rem 1rem;margin:.9rem auto 1rem}.adults-heart{display:block;width:16px;margin:-1.15rem auto .6rem;color:var(--hairline);background:var(--card);padding:0}.adults-heart svg{display:block;width:100%;height:auto}.adults-text{margin:0}.adults-text strong{font-weight:600;font-size:1.06em}.status{font-size:.7rem;padding:.6rem .85rem;border-radius:var(--radius);background:var(--bg);border:1px solid var(--border);color:var(--muted)}.status-1,.status-2{text-align:center;background:none;border:none;padding:0;font-size:calc(.9rem + 1px);font-weight:600}.status-1{color:var(--ok)}.status-2{color:var(--muted)}.banner{padding:.7rem .9rem;border-radius:var(--radius);font-size:.92rem}.banner-ok{background:#eaf0ea;color:var(--ok)}.banner-error{background:#f5e8e5;color:var(--error)}.guest-row{border:none;min-width:0;position:relative;padding:.4rem .25rem;margin:0 0 3.1rem}.guest-row+.guest-row:before{content:"";position:absolute;top:-1.55rem;left:50%;transform:translate(-50%);width:88px;border-top:1px solid #d6cfbe}.guest-row .names{display:flex;gap:.85rem}.field{position:relative;display:block;flex:1;min-width:0}.guest-row .names .field+.field{margin-top:0}.field input[type=text]{width:100%;font:inherit;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;padding:.9rem .9rem .72rem;border:1.5px solid rgba(209,154,150,.5);border-radius:var(--field-radius);background:transparent;color:var(--ink);transition:border-color .16s ease,box-shadow .16s ease}.field input[type=text]::placeholder{color:#c3bbac;text-transform:none;letter-spacing:normal;font-style:italic}.field input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #d19a9629}.field-label{position:absolute;top:0;left:.85rem;transform:translateY(-50%);padding:0 .4rem;background:var(--card);font-family:var(--sans);font-weight:500;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);pointer-events:none}.field-allergies{margin-top:1.1rem}.guest-row .flags{display:flex;align-items:center;gap:1.1rem;margin:.7rem 0;font-size:.9rem}.guest-row .remove{display:block;width:fit-content;margin:.9rem 0 0 auto}.check{display:inline-flex;align-items:center;gap:.5rem;-webkit-user-select:none;user-select:none;text-transform:uppercase;font-size:calc(.9rem - .5px);cursor:pointer}.check input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:1.15rem;height:1.15rem;margin:0;border:1.5px solid rgba(209,154,150,.5);border-radius:5px;background:transparent;cursor:pointer;position:relative;transition:background .15s ease,border-color .15s ease}.check input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.check input[type=checkbox]:checked:after{content:"";position:absolute;left:50%;top:47%;width:.28rem;height:.55rem;border:solid var(--card);border-width:0 2px 2px 0;transform:translate(-50%,-55%) rotate(45deg)}.check input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px #d19a9629}.btn{font-family:var(--serif);font-size:.74rem;font-weight:500;padding:.85rem 1.6rem;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:background .18s ease,color .18s ease}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);color:var(--card)}.btn-primary:hover:not(:disabled){background:#c0857d}.btn-secondary{background:transparent;color:var(--accent);border-color:var(--accent)}.btn-secondary:hover:not(:disabled){background:var(--accent);color:var(--card)}.btn-link{background:none;border:none;font-family:var(--serif);font-size:.82rem;color:var(--ink);cursor:pointer;padding:.25rem 0}.btn-link:disabled{color:var(--muted);cursor:default;text-decoration:none}.btn-link:hover:not(:disabled){text-decoration:underline}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;justify-content:center}.cancel-rsvp{display:block;margin:.9rem auto 0;font-size:.78rem;color:var(--muted)}.changed-mind{align-items:baseline;justify-content:center;gap:.45rem;font-size:1rem}.changed-prompt{color:var(--muted)}.mind-link{color:var(--accent);font-size:1rem}.calendar-btn{display:block;width:fit-content;margin:1.2rem auto 0;text-align:center;text-decoration:none}.modal{border:none;border-radius:8px;padding:1.9rem 1.6rem 1.5rem;width:calc(100% - 3rem);max-width:330px;background:var(--card);color:var(--ink);box-shadow:0 14px 46px #2b282338;text-align:center}.modal::backdrop{background:#fff3}.modal-text{font-family:var(--serif);font-size:1.2rem;line-height:1.4;margin:0 0 1.5rem}.modal-actions{display:flex;gap:.7rem}.modal-actions .btn{flex:1;padding:.7rem 1rem}.hint{font-size:.8rem;color:var(--muted);margin-bottom:0}.error-stage{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.75rem,3vh,1.75rem);padding:clamp(1.25rem,4vh,3rem) 0}.error-card{text-align:center;width:min(100%,300px);min-height:52vh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:none;border:1px solid rgba(43,40,35,.14);border-radius:2px;box-shadow:inset 0 0 0 1px #fffcf580,0 2px 30px #2b28230d}.error-card .monogram-name{font-size:clamp(1.7rem,8vw,2.5rem)}.error-card .monogram-amp{font-size:clamp(4rem,20vw,5.5rem)}.error-card p{font-family:var(--serif);text-transform:uppercase;letter-spacing:.14em;font-size:.84rem;line-height:1.9}h1.monogram{display:flex;flex-direction:column;align-items:center;font-family:var(--display);line-height:1}.error-card h1.monogram{margin:.5rem 0 1.5rem}.monogram-name{font-weight:600;font-size:clamp(2.3rem,9vw,4.5rem);text-transform:uppercase;letter-spacing:.12em;text-indent:.12em;position:relative;z-index:1}.monogram-amp{font-size:clamp(5.5rem,22vw,8.5rem);font-weight:500;font-style:italic;letter-spacing:normal;line-height:.7;margin:-.2em 0;color:#f7efe8;-webkit-text-stroke:1px rgba(43,40,35,.25);position:relative;z-index:0}.error-doodle{overflow:hidden;aspect-ratio:100 / 82;width:min(62%,200px);margin:0 auto}.error-doodle img{display:block;width:100%;margin-top:-18%}@media(max-width:480px){.guest-row .names{flex-direction:column}.actions .btn{width:100%}}
