/* =========================
   SHARED DESIGN TOKENS
   ========================= */
:root{
  color-scheme:light;

  /* Modern Editorial Celebration */
  --color-ivory:#f7f4ee;
  --color-paper:#efe9df;
  --color-surface:#fffefb;
  --color-ink:#201c1b;
  --color-text-muted:rgba(32,28,27,.68);
  --color-plum:#493745;
  --color-champagne:#b99a63;
  --color-rose:#c98f85;
  --color-sage:#87917a;
  --color-border:rgba(32,28,27,.12);
  --color-border-strong:rgba(32,28,27,.22);
  --color-plum-soft:rgba(73,55,69,.10);
  --color-champagne-soft:rgba(185,154,99,.16);
  --color-rose-soft:rgba(201,143,133,.16);
  --color-sage-soft:rgba(135,145,122,.16);

  /* Typography */
  --font-sans:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-display:"DM Serif Display", Georgia, serif;
  --font-size-xs:clamp(.76rem, .72rem + .1vw, .8rem);
  --font-size-sm:clamp(.88rem, .84rem + .12vw, .94rem);
  --font-size-body:clamp(1rem, .96rem + .16vw, 1.06rem);
  --font-size-lead:clamp(1.05rem, .98rem + .3vw, 1.2rem);
  --font-size-section:clamp(2rem, 1.6rem + 2vw, 3.2rem);
  --font-size-hero:clamp(3rem, 2.25rem + 3.1vw, 4.45rem);
  --line-height-tight:1.04;
  --line-height-heading:1.1;
  --line-height-copy:1.72;
  --tracking-tight:-.025em;
  --tracking-label:.09em;
  --weight-regular:400;
  --weight-medium:500;
  --weight-semibold:600;
  --weight-bold:700;

  /* Surfaces, shape and depth */
  --surface-page:var(--color-ivory);
  --surface-muted:var(--color-paper);
  --surface-card:var(--color-surface);
  --surface-dark:var(--color-plum);
  --radius-control:18px;
  --radius-card:24px;
  --radius-panel:28px;
  --shadow-sm:0 6px 18px rgba(32,28,27,.06);
  --shadow-md:0 16px 50px rgba(32,28,27,.08);
  --focus-ring:0 0 0 4px rgba(185,154,99,.30);

  /* Motion */
  --ease-standard:cubic-bezier(.2,.8,.2,1);
  --ease-emphasis:cubic-bezier(.16,1,.3,1);
  --duration-fast:180ms;
  --duration-base:220ms;
  --duration-slow:700ms;

  /* Category modifier defaults */
  --page-accent:var(--color-plum);
  --page-accent-soft:var(--color-plum-soft);
  --page-accent-contrast:var(--color-surface);
  --label-accent:var(--color-champagne);
}

.page-weddings{
  --page-accent:var(--color-champagne);
  --page-accent-soft:var(--color-champagne-soft);
  --page-accent-contrast:var(--color-ink);
}
.page-xv{
  --page-accent:var(--color-rose);
  --page-accent-soft:var(--color-rose-soft);
  --page-accent-contrast:var(--color-ink);
}
.page-events{
  --page-accent:var(--color-sage);
  --page-accent-soft:var(--color-sage-soft);
  --page-accent-contrast:var(--color-ink);
}

/* =========================
   RESET, BASE AND ACCESSIBILITY
   ========================= */
*{ box-sizing:border-box; }
html{
  scroll-behavior:smooth;
}
main [id]{ scroll-margin-top:92px; }
body{
  min-width:280px;
  margin:0;
  color:var(--color-ink);
  font-family:var(--font-sans);
  font-size:var(--font-size-body);
  line-height:var(--line-height-copy);
  background:
    radial-gradient(860px 520px at -8% -8%, var(--color-rose-soft), transparent 66%),
    radial-gradient(760px 500px at 108% 4%, var(--color-sage-soft), transparent 64%),
    var(--surface-page);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{
  color:var(--color-ink);
  background:rgba(185,154,99,.32);
}
img{
  display:block;
  max-width:100%;
  height:auto;
}
button,
input,
textarea,
select{ font:inherit; }
a{
  color:inherit;
  text-decoration:none;
}
a,
button{ -webkit-tap-highlight-color:transparent; }
:focus-visible{
  outline:3px solid var(--color-champagne);
  outline-offset:4px;
}

.skip-link{
  position:fixed;
  top:10px;
  left:18px;
  z-index:200;
  min-height:48px;
  padding:12px 16px;
  border-radius:var(--radius-control);
  color:var(--color-surface);
  background:var(--color-ink);
  box-shadow:var(--shadow-md);
  transform:translateY(calc(-100% - 20px));
  transition:transform var(--duration-fast) var(--ease-standard);
}
.skip-link:focus{ transform:translateY(0); }

/* =========================
   LAYOUT AND TYPOGRAPHY
   ========================= */
.wrap{
  width:min(1120px, 100%);
  margin:0 auto;
  padding-inline:18px;
}
.small{ font-size:var(--font-size-sm); }
.muted{
  color:var(--color-text-muted);
  line-height:var(--line-height-copy);
}
.section{
  position:relative;
  padding:clamp(72px, 9vw, 112px) 0;
}
.section.alt{
  border:0;
  background:none;
}
.section-head{
  display:grid;
  gap:12px;
  max-width:760px;
  margin-bottom:clamp(28px, 4vw, 46px);
}
.section-head .muted{
  max-width:62ch;
  margin:0;
}
.section h2,
.section-title{
  margin:0;
  font-family:var(--font-display);
  font-size:var(--font-size-section);
  font-weight:var(--weight-regular);
  letter-spacing:var(--tracking-tight);
  line-height:var(--line-height-heading);
  text-wrap:balance;
}
.display-title{
  margin:0;
  font-family:var(--font-display);
  font-size:var(--font-size-hero);
  font-weight:var(--weight-regular);
  letter-spacing:var(--tracking-tight);
  line-height:var(--line-height-tight);
  text-wrap:balance;
}
.eyebrow,
.section-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:10px;
  width:max-content;
  margin:0;
  color:var(--color-plum);
  font-size:var(--font-size-xs);
  font-weight:var(--weight-semibold);
  letter-spacing:var(--tracking-label);
  line-height:1.2;
}
.eyebrow::before,
.section-eyebrow::before{
  content:"";
  width:26px;
  height:1px;
  background:var(--label-accent);
}

/* =========================
   CONTROLS AND SURFACES
   ========================= */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  padding:11px 17px;
  border:1px solid var(--color-border-strong);
  border-radius:var(--radius-control);
  color:var(--color-ink);
  background:var(--color-surface);
  box-shadow:var(--shadow-sm);
  cursor:pointer;
  font-size:var(--font-size-sm);
  font-weight:var(--weight-semibold);
  line-height:1.1;
  transition:
    transform var(--duration-fast) var(--ease-standard),
    color var(--duration-fast) var(--ease-standard),
    background var(--duration-fast) var(--ease-standard),
    border-color var(--duration-fast) var(--ease-standard),
    box-shadow var(--duration-fast) var(--ease-standard);
}
.btn:hover{
  border-color:var(--color-ink);
  background:var(--color-surface);
  box-shadow:var(--shadow-sm);
  transform:translateY(-2px);
}
.btn:active{
  box-shadow:var(--shadow-sm);
  transform:translateY(0) scale(.98);
}
.btn:visited{ color:var(--color-ink); }
.btn-ghost{
  border-color:var(--color-border-strong);
  background:var(--color-ivory);
  box-shadow:none;
}
.btn-primary{
  color:var(--page-accent-contrast, var(--color-surface));
  border-color:var(--page-accent, var(--color-plum));
  background:var(--page-accent, var(--color-plum));
  box-shadow:var(--shadow-sm);
}
.btn-primary:visited{ color:var(--page-accent-contrast, var(--color-surface)); }
.btn-primary:hover{
  color:var(--color-surface);
  border-color:var(--color-ink);
  background:var(--color-ink);
  box-shadow:var(--shadow-md);
}
.btn:focus-visible{ box-shadow:var(--focus-ring); }

.surface-card{
  border:1px solid var(--color-border);
  border-radius:var(--radius-card);
  background:var(--surface-card);
  box-shadow:var(--shadow-sm);
}

input,
textarea,
select{
  min-height:48px;
  padding:12px 14px;
  border:1px solid var(--color-border);
  border-radius:var(--radius-control);
  color:var(--color-ink);
  background:var(--color-surface);
  font-size:1rem;
}
input:focus-visible,
textarea:focus-visible,
select:focus-visible{ box-shadow:var(--focus-ring); }

/* =========================
   PRIMARY NAVBAR
   ========================= */
