.guest-body {
  --guest-background: #f4f0e7;
  --guest-surface: #fffcf5;
  --guest-ink: #20392c;
  --guest-accent: #234b35;
  --guest-soft: #e7ecdc;
  --guest-heading-font: Georgia, "Times New Roman", serif;
  margin: 0;
  min-height: 100vh;
  background: var(--guest-background);
  color: var(--guest-ink);
  font-family: system-ui, sans-serif;
  line-height: 1.5;
}
.guest-body[data-theme="birthday"] {
  --guest-background: #e8f5ff;
  --guest-surface: #fffdf7;
  --guest-ink: #0d3269;
  --guest-accent: #0959c6;
  --guest-soft: #fff1b7;
  --guest-heading-font: "Trebuchet MS", system-ui, sans-serif;
}
.guest-body[data-theme="party"] {
  --guest-background: #eee8fa;
  --guest-surface: #fffbff;
  --guest-ink: #35214c;
  --guest-accent: #70359b;
  --guest-soft: #efe1f7;
  --guest-heading-font: "Trebuchet MS", system-ui, sans-serif;
}
.guest-body *, .guest-body *::before, .guest-body *::after { box-sizing: border-box; }
.guest-shell { max-width: 68rem; margin: auto; padding: 1rem; }
.guest-header { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.guest-brand { font: bold 1.5rem var(--guest-heading-font); }
.guest-brand span { font: 2rem system-ui, sans-serif; vertical-align: middle; }
.guest-welcome { display: grid; grid-template-columns: 1fr 1fr; border-radius: 1.5rem; overflow: hidden; background: var(--guest-surface); box-shadow: 0 1rem 3rem #00000012; }
.guest-welcome__cover, .guest-welcome__fallback { width: 100%; height: 100%; min-height: 30rem; object-fit: cover; background: var(--guest-soft); }
.guest-welcome__fallback { display: grid; place-items: center; padding: 1.5rem; }
.guest-welcome__fallback img { display: block; width: 100%; max-height: 32rem; }
.guest-welcome__fallback[hidden], .guest-welcome__cover[hidden] { display: none; }
.guest-welcome__card { min-width: 0; padding: clamp(1.25rem, 4vw, 3rem); text-align: center; }
.guest-eyebrow { margin: 0 0 0.75rem; text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.8rem; font-weight: 700; }
.guest-welcome h1 { margin: 0; font: bold clamp(2rem, 4vw, 3.3rem)/1.08 var(--guest-heading-font); overflow-wrap: anywhere; }
.guest-theme-name { margin: 1rem 0; font-weight: 700; color: var(--guest-accent); }
.guest-welcome__details { margin-block: 1rem 1.5rem; padding-block: 1rem; border-block: 1px solid #00000020; overflow-wrap: anywhere; }
.guest-welcome__details p { margin: 0.25rem 0; }
.guest-welcome__intro { font-size: 1.15rem; }
.guest-welcome__account-intro, .guest-welcome__privacy { font-size: 0.875rem; }
.guest-welcome__account-links { display: grid; gap: 0.75rem; margin-block: 1rem; }
.guest-button { display: block; width: 100%; min-height: 2.75rem; padding: 0.75rem; border: 1px solid var(--guest-accent); border-radius: 0.8rem; background: var(--guest-accent); color: #fff; font: 700 1rem/1.5 system-ui, sans-serif; text-decoration: none; text-align: center; cursor: pointer; }
.guest-button--secondary { background: var(--guest-surface); color: var(--guest-accent); }
.guest-body :is(a, button):focus-visible { outline: 3px solid var(--guest-ink); outline-offset: 3px; }
.guest-account-name { overflow-wrap: anywhere; }
.guest-footer { padding: 1.5rem; text-align: center; font-size: 0.875rem; }
.guest-notice { padding: 1rem; border: 1px solid var(--guest-accent); border-radius: 0.8rem; background: var(--guest-surface); }
.guest-unavailable { max-width: 38rem; margin: 3rem auto; padding: 2rem; border-radius: 1rem; background: var(--guest-surface); text-align: center; }
.event-invitation { max-width: 22rem; padding: 1.25rem; border: 1px solid #e5dfd6; border-radius: 0.75rem; background: #fffdf9; }
.event-invitation h2 { margin-top: 0; }
.event-invitation > p { font-size: 0.875rem; color: #716d65; }
.event-invitation__qr { display: block; width: 100%; max-width: 16rem; height: auto; margin: 1rem auto 0; image-rendering: pixelated; }
.event-invitation__actions { display: flex; align-items: center; justify-content: center; gap: 0.25rem; }
.event-invitation__actions a { display: inline-flex; align-items: center; min-height: 2.75rem; font-size: 0.875rem; color: #a83f2f; }
.event-invitation__copy { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: 0.4rem; background: transparent; color: #716d65; cursor: pointer; }
.event-invitation__copy:hover { background: #f5eee4; color: #a83f2f; }
.event-invitation__actions :focus-visible { outline: 3px solid #a83f2f; outline-offset: 3px; }
.event-invitation__status { min-height: 2.5em; margin: 0.25rem 0 0; text-align: center; }
@media (max-width: 700px) {
  .guest-shell { max-width: 30rem; padding: 0.75rem; }
  .guest-header { gap: 0.5rem; }
  .guest-welcome { display: block; border-radius: 1rem; }
  .guest-welcome__cover, .guest-welcome__fallback { display: block; height: 15rem; min-height: 0; }
  .guest-welcome__fallback { padding: 0.5rem; }
  .guest-welcome__fallback img { height: 100%; }
  .guest-welcome__card { padding: 1.5rem 1rem; }
  .guest-unavailable { padding: 1.5rem 1rem; overflow-wrap: anywhere; }
}
