/* ─── Reset ──────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ─── Design tokens ──────────────────────────────────────────────────────────── */
:root {
  --cream:       #edeae2;
  --cream-dark:  #e3dfd5;
  --green:       #5e7228;
  --green-mid:   #7a9a3a;
  --green-light: #b8ca7a;
  --text:        #3d4a18;
  --muted:       #7a8a55;
  --peach:       #f5c5a3;
}

/* ─── Scroll behaviour ───────────────────────────────────────────────────────── */
html, body {
  height: 100%;
}

/* Landing page: lock scroll so content stays viewport-fitted */
html:not(.rsvp),
body:not(.rsvp-page) {
  overflow: hidden;
}

/* RSVP page: full scroll on both axes for all mobile browsers */
html.rsvp {
  height: auto;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
body.rsvp-page {
  height: auto;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* ─── Body base ──────────────────────────────────────────────────────────────── */
body {
  background-color: var(--cream);
  color: var(--text);
  font-family: 'Nunito', sans-serif;
  position: relative;
}

/* ─── Decorative corner waves ────────────────────────────────────────────────── */
.deco {
  position: fixed;
  width: clamp(180px, 28vw, 280px);
  opacity: 0.55;
  pointer-events: none;
  z-index: 0;
}
.deco-top-left     { top: -20px;    left: -20px;  transform: rotate(0deg);   }
.deco-bottom-right { bottom: -20px; right: -20px; transform: rotate(180deg); }

/* ─── Shared container ───────────────────────────────────────────────────────── */
.container {
  position: relative;
  z-index: 1;
  max-width: 640px;
  width: 100%;
  height: 100vh;
  height: 100dvh; /* prevents iOS chrome-bar cutoff */
  margin: 0 auto;
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-evenly;
  gap: 0;
}

/* ─── Responsive: shared ─────────────────────────────────────────────────────── */
@media (max-width: 480px) {
  .deco {
    width: 110px;
    opacity: 0.3;
  }

  .container {
    padding: 40px 18px 28px;
    justify-content: space-between;
  }

  /* Landing page — allow scroll if content overflows on very short phones */
  body:not(.rsvp-page) {
    overflow-y: auto;
  }
}

@media (max-width: 360px) {
  .deco { display: none; }
}
