/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */
/* Foundation tokens: mobile first, high contrast, and visible keyboard focus. */
:root { color-scheme: light; --ink: #22182b; --paper: #fffaf7; --accent: #6c285d; --border: #766b74; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 1rem/1.5 system-ui, sans-serif; }
html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
#main-content { width: min(100% - 2rem, 64rem); margin: 3rem auto; }
.auth-card { max-width: 32rem; }
form { display: grid; gap: .75rem; margin-block: 1.5rem; }
input, button, select, textarea { font: inherit; }
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea { min-height: 2.75rem; padding: .65rem .75rem; border: 1px solid #9b9098; border-radius: .4rem; background: white; color: var(--ink); }
button, input[type="submit"], .button { min-height: 2.75rem; padding: .65rem 1rem; border: 0; border-radius: .4rem; background: var(--accent); color: white; cursor: pointer; font-weight: 700; }
button:hover, input[type="submit"]:hover, .button:hover { filter: brightness(.92); }
button:disabled, input[type="submit"]:disabled { cursor: not-allowed; opacity: .6; }
a { color: #54204a; text-underline-offset: .2em; }
:focus-visible { outline: .2rem solid #005fcc; outline-offset: .2rem; }
.skip-link { position: absolute; left: 1rem; top: -5rem; background: white; padding: .75rem; z-index: 10; }
.skip-link:focus { top: 1rem; }
.flash { border: 1px solid var(--border); padding: .75rem; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; } }
.button { display: inline-block; text-decoration: none; }
fieldset { border: 1px solid var(--border); padding: 1rem; margin-block: 1rem; }
textarea { width: 100%; font: inherit; }
.public-event { width: min(100% - 2rem, 56rem); margin-inline: auto; }
.hero { min-height: 45vh; display: grid; place-content: center; text-align: center; padding-block: 3rem; }
.hero h1 { font-family: Georgia, serif; font-size: clamp(2.25rem, 10vw, 5rem); line-height: 1.05; margin: .5rem 0; }
.public-event section { padding-block: 2rem; border-top: 1px solid #d7cbd2; }
.gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 1rem; }
.gallery img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.invitation { --invite-bg: #fff7f2; --invite-ink: #4b193c; --invite-accent: #7a285f; position: relative; overflow: hidden; min-width: 0; min-height: 45vh; display: grid; grid-template-columns: minmax(0, 1fr); place-content: center; gap: .75rem; padding: clamp(2rem, 8vw, 6rem) 1.5rem; background: var(--invite-bg); color: var(--invite-ink); text-align: center; border: 1px solid currentColor; }
.invitation > * { min-width: 0; max-width: 100%; }
.invitation > :not(.invitation__cover, .invitation__cover-overlay) { position: relative; z-index: 2; }
.invitation__cover, .invitation__cover-overlay { position: absolute; inset: 0; max-width: none; }
.invitation__cover { z-index: 0; }.invitation__cover img { width: 100%; height: 100%; object-fit: cover; object-position: var(--cover-focal-x, 50%) var(--cover-focal-y, 50%); }
.invitation__cover-overlay { z-index: 1; opacity: var(--cover-overlay-opacity, .3); pointer-events: none; }
.invitation--overlay-dark .invitation__cover-overlay { background: #160f17; }.invitation--overlay-dark:has(.invitation__cover) { color: white; }
.invitation--overlay-light .invitation__cover-overlay { background: white; }.invitation--overlay-light:has(.invitation__cover) { color: #291d25; }
.invitation--overlay-none .invitation__cover-overlay { display: none; }
.invitation--height-compact { min-height: 24rem; }.invitation--height-standard { min-height: 45vh; }.invitation--height-immersive { min-height: min(85vh, 56rem); }
.invitation--align-left { justify-items: start; text-align: left; }.invitation--align-right { justify-items: end; text-align: right; }.invitation--align-center { justify-items: center; text-align: center; }
.invitation--align-left .invitation__message { margin-left: 0; }.invitation--align-right .invitation__message { margin-right: 0; }
.palette--ocean { --invite-bg: #eff9fb; --invite-ink: #123f4a; --invite-accent: #176579; }
.palette--forest { --invite-bg: #f4f7ef; --invite-ink: #253d2b; --invite-accent: #3c6447; }
.type--serif h1 { font-family: Georgia, serif; } .type--modern h1 { font-family: system-ui, sans-serif; letter-spacing: -.04em; }
.invitation h1 { overflow-wrap: anywhere; font-size: clamp(2rem, 8vw, 5rem); line-height: 1.02; margin: 0; text-wrap: balance; }
.invitation__eyebrow { letter-spacing: .12em; text-transform: uppercase; }
.invitation__message { width: 100%; max-width: 38rem; margin-inline: auto; overflow-wrap: anywhere; }
.invitation__message p { max-width: 100%; margin-inline: auto; }
.invitation__cta { justify-self: center; padding: .8rem 1.2rem; background: var(--invite-accent); color: white; border-radius: 999px; }
.invitation--garden { border: .75rem double var(--invite-accent); }
.invitation--garden::before, .invitation--garden::after { content: ""; position: absolute; width: 7rem; height: 7rem; border: .25rem solid var(--invite-accent); transform: rotate(45deg); opacity: .25; }
.invitation--garden::before { left: -4rem; top: -4rem; } .invitation--garden::after { right: -4rem; bottom: -4rem; }
.invitation--moon { border-radius: 8rem 8rem 0 0; background: var(--invite-ink); color: var(--invite-bg); }
.invitation--moon .invitation__ornament { width: 4rem; height: 4rem; margin: auto; border: .7rem solid var(--invite-bg); border-right-color: transparent; border-radius: 50%; transform: rotate(-20deg); }
.invitation--coast { background: linear-gradient(180deg, var(--invite-bg) 0 66%, color-mix(in srgb, var(--invite-accent) 20%, white) 66% 72%, var(--invite-accent) 72%); }
.invitation--coast::after { position: absolute; right: -10%; bottom: 25%; left: -10%; height: 3rem; border-radius: 50%; background: color-mix(in srgb, var(--invite-bg) 75%, transparent); content: ""; transform: rotate(-2deg); }
.invitation--coast > * { position: relative; z-index: 1; }.invitation--coast .invitation__cta { border: 1px solid currentColor; }
.invitation--black_tie { border: .2rem solid currentColor; outline: 1px solid currentColor; outline-offset: -.8rem; background: #171419; color: #fffaf7; }
.invitation--black_tie .invitation__ornament { width: 4rem; height: 1px; margin: 0 auto 1rem; background: currentColor; }.invitation--black_tie .invitation__eyebrow { letter-spacing: .25em; }
.invitation--terracotta { background: #fff5ed; color: #63382d; }
.invitation--terracotta::before, .invitation--terracotta::after { position: absolute; width: 13rem; height: 13rem; border-radius: 48% 52% 42% 58%; background: #c8785d; content: ""; opacity: .2; }
.invitation--terracotta::before { top: -6rem; right: -5rem; }.invitation--terracotta::after { bottom: -7rem; left: -5rem; background: #8ca07b; }
.invitation--botanical { border: .35rem solid var(--invite-accent); background: linear-gradient(135deg, color-mix(in srgb, var(--invite-accent) 9%, white), var(--invite-bg) 42%); }
.invitation--botanical::before, .invitation--botanical::after { position: absolute; width: 8rem; height: 15rem; border: .18rem solid var(--invite-accent); border-radius: 100% 0; content: ""; opacity: .25; }
.invitation--botanical::before { top: -6rem; left: -3rem; transform: rotate(25deg); }.invitation--botanical::after { right: -3rem; bottom: -6rem; transform: rotate(205deg); }
.invitation--geometric { background: linear-gradient(135deg, color-mix(in srgb, var(--invite-accent) 13%, var(--invite-bg)) 0 24%, var(--invite-bg) 24% 76%, color-mix(in srgb, var(--invite-accent) 20%, var(--invite-bg)) 76%); }
.invitation--geometric .invitation__ornament { width: 3rem; height: 3rem; border: .2rem solid var(--invite-accent); transform: rotate(45deg); }
.device-preview { container-type: inline-size; width: 100%; margin: 1rem auto; border: .5rem solid #343036; border-radius: 1.25rem; overflow: hidden auto; transition: width .2s ease; }
.device-preview--phone { max-width: 24rem; } .device-preview--tablet { max-width: 48rem; } .device-preview--desktop { max-width: 72rem; }
.device-preview .invitation { padding-inline: clamp(1rem, 6cqi, 3rem); }
.device-preview .invitation h1 { font-size: clamp(1.65rem, 12cqi, 4.75rem); }
.device-preview .invitation__message { font-size: clamp(.82rem, 3.8cqi, 1rem); }
.rsvp-page { width: min(100% - 2rem, 56rem); margin: 2rem auto; }

/* Event editor */
.event-editor { max-width: 52rem; margin-inline: auto; }
.page-header { margin-bottom: 2rem; }
.page-header h1 { margin: .2rem 0 .5rem; font-family: Georgia, serif; font-size: clamp(2rem, 6vw, 3rem); line-height: 1.15; }
.page-header > p:last-child { max-width: 42rem; margin: 0; color: #5e535c; }
.page-eyebrow { margin: 0; color: var(--accent); font-size: .8rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.event-form { gap: 1.25rem; }
.form-required-note { margin: 0; color: #5e535c; font-size: .9rem; text-align: right; }
.form-required-note span, .form-field label span { color: #a21d35; }
.form-section { min-width: 0; margin: 0; padding: clamp(1.1rem, 3vw, 1.75rem); border: 1px solid #d8cdd4; border-radius: .75rem; background: #fff; box-shadow: 0 .15rem .65rem rgb(58 26 48 / 6%); }
.form-section legend { padding: 0 .4rem; color: var(--ink); font-family: Georgia, serif; font-size: 1.35rem; font-weight: 700; }
.form-section__description { margin: -.15rem 0 1.25rem; color: #655a63; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.25rem; }
.form-field { display: grid; align-content: start; gap: .35rem; min-width: 0; }
.form-field--full { grid-column: 1 / -1; }
.form-field > label { font-weight: 700; }
.form-field input:not([type="checkbox"]), .form-field select, .form-field textarea { width: 100%; min-height: 2.8rem; padding: .65rem .75rem; border: 1px solid #9b9098; border-radius: .4rem; background: white; color: var(--ink); font: inherit; }
.form-field textarea { resize: vertical; }
.form-field input:hover, .form-field select:hover, .form-field textarea:hover { border-color: var(--accent); }
.form-field input::placeholder, .form-field textarea::placeholder { color: #756b73; opacity: 1; }
.form-hint { display: block; color: #655a63; font-size: .85rem; }
.input-prefix { display: flex; align-items: stretch; overflow: hidden; border: 1px solid #9b9098; border-radius: .4rem; background: #f4eef2; }
.input-prefix > span { display: grid; place-items: center; padding-inline: .75rem; color: #655a63; white-space: nowrap; }
.input-prefix input { min-width: 7rem; border: 0 !important; border-left: 1px solid #c8bdc4 !important; border-radius: 0 !important; }
.input-prefix:focus-within { outline: .2rem solid #005fcc; outline-offset: .2rem; }
.input-prefix input:focus-visible { outline: 0; }
.checkbox-field { display: flex; align-items: flex-start; gap: .7rem; padding: .8rem; border: 1px solid #d8cdd4; border-radius: .45rem; cursor: pointer; }
.checkbox-field input { flex: 0 0 auto; width: 1.2rem; min-height: 1.2rem; margin-top: .15rem; accent-color: var(--accent); }
.checkbox-field span { display: grid; gap: .1rem; color: var(--ink); }
.checkbox-field small { color: #655a63; font-weight: 400; }
.nested-list { display: grid; gap: 1rem; }
.nested-card { padding: 1rem; border: 1px solid #e2d9df; border-radius: .55rem; background: #fffafc; }
.form-errors { padding: 1rem 1.25rem; border: 2px solid #a21d35; border-radius: .6rem; background: #fff1f3; }
.form-errors h2 { margin: 0; font-size: 1.1rem; }
.form-errors p { margin: .25rem 0; }
.form-errors ul { margin-bottom: 0; }
.form-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; align-items: center; gap: .75rem; margin-top: .25rem; padding: 1rem; border: 1px solid #d8cdd4; border-radius: .65rem; background: rgb(255 250 247 / 96%); box-shadow: 0 -.3rem 1rem rgb(34 24 43 / 8%); z-index: 2; }
.form-actions input[type="submit"] { min-width: 10rem; padding-inline: 1.2rem; font-weight: 700; }
.button--secondary { border: 1px solid var(--border); background: transparent; color: var(--ink); }
.button--danger, .button-danger { background: #9f2035 !important; color: white !important; }
.button--quiet { border: 1px solid #cfc3ca; background: white; color: var(--ink); }
.standard-page { width: min(100%, 46rem); margin-inline: auto; }
.standard-page--wide { width: min(100%, 64rem); }
.standard-page__header { margin-bottom: 1.5rem; }
.standard-page__header h1 { margin: 0 0 .4rem; font: 400 clamp(2rem, 5vw, 2.8rem)/1.1 Georgia, serif; }
.standard-page__header p { max-width: 42rem; margin: 0; color: #655a63; }
.standard-form { display: grid; gap: 1rem; padding: clamp(1.1rem, 3vw, 1.75rem); border: 1px solid #d8cdd4; border-radius: .75rem; background: white; box-shadow: 0 .15rem .65rem rgb(58 26 48 / 6%); }
.standard-form--plain { padding: 0; border: 0; background: transparent; box-shadow: none; }
.standard-form .form-field { display: grid; gap: .35rem; }
.standard-form .form-field > label, .standard-form > label { font-weight: 700; }
.standard-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .standard-form select, .standard-form textarea { width: 100%; }
.standard-form fieldset { min-width: 0; margin: 0; border-color: #d8cdd4; border-radius: .55rem; }
.standard-form legend { padding-inline: .35rem; font-weight: 750; }
.form-actions:not(.event-form .form-actions) { display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: .75rem; padding-top: .5rem; }
.inline-form { display: flex; align-items: end; flex-wrap: wrap; gap: .75rem; margin-block: .75rem; }
.inline-form .form-field { flex: 1 1 13rem; }
.inline-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .inline-form select { width: 100%; }
.button_to { display: inline-block; margin: 0; }
.button_to button { min-height: 2.5rem; }
.action-group { display: flex; align-items: center; flex-wrap: wrap; gap: .65rem; }
.checkbox-field--danger { border-color: #d8a2aa; background: #fff5f6; }
.form-card { padding: 1.25rem; border: 1px solid #ded3d9; border-radius: .65rem; background: white; }
.form-card + .form-card { margin-top: 1rem; }
.form-card h2, .form-card h3 { margin-top: 0; }
.auth-card { width: min(100%, 32rem); margin-inline: auto; padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid #d8cdd4; border-radius: .8rem; background: white; box-shadow: 0 .5rem 2rem rgb(58 26 48 / 8%); }
.auth-card h1 { margin-top: 0; font: 400 2rem Georgia, serif; }
.auth-card .standard-form { padding: 0; border: 0; box-shadow: none; }
.secret-display { overflow-wrap: anywhere; padding: .75rem; border: 1px dashed #b5a7af; border-radius: .4rem; background: #f8f3f5; text-align: center; }
.code-wrap { display: block; overflow-wrap: anywhere; margin-top: .5rem; }
.rsvp-header { margin-top: 2rem; }
.rsvp-guest { padding: 1.25rem; border: 1px solid #ded3d9; border-radius: .7rem; background: #fffafc; }
.rsvp-guest > h3 { margin-top: 0; font: 400 1.5rem Georgia, serif; }
.rsvp-choice-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
.rsvp-choice { display: flex; gap: .65rem; padding: 1rem; border: 1px solid #cfc3ca; border-radius: .55rem; background: white; cursor: pointer; }
.rsvp-choice:has(input:checked) { border: 2px solid var(--accent); background: #fff4fa; }
.rsvp-choice input { flex: 0 0 auto; width: 1.2rem; min-height: 1.2rem; accent-color: var(--accent); }
.rsvp-choice span { display: grid; gap: .15rem; }.rsvp-choice small { color: #655a63; }
.rsvp-details { margin-top: 1rem; }
.rsvp-actions { position: sticky; bottom: 0; padding: 1rem; background: rgb(255 250 247 / 96%); box-shadow: 0 -.3rem 1rem rgb(34 24 43 / 8%); }
@media (max-width: 42rem) { .rsvp-choice-grid { grid-template-columns: 1fr; } }

/* Event workspace */
.event-workspace { width: min(100%, 68rem); margin-inline: auto; }
.breadcrumb { display: flex; align-items: center; gap: .55rem; margin-bottom: 1.25rem; color: #70656d; font-size: .85rem; }
.breadcrumb a { color: var(--accent); }
.event-overview { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2rem; padding: clamp(1.5rem, 4vw, 2.5rem); border: 1px solid #d8cdd4; border-radius: 1rem; background: linear-gradient(135deg, #fff 0%, #fff8fa 100%); box-shadow: 0 .6rem 2rem rgb(58 26 48 / 7%); }
.event-overview__status { display: flex; align-items: center; flex-wrap: wrap; gap: .7rem; color: #70656d; font-size: .78rem; }
.status-badge { display: inline-flex; align-items: center; min-height: 1.7rem; padding: .2rem .65rem; border-radius: 999px; background: #ece5e9; color: #584b53; font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.status-badge--published { background: #d9eee2; color: #245c3e; }.status-badge--draft { background: #f2e4c8; color: #73521a; }.status-badge--unpublished { background: #eadde4; color: #713451; }.status-badge--archived { background: #e4e4e4; color: #505050; }
.event-overview h1 { max-width: 46rem; margin: .75rem 0 .25rem; overflow-wrap: anywhere; font: 400 clamp(2rem, 5vw, 3.4rem)/1.05 Georgia, serif; letter-spacing: -.035em; text-wrap: balance; }
.event-overview__couple { margin: 0 0 1.35rem; color: var(--accent); font: italic 1.15rem Georgia, serif; }
.event-facts { display: flex; flex-wrap: wrap; gap: 1rem 2rem; margin: 0; }
.event-facts div { min-width: 8rem; }.event-facts dt { color: #70656d; font-size: .72rem; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }.event-facts dd { margin: .15rem 0 0; overflow-wrap: anywhere; font-size: .9rem; }
.event-overview__actions { display: grid; grid-template-columns: repeat(2, minmax(9.5rem, 1fr)); width: min(100%, 22rem); gap: .65rem; }
.event-overview__actions .button, .event-overview__actions .button_to, .event-overview__actions button { width: 100%; text-align: center; }
.workspace-section { padding-block: clamp(2.5rem, 6vw, 4rem); }
.workspace-section + .workspace-section { border-top: 1px solid #ded3d9; }
.workspace-section__header { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: 1.4rem; }
.workspace-section__header h2 { margin: .15rem 0 0; font: 400 clamp(1.7rem, 4vw, 2.3rem) Georgia, serif; }
.workspace-section__header > p { max-width: 25rem; margin: 0; color: #70656d; text-align: right; }
.workspace-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.workspace-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; min-height: 8.5rem; padding: 1.35rem; gap: 1rem; border: 1px solid #d8cdd4; border-radius: .8rem; background: white; color: var(--ink); text-decoration: none; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.workspace-card:hover { border-color: var(--accent); box-shadow: 0 .6rem 1.5rem rgb(58 26 48 / 9%); transform: translateY(-.15rem); filter: none; }
.workspace-card__icon { display: grid; width: 3rem; height: 3rem; place-items: center; border-radius: .7rem; background: #f2e4ec; color: var(--accent); font-size: 1.35rem; }
.workspace-card__content { display: grid; gap: .25rem; min-width: 0; }.workspace-card__content strong { font: 400 1.2rem Georgia, serif; }.workspace-card__content small { color: #70656d; line-height: 1.4; }.workspace-card__arrow { color: var(--accent); font-size: 1.25rem; }
.team-layout { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: start; gap: 1rem; }
.team-invite-form h3, .team-list > h3 { margin-top: 0; font: 400 1.35rem Georgia, serif; }
.permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.permission-grid .checkbox-field { padding: .6rem; font-size: .82rem; }
.team-list { padding: 1.5rem; border: 1px solid #d8cdd4; border-radius: .75rem; background: white; }
.team-member { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-block: 1rem; border-top: 1px solid #e2d9df; }.team-member:first-of-type { border-top: 0; }.team-member > div { display: grid; min-width: 0; }.team-member strong, .team-member small { overflow-wrap: anywhere; }.team-member small { color: #70656d; }
.empty-state { display: grid; justify-items: center; padding: 2rem; border: 1px dashed #cfc3ca; border-radius: .6rem; color: #70656d; text-align: center; }.empty-state span { color: var(--accent); font-size: 1.8rem; }
@media (max-width: 52rem) {
  .event-overview { grid-template-columns: 1fr; }.event-overview__actions { width: 100%; }.workspace-section__header { align-items: start; flex-direction: column; gap: .4rem; }.workspace-section__header > p { text-align: left; }.team-layout { grid-template-columns: 1fr; }
}
@media (max-width: 38rem) {
  .event-overview__actions, .workspace-grid, .permission-grid { grid-template-columns: 1fr; }.event-facts { display: grid; gap: .8rem; }.workspace-card { min-height: 7.5rem; }.team-member { align-items: stretch; flex-direction: column; }.team-member .button_to, .team-member button { width: 100%; }
}

/* Application navigation */
.app-header { position: sticky; top: 0; z-index: 20; border-bottom: 1px solid #ded3d9; background: rgb(255 250 247 / 94%); box-shadow: 0 .2rem 1rem rgb(45 36 48 / 5%); backdrop-filter: blur(12px); }
.app-navbar { display: grid; grid-template-columns: auto 1fr auto; align-items: center; width: min(100% - 2rem, 74rem); min-height: 4.5rem; margin-inline: auto; gap: clamp(1rem, 3vw, 2.5rem); }
.app-brand { display: inline-flex; align-items: center; gap: .55rem; color: var(--ink); font-family: Georgia, serif; font-size: 1.2rem; text-decoration: none; white-space: nowrap; }
.app-brand span { display: grid; width: 2.1rem; height: 2.1rem; place-items: center; border: 1px solid var(--accent); border-radius: 50%; color: var(--accent); font: 800 .66rem system-ui, sans-serif; }
.app-nav { display: flex; align-items: stretch; height: 4.5rem; gap: .2rem; }
.app-nav > a { position: relative; display: grid; place-items: center; padding-inline: .8rem; color: #5f535b; font-size: .86rem; font-weight: 700; text-decoration: none; }
.app-nav > a:hover { color: var(--accent); }
.app-nav > a.is-active { color: var(--accent); }
.app-nav > a.is-active::after { position: absolute; right: .75rem; bottom: 0; left: .75rem; height: .18rem; border-radius: .2rem .2rem 0 0; background: var(--accent); content: ""; }
.app-navbar__account { display: flex; align-items: center; justify-self: end; gap: .8rem; }
.app-navbar__account > span { display: grid; max-width: 10rem; line-height: 1.2; text-align: right; }
.app-navbar__account small { color: #796e76; font-size: .65rem; letter-spacing: .06em; text-transform: uppercase; }
.app-navbar__account strong { overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.app-navbar__account .button_to { height: auto; }
.app-logout { min-height: 2.25rem !important; padding: .4rem .75rem !important; border: 1px solid #cfc3ca !important; background: transparent !important; color: var(--ink) !important; font-size: .78rem; }
.app-navbar__guest { display: flex; align-items: center; justify-self: end; gap: 1rem; }.app-navbar__guest > a:first-child { color: var(--ink); font-weight: 700; text-decoration: none; }
.app-mobile-menu { display: none; justify-self: end; position: relative; }
.app-mobile-menu summary { padding: .55rem .75rem; border: 1px solid #cfc3ca; border-radius: .4rem; cursor: pointer; font-weight: 700; list-style: none; }.app-mobile-menu summary::-webkit-details-marker { display: none; }
.app-mobile-menu nav { position: absolute; top: calc(100% + .55rem); right: 0; display: grid; width: min(18rem, calc(100vw - 2rem)); padding: .65rem; border: 1px solid #d8cdd4; border-radius: .65rem; background: white; box-shadow: 0 1rem 2.5rem rgb(45 36 48 / 15%); }
.app-mobile-menu nav > a { padding: .75rem; border-radius: .35rem; color: var(--ink); font-weight: 700; text-decoration: none; }.app-mobile-menu nav > a:hover { background: #f5edf1; }
.app-mobile-menu .button_to, .app-mobile-menu button { width: 100%; }.app-mobile-menu .button_to { margin-top: .4rem; }
@media (max-width: 62rem) { .app-nav--desktop { display: none; }.app-navbar { grid-template-columns: auto 1fr; }.app-mobile-menu { display: block; } }
@media (max-width: 32rem) { .app-navbar__guest .button { padding-inline: .7rem; font-size: .8rem; }.app-navbar { width: min(100% - 1rem, 74rem); } }

/* Structured rich text fields */
.rich-text-stack { display: grid; gap: 1.35rem; }
.rich-text-field { min-width: 0; }
.rich-text-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem; padding: .4rem; border: 1px solid #9b9098; border-bottom: 0; border-radius: .45rem .45rem 0 0; background: #f7f2f5; }
.rich-text-toolbar button { min-width: 2.25rem; min-height: 2.1rem; padding: .3rem .55rem; border: 1px solid transparent; background: transparent; color: var(--ink); font-size: .8rem; }
.rich-text-toolbar button:hover { border-color: #c5b7bf; background: white; filter: none; }

/* Theme catalog */
.selected-theme { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; padding: .8rem; border: 1px solid #d8cdd4; border-radius: .5rem; background: #faf5f7; }
.form-label { font-weight: 700; }
.theme-catalog, .theme-preview-page { display: grid; gap: 1.25rem; }
.theme-filters, .device-switcher { display: flex; overflow-x: auto; gap: .45rem; padding: .2rem .2rem .55rem; scrollbar-width: thin; }
.theme-filter { flex: 0 0 auto; min-height: 2.5rem; padding: .5rem .8rem; border: 1px solid #cfc3ca; border-radius: 999px; background: white; color: var(--ink); font-size: .85rem; font-weight: 700; text-decoration: none; }
.theme-filter.is-active { border-color: var(--accent); background: var(--accent); color: white; }
.theme-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
.theme-card { display: grid; min-width: 0; overflow: hidden; border: 1px solid #d8cdd4; border-radius: .85rem; background: white; box-shadow: 0 .3rem 1rem rgb(58 26 48 / 6%); }
.theme-card.is-current { border: 2px solid var(--accent); }
.theme-thumbnail { container-type: inline-size; overflow: hidden; height: 19rem; padding: .75rem; background: #eee8eb; }
.theme-thumbnail .invitation { min-height: 100%; height: 100%; padding: 1.2rem .8rem; gap: .4rem; }
.theme-thumbnail .invitation h1 { font-size: clamp(1.45rem, 11cqi, 2.7rem); }
.theme-thumbnail .invitation__eyebrow, .theme-thumbnail .invitation__date, .theme-thumbnail .invitation__message { margin-block: .25rem; font-size: clamp(.65rem, 3cqi, .85rem); }
.theme-thumbnail .invitation__cta { min-height: 2rem; padding: .35rem .7rem; font-size: .72rem; }
.theme-card__content { display: grid; gap: .65rem; padding: 1.1rem; }
.theme-card__content p { margin: 0; color: #655a63; }
.theme-card__title { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }.theme-card__title h2 { margin: 0; font: 400 1.35rem Georgia, serif; }
.theme-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; list-style: none; }.theme-tags li { padding: .2rem .55rem; border-radius: 999px; background: #f3ebef; color: #604f59; font-size: .72rem; }
.theme-card__actions { display: grid; grid-template-columns: 1fr; align-items: center; gap: .6rem; padding: 0 1.1rem 1.1rem; }.theme-card__actions .button, .theme-card__actions .button_to, .theme-card__actions button { width: 100%; text-align: center; }
.theme-current-note { padding: .65rem; color: #655a63; font-size: .85rem; font-weight: 700; text-align: center; }
.preview-actions { position: sticky; bottom: .75rem; display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .75rem; padding: .85rem; border: 1px solid #d8cdd4; border-radius: .65rem; background: rgb(255 250 247 / 96%); box-shadow: 0 .4rem 1.5rem rgb(34 24 43 / 12%); z-index: 2; }.preview-actions .button_to { margin: 0; }
@media (min-width: 38rem) { .theme-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.theme-card__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 64rem) { .theme-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Appearance editor */
.main-content--full { width: min(100% - 1rem, 88rem) !important; }
.appearance-editor { display: grid; gap: 1.25rem; width: 100%; }
.appearance-layout { display: grid; grid-template-columns: 1fr; align-items: start; gap: 1rem; }
.appearance-controls { min-width: 0; }.appearance-controls section + section { padding-top: 1rem; border-top: 1px solid #e2d9df; }.appearance-controls section h2 { margin: 0 0 1rem; font: 400 1.35rem Georgia, serif; }
.appearance-controls input[type="range"] { width: 100%; min-height: 2.75rem; padding: 0; accent-color: var(--accent); }
.appearance-preview { min-width: 0; padding: 1rem; border: 1px solid #d8cdd4; border-radius: .8rem; background: #f3edef; }
.appearance-preview__header { display: flex; align-items: end; justify-content: space-between; gap: 1rem; }.appearance-preview__header h2 { margin: .1rem 0 0; font: 400 1.45rem Georgia, serif; }.appearance-preview__header small { color: #70656d; }
.appearance-preview .device-preview { margin-bottom: 0; background: white; }
.unsaved-status { margin: 0; color: #546359; font-size: .85rem; }.unsaved-status.is-dirty { color: #8a4f16; font-weight: 700; }
@media (min-width: 64rem) { .appearance-layout { grid-template-columns: minmax(24rem, .85fr) minmax(28rem, 1.15fr); }.appearance-preview { position: sticky; top: 5.5rem; } }

/* Public event experience */
#main-content:has(> .public-site) { width: 100%; margin: 0; }
.public-site { --public-surface: color-mix(in srgb, var(--invite-bg) 82%, white); min-height: 100vh; overflow: hidden; background: var(--invite-bg); color: var(--invite-ink); }
.public-nav { position: sticky; top: 0; z-index: 15; border-bottom: 1px solid color-mix(in srgb, var(--invite-ink) 18%, transparent); background: color-mix(in srgb, var(--invite-bg) 92%, transparent); backdrop-filter: blur(14px); }
.public-nav__inner { display: flex; align-items: center; justify-content: space-between; width: min(100% - 1.5rem, 72rem); min-height: 4rem; margin-inline: auto; gap: 1rem; }
.public-nav__brand { display: flex; align-items: center; min-width: 0; gap: .55rem; color: var(--invite-ink); text-decoration: none; }.public-nav__brand span { display: grid; width: 2rem; height: 2rem; flex: 0 0 auto; place-items: center; border: 1px solid var(--invite-accent); border-radius: 50%; color: var(--invite-accent); font-size: .7rem; font-weight: 800; }.public-nav__brand strong { overflow: hidden; font: 400 1rem Georgia, serif; text-overflow: ellipsis; white-space: nowrap; }
.public-nav__desktop { display: none; }.public-nav__desktop a { padding: .7rem .5rem; color: var(--invite-ink); font-size: .78rem; font-weight: 700; text-decoration: none; }
.public-nav__mobile { position: relative; flex: 0 0 auto; }.public-nav__mobile summary { padding: .5rem .7rem; border: 1px solid color-mix(in srgb, var(--invite-ink) 30%, transparent); border-radius: .35rem; cursor: pointer; font-weight: 700; list-style: none; }.public-nav__mobile summary::-webkit-details-marker { display: none; }.public-nav__mobile nav { position: absolute; top: calc(100% + .5rem); right: 0; display: grid; width: min(18rem, calc(100vw - 1.5rem)); padding: .55rem; border: 1px solid color-mix(in srgb, var(--invite-ink) 20%, transparent); border-radius: .6rem; background: var(--invite-bg); box-shadow: 0 1rem 2rem rgb(30 20 28 / 16%); }.public-nav__mobile nav a { padding: .7rem; border-radius: .35rem; color: var(--invite-ink); font-weight: 700; text-decoration: none; }.public-nav__mobile nav a:hover { background: color-mix(in srgb, var(--invite-accent) 10%, transparent); }
.public-event { width: min(100%, 72rem); margin-inline: auto; }.public-hero { padding: clamp(.5rem, 2vw, 1.5rem); }.public-hero .invitation { border-radius: clamp(0, 2vw, 1.25rem); box-shadow: 0 .8rem 3rem color-mix(in srgb, var(--invite-ink) 12%, transparent); }
.public-event section { scroll-margin-top: 5rem; border-top: 0; }
.countdown-section { display: grid; justify-items: center; padding: clamp(2.5rem, 8vw, 5rem) 1rem; text-align: center; }.countdown-section h2 { max-width: 32rem; margin: .25rem 0 1.5rem; font: 400 clamp(1.8rem, 6vw, 3rem)/1.1 Georgia, serif; text-wrap: balance; }
.public-kicker { margin: 0; color: var(--invite-accent); font-size: .72rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.countdown-grid { display: grid; grid-template-columns: repeat(2, minmax(6.5rem, 1fr)); width: min(100%, 36rem); gap: .6rem; }.countdown-grid div { display: grid; padding: 1rem .5rem; border: 1px solid color-mix(in srgb, var(--invite-ink) 18%, transparent); border-radius: .65rem; background: var(--public-surface); }.countdown-grid strong { font: 400 clamp(1.8rem, 8vw, 3rem) Georgia, serif; }.countdown-grid span { color: color-mix(in srgb, var(--invite-ink) 72%, transparent); font-size: .7rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }.countdown-status { margin: 1rem 0 0; color: color-mix(in srgb, var(--invite-ink) 75%, transparent); }
.public-content-section { padding: clamp(3rem, 8vw, 6rem) max(1rem, calc((100% - 58rem) / 2)); }.public-content-section--tinted { background: color-mix(in srgb, var(--invite-accent) 6%, var(--invite-bg)); }
.public-section-heading { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .75rem; margin-bottom: 1.5rem; }.public-section-heading > span { display: grid; width: 2.4rem; height: 2.4rem; place-items: center; border: 1px solid color-mix(in srgb, var(--invite-accent) 50%, transparent); border-radius: 50%; color: var(--invite-accent); font-size: .72rem; }.public-section-heading h2 { margin: 0; overflow-wrap: anywhere; font: 400 clamp(1.8rem, 6vw, 3rem)/1.1 Georgia, serif; }
.public-content-section > .rich-text-content { max-width: 46rem; overflow-wrap: anywhere; font-size: clamp(1rem, 2.5vw, 1.12rem); }.public-content-section > .rich-text-content p:first-child { margin-top: 0; }
.public-card-grid, .gift-card-grid { display: grid; grid-template-columns: 1fr; gap: .8rem; }.public-info-card, .gift-card-grid li { min-width: 0; padding: 1.25rem; border: 1px solid color-mix(in srgb, var(--invite-ink) 16%, transparent); border-radius: .75rem; background: var(--public-surface); }.public-info-card h3, .gift-card-grid h3 { margin: .35rem 0; overflow-wrap: anywhere; font: 400 1.35rem Georgia, serif; }
.public-link-button { display: inline-flex; align-items: center; min-height: 2.75rem; margin-top: .5rem; padding: .6rem .9rem; border-radius: 999px; background: var(--invite-accent); color: white; font-weight: 700; text-decoration: none; }
.public-timeline { margin: 0; padding: 0; list-style: none; }.public-timeline li { display: grid; grid-template-columns: 5rem minmax(0, 1fr); gap: 1rem; padding: 1rem 0; border-bottom: 1px solid color-mix(in srgb, var(--invite-ink) 15%, transparent); }.public-timeline time { color: var(--invite-accent); font-size: .78rem; font-weight: 800; }.public-timeline h3 { margin: 0; font: 400 1.25rem Georgia, serif; }.public-timeline p { margin-bottom: 0; }
.public-content-section .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }.public-content-section .gallery img { border-radius: .5rem; }.public-disclosure { padding: .8rem; border-left: .2rem solid var(--invite-accent); background: var(--public-surface); font-size: .85rem; }.gift-card-grid { margin: 1rem 0 0; padding: 0; list-style: none; }
.public-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; width: min(100% - 2rem, 58rem); min-height: 7rem; margin-inline: auto; gap: 1rem; border-top: 1px solid color-mix(in srgb, var(--invite-ink) 16%, transparent); }.public-footer p { margin: 0; font: 400 1.1rem Georgia, serif; }.public-footer a { color: var(--invite-ink); font-weight: 700; }
@media (min-width: 38rem) { .countdown-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }.public-card-grid, .gift-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.public-content-section .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 58rem) { .public-nav__desktop { display: flex; align-items: center; gap: .25rem; }.public-nav__mobile { display: none; }.public-nav__inner { min-height: 4.5rem; }.public-hero { padding: 1.5rem; } }

/* Structured section ordering */
.section-order-list { display: grid; gap: .75rem; }
.section-order-card { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); align-items: end; gap: .75rem; padding: 1rem; border: 1px solid #ded3d9; border-radius: .65rem; background: #fffafc; }
.section-order-card__position select { width: 100%; }.section-order-card__visibility { grid-column: 1 / -1; align-self: stretch; }
@media (min-width: 44rem) { .section-order-card { grid-template-columns: 5rem minmax(0, 1fr) minmax(12rem, .65fr); }.section-order-card__visibility { grid-column: auto; } }

/* Controlled content blocks */
.block-create-panel { margin: 0; }.block-create-panel > summary { cursor: pointer; font-size: 1.05rem; font-weight: 800; }.block-create-panel[open] > summary { margin-bottom: 1rem; }
.block-list { display: grid; gap: 1rem; }.block-card { min-width: 0; }.block-card__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }.block-card__header h2 { margin: .15rem 0 0; overflow-wrap: anywhere; font: 400 1.4rem Georgia, serif; }.block-card > .button_to { display: flex; justify-content: flex-end; margin-top: .75rem; }
.custom-block-list { display: grid; gap: 1rem; }.public-custom-block { min-width: 0; padding: clamp(1rem, 3vw, 1.5rem); border: 1px solid color-mix(in srgb, var(--invite-ink) 16%, transparent); border-radius: .75rem; background: var(--public-surface); }.public-custom-block h3 { margin: 0 0 .75rem; overflow-wrap: anywhere; font: 400 1.4rem Georgia, serif; }.public-custom-block blockquote { margin: 0; padding: 1rem; border-left: .2rem solid var(--invite-accent); font: italic clamp(1.15rem, 4vw, 1.5rem) Georgia, serif; }.public-custom-block figure { margin: 0; }.public-custom-block figure img { width: 100%; max-height: 38rem; border-radius: .5rem; object-fit: cover; }.public-custom-block figcaption { margin-top: .5rem; color: color-mix(in srgb, var(--invite-ink) 70%, transparent); font-size: .85rem; }

/* Sharing center */
.sharing-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }.sharing-card { display: grid; align-content: space-between; min-width: 0; gap: 1.25rem; padding: 1.25rem; border: 1px solid #ded3d9; border-radius: .8rem; background: white; }.sharing-card h2 { margin: .15rem 0 .35rem; font: 400 1.5rem Georgia, serif; }.sharing-card p { margin: 0; color: #655a63; }.sharing-card blockquote { margin: 0; padding: 1rem; border-left: .2rem solid var(--accent); background: #faf4f7; overflow-wrap: anywhere; }.sharing-card > .button { width: 100%; text-align: center; }.sharing-card--qr { justify-items: center; text-align: center; }.sharing-card--qr img { width: min(100%, 15rem); height: auto; image-rendering: pixelated; }
.copy-field { display: grid; grid-template-columns: 1fr; gap: .5rem; }.copy-field input { width: 100%; min-width: 0; }.copy-status { min-height: 1.5rem; color: #245c3e !important; font-weight: 700; }.sharing-alert { padding: 1rem; border: 1px solid #c79842; border-radius: .65rem; background: #fff8e8; }.sharing-alert p { margin: .25rem 0 0; }.sharing-facts { display: grid; gap: .65rem; margin: 0; }.sharing-facts dt { color: #70656d; font-size: .7rem; font-weight: 800; text-transform: uppercase; }.sharing-facts dd { margin: .1rem 0 0; overflow-wrap: anywhere; }
@media (min-width: 34rem) { .copy-field { grid-template-columns: minmax(0, 1fr) auto; } }
@media (min-width: 48rem) { .sharing-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Public interactions */
.public-response-card { margin-block: 2rem; }.public-guestbook { background: color-mix(in srgb, var(--invite-accent) 6%, var(--invite-bg)); }.guest-message-grid { display: grid; grid-template-columns: 1fr; gap: .75rem; margin-bottom: 1.5rem; }.guest-message-grid blockquote { margin: 0; padding: 1.25rem; border: 1px solid color-mix(in srgb, var(--invite-ink) 15%, transparent); border-radius: .7rem; background: var(--public-surface); }.guest-message-grid blockquote p { margin-top: 0; overflow-wrap: anywhere; }.guest-message-grid blockquote footer { color: var(--invite-accent); font-weight: 800; }.guest-message-form { max-width: 38rem; margin-top: 2rem; }.guest-message-form h3 { margin: 0; font: 400 1.4rem Georgia, serif; }
.status-badge--pending { background: #f2e4c8; color: #73521a; }.status-badge--approved { background: #d9eee2; color: #245c3e; }.status-badge--rejected { background: #f2d9dd; color: #7a2938; }.guest-message-admin blockquote { margin: 0; padding: .75rem; border-left: .2rem solid var(--accent); overflow-wrap: anywhere; background: #faf4f7; }.guest-message-admin__actions { display: grid; grid-template-columns: 1fr; gap: .5rem; }.guest-message-admin__actions .button_to, .guest-message-admin__actions button { width: 100%; }
@media (min-width: 38rem) { .guest-message-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.guest-message-admin__actions { grid-template-columns: repeat(2, auto); } }

/* Mobile-first index pages */
.listing-page { display: grid; gap: 1.25rem; }
.listing-header { display: flex; align-items: stretch; flex-direction: column; gap: 1rem; padding-bottom: 1.25rem; border-bottom: 1px solid #ded3d9; }
.listing-header h1 { margin: .2rem 0 .35rem; font: 400 clamp(2rem, 8vw, 2.8rem)/1.1 Georgia, serif; }
.listing-header p:last-child { margin: 0; color: #655a63; }
.listing-header__action { width: 100%; text-align: center; }
.record-list { display: grid; gap: .8rem; }
.record-card { display: flex; align-items: stretch; flex-direction: column; gap: 1rem; min-width: 0; padding: 1.15rem; border: 1px solid #ded3d9; border-radius: .75rem; background: white; box-shadow: 0 .15rem .65rem rgb(58 26 48 / 5%); }
.record-card__body { display: grid; min-width: 0; gap: .8rem; }
.record-card__heading { display: flex; align-items: flex-start; flex-direction: column; gap: .55rem; }
.record-card__heading h2 { min-width: 0; margin: 0; overflow-wrap: anywhere; font: 400 1.35rem/1.2 Georgia, serif; }
.record-card__heading h2 a { color: var(--ink); text-decoration-thickness: 1px; }
.record-card__meta { display: grid; grid-template-columns: 1fr; gap: .6rem 1.5rem; margin: 0; }
.record-card__meta div { min-width: 0; }
.record-card__meta dt { color: #756a72; font-size: .7rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.record-card__meta dd { margin: .1rem 0 0; overflow-wrap: anywhere; color: #443941; font-size: .9rem; }
.record-card__action { width: 100%; align-self: center; text-align: center; }
.status-badge--open { background: #e6edf7; color: #274d78; }
.status-badge--in_progress { background: #f2e4c8; color: #73521a; }
.status-badge--resolved { background: #d9eee2; color: #245c3e; }
.status-badge--closed { background: #e4e4e4; color: #505050; }
.empty-state p { max-width: 30rem; margin: .25rem 0 1rem; }
.summary-strip { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; padding: 1rem; border: 1px solid #ded3d9; border-radius: .75rem; background: white; }
.summary-strip > div { display: grid; padding: .75rem; border-radius: .5rem; background: #f8f2f5; }
.summary-strip span { color: #655a63; font-size: .75rem; font-weight: 750; text-transform: uppercase; }
.summary-strip strong { color: var(--accent); font: 400 1.75rem Georgia, serif; }
.summary-strip .button { grid-column: 1 / -1; text-align: center; }
.import-panel { margin: 0; }
.import-panel summary { cursor: pointer; font-weight: 750; }
.import-panel[open] summary { margin-bottom: .75rem; }
.household-card { min-width: 0; padding: 1.15rem; border: 1px solid #ded3d9; border-radius: .75rem; background: white; }
.household-card__header { display: flex; align-items: stretch; flex-direction: column; gap: .75rem; padding-bottom: 1rem; border-bottom: 1px solid #e7dfe4; }
.household-card__header h2 { margin: .15rem 0 0; overflow-wrap: anywhere; font: 400 1.4rem Georgia, serif; }
.household-card__header .button { text-align: center; }
.guest-list { display: grid; margin: 0; padding: 0; list-style: none; }
.guest-list li { display: grid; min-width: 0; padding-block: .75rem; border-bottom: 1px solid #eee7eb; }
.guest-list span { overflow-wrap: anywhere; color: #70656d; font-size: .85rem; }
.household-card__actions { display: grid; align-items: end; gap: .75rem; padding-top: .5rem; }
.household-card__actions .inline-form { margin: 0; }
.household-card__actions .button_to, .household-card__actions button { width: 100%; }
@media (min-width: 36rem) {
  .listing-header { justify-content: space-between; align-items: center; flex-direction: row; }
  .listing-header__action { width: auto; flex: 0 0 auto; }
  .record-card__heading { align-items: center; flex-direction: row; justify-content: space-between; }
  .record-card__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .summary-strip { grid-template-columns: repeat(2, minmax(7rem, 1fr)) auto; align-items: center; }
  .summary-strip .button { grid-column: auto; }
  .household-card__header { justify-content: space-between; align-items: center; flex-direction: row; }
  .household-card__actions { grid-template-columns: minmax(0, 1fr) auto; }
  .household-card__actions .button_to, .household-card__actions .button_to button { width: auto; }
}
@media (min-width: 48rem) {
  .record-card { align-items: center; flex-direction: row; padding: 1.35rem 1.5rem; }
  .record-card__body { flex: 1 1 auto; }
  .record-card__action { width: auto; flex: 0 0 auto; }
  .record-card--compact { padding-block: 1.15rem; }
}
.rich-text-toolbar span { width: 1px; height: 1.4rem; margin-inline: .15rem; background: #cfc3ca; }
.rich-text-editor { width: 100%; min-height: 9rem; max-height: 28rem; overflow: auto; padding: .8rem; border: 1px solid #9b9098; border-radius: 0 0 .45rem .45rem; background: white; color: var(--ink); line-height: 1.55; }
.rich-text-editor:focus { outline: .2rem solid #005fcc; outline-offset: .15rem; }
.rich-text-editor:empty::before { color: #756b73; content: "Escreva aqui…"; pointer-events: none; }
.rich-text-editor p:first-child, .rich-text-content p:first-child { margin-top: 0; }.rich-text-editor p:last-child, .rich-text-content p:last-child { margin-bottom: 0; }
.rich-text-editor ul, .rich-text-editor ol, .rich-text-content ul, .rich-text-content ol { padding-left: 1.5rem; }
@media (max-width: 42rem) {
  #main-content { width: min(100% - 1rem, 64rem); margin-block: 1.5rem; }
  .form-grid { grid-template-columns: 1fr; }
  .form-field--full { grid-column: auto; }
  .input-prefix > span { padding-inline: .5rem; font-size: .85rem; }
  .form-actions { flex-direction: column-reverse; align-items: stretch; }
  .form-actions .button, .form-actions input { width: 100%; text-align: center; }
}

/* Digital stationery editor */
.stationery-page { width: min(100%, 72rem); }
.stationery-create { display: grid; gap: 1rem; padding: clamp(1rem, 3vw, 1.5rem); border: 1px solid #ded3d9; border-radius: 1rem; background: #f8f2f5; }
.stationery-section-heading { display: flex; align-items: flex-start; flex-direction: column; gap: .5rem; }
.stationery-section-heading h2 { margin: .15rem 0 0; font: 400 clamp(1.6rem, 5vw, 2rem)/1.15 Georgia, serif; }
.stationery-section-heading > p { margin: 0; color: #655a63; }
.stationery-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
.stationery-card { display: grid; min-width: 0; overflow: hidden; border: 1px solid #d8cdd4; border-radius: 1rem; background: white; box-shadow: 0 .35rem 1.2rem rgb(58 26 48 / 8%); }
.stationery-card__preview { display: grid; min-height: 20rem; padding: 1.25rem; place-items: center; overflow: hidden; background: #eee7eb; }
.stationery-card__preview img { display: block; width: 100%; max-width: 20rem; max-height: 34rem; object-fit: contain; filter: drop-shadow(0 .5rem .8rem rgb(45 25 38 / 18%)); }
.stationery-card__content { display: grid; align-content: start; min-width: 0; padding: 1.25rem; gap: 1rem; }
.stationery-card__content header { min-width: 0; }
.stationery-card__content h3 { margin: .6rem 0 .2rem; overflow-wrap: anywhere; font: 400 1.45rem/1.2 Georgia, serif; }
.stationery-card__content header small { color: #655a63; }
.stationery-card details { border-top: 1px solid #e7dfe4; border-bottom: 1px solid #e7dfe4; }
.stationery-card summary { padding-block: .9rem; cursor: pointer; font-weight: 750; }
.stationery-edit-form { margin-bottom: 1rem; padding: 0; border: 0; box-shadow: none; }
.stationery-card__actions { display: grid; grid-template-columns: 1fr; gap: .65rem; }
.stationery-card__actions .button, .stationery-card__actions .button_to, .stationery-card__actions button { width: 100%; text-align: center; }
@media (min-width: 40rem) {
  .stationery-section-heading { align-items: end; flex-direction: row; justify-content: space-between; }
  .stationery-card__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stationery-card__actions .button_to { grid-column: 1 / -1; }
}
@media (min-width: 64rem) { .stationery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media print {
  .stationery-page > nav, .stationery-page > header, .stationery-create, .stationery-section-heading, .stationery-card__content { display: none !important; }
  .stationery-grid { display: block; }
  .stationery-card { break-after: page; border: 0; box-shadow: none; }
  .stationery-card__preview { min-height: 0; padding: 0; background: white; }
  .stationery-card__preview img { max-width: 100%; max-height: 95vh; filter: none; }
}

/* Development-only marketing preview */
.main-content--full { width: 100% !important; margin: 0 !important; }
.marketing-page { --mkt-ink: #2d2430; --mkt-muted: #695f67; --mkt-wine: #702d4f; --mkt-rose: #f2d8db; --mkt-cream: #fbf6ed; overflow: hidden; background: var(--mkt-cream); color: var(--mkt-ink); }
.demo-banner { display: flex; justify-content: center; gap: .65rem; padding: .45rem 1rem; background: #392631; color: white; font-size: .78rem; text-align: center; }
.marketing-nav { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; width: min(100% - 2rem, 74rem); min-height: 5rem; margin-inline: auto; gap: 2rem; }
.marketing-brand { display: inline-flex; align-items: center; gap: .55rem; color: var(--mkt-ink); font-family: Georgia, serif; font-size: 1.25rem; font-weight: 700; text-decoration: none; }
.marketing-brand span { display: grid; width: 2.15rem; height: 2.15rem; place-items: center; border: 1px solid var(--mkt-wine); border-radius: 50%; color: var(--mkt-wine); font: 700 .68rem/1 system-ui, sans-serif; letter-spacing: -.04em; }
.marketing-nav__links, .marketing-nav__actions { display: flex; align-items: center; gap: 1.4rem; }
.marketing-nav__links a, .marketing-login { color: var(--mkt-ink); font-size: .9rem; font-weight: 650; text-decoration: none; }
.marketing-nav__actions { justify-self: end; }
.marketing-button { border-radius: 999px; background: var(--mkt-wine); color: white; font-weight: 750; text-decoration: none; }
.marketing-button--large { padding: .9rem 1.35rem; }
.marketing-hero { display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; width: min(100% - 2rem, 74rem); min-height: 43rem; margin-inline: auto; padding: 4rem 0 6rem; gap: clamp(3rem, 8vw, 7rem); }
.marketing-kicker { margin: 0 0 .8rem; color: var(--mkt-wine); font-size: .75rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.marketing-hero h1 { margin: 0; max-width: 43rem; font: 400 clamp(3.2rem, 6vw, 5.7rem)/.98 Georgia, serif; letter-spacing: -.055em; }
.marketing-lead { max-width: 37rem; margin: 1.5rem 0; color: var(--mkt-muted); font-size: clamp(1.05rem, 2vw, 1.25rem); }
.marketing-hero__actions { display: flex; align-items: center; gap: 1.25rem; }
.marketing-text-link { color: var(--mkt-wine); font-weight: 750; }
.marketing-reassurance { color: var(--mkt-muted); font-size: .82rem; }
.invitation-demo { position: relative; width: min(100%, 29rem); min-height: 35rem; justify-self: center; padding: 1.2rem; border: .5rem solid #fff; border-radius: 2rem; background: #f7e7e2; box-shadow: 0 2rem 5rem rgb(76 39 58 / 20%); transform: rotate(2deg); }
.invitation-demo__browser { display: flex; gap: .3rem; }
.invitation-demo__browser i { width: .45rem; height: .45rem; border-radius: 50%; background: #c9aeb4; }
.invitation-demo__card { display: grid; min-height: 31rem; place-content: center; padding: 2rem; border: 1px solid #b97887; text-align: center; }
.invitation-demo__card::before, .invitation-demo__card::after { content: ""; width: 4rem; height: 1px; margin: 0 auto 1.5rem; background: #b97887; }
.invitation-demo__card::after { margin: 1.5rem auto 0; }
.invitation-demo__eyebrow { color: var(--mkt-wine); font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; }
.invitation-demo__card h2 { margin: .5rem 0; font: 400 2.8rem/1.05 Georgia, serif; }
.invitation-demo__card h2 span { color: #a35c70; font-style: italic; }
.invitation-demo__date { letter-spacing: .18em; }
.invitation-demo__flower { color: #a35c70; font-size: 2rem; }
.invitation-demo__cta { justify-self: center; margin-top: .8rem; padding: .65rem 1rem; border-radius: 999px; background: var(--mkt-wine); color: white; font-size: .82rem; font-weight: 700; }
.demo-notification { position: absolute; right: -3rem; bottom: 3.5rem; padding: .8rem 1rem; border-radius: .7rem; background: white; box-shadow: 0 .8rem 2rem rgb(45 36 48 / 18%); font-size: .8rem; transform: rotate(-2deg); }
.demo-notification b { display: inline-grid; width: 1.4rem; height: 1.4rem; margin-right: .35rem; place-items: center; border-radius: 50%; background: #d8eee2; color: #256342; }
.marketing-proof { padding: 2rem max(1rem, calc((100% - 74rem) / 2)); background: white; text-align: center; }
.marketing-proof p { margin-top: 0; font-family: Georgia, serif; font-size: 1.15rem; }
.marketing-proof ul { display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem 3rem; margin: 0; padding: 0; color: var(--mkt-muted); list-style: none; font-size: .85rem; }
.marketing-proof li::before { content: "◇"; margin-right: .45rem; color: var(--mkt-wine); }
.marketing-section { padding: clamp(5rem, 10vw, 8rem) max(1rem, calc((100% - 74rem) / 2)); }
.marketing-section__header { max-width: 46rem; margin: 0 auto 3rem; text-align: center; }
.marketing-section__header h2, .marketing-final-cta h2 { margin: 0; font: 400 clamp(2.4rem, 5vw, 4rem)/1.05 Georgia, serif; letter-spacing: -.04em; }
.marketing-section__header > p:last-child { color: var(--mkt-muted); }
.feature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.feature-card { position: relative; min-height: 15rem; padding: 2rem; border: 1px solid #e1d5d2; border-radius: 1rem; background: rgb(255 255 255 / 68%); }
.feature-card--wide { display: grid; grid-template-columns: auto 1fr auto; grid-column: 1 / -1; align-items: center; gap: 1.5rem; }
.feature-card h3 { margin: .7rem 0 .3rem; font: 400 1.55rem/1.2 Georgia, serif; }
.feature-card p { max-width: 32rem; margin: 0; color: var(--mkt-muted); }
.feature-icon { display: grid; width: 2.5rem; height: 2.5rem; place-items: center; border-radius: 50%; background: var(--mkt-rose); color: var(--mkt-wine); font-weight: 800; }
.mini-palette { display: flex; gap: .5rem; }
.mini-palette i { width: 2.2rem; height: 2.2rem; border-radius: 50%; background: #77354f; }
.mini-palette i:nth-child(2) { background: #d6a1a0; }.mini-palette i:nth-child(3) { background: #718477; }.mini-palette i:nth-child(4) { background: #d8c5a1; }
.marketing-steps { background: #3a2933; color: white; }
.marketing-steps .marketing-kicker { color: #e6b8bf; }
.marketing-steps ol { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; padding: 0; list-style: none; }
.marketing-steps li { padding: 1.5rem 2rem; border-left: 1px solid #67515d; }
.marketing-steps li:first-child { border-left: 0; }
.marketing-steps li > span { color: #e6b8bf; font: italic 1.2rem Georgia, serif; }
.marketing-steps h3 { font: 400 1.5rem Georgia, serif; }
.marketing-steps li p { color: #d8cdd3; }
.marketing-section__header--split { display: grid; grid-template-columns: 1fr 1fr; align-items: end; max-width: none; text-align: left; }
.model-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.model-card { min-width: 0; }
.model-card > div { display: grid; min-height: 29rem; place-content: center; padding: 2rem; border: 1px solid currentColor; text-align: center; transition: transform .2s ease, box-shadow .2s ease; }
.model-card:hover > div { transform: translateY(-.35rem); box-shadow: 0 1rem 2.5rem rgb(45 36 48 / 12%); }
.model-card h3 { margin: 1rem 0; font: 400 2.2rem/1.05 Georgia, serif; }
.model-card small { letter-spacing: .13em; text-transform: uppercase; }
.model-card > strong { display: block; margin-top: .75rem; font-family: Georgia, serif; }
.model-card--linen > div { background: #eee5d8; color: #563e35; }.model-card--garden > div { border: .55rem double #536954; background: #eff1e7; color: #344536; }.model-card--moon > div { border-radius: 9rem 9rem 0 0; background: #2c303c; color: #f4e9d5; }
.marketing-pricing { background: #ead9d9; }
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); align-items: stretch; gap: 1rem; }
.pricing-card { position: relative; display: flex; flex-direction: column; min-height: 28rem; padding: 2rem; border: 1px solid #bea8ad; border-radius: 1rem; background: #fbf7f1; }
.pricing-card--featured { border: 2px solid var(--mkt-wine); transform: translateY(-.7rem); }
.pricing-badge { position: absolute; top: 0; left: 50%; padding: .35rem .8rem; border-radius: 0 0 .6rem .6rem; background: var(--mkt-wine); color: white; font-size: .7rem; font-weight: 750; transform: translateX(-50%); white-space: nowrap; }
.pricing-card h3 { margin: 1rem 0 .2rem; font: 400 1.7rem Georgia, serif; }
.pricing-card > p { color: var(--mkt-muted); }
.pricing-value strong { display: block; color: var(--mkt-ink); font: 400 2.7rem Georgia, serif; }
.pricing-value span { font-size: .72rem; }
.pricing-card ul { display: grid; gap: .6rem; margin: .5rem 0 2rem; padding: 0; list-style: none; }
.pricing-card li span { color: var(--mkt-wine); font-weight: 800; }
.pricing-card .button { margin-top: auto; text-align: center; }
.marketing-faq { display: grid; grid-template-columns: .7fr 1.3fr; gap: 4rem; }
.marketing-faq .marketing-section__header { margin: 0; text-align: left; }
.marketing-faq details { border-bottom: 1px solid #d2c4c3; }
.marketing-faq summary { padding: 1.3rem 0; font-weight: 750; cursor: pointer; }
.marketing-faq details p { margin-top: 0; color: var(--mkt-muted); }
.marketing-final-cta { padding: clamp(5rem, 10vw, 8rem) 1rem; background: var(--mkt-wine); color: white; text-align: center; }
.marketing-final-cta .marketing-kicker { color: #f2cbd1; }
.marketing-final-cta p:not(.marketing-kicker) { margin-bottom: 2rem; color: #f0dfe4; }
.marketing-button--light { background: white; color: var(--mkt-wine); }
.marketing-footer { display: grid; grid-template-columns: auto 1fr auto; align-items: center; padding: 2.5rem max(1rem, calc((100% - 74rem) / 2)); gap: 1rem 2rem; background: #281d24; color: #e8dce2; }
.marketing-footer .marketing-brand, .marketing-footer a { color: white; }
.marketing-footer nav { display: flex; gap: 1rem; }
.marketing-footer small { grid-column: 1 / -1; color: #bcaeb5; }
@media (max-width: 58rem) {
  .marketing-nav { grid-template-columns: 1fr auto; }.marketing-nav__links { display: none; }
  .marketing-hero { grid-template-columns: 1fr; padding-top: 3rem; text-align: center; }.marketing-hero__copy { display: grid; justify-items: center; }.marketing-hero__actions { justify-content: center; }
  .invitation-demo { width: min(80vw, 29rem); }.demo-notification { right: -1rem; }
  .marketing-section__header--split, .marketing-faq { grid-template-columns: 1fr; gap: 2rem; }.marketing-section__header--split { text-align: center; }
  .model-grid, .pricing-grid { grid-template-columns: 1fr; max-width: 34rem; margin-inline: auto; }.pricing-card--featured { transform: none; }
  .marketing-footer { grid-template-columns: 1fr; text-align: center; }.marketing-footer .marketing-brand, .marketing-footer nav { justify-self: center; }.marketing-footer small { grid-column: auto; }
}
@media (max-width: 42rem) {
  .demo-banner { display: grid; gap: 0; }.marketing-nav { min-height: 4.2rem; }.marketing-nav__actions .marketing-button { display: none; }
  .marketing-hero { min-height: auto; padding-bottom: 4rem; }.marketing-hero h1 { font-size: clamp(2.8rem, 15vw, 4.2rem); }.marketing-hero__actions { flex-direction: column; }
  .invitation-demo { min-height: 29rem; }.invitation-demo__card { min-height: 25rem; }.demo-notification { right: -.5rem; bottom: 2rem; }
  .feature-grid, .marketing-steps ol { grid-template-columns: 1fr; }.feature-card--wide { display: block; grid-column: auto; }.mini-palette { margin-top: 1.5rem; }
  .marketing-steps li { border-top: 1px solid #67515d; border-left: 0; }.marketing-steps li:first-child { border-top: 0; }
  .marketing-proof ul { display: grid; gap: .5rem; }.marketing-footer nav { flex-wrap: wrap; justify-content: center; }
}
