:root {
  --navy: #172f60;
  --soft-blue: #b0d5f0;
  --soft-green: #cbdea7;
  --blush: #f4c0af;
  --white: #ffffff;
  --ivory: #fffaf7;
  --ink-muted: #52617a;
  --border: rgba(23, 47, 96, 0.16);
  --shadow: 0 18px 45px rgba(23, 47, 96, 0.12);
  --font-serif: "Cormorant Garamond", Georgia, "Times New Roman", Times, serif;
  --font-body: var(--font-serif);
  --font-display: var(--font-serif);
  --font-numeral: "Lora", Georgia, "Times New Roman", Times, serif;
  --font-script: "Luxurious Script", "Brush Script MT", cursive;
  --font-label: "Manrope", Arial, Helvetica, sans-serif;
  --font-sans: var(--font-label);
  --font-accent: var(--font-label);
  --font-nav: "Manrope", Arial, Helvetica, sans-serif;
  --ease-soft: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-polished: cubic-bezier(0.22, 0.61, 0.36, 1);
  --duration-soft: 520ms;
  --duration-reveal: 1100ms;
  --space-2xs: clamp(0.5rem, 0.45rem + 0.25vw, 0.7rem);
  --space-xs: clamp(0.75rem, 0.68rem + 0.35vw, 1rem);
  --space-sm: clamp(1rem, 0.9rem + 0.5vw, 1.35rem);
  --space-md: clamp(1.5rem, 1.25rem + 1.15vw, 2.25rem);
  --space-lg: clamp(2.25rem, 1.75rem + 2.25vw, 3.75rem);
  --space-xl: clamp(3.5rem, 2.5rem + 4.5vw, 6.5rem);
  --space-section: clamp(4.25rem, 3rem + 6vw, 8rem);
  --space-section-tight: clamp(3rem, 2.35rem + 3.2vw, 5rem);
}
.site-header{height:auto;padding:0;inset:auto;top:0}.site-header .nav{font:500 18px/1.68 var(--font-body);letter-spacing:normal}.site-footer{display:block;border:0;margin:0;letter-spacing:normal;font:500 18px/1.68 var(--font-body)}
.site-header{
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(10px);
}
.nav{
  width: min(1160px, calc(100% - 2rem));
  min-height: 72px;
  margin: 0 auto;
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.brand{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  width: 74px;
  text-decoration: none;
  transition: opacity var(--duration-soft) var(--ease-soft), transform var(--duration-soft) var(--ease-soft);
}
.brand img{
  display: block;
  width: 100%;
  height: auto;
}
.brand:hover{
  opacity: 0.82;
  transform: translateY(-1px);
}
.nav-toggle{
  position: relative;
  width: 44px;
  height: 44px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--white);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  overflow: hidden;
  transform: translate3d(0, 0, 0) scale(1);
  transition:
    background-color 220ms var(--ease-polished),
    border-color 220ms var(--ease-polished),
    box-shadow 220ms var(--ease-polished),
    transform 160ms var(--ease-polished);
}
.nav-toggle::before{
  position: absolute;
  inset: 5px;
  border-radius: inherit;
  background:
    radial-gradient(circle at 35% 25%, rgba(255, 255, 255, 0.9), transparent 38%),
    linear-gradient(135deg, rgba(244, 192, 175, 0.26), rgba(177, 215, 201, 0.28));
  content: "";
  opacity: 0;
  transform: scale(0.86);
  transition:
    opacity 220ms var(--ease-polished),
    transform 220ms var(--ease-polished);
}
.nav-toggle-line,.nav-toggle-line::before,.nav-toggle-line::after{
  display: block;
  width: 18px;
  height: 2px;
  background: var(--navy);
  content: "";
  transition:
    background-color 180ms var(--ease-polished),
    opacity 160ms var(--ease-polished),
    transform 220ms var(--ease-polished),
    top 220ms var(--ease-polished);
}
.nav-toggle-line{
  position: relative;
  z-index: 1;
}
.nav-toggle-line::before{
  position: absolute;
  top: -6px;
}
.nav-toggle-line::after{
  position: absolute;
  top: 6px;
}
@media (hover: hover) and (pointer: fine){.nav-toggle:hover{
    border-color: rgba(23, 47, 96, 0.28);
    box-shadow: 0 14px 30px rgba(23, 47, 96, 0.12);
    transform: translate3d(0, -1px, 0) scale(1.02);
  }
.nav-toggle:hover::before{
    opacity: 1;
    transform: scale(1);
  }
}
.nav-toggle:active{
  box-shadow: 0 8px 18px rgba(23, 47, 96, 0.1);
  transform: translate3d(0, 0, 0) scale(0.94);
  transition-duration: 100ms;
}
.nav-toggle.is-clicking{
  animation: nav-toggle-click 240ms var(--ease-polished);
}
.nav-toggle[aria-expanded="true"]{
  border-color: rgba(23, 47, 96, 0.32);
  box-shadow: 0 12px 26px rgba(23, 47, 96, 0.12);
}
.nav-toggle[aria-expanded="true"]::before{
  opacity: 1;
  transform: scale(1);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-line{
  background: transparent;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-line::before{
  top: 0;
  transform: rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-line::after{
  top: 0;
  transform: rotate(-45deg);
}
@keyframes nav-toggle-click{
  0% {
    transform: translate3d(0, 0, 0) scale(0.96);
  }

  62% {
    transform: translate3d(0, -1px, 0) scale(1.035);
  }

  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }
}
.nav-menu{
  position: absolute;
  top: 72px;
  left: 0;
  right: 0;
  margin: 0;
  padding: 1rem;
  background: var(--white);
  border-bottom: 1px solid var(--border);
  display: grid;
  gap: 0.25rem;
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  transform: translate3d(0, -10px, 0);
  visibility: hidden;
  list-style: none;
  transition:
    max-height 620ms var(--ease-soft),
    opacity 360ms var(--ease-polished),
    transform 520ms var(--ease-soft),
    visibility 0ms linear 620ms;
}
.nav-menu.is-open{
  max-height: calc(100svh - 72px);
  opacity: 1;
  pointer-events: auto;
  transform: translate3d(0, 0, 0);
  visibility: visible;
  transition:
    max-height 620ms var(--ease-soft),
    opacity 420ms var(--ease-polished),
    transform 520ms var(--ease-soft),
    visibility 0ms;
}
.nav-menu a{
  position: relative;
  display: block;
  padding: 0.75rem 1rem;
  border-radius: 4px;
  text-decoration: none;
  font-family: var(--font-nav);
  font-size: 0.86rem;
  font-weight: 700;
  font-variant-caps: all-small-caps;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.nav-menu a::after{
  content: "";
  position: absolute;
  left: 1rem;
  right: 1rem;
  bottom: 0.42rem;
  height: 1px;
  transform: scaleX(0);
  transform-origin: left;
  background: currentColor;
  transition: transform var(--duration-soft) var(--ease-soft);
}
.nav-menu a{
  -webkit-tap-highlight-color: rgba(244, 192, 175, 0.28);
}
.nav-menu a:hover,.nav-menu a:focus,.nav-menu a[aria-current="page"]{
  background: transparent;
  color: var(--navy);
}
.nav-menu a:hover::after,.nav-menu a:focus-visible::after,.nav-menu a[aria-current="page"]::after{
  transform: scaleX(1);
}
.nav-menu li{
  --nav-item-delay: 0ms;
  opacity: 0;
  transform: translate3d(0, 12px, 0);
  transition:
    opacity 420ms var(--ease-polished),
    transform 560ms var(--ease-soft);
  transition-delay: 0ms;
}
.nav-menu li:nth-child(1){
  --nav-item-delay: 60ms;
}
.nav-menu li:nth-child(2){
  --nav-item-delay: 105ms;
}
.nav-menu li:nth-child(3){
  --nav-item-delay: 150ms;
}
.nav-menu li:nth-child(4){
  --nav-item-delay: 195ms;
}
.nav-menu li:nth-child(5){
  --nav-item-delay: 240ms;
}
.nav-menu li:nth-child(6){
  --nav-item-delay: 285ms;
}
.nav-menu li:nth-child(7){
  --nav-item-delay: 330ms;
}
.nav-menu li:nth-child(8){
  --nav-item-delay: 375ms;
}
.nav-menu li:nth-child(9){
  --nav-item-delay: 420ms;
}
.nav-menu li:nth-child(10){
  --nav-item-delay: 465ms;
}
.nav-menu.is-open li{
  opacity: 1;
  transform: translate3d(0, 0, 0);
  transition-delay: var(--nav-item-delay);
}
.nav-rsvp{
  border: 1px solid var(--navy);
}
.nav-menu a:focus-visible,.nav-toggle:focus-visible,.brand:focus-visible{
  outline: 2px solid var(--blush);
  outline-offset: 4px;
}
@media (prefers-reduced-motion: reduce){.nav-menu li,.nav-menu.is-open li{
    opacity: 1;
    transform: none;
    transition-delay: 0ms;
  }
}
.site-footer{
  padding: 2rem 1rem;
  padding-bottom: max(2rem, calc(1.25rem + env(safe-area-inset-bottom)));
  background: var(--navy);
  color: var(--white);
  text-align: center;
}
.site-footer p{
  margin: 0.25rem 0;
}
.site-footer p:first-child{
  font-family: var(--font-script);
  font-size: 2.2rem;
  line-height: 1.1;
}
@media (min-width: 760px){.nav-toggle{
    display: none;
  }
.nav-menu{
    position: static;
    display: flex;
    align-items: center;
    gap: 0.15rem;
    max-height: none;
    opacity: 1;
    overflow: visible;
    padding: 0;
    border: 0;
    pointer-events: auto;
    transform: none;
    visibility: visible;
    transition: none;
  }
.nav-menu a{
    padding: 0.55rem 0.65rem;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
.nav-menu li{
    opacity: 1;
    transform: none;
    transition: none;
    transition-delay: 0ms;
  }
}
@media (max-width: 759px){.nav{
    width: min(100% - 1.25rem, 1160px);
    min-height: 66px;
  }
.brand{
    width: 64px;
  }
.nav-toggle{
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
  }
.nav-menu{
    top: 66px;
    max-height: calc(100svh - 66px);
    overflow-y: auto;
    padding: 0.7rem;
  }
.nav-menu a{
    min-height: 44px;
    display: flex;
    align-items: center;
  }
}
@media (max-width: 430px){.nav{
    width: min(100% - 1rem, 1160px);
  }
}
@media (min-width: 1020px){.nav-menu a{
    font-size: 0.9rem;
    padding-inline: 0.78rem;
  }
}
.nav-menu{
  padding-left: max(1rem, env(safe-area-inset-left));
  padding-right: max(1rem, env(safe-area-inset-right));
}
.nav-menu a{
  touch-action: manipulation;
}
@media (hover: none), (pointer: coarse){.nav-menu a{
    min-height: 48px;
  }
.nav-menu a:active{
    transform: scale(0.985);
    transition-duration: 120ms;
  }
}
@media (max-width: 899px){.nav-menu,.nav-menu.is-open{
    max-height: calc(100svh - 66px - env(safe-area-inset-bottom));
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }
}
@media (max-width: 520px){.nav-menu{
    padding: 0.75rem max(0.75rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(0.75rem, env(safe-area-inset-left));
  }
}
@media (forced-colors: active){.nav-toggle{
    border: 1px solid CanvasText !important;
    background: Canvas !important;
    color: CanvasText !important;
    box-shadow: none !important;
  }
.nav-menu a:focus-visible,.nav-toggle:focus-visible,.brand:focus-visible{
    outline: 2px solid Highlight;
  }
.nav-menu a[aria-current="page"]{
    outline: 1px solid Highlight;
    outline-offset: 2px;
  }
}
@media (max-width: 759px){.no-js .site-header{
    position: relative;
  }
.no-js .nav{
    flex-wrap: wrap;
  }
.no-js .nav-toggle{
    display: none;
  }
.no-js .nav-menu{
    position: static;
    display: grid;
    width: 100%;
    max-height: none;
    padding: .75rem 0 1rem;
    overflow: visible;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: none;
  }
}

@media(max-width:759px){.site-header .nav,.site-footer{font-size:16px}}

.site-footer p:first-child{font-size:1.9rem}

/* Keep display titles consistently upright across the redesigned pages. */
:is(h1,h2,h3,h4,h5,h6), :is(h1,h2,h3,h4,h5,h6) *, .occasion { font-style: normal; }

/* Keyboard focus and navigation remain usable if a page script fails. */
[hidden]{display:none!important}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid #284d9d;outline-offset:4px}
@media(max-width:1099px){html:not(.nav-ready) .site-header{position:relative}html:not(.nav-ready) .site-header .nav{height:auto;flex-wrap:wrap}html:not(.nav-ready) .site-header .nav-toggle{display:none}html:not(.nav-ready) .site-header .nav-menu{position:static;display:flex;flex-wrap:wrap;width:100%;max-height:none;height:auto;opacity:1;visibility:visible;pointer-events:auto;overflow:visible;transform:none;padding:12px 0;gap:8px 16px}html:not(.nav-ready) .nav-menu li{opacity:1;transform:none}}
