:root {
  --bg: #f6f1eb;
  --surface: #fffaf6;
  --primary: #8c7864;
  --secondary: #d8c8ba;
  --text: #302a27;
  --muted: #756b64;
  --accent: #b59a7a;
  --radius: 22px;
  --shadow: 0 24px 70px rgba(48, 42, 39, .12);
  --display: "Cormorant Garamond", Georgia, serif;
  --sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--bg); }
body { margin: 0; color: var(--text); background: var(--bg); font-family: var(--sans); overflow-x: hidden; }
button, input, select, textarea { font: inherit; }
a { color: inherit; }
.loading-screen { min-height: 100svh; display: grid; place-content: center; text-align: center; gap: 12px; background: var(--bg); }
.loading-screen p { color: var(--muted); margin: 0; font-size: .88rem; letter-spacing: .08em; text-transform: uppercase; }
.monogram { font-family: var(--display); font-size: clamp(2.8rem, 11vw, 5rem); line-height: .9; letter-spacing: -.05em; }
.invite { width: 100%; }
.section { position: relative; min-height: 70svh; display: grid; align-items: center; overflow: hidden; }
.section-inner { width: min(1120px, calc(100% - 34px)); margin: 0 auto; padding: 90px 0; }
.section-inner.narrow { width: min(760px, calc(100% - 34px)); text-align: center; }
.eyebrow { margin: 0 0 12px; color: var(--primary); letter-spacing: .19em; text-transform: uppercase; font-size: .72rem; font-weight: 600; }
h1,h2,h3,blockquote { font-family: var(--display); font-weight: 500; }
h1 { margin: 10px 0 8px; font-size: clamp(3.5rem, 15vw, 8rem); line-height: .86; letter-spacing: -.06em; }
h2 { margin: 0 0 20px; font-size: clamp(2.35rem, 8vw, 4.6rem); line-height: .98; letter-spacing: -.04em; }
h3 { font-size: 2rem; margin: 0 0 8px; }
.lead { color: var(--muted); line-height: 1.9; font-size: 1.05rem; }
.cover { min-height: 100svh; color: #fff; text-align: center; isolation: isolate; }
.cover-media, .closing-media { position: absolute; inset: 0; z-index: -3; background-position: center; background-size: cover; transform: scale(1.02); }
.cover-overlay, .closing-overlay { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(16,13,12,.18), rgba(16,13,12,.5)); }
.cover-content, .closing-content { width: min(880px, calc(100% - 34px)); margin: 0 auto; padding: 100px 0; }
.cover-date { font-family: var(--display); font-size: 1.45rem; letter-spacing: .2em; margin: 24px 0 30px; }
.guest-greeting { margin: 0 auto 24px; max-width: 560px; font-family: var(--display); font-size: 1.45rem; }
.scroll-hint { position: absolute; bottom: max(20px, env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); font-size: 2rem; animation: bob 1.8s infinite ease-in-out; }
.primary-button, .secondary-button { border: 0; border-radius: 999px; padding: 14px 22px; font-weight: 600; cursor: pointer; text-decoration: none; display: inline-flex; justify-content: center; align-items: center; gap: 8px; transition: transform .2s ease, opacity .2s ease; }
.primary-button { background: #fff; color: #2c2623; }
.secondary-button { border: 1px solid color-mix(in srgb, var(--primary), transparent 50%); color: var(--primary); background: transparent; }
.primary-button:active, .secondary-button:active { transform: scale(.98); }
.editorial-section { background: var(--surface); }
.gallery-section { min-height: auto; }
.gallery-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-top: 34px; }
.gallery-item { min-height: 190px; border: 0; padding: 0; cursor: zoom-in; overflow: hidden; border-radius: calc(var(--radius) * .65); background: var(--secondary); }
.gallery-item:nth-child(3n+1) { grid-row: span 2; min-height: 390px; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .7s cubic-bezier(.2,.8,.2,1); }
.gallery-item:hover img { transform: scale(1.035); }
.video-section { background: var(--surface); min-height: auto; }
.video-frame { aspect-ratio: 16 / 9; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); margin-top: 30px; background: #1f1a18; position: relative; }
.video-frame video, .video-frame iframe, .video-frame img { width: 100%; height: 100%; border: 0; object-fit: cover; display: block; }
.video-placeholder { width: 100%; height: 100%; display: grid; place-content: center; text-align: center; color: white; background-position: center; background-size: cover; position: relative; }
.video-placeholder::before { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.34); }
.video-placeholder > * { position: relative; }
.video-play { width: 72px; height: 72px; border-radius: 50%; border: 1px solid rgba(255,255,255,.8); display: grid; place-content: center; margin: 0 auto 12px; font-size: 1.7rem; backdrop-filter: blur(8px); }
.quote-section { background: var(--primary); color: white; }
.quote-mark { font-family: var(--display); font-size: 7rem; opacity: .32; line-height: .5; }
blockquote { font-size: clamp(2rem, 7vw, 3.8rem); line-height: 1.08; margin: 18px 0 0; }
.details-section { background: var(--surface); }
.details-card { display: grid; grid-template-columns: 130px 1fr; gap: 28px; align-items: center; background: var(--bg); border-radius: var(--radius); padding: 28px; margin-top: 30px; }
.details-date { display: grid; justify-items: center; border-right: 1px solid var(--secondary); padding-right: 24px; }
.details-date span { font-family: var(--display); font-size: 4.8rem; line-height: .8; }
.details-date small { letter-spacing: .14em; margin-top: 10px; }
.details-date strong { margin-top: 6px; font-weight: 500; }
.details-copy p { color: var(--muted); line-height: 1.6; }
.countdown-section { min-height: auto; text-align: center; }
.countdown { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; margin-top: 34px; }
.countdown div { background: var(--surface); border-radius: calc(var(--radius) * .7); padding: 22px 8px; box-shadow: 0 10px 30px rgba(48,42,39,.06); }
.countdown strong { display: block; font-family: var(--display); font-size: clamp(2.2rem,9vw,4.5rem); font-weight: 500; }
.countdown span { color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; }
.rsvp-section { background: var(--surface); }
.rsvp-form { display: grid; gap: 14px; text-align: left; margin-top: 30px; }
.rsvp-form label { display: grid; gap: 8px; font-size: .82rem; color: var(--muted); }
.rsvp-form input, .rsvp-form select, .rsvp-form textarea { width: 100%; border: 1px solid var(--secondary); border-radius: 14px; background: #fff; padding: 13px 14px; color: var(--text); outline: none; }
.rsvp-form input:focus, .rsvp-form select:focus, .rsvp-form textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary), transparent 82%); }
.rsvp-form .primary-button { background: var(--primary); color: #fff; margin-top: 4px; }
.form-feedback { text-align: center; min-height: 1.2em; color: var(--primary); }
.gifts-section { text-align: center; }
.gift-links { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 26px; }
.closing-section { min-height: 100svh; color: white; text-align: center; isolation: isolate; }
.closing-content p { font-family: var(--display); font-size: 1.4rem; margin: 10px 0; }
.floating-button { position: fixed; z-index: 50; right: 16px; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255,255,255,.5); box-shadow: 0 12px 40px rgba(0,0,0,.18); background: rgba(255,255,255,.86); color: var(--text); backdrop-filter: blur(14px); cursor: pointer; }
.music-button { bottom: calc(76px + env(safe-area-inset-bottom)); }
.share-button { bottom: calc(18px + env(safe-area-inset-bottom)); }
.lightbox { width: 100%; height: 100%; max-width: none; max-height: none; border: 0; padding: 0; margin: 0; background: rgba(13,11,10,.94); }
.lightbox::backdrop { background: transparent; }
.lightbox img { width: 100%; height: 100%; object-fit: contain; padding: 54px 12px 16px; }
.lightbox-close { position: fixed; top: max(14px, env(safe-area-inset-top)); right: 16px; z-index: 2; border: 0; background: transparent; color: white; font-size: 2.5rem; cursor: pointer; }
.reveal { opacity: 0; transform: translateY(20px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.8,.2,1); }
.reveal.visible { opacity: 1; transform: none; }
body.motion-off .reveal { opacity: 1; transform: none; transition: none; }
@keyframes bob { 0%,100% { transform: translate(-50%,0); } 50% { transform: translate(-50%,8px); } }
@media (min-width: 760px) {
  .gallery-grid { grid-template-columns: repeat(4,1fr); gap: 12px; }
  .gallery-item { min-height: 240px; }
  .gallery-item:nth-child(3n+1) { min-height: 492px; }
  .details-card { grid-template-columns: 180px 1fr; padding: 42px; }
}
@media (max-width: 560px) {
  .section { min-height: 62svh; }
  .cover, .closing-section { min-height: 100svh; }
  .section-inner { padding: 74px 0; }
  .details-card { grid-template-columns: 1fr; text-align: center; }
  .details-date { border-right: 0; border-bottom: 1px solid var(--secondary); padding: 0 0 24px; }
  .countdown { gap: 5px; }
  .countdown div { padding: 16px 4px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1; transform: none; }
}