.nav{
  position:sticky;
  top:0;
  z-index:100;
  border-bottom:1px solid rgba(32,28,27,.08);
  background:rgba(247,244,238,.88);
  -webkit-backdrop-filter:blur(12px) saturate(125%);
  backdrop-filter:blur(12px) saturate(125%);
  animation:nav-arrive 520ms var(--ease-emphasis) both;
}
.nav-inner{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:clamp(18px, 3vw, 42px);
  min-height:78px;
  padding-top:10px;
  padding-bottom:10px;
}
.brand{
  grid-column:1;
  display:inline-flex;
  align-items:center;
  gap:12px;
  min-width:max-content;
}
.mark{
  position:relative;
  width:34px;
  height:42px;
  flex:0 0 auto;
}
.mark::before{
  content:"";
  position:absolute;
  inset:3px 4px 5px;
  border:1.5px solid var(--color-plum);
  border-bottom:0;
  border-radius:50% 50% 8px 8px;
  background:
    radial-gradient(circle at 50% 58%, var(--color-rose) 0 2px, transparent 2.5px),
    radial-gradient(circle at 50% 58%, var(--color-champagne-soft) 0 7px, transparent 7.5px),
    linear-gradient(180deg, rgba(255,254,251,.52), rgba(239,233,223,.2));
}
.mark::after{
  content:"";
  position:absolute;
  right:8px;
  bottom:5px;
  left:8px;
  height:1px;
  background:var(--color-champagne);
}
.brand-text{
  display:flex;
  flex-direction:column;
  line-height:1.05;
}
.brand-name{
  font-family:var(--font-display);
  font-size:1.15rem;
  font-weight:var(--weight-regular);
  letter-spacing:-.015em;
}
.brand-sub{
  margin-top:5px;
  color:var(--color-text-muted);
  font-size:var(--font-size-xs);
  font-weight:var(--weight-medium);
  letter-spacing:var(--tracking-label);
  text-transform:uppercase;
}
.nav-links{
  grid-column:2;
  grid-row:1;
  display:flex;
  align-items:center;
  justify-self:center;
  gap:clamp(4px, 1vw, 12px);
  min-width:0;
}
.nav-links a{
  position:relative;
  padding:10px 9px;
  border-radius:12px;
  color:var(--color-text-muted);
  font-size:var(--font-size-sm);
  font-weight:var(--weight-medium);
  white-space:nowrap;
  transition:
    color var(--duration-base) var(--ease-standard),
    background var(--duration-base) var(--ease-standard);
}
.nav-links a::after{
  content:"";
  position:absolute;
  right:10px;
  bottom:5px;
  left:10px;
  height:1px;
  background:var(--color-champagne);
  transform:scaleX(0);
  transform-origin:center;
  transition:transform var(--duration-base) var(--ease-emphasis);
}
.nav-links a:hover,
.nav-links a:focus-visible{
  color:var(--color-plum);
  background:rgba(255,254,251,.62);
}
.nav-links a:hover::after,
.nav-links a:focus-visible::after{ transform:scaleX(1); }
.nav-links a:active{
  color:var(--color-ink);
  background:var(--color-plum-soft);
}
.nav-toggle{
  display:none;
  grid-column:2;
  grid-row:1;
  width:48px;
  height:48px;
  align-items:center;
  justify-content:center;
  padding:0;
  border:1px solid var(--color-border-strong);
  border-radius:15px;
  color:var(--color-ink);
  background:rgba(255,254,251,.72);
  cursor:pointer;
  transition:
    color var(--duration-fast) var(--ease-standard),
    border-color var(--duration-fast) var(--ease-standard),
    background var(--duration-fast) var(--ease-standard);
}
.nav-toggle-lines,
.nav-toggle-lines::before,
.nav-toggle-lines::after{
  display:block;
  width:19px;
  height:1.5px;
  border-radius:999px;
  background:currentColor;
}
.nav-toggle-lines{ position:relative; }
.nav-toggle-lines::before,
.nav-toggle-lines::after{
  content:"";
  position:absolute;
  left:0;
}
.nav-toggle-lines::before{ top:-6px; }
.nav-toggle-lines::after{ top:6px; }
.nav-toggle[aria-expanded="true"]{
  color:var(--color-surface);
  border-color:var(--color-plum);
  background:var(--color-plum);
}
.nav-cta{
  grid-column:3;
  grid-row:1;
  display:flex;
  align-items:center;
  justify-content:flex-end;
}
.nav-cta .btn{
  min-height:48px;
  padding-inline:18px;
}

/* =========================
   FOOTER
   ========================= */
