@font-face{font-family:"Bellefair";src:url(/assets/fonts/bf-he.woff2) format("woff2");font-display:swap;unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}
@font-face{font-family:"Bellefair";src:url(/assets/fonts/bf-la.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-200B,U+2011-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex";font-weight:300;src:url(/assets/fonts/px3-he.woff2) format("woff2");font-display:swap;unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}
@font-face{font-family:"Plex";font-weight:300;src:url(/assets/fonts/px3-la.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-200B,U+2011-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex";font-weight:400;src:url(/assets/fonts/px4-he.woff2) format("woff2");font-display:swap;unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}
@font-face{font-family:"Plex";font-weight:400;src:url(/assets/fonts/px4-la.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-200B,U+2011-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex";font-weight:600;src:url(/assets/fonts/px6-he.woff2) format("woff2");font-display:swap;unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}
@font-face{font-family:"Plex";font-weight:600;src:url(/assets/fonts/px6-la.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-200B,U+2011-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --paper:#F6F0E4;--paper2:#EDE4D2;--card:#FCF9F2;
  --em:#0F3D2E;--em2:#0A2B21;--em3:#1A5A43;
  --gold:#B8903F;--goldd:#86641F;--goldl:#D8B466;
  --ink:#1D2823;--muted:#4F5B54;--line:rgba(15,61,46,.18);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:78px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1.0625rem/1.65 "Plex",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;padding-bottom:64px}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:"Bellefair",Georgia,serif;font-weight:400;line-height:1.06;margin:0}
p{margin:0}
.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}
.wrap{width:min(1160px,100% - 32px);margin-inline:auto}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.skip{position:absolute;inset-inline-start:-9999px;top:8px}
.skip:focus{inset-inline-start:16px;z-index:100;background:var(--em);color:#fff;padding:8px 12px}

/* header */
.top{position:sticky;top:0;z-index:50;background:rgba(246,240,228,.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);transition:box-shadow .3s}
.top.sc{box-shadow:0 8px 22px -16px rgba(10,43,33,.55)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:10px;height:62px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;min-width:0}
.brand .logo{width:38px;height:38px;flex:none}
.brand b{display:block;font-family:"Bellefair",serif;font-weight:400;font-size:1.42rem;line-height:1;color:var(--em)}
.brand small{display:block;font-size:.72rem;color:var(--muted);margin-top:3px;white-space:nowrap}
.top nav{display:none}
.call{display:inline-flex;align-items:center;gap:6px;text-decoration:none;border:1px solid var(--em);color:var(--em);padding:7px 11px;font-size:.86rem;font-weight:600;white-space:nowrap;flex:none}

/* buttons */
.btns{display:flex;flex-wrap:wrap;gap:10px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:12px 18px;font-weight:600;font-size:1rem;text-decoration:none;border:1px solid var(--em);color:var(--em);background:transparent;flex:1 1 100%;white-space:nowrap;transition:background .2s,color .2s}
.btn.wa{background:var(--em);color:var(--card)}
.btn:hover{background:var(--em2);color:var(--card)}
.btn.full{width:100%}

/* eyebrows & headings */
.ey{display:flex;align-items:center;gap:10px;font-size:.8rem;letter-spacing:.14em;color:var(--goldd);font-weight:600}
.ey::before{content:"";width:26px;height:1px;background:currentColor}
.ey.c{justify-content:center}
.ey.c::after{content:"";width:26px;height:1px;background:currentColor}
section{padding:68px 0}
section h2{font-size:clamp(2.2rem,9vw,3.7rem);color:var(--em);margin-top:12px;text-wrap:balance}
.sub{max-width:46ch;margin-top:12px;color:var(--muted)}
.dark{background:var(--em);color:var(--card)}
.dark h2{color:var(--card)}
.dark .ey{color:var(--goldl)}
.dark .sub{color:rgba(252,249,242,.82)}
.orn{display:block;width:130px;height:12px;margin:12px auto 0;color:var(--gold)}

/* hero: the invitation */
.hero{padding:20px 0 40px;overflow:clip;background:var(--paper)}
.hero .grid{display:grid;perspective:1400px}
.inv{position:relative;overflow:hidden;background:var(--card) var(--grain);padding:34px 22px 58px;text-align:center;box-shadow:0 1px 0 rgba(0,0,0,.05),0 22px 40px -26px rgba(10,43,33,.55);z-index:1}
.inv::before{content:"";position:absolute;inset:9px;border:1px solid var(--gold);outline:1px solid rgba(184,144,63,.42);outline-offset:-6px;pointer-events:none}
.inv::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:220%;background:linear-gradient(105deg,transparent 44%,rgba(255,244,212,.75) 50%,transparent 56%);transform:translateX(45%);pointer-events:none}
.inv .ey{justify-content:center;font-size:.76rem}
.inv .ey::before{display:none}
.hero h1{font-size:clamp(2.3rem,10vw,4.5rem);color:var(--em);margin-top:16px;text-wrap:balance}
.foil{display:block;color:var(--goldd)}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .foil{background:linear-gradient(100deg,#7E5D1B 0%,#A88032 30%,#9C7629 40%,#F2DDA0 50%,#9C7629 60%,#A88032 70%,#7E5D1B 100%);background-size:300% 100%;background-position:0 0;-webkit-background-clip:text;background-clip:text;color:transparent}
}
.inv .lead{margin:16px auto 0;max-width:32ch;color:var(--muted)}
.inv .btns{margin-top:24px;position:relative;z-index:2}
.seal{display:block;width:86px;height:86px;margin:-46px auto -40px;position:relative;z-index:3;transform:rotate(-8deg);filter:drop-shadow(0 6px 8px rgba(10,43,33,.35))}
.unf{margin:0;background:var(--em2);padding:7px;transform-origin:50% 0;box-shadow:0 26px 40px -26px rgba(10,43,33,.6)}
.unf img{width:100%;aspect-ratio:16/9;object-fit:cover}
.unf figcaption{font-size:.72rem;color:rgba(252,249,242,.62);padding:6px 4px 0;text-align:start}

/* ticker */
.tickr{background:var(--em2);color:var(--goldl);overflow:hidden;white-space:nowrap;border-block:1px solid var(--gold)}
.tickr .row{display:inline-flex;align-items:center;gap:22px;padding:11px 11px;font-family:"Bellefair",serif;font-size:1.15rem;animation:marq 46s linear infinite}
.tickr i{font-style:normal;font-size:.7rem;color:var(--gold)}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(50%)}}

/* services: seating chart */
.seating{position:relative;margin-top:34px;padding-inline-start:46px;display:grid;gap:28px}
.seating::before{content:"";position:absolute;top:-10px;bottom:-10px;inset-inline-start:0;width:24px;background:#EFE6D2 linear-gradient(to right,transparent 8px,rgba(184,144,63,.8) 8px 9px,transparent 9px 15px,rgba(184,144,63,.8) 15px 16px,transparent 16px);box-shadow:0 0 0 1px rgba(216,180,102,.6),0 10px 24px -10px rgba(0,0,0,.6)}
.place{position:relative;background:var(--card) var(--grain);color:var(--ink);padding-bottom:22px;box-shadow:0 18px 30px -18px rgba(0,0,0,.7);transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.place::before{content:"";position:absolute;inset-inline-start:-20px;top:52px;width:14px;height:24px;background:var(--em3);border:1px solid var(--goldl);border-radius:2px 7px 7px 2px}
.place::after{content:"";position:absolute;inset-inline-start:-42px;top:56px;width:16px;height:16px;border-radius:50%;background:var(--card);box-shadow:0 0 0 1.5px var(--gold),inset 0 0 0 3px var(--card),inset 0 0 0 4px rgba(184,144,63,.6)}
.fold{display:block;height:16px;background:linear-gradient(#E3D8C0,#F4EEE2);border-bottom:1px solid rgba(134,100,31,.4)}
.place .tag{display:flex;justify-content:space-between;gap:8px;padding:14px 18px 0;font-size:.74rem;letter-spacing:.12em;color:var(--goldd);font-weight:600}
.place h3{font-size:clamp(1.8rem,7.4vw,2.3rem);color:var(--em);padding:6px 18px 0}
.place figure{margin:14px 18px 0;padding:5px;border:1px solid rgba(184,144,63,.6)}
.place img{width:100%;aspect-ratio:4/3;object-fit:cover}
.place p{margin:14px 18px 0;color:var(--muted);font-size:1rem}

/* steps: RSVP cards */
#rsvp{background:var(--paper2)}
.cards{list-style:none;margin:32px 0 0;padding:0;display:grid;gap:20px}
.rc{position:relative;background:var(--card) var(--grain);border:1px solid rgba(184,144,63,.55);padding:20px 20px 18px;box-shadow:0 14px 26px -20px rgba(10,43,33,.6);transform:rotate(-.8deg);transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.rc:nth-child(2){transform:rotate(.8deg)}
.rc::before{content:"";position:absolute;inset:6px;border:1px solid rgba(184,144,63,.3);pointer-events:none}
.rt{display:flex;justify-content:space-between;align-items:center;font-size:.76rem;letter-spacing:.1em;color:var(--goldd);font-weight:600}
.box{width:28px;height:28px;border:1.5px solid var(--em);display:grid;place-items:center}
.tick{width:22px;height:22px}
.tick path{fill:none;stroke:var(--em);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:0;transition:stroke-dashoffset .6s .35s ease}
.rc h3{font-size:2rem;color:var(--em);margin-top:12px}
.rc p{color:var(--muted);margin-top:6px}
.sig{display:flex;align-items:baseline;gap:10px;margin-top:16px;font-size:.8rem;color:var(--muted)}
.sig b{flex:1;font-family:"Bellefair",serif;font-weight:400;font-size:1.3rem;color:var(--em);border-bottom:1px dotted var(--goldd);padding-bottom:2px}

/* WhatsApp builder: RSVP reply card */
#reply{background:var(--em2)}
.rgrid{display:grid;gap:30px}
.reply{position:relative;background:var(--card) var(--grain);color:var(--ink);padding:30px 20px 24px;box-shadow:0 26px 50px -30px rgba(0,0,0,.8)}
.reply::before{content:"";position:absolute;inset:8px;border:1px solid rgba(184,144,63,.6);pointer-events:none}
.rh{text-align:center;font-family:"Bellefair",serif;font-size:2.2rem;line-height:1;color:var(--em)}
.reply fieldset{border:0;margin:20px 0 0;padding:0;min-width:0}
.reply legend,.fld label,.pl2{display:block;padding:0;font-size:.8rem;letter-spacing:.08em;color:var(--goldd);font-weight:600;margin-bottom:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{position:relative;cursor:pointer}
.chips input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.chips span{display:inline-block;padding:8px 13px;border:1px solid rgba(15,61,46,.35);font-size:.95rem;background:var(--card);transition:background .2s,color .2s}
.chips input:checked+span{background:var(--em);border-color:var(--em);color:var(--card)}
.chips input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.fld{margin-top:20px;position:relative;z-index:1}
.fld input{width:100%;font:inherit;font-size:1rem;color:var(--ink);background:transparent;border:0;border-bottom:1px dotted var(--goldd);padding:6px 2px;min-height:44px;border-radius:0}
.fld input:focus{outline:none;border-bottom:2px solid var(--em)}
.pl2{margin-top:22px}
.msg{position:relative;z-index:1;margin:0 0 16px;white-space:pre-wrap;font:400 .95rem/1.6 "Plex",system-ui,sans-serif;background:var(--paper2);padding:12px 14px;border-inline-start:3px solid var(--gold);color:var(--ink)}
.reply .btn{position:relative;z-index:1}

/* area: monogram stamp */
.agrid{display:grid;gap:30px;align-items:center}
.stamp{position:relative;width:236px;height:236px;margin:6px auto;border-radius:50%;border:2px solid var(--goldd);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--em);transform:rotate(-7deg);transition:transform .55s cubic-bezier(.3,1.6,.5,1)}
.stamp::before{content:"";position:absolute;inset:8px;border-radius:50%;border:1px dashed var(--goldd)}
.stamp::after{content:"";position:absolute;inset:17px;border-radius:50%;border:1px solid rgba(134,100,31,.5)}
.stamp small{font-size:.8rem;letter-spacing:.16em;color:var(--goldd);font-weight:600}
.stamp b{font-family:"Bellefair",serif;font-weight:400;font-size:5.4rem;line-height:.95}
.stamp i{font-style:normal;font-size:.6rem;color:var(--gold);letter-spacing:.4em;margin-top:4px}

/* FAQ: the evening menu */
#menu{background:var(--paper2)}
.mcard{position:relative;max-width:760px;margin:0 auto;background:var(--card) var(--grain);padding:36px 20px 28px;box-shadow:0 18px 36px -26px rgba(10,43,33,.6)}
.mcard::before{content:"";position:absolute;inset:9px;border:1px solid var(--gold);outline:1px solid rgba(184,144,63,.4);outline-offset:-6px;pointer-events:none}
.c{text-align:center}
.faq{margin-top:20px;position:relative;z-index:1}
.faq details{border-bottom:1px dotted rgba(134,100,31,.6)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px 4px;cursor:pointer;list-style:none;font-family:"Bellefair",serif;font-size:1.45rem;line-height:1.2;color:var(--em)}
.faq summary::-webkit-details-marker{display:none}
.pl{flex:none;width:14px;height:14px;position:relative}
.pl::before,.pl::after{content:"";position:absolute;inset:6px 0;background:var(--gold)}
.pl::after{inset:0 6px;transition:transform .3s}
.faq details[open] .pl::after{transform:scaleY(0)}
.faq p{padding:0 4px 18px;color:var(--muted)}

/* end card */
.end{background:var(--em);padding:64px 0 56px}
.inv.sm{max-width:620px;margin:0 auto;padding:36px 22px 56px}
.end h2{font-size:clamp(2.7rem,12vw,4.8rem);margin-top:14px}
.end .seal{margin-top:-44px}
.sign{text-align:center;color:var(--goldl);font-size:.92rem;margin-top:52px}

/* footer, bar */
footer{background:var(--em2);color:rgba(252,249,242,.78);font-size:.86rem;padding:26px 0}
footer .wrap{display:grid;gap:8px}
footer b{color:var(--card);font-weight:600}
.lk a{margin-inline-end:16px}
.bar{position:fixed;bottom:0;left:0;right:0;z-index:60;display:grid;grid-template-columns:1fr 1.4fr;background:var(--em2);border-top:1px solid var(--gold);padding-bottom:env(safe-area-inset-bottom)}
.bar a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:56px;color:var(--card);text-decoration:none;font-weight:600}
.bar .wa{background:var(--goldl);color:var(--em2)}

/* inner pages */
.doc{padding-top:40px;padding-bottom:70px;max-width:820px}
.doc h1{font-size:2.6rem;color:var(--em);border-bottom:1px solid var(--gold);padding-bottom:10px;margin-bottom:16px}
.doc h2{font-size:1.7rem;color:var(--em);margin:26px 0 8px}
.doc p,.doc li{margin-bottom:10px}

/* motion: only enhances, everything above is the visible default */
@media (prefers-reduced-motion:no-preference){
  html.js .inv.go::after{animation:sheen 1.7s cubic-bezier(.4,0,.2,1) .7s both}
  html.js .inv.go .foil{animation:foil 2.2s ease .9s both}
  html.js .hero .unf{animation:unfold 1.3s cubic-bezier(.2,.75,.25,1) .35s both}
  html.js .hero .seal{animation:press .75s cubic-bezier(.3,1.5,.5,1) 1.45s both}
  html.js .end .seal.in{animation:press .75s cubic-bezier(.3,1.5,.5,1) .6s both}
  html.js .place:not(.in){transform:translateY(16px) rotate(-1.4deg)}
  html.js .rc:not(.in){transform:translateY(16px) rotate(0deg)}
  html.js .rc:not(.in) .tick path{stroke-dashoffset:24}
  html.js .stamp:not(.in){transform:scale(1.16) rotate(-18deg)}
}
@keyframes sheen{from{transform:translateX(45%)}to{transform:translateX(-45%)}}
@keyframes foil{from{background-position:100% 0}to{background-position:0 0}}
@keyframes unfold{from{transform:rotateX(-74deg)}to{transform:none}}
@keyframes press{from{transform:scale(1.45) rotate(-26deg)}to{transform:rotate(-8deg)}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* desktop */
@media (min-width:900px){
  body{padding-bottom:0}
  .bar{display:none}
  .btn{flex:1 1 170px}
  .top nav{display:flex;gap:26px}
  .top nav a{text-decoration:none;font-size:.95rem}
  .top nav a:hover{color:var(--goldd)}
  section{padding:104px 0}
  .hero{padding:48px 0 80px}
  .hero .grid{grid-template-columns:1fr 1.25fr;align-items:center;position:relative}
  .inv{padding:56px 44px 60px}
  .hero .seal{position:absolute;top:50%;right:calc(44.4% - 50px);margin:0;width:100px;height:100px;translate:0 -50%}
  .hero .unf{transform-origin:100% 50%}
  @media (prefers-reduced-motion:no-preference){html.js .hero .unf{animation-name:unfoldY}}
  .seating{grid-template-columns:1fr 1fr;column-gap:120px;row-gap:46px;padding-inline-start:0}
  .seating::before{inset-inline-start:calc(50% - 16px);width:32px;background:#EFE6D2 linear-gradient(to right,transparent 11px,rgba(184,144,63,.8) 11px 12px,transparent 12px 20px,rgba(184,144,63,.8) 20px 21px,transparent 21px)}
  .place:nth-child(odd)::before{inset-inline-start:auto;inset-inline-end:-30px;border-radius:7px 2px 2px 7px}
  .place:nth-child(odd)::after{inset-inline-start:auto;inset-inline-end:-56px}
  .place:nth-child(even)::before{inset-inline-start:-30px}
  .place:nth-child(even)::after{inset-inline-start:-56px}
  .cards{grid-template-columns:repeat(3,1fr);gap:28px}
  .rgrid{grid-template-columns:1fr 1.15fr;gap:60px;align-items:start}
  .reply{padding:40px 38px 32px}
  .agrid{grid-template-columns:auto 1fr;gap:70px}
  .stamp{width:300px;height:300px}
  .stamp b{font-size:7rem}
  .mcard{padding:48px 48px 36px}
}
@keyframes unfoldY{from{transform:rotateY(-70deg)}to{transform:none}}