/* Fase 2 — variações configuráveis da galeria */
.gallery-grid[data-layout="grid"] { grid-template-columns: repeat(2, minmax(0,1fr)); }
.gallery-grid[data-layout="grid"] .gallery-item,
.gallery-grid[data-layout="grid"] .gallery-item:nth-child(3n+1) { grid-row:auto; min-height:0; aspect-ratio:1/1; }
@media (min-width:760px) {
  .gallery-grid[data-layout="grid"] { grid-template-columns: repeat(3,minmax(0,1fr)); }
}


/* Fase 3.3 — RSVP nominal por integrante */
.nominal-rsvp{display:grid;gap:20px;text-align:left}.nominal-rsvp-head{text-align:center}.nominal-rsvp-head h3{margin-bottom:5px}.nominal-rsvp-head p{color:var(--muted);margin:0}.bulk-attendance{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}.secondary-button.compact{padding:10px 14px;font-size:.8rem}.member-group{display:grid;gap:10px}.member-group-title{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--secondary)}.member-group-title strong{font-family:var(--display);font-size:1.25rem}.member-group-title span{font-size:.75rem;color:var(--muted)}.member-list{display:grid;gap:9px}.member-rsvp-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid var(--secondary);border-radius:14px;background:#fff}.member-rsvp-name{display:grid;gap:2px}.member-rsvp-name strong{font-size:.94rem}.member-rsvp-name small{color:var(--muted);font-size:.7rem}.attendance-toggle{display:grid;grid-template-columns:1fr 1fr;gap:5px;min-width:142px}.attendance-choice{border:1px solid var(--secondary);border-radius:10px;background:transparent;color:var(--text);padding:9px 12px;cursor:pointer;font-weight:600}.attendance-choice[aria-pressed="true"][data-value="yes"]{background:color-mix(in srgb,#5f9d71,white 82%);border-color:#6caa7e;color:#326142}.attendance-choice[aria-pressed="true"][data-value="no"]{background:color-mix(in srgb,#b96c68,white 84%);border-color:#c27a76;color:#7d3d3a}.nominal-summary{border-radius:12px;background:color-mix(in srgb,var(--bg),white 50%);padding:12px;text-align:center;color:var(--muted);font-size:.82rem}.nominal-summary.ready{color:var(--primary);font-weight:600}@media(max-width:430px){.member-rsvp-row{grid-template-columns:1fr;gap:9px}.attendance-toggle{width:100%;min-width:0}.bulk-attendance{display:grid}.secondary-button.compact{width:100%}}


/* Fase 3.4 — Manual dos Convidados */
.guest-manual-section{min-height:auto;background:linear-gradient(180deg,color-mix(in srgb,var(--surface),white 38%),var(--surface));}
.guest-manual-section::before,.guest-manual-section::after{content:"";position:absolute;width:150px;height:150px;opacity:.18;pointer-events:none;background:radial-gradient(ellipse at center,transparent 58%,var(--accent) 60%,transparent 62%);transform:rotate(28deg)}
.guest-manual-section::before{left:-65px;top:15px}.guest-manual-section::after{right:-70px;bottom:18px;transform:rotate(-30deg)}
.guest-manual-heading{text-align:center;width:min(760px,100%);margin:0 auto 38px}.guest-manual-heading h2{margin-bottom:14px}.guest-manual-heading .lead{margin:0 auto;max-width:650px}
.guest-manual-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.guest-manual-rule{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:14px;padding:18px 16px;border-radius:calc(var(--radius)*.72);border:1px solid color-mix(in srgb,var(--accent),transparent 63%);background:color-mix(in srgb,var(--surface),white 46%);box-shadow:0 10px 28px rgba(48,42,39,.05)}
.guest-manual-icon{width:54px;height:54px;display:grid;place-items:center;color:var(--accent)}
.guest-manual-icon svg{width:48px;height:48px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.guest-manual-rule p{margin:0;font-family:var(--display);font-size:1.2rem;line-height:1.25;color:var(--text)}
@media(min-width:760px){.guest-manual-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.guest-manual-rule{grid-template-columns:1fr;text-align:center;align-content:start;min-height:180px;padding:22px 18px}.guest-manual-icon{margin:0 auto}.guest-manual-rule p{font-size:1.25rem}}
@media(max-width:420px){.guest-manual-grid{grid-template-columns:1fr}.guest-manual-rule{min-height:0}.guest-manual-rule p{font-size:1.14rem}}