.footer{
  position:relative;
  padding:42px 0 46px;
  color:var(--color-paper);
  background:var(--color-ink);
}
.footer::before{
  content:"";
  position:absolute;
  top:0;
  right:0;
  left:0;
  height:1px;
  background:rgba(185,154,99,.42);
}
.footer-inner{
  display:grid;
  grid-template-columns:minmax(220px,1fr) auto minmax(300px,1fr);
  align-items:center;
  gap:28px;
}
.footer-brand{
  display:grid;
  gap:5px;
}
.footer-name{
  width:max-content;
  color:var(--color-surface);
  font-family:var(--font-display);
  font-size:1.35rem;
  letter-spacing:-.02em;
}
.footer-brand p,
.footer-copy{
  margin:0;
  color:rgba(255,254,251,.58);
  font-size:var(--font-size-sm);
}
.footer-copy{ text-align:center; }
.footer .muted{ color:rgba(255,254,251,.62); }
.footer-links{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px;
}
.footer-links a{
  padding:8px 10px;
  border-radius:var(--radius-control);
  transition:
    color var(--duration-fast) var(--ease-standard),
    background var(--duration-fast) var(--ease-standard);
}
.footer-links a:hover{
  color:var(--color-paper);
  background:rgba(255,255,255,.09);
}

/* =========================
   SHARED MOTION
   ========================= */
.motion-ready .reveal{
  opacity:0;
  transform:translateY(16px);
  transition:
    opacity 600ms var(--ease-emphasis) var(--reveal-delay, 0ms),
    transform 600ms var(--ease-emphasis) var(--reveal-delay, 0ms);
}
.motion-ready .reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

@keyframes nav-arrive{
  from{ opacity:0; transform:translateY(-12px); }
  to{ opacity:1; transform:translateY(0); }
}

/* =========================
   SHARED RESPONSIVE RULES
   ========================= */
@media (max-width:980px){
  .section{ padding:64px 0; }
  .nav-inner{ min-height:72px; }
  .nav-links{ gap:2px; }
  .nav-links a{
    padding-inline:6px;
    font-size:.82rem;
  }
  .nav-cta .btn-ghost{ display:none; }

  .footer-inner{
    grid-template-columns:1fr auto;
    align-items:end;
  }
  .footer-copy{
    grid-column:1 / -1;
    grid-row:2;
    text-align:left;
  }
}

@media (max-width:860px){
  .nav{
    -webkit-backdrop-filter:blur(6px) saturate(115%);
    backdrop-filter:blur(6px) saturate(115%);
  }
  .nav-inner{
    position:relative;
    grid-template-columns:minmax(0,1fr) auto auto;
    gap:10px;
  }
  .nav-toggle{ display:inline-flex; }
  .nav-links{
    position:absolute;
    top:calc(100% - 1px);
    right:18px;
    left:18px;
    z-index:2;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:2px;
    padding:10px;
    border:1px solid var(--color-border);
    border-radius:0 0 var(--radius-control) var(--radius-control);
    background:rgba(255,254,251,.98);
    box-shadow:var(--shadow-md);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(-8px);
    transition:
      opacity var(--duration-base) var(--ease-standard),
      visibility var(--duration-base) var(--ease-standard),
      transform var(--duration-base) var(--ease-standard);
  }
  .nav-links.is-open{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0);
  }
  .nav-links a{
    display:flex;
    align-items:center;
    min-height:48px;
    padding:10px 12px;
    white-space:normal;
  }
  .nav-links a::after{ display:none; }

  .footer-inner{
    grid-template-columns:1fr;
    align-items:start;
    gap:20px;
  }
  .footer-copy{
    grid-column:auto;
    grid-row:auto;
  }
  .footer-links{ justify-content:flex-start; }
  .footer-links a{
    display:inline-flex;
    align-items:center;
    min-height:48px;
  }
}

@media (max-width:520px){
  main [id]{ scroll-margin-top:80px; }
  .section{ padding:52px 0; }
  .nav-inner{
    gap:10px;
    min-height:66px;
  }
  .mark{
    width:30px;
    height:38px;
  }
  .brand-name{ font-size:.91rem; }
  .brand-sub{ display:none; }
  .nav-cta .btn{
    min-height:48px;
    padding:9px 13px;
  }
  .footer{ padding-block:36px; }
  .footer-links{ gap:2px 4px; }
}

@media (max-width:430px){
  .nav-inner{ gap:8px; }
  .brand{ gap:8px; }
  .nav-cta .btn{ padding-inline:11px; }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,
  *::before,
  *::after{
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .nav{ animation:none !important; }
  .btn:hover{ transform:none !important; }
  .motion-ready .reveal,
  .motion-ready .reveal.is-visible{
    opacity:1 !important;
    transform:none !important;
  }
}
