@charset "UTF-8";

:root {
  color-scheme: light;
  --canvas: oklch(97.7% .007 65);
  --surface: oklch(99.4% .003 65);
  --sidebar: oklch(95.4% .009 65);
  --text: oklch(27% .016 335);
  --muted: oklch(48% .015 335);
  --line: oklch(87% .012 65);
  --accent: oklch(43% .105 345);
  --accent-hover: oklch(36% .1 345);
  --accent-soft: oklch(93% .021 345);
  --danger: oklch(43% .16 25);
  --success: oklch(36% .066 155);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  font-size: 15px;
  line-height: 1.5;
  color: var(--text);
  background: var(--canvas);
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}
* { box-sizing: border-box; }
body { margin: 0; }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
a { color: var(--accent); text-underline-offset: 3px; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .48; }
button, a, input, select, textarea { transition: background-color 160ms ease-out, border-color 160ms ease-out, color 160ms ease-out; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
[hidden] { display: none !important; }
h1, h2, h3, p { margin: 0; }
h1 { font-size: 2rem; font-weight: 650; letter-spacing: -.045em; line-height: 1.2; }
h2 { font-size: 1.25rem; font-weight: 640; letter-spacing: -.022em; line-height: 1.4; }
p { max-width: 72ch; }
.muted { color: var(--muted); }
.hint { font-size: .8rem; line-height: 1.55; color: var(--muted); }
.eyebrow { font-size: .69rem; letter-spacing: .13em; font-weight: 650; color: var(--muted); margin-bottom: .7rem; }
.page-heading > .muted { margin-top: .75rem; }
.page-heading { margin-bottom: 2rem; }
.heading-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; }
.heading-row > .button, .theme-badge { margin-top: 1.9rem; flex-shrink: 0; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 42px; border: 1px solid var(--line); border-radius: 6px; padding: .57rem .95rem; text-decoration: none; font-size: .86rem; font-weight: 600; line-height: 1.4; white-space: nowrap; }
.button.primary { background: var(--accent); color: var(--surface); border-color: var(--accent); }
.button.primary:hover:not(:disabled) { background: var(--accent-hover); border-color: var(--accent-hover); }
.button.secondary { background: var(--surface); color: var(--text); }
.button.secondary:hover:not(:disabled) { background: var(--sidebar); border-color: var(--muted); }
.button.danger { background: var(--danger); border-color: var(--danger); color: var(--surface); }
.button:active:not(:disabled) { transform: translateY(1px); }
.text-button { border: 0; padding: .4rem 0; min-height: 38px; background: transparent; font-size: .86rem; font-weight: 550; color: var(--accent); text-align: left; }
.text-button:hover { text-decoration: underline; text-underline-offset: 3px; }
.danger-text { color: var(--danger); }
.actions { display: flex; align-items: center; flex-wrap: wrap; gap: .55rem; }
.workspace { display: grid; grid-template-columns: 236px minmax(0, 1fr); min-height: 100dvh; }
.sidebar { background: var(--sidebar); border-right: 1px solid var(--line); padding: 2rem 1.4rem; position: sticky; top: 0; height: 100dvh; display: flex; flex-direction: column; }
.brand { display: flex; align-items: center; gap: .65rem; color: var(--text); font-size: 1.2rem; font-weight: 670; letter-spacing: -.05em; text-decoration: none; }
.brand-mark { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 8px; background: var(--accent); color: var(--surface); font-size: 1.25rem; font-weight: 550; line-height: 1; padding-bottom: .15rem; letter-spacing: -.08em; }
.workspace-label { color: var(--muted); font-size: .61rem; letter-spacing: .13em; margin-top: .7rem; margin-bottom: 2.1rem; }
.sidebar .field { margin-bottom: 1.7rem; }
.sidebar .field label { font-size: .75rem; }
.sidebar select { background-color: transparent; font-size: .85rem; padding-left: .55rem; }
.nav-item { border: 0; min-height: 42px; border-radius: 5px; width: 100%; padding: .65rem .75rem; text-align: left; font-weight: 600; font-size: .88rem; }
.nav-item.selected { color: var(--accent); background: var(--accent-soft); }
.nav-item:hover { background: oklch(90% .024 345); }
.sidebar-bottom { margin-top: auto; padding-top: 2rem; }
.account-email { overflow-wrap: anywhere; font-size: .8rem; font-weight: 550; }
.sidebar-bottom .hint { margin-top: .2rem; }
.sidebar-bottom .text-button { margin-top: .8rem; }
.main { padding: 3rem 4.2rem 4rem; min-width: 0; max-width: 1360px; width: 100%; }
.sites-page { max-width: 960px; }
.site-list { border-top: 1px solid var(--line); }
.site-row { display: flex; align-items: center; justify-content: space-between; width: 100%; border: 0; border-bottom: 1px solid var(--line); gap: 1rem; padding: 1.35rem .5rem; background: transparent; text-align: left; color: var(--text); }
.site-row strong { display: block; font-size: 1rem; font-weight: 600; overflow-wrap: anywhere; }
.site-row .hint { display: block; margin-top: .15rem; }
.site-row:hover { background: var(--surface); }
.row-action { flex-shrink: 0; font-size: .83rem; color: var(--accent); font-weight: 550; }
.create-section { margin-top: 2.5rem; padding-top: 1.8rem; border-top: 1px solid var(--line); }
.create-section h2 { margin-bottom: 1.3rem; }
.create-section .actions { margin-top: 1.2rem; }
.empty-state { padding: 2rem 0 .6rem; }
.empty-state p { color: var(--muted); margin-top: .55rem; }
.field { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1.25rem; min-width: 0; }
.field label { font-size: .84rem; font-weight: 600; }
input:not([type="checkbox"]), select, textarea { width: 100%; border: 1px solid var(--line); border-radius: 5px; background: var(--surface); color: var(--text); padding: .65rem .75rem; min-height: 43px; }
input::placeholder, textarea::placeholder { color: oklch(55% .012 335); opacity: 1; }
input:hover:not(:disabled), textarea:hover:not(:disabled), select:hover:not(:disabled) { border-color: oklch(68% .018 335); }
input:focus, textarea:focus, select:focus { border-color: var(--accent); outline: 2px solid var(--accent-soft); outline-offset: 1px; }
input:user-invalid, textarea:user-invalid { border-color: var(--danger); }
input[aria-invalid=true], textarea[aria-invalid=true] { border-color: var(--danger); }
textarea { resize: vertical; min-height: 102px; }
input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--accent); margin: 0; flex-shrink: 0; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.4rem; }
.breadcrumbs { display: flex; align-items: center; gap: .65rem; color: var(--muted); font-size: .82rem; margin: -.8rem 0 1.35rem; overflow-wrap: anywhere; }
.breadcrumbs .text-button { font-size: .82rem; flex-shrink: 0; }
.theme-badge { color: var(--muted); border: 1px solid var(--line); padding: .3rem .6rem; border-radius: 4px; font-size: .75rem; }
.editor-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .9rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); position: sticky; top: 0; background: var(--canvas); z-index: 2; }
.save-status { font-size: .82rem; color: var(--muted); }
.section-nav { display: flex; gap: 1.7rem; margin-top: 1.3rem; }
.section-nav a { font-size: .83rem; text-decoration: none; color: var(--muted); padding: .25rem 0; }
.section-nav a:hover { color: var(--accent); text-decoration: underline; }
.site-tools { display: flex; align-items: center; gap: 1.2rem; margin: -.8rem 0 1.2rem; border-bottom: 1px solid var(--line); }
.site-tools .text-button { color: var(--muted); padding: .7rem 0; text-decoration: none; }
.site-tools .selected, .site-tools [aria-current="page"] { color: var(--accent); box-shadow: inset 0 -2px var(--accent); }
.editor-fields { border: 0; margin: 0; padding: 0; min-width: 0; }
.form-section { border-bottom: 1px solid var(--line); padding: 2.6rem 0; scroll-margin-top: 5.5rem; }
.section-heading { display: flex; gap: .9rem; align-items: baseline; margin-bottom: 1.6rem; }
.section-heading p { margin-top: .35rem; font-size: .88rem; }
.step-number { font-size: .72rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.locale-controls { display: flex; align-items: center; gap: 1rem; margin-bottom: .8rem; }
.locale-controls .field { min-width: 220px; }
.locale-controls .text-button { margin-top: .3rem; }
.event-fields { margin: 0 0 1.7rem; padding: 1.35rem 0 1.15rem; border: 0; border-bottom: 1px solid var(--line); min-width: 0; }
.event-fields legend { padding: 0; font-size: .97rem; font-weight: 640; }
.event-fields > .field { max-width: 380px; }
.section-entry { border-top: 1px solid var(--line); padding: 1.15rem 0 1rem; }
.section-entry > .check-label { margin-bottom: 1.2rem; font-weight: 650; }
.check-label { display: flex; align-items: center; gap: .65rem; font-size: .88rem; min-height: 34px; cursor: pointer; }
.check-label .hint { margin-left: auto; font-weight: 400; }
.event-bindings { padding: .3rem 0 0; border: 0; margin: 0; }
.event-bindings legend { font-size: .84rem; font-weight: 600; margin-bottom: .35rem; }
.event-bindings .check-label { font-weight: 400; }
.rsvp-config-group { margin-top: 2rem; }
.rsvp-config-group > h3, .rsvp-choice-options > h3 { font-size: .95rem; margin-bottom: .25rem; }
.rsvp-config-group > .hint { margin-bottom: 1rem; }
.rsvp-config-list { border-top: 1px solid var(--line); }
.rsvp-config-item { padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
.config-item-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .8rem; }
.config-item-heading strong { font-size: .86rem; }
.rsvp-required { align-self: center; margin-bottom: 1.1rem; }
.rsvp-choice-options { margin: .4rem 0 .5rem; padding: 1rem; background: var(--sidebar); border-radius: 5px; }
.rsvp-option-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem; }
.rsvp-option-row .field { margin-bottom: .7rem; }
.rsvp-admin-page { max-width: 1040px; }
.rsvp-admin-section, .rsvp-export { padding: 2.4rem 0; border-bottom: 1px solid var(--line); }
.rsvp-admin-section > h2, .rsvp-export > h2 { margin-bottom: .35rem; }
.create-household { margin: 1rem 0 1.4rem; }
.household-form { max-width: 760px; padding: 1rem 0; }
.household-list, .submission-list { border-top: 1px solid var(--line); }
.household-row, .submission-row { padding: 1.35rem 0; border-bottom: 1px solid var(--line); }
.household-summary, .submission-summary { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.household-summary h3, .submission-summary h3 { font-size: 1rem; }
.muted-badge, .review-badge { padding: .25rem .65rem; border-radius: 4px; color: var(--muted); background: var(--sidebar); font-size: .75rem; text-transform: capitalize; white-space: nowrap; }
.review-badge.accepted { color: var(--success); background: oklch(94% .023 155); }
.review-badge.rejected { color: var(--danger); background: oklch(96% .024 25); }
.review-badge.pending { color: oklch(36% .045 70); background: oklch(96% .023 82); }
.household-row > .actions { margin-top: .8rem; }
.invitation-result { margin-top: .8rem; }
.invitation-result input { margin: .45rem 0 .65rem; }
.household-details { margin-top: .9rem; }
.household-details > h3 { margin: 1.4rem 0 .6rem; }
.guest-admin-row { display: grid; grid-template-columns: minmax(180px, 1fr) auto auto; gap: 1rem; align-items: center; padding: .75rem 0; border-bottom: 1px solid var(--line); }
.guest-admin-row .field { margin: 0; }
.guest-admin-row .notice-area { grid-column: 1 / -1; }
.add-guest-form { display: grid; grid-template-columns: minmax(180px, 1fr) auto auto; gap: 1rem; align-items: center; margin-top: 1rem; }
.add-guest-form .field { margin: 0; }
.add-guest-form .notice-area { grid-column: 1 / -1; }
.danger-zone { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.review-filters { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
.review-filters .selected { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.reply-list { margin-top: .9rem; }
.reply-row { display: grid; grid-template-columns: minmax(140px, 1fr) repeat(2, minmax(100px, auto)); gap: .35rem 1rem; padding: .75rem 0; border-top: 1px solid var(--line); font-size: .84rem; }
.reply-row > :nth-child(n + 4) { grid-column: 1 / -1; color: var(--muted); }
.attendance.yes { color: var(--success); }
.attendance.no { color: var(--muted); }
.custom-answers { margin: 0; white-space: pre-wrap; font: inherit; }
.review-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; margin-top: 1rem; padding: 1rem; background: var(--sidebar); border-radius: 5px; }
.review-controls .actions { grid-column: 1 / -1; }
.rsvp-export > .muted { margin: .35rem 0 1rem; }
.rsvp-export > .button { margin-top: .2rem; }
.notice-area:empty { display: none; }
.notice { margin: 0 0 1rem; padding: 1rem 1.15rem; background: var(--accent-soft); border: 1px solid oklch(85% .036 345); border-radius: 5px; font-size: .88rem; line-height: 1.55; overflow-wrap: anywhere; }
.notice .actions, .notice > .button { margin-top: .75rem; }
.notice ul { padding-left: 1.25rem; margin-bottom: 0; }
.notice.error { background: oklch(96% .024 25); border-color: oklch(83% .062 25); color: var(--danger); }
.notice.warning { background: oklch(96% .023 82); border-color: oklch(84% .057 82); color: oklch(36% .045 70); }
.notice.success { background: oklch(95% .022 155); border-color: oklch(82% .05 155); color: var(--success); }
#job-status:not(:empty), #publication-confirmation:not(:empty) { margin-top: 1rem; }
.preview-link { margin-left: 1rem; }
.history-list { margin-top: 1.5rem; }
.history-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--line); padding: 1rem 0; }
.history-row strong { font-size: .9rem; font-weight: 600; }
.history-row .hint { margin-top: .2rem; }
.live-badge { color: var(--success); background: oklch(94% .023 155); padding: .25rem .7rem; font-size: .76rem; border-radius: 4px; }
.history-details { margin-top: 1.1rem; font-size: .86rem; }
summary { cursor: pointer; min-height: 35px; padding: .4rem 0; }
.build-list { color: var(--muted); padding-left: 1.4rem; line-height: 1.9; }
.empty-history { margin-top: 1.4rem; color: var(--muted); font-size: .88rem; }
.scope-note { color: var(--muted); font-size: .77rem; margin-top: 1.4rem; }
.sharing-note { color: var(--muted); font-size: .82rem; margin: .7rem 0 1rem; }
#publication-confirmation .notice > p + p { margin-top: .7rem; }
.privacy-page { max-width: 800px; }
.retention-badge { display: block; color: var(--accent); font-size: .75rem; margin-top: .4rem; }
.retention-notice { color: var(--muted); font-size: .86rem; margin: -1rem 0 1.2rem; }
.privacy-section { padding: 2.1rem 0; border-bottom: 1px solid var(--line); scroll-margin-top: 6rem; }
.privacy-section h2 { margin-bottom: .7rem; }
.privacy-section > .button { margin-top: 1.2rem; }
.erasure-details { margin-top: 1.3rem; }
.erasure-form { max-width: 560px; padding-top: .8rem; }
.erasure-form > .hint { overflow-wrap: anywhere; margin: .7rem 0 1.2rem; }
.erasure-warning { color: var(--danger); font-size: .88rem; }
.preview-controls { display: inline-flex; gap: .8rem; flex-wrap: wrap; align-items: center; margin-left: .8rem; }
.preview-controls .preview-link { margin: 0; }
.preview-confirmation { flex-basis: 100%; color: var(--text); }
.preview-confirmation .text-button { margin-right: .7rem; }
.sidebar-bottom > .text-button + .text-button { margin-left: .9rem; }
.login { max-width: 510px; margin: 0 auto; padding: 4.5rem 2rem; }
.login > .brand { margin-bottom: 4rem; }
.login h1 { white-space: pre-line; font-size: 2.15rem; }
.login .page-heading { margin-bottom: 2.2rem; }
.login .page-heading .muted { font-size: .94rem; }
.login form > .button { width: 100%; margin-top: .5rem; }
.login-help { margin-top: 1.5rem; }
.boot { padding: 4rem; color: var(--muted); }
.skeleton { display: grid; gap: 1rem; margin-top: 2.5rem; }
.skeleton div { height: 55px; border-radius: 4px; background: var(--sidebar); }
.skeleton div:nth-child(2) { width: 80%; }
.skeleton div:nth-child(3) { width: 60%; }
.skip-link { position: fixed; z-index: 10; top: -80px; left: 1rem; background: var(--surface); padding: .75rem 1rem; border: 1px solid var(--accent); }
.skip-link:focus { top: 1rem; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@media (min-width: 1450px) { .main { padding-left: 5.5rem; padding-right: 5.5rem; } }
@media (max-width: 1100px) { .workspace { grid-template-columns: 205px minmax(0, 1fr); } .main { padding: 2.5rem 2rem; } .sidebar { padding: 1.7rem 1rem; } .editor-toolbar { flex-wrap: wrap; } }
@media (max-width: 760px) {
  .workspace { display: block; }
  .sidebar { position: static; height: auto; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .85rem 1rem; padding: 1rem 1.25rem; border-right: 0; border-bottom: 1px solid var(--line); }
  .sidebar .brand { font-size: 1.1rem; }
  .workspace-label, .sidebar nav, .sidebar-bottom .account-email, .sidebar-bottom .hint { display: none; }
  .sidebar > .field { grid-row: 2; grid-column: 1 / -1; margin: 0; }
  .sidebar > .field select { max-width: none; }
  .sidebar-bottom { grid-row: 1; grid-column: 2; padding: 0; margin: 0; }
  .sidebar-bottom .text-button { margin: 0; }
  .main { padding: 2rem 1.25rem 3rem; }
  h1 { font-size: 1.7rem; }
  .heading-row { flex-wrap: wrap; gap: 0; }
  .heading-row > .button { margin: -.6rem 0 1.5rem; }
  .heading-row > .theme-badge { margin: -.8rem 0 1.5rem; }
  .page-heading { margin-bottom: 1.7rem; }
  .form-grid { grid-template-columns: 1fr; }
  .editor-toolbar { padding: .8rem 0; gap: .6rem; }
  .editor-toolbar > .actions { width: 100%; gap: .4rem; }
  .editor-toolbar .button { flex: 1; padding-left: .65rem; padding-right: .65rem; font-size: .8rem; }
  .form-section { padding: 2rem 0; scroll-margin-top: 8rem; }
  .section-nav { justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
  .site-tools { margin-top: -.4rem; }
  .section-heading { gap: .6rem; }
  .section-heading p { font-size: .85rem; }
  .locale-controls { flex-wrap: wrap; gap: 0 .75rem; }
  .locale-controls .field { flex: 1; }
  .site-row { padding: 1.2rem 0; }
  .row-action { font-size: .75rem; }
  .site-row strong { font-size: .9rem; }
  .login { padding: 2rem 1.5rem; }
  .login > .brand { margin-bottom: 3rem; }
  .login h1 { font-size: 2rem; }
  .preview-link { margin: .7rem 0 0; display: flex; width: fit-content; }
  .rsvp-option-row, .guest-admin-row, .add-guest-form, .review-controls, .reply-row { grid-template-columns: 1fr; }
  .guest-admin-row .notice-area, .add-guest-form .notice-area, .review-controls .actions, .reply-row > :nth-child(n + 4) { grid-column: auto; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }
