/* Folhas de papel branco empilhadas, aquarelas escorrendo pelas bordas, dourado de hot stamp e azul-marinho de tinta. */
:root {
  --branco: #ffffff;
  --papel: #f5f2ec;            /* "mesa" atrás das folhas */
  --marinho: #14365c;
  --marinho-2: #2b4a72;
  --suave: #877d70;           /* textos de apoio: cinza quente, bem diferente do marinho */
  --ouro-texto: #a07c3a;      /* dourado legível para links */
  --linha: #e6e1d8;
  --ouro: #b39256;             /* hot stamp */
  --ouro-claro: #dcc9a0;
  --magenta: #cf236d;
  --rosa: #eb5a9c;
  --laranja: #ea5716;
  --laranja-2: #f18530;
  --amarelo: #f8bf43;
  --amarelo-claro: #f7e89a;
  --verde: #539832;
  --verde-escuro: #287630;
  --erro: #b3261e;
  --ok: #287630;

  --f: "Libre Baskerville", "Baskerville", "Georgia", serif;
  --caixa: .16em;
  --topo-h: 72px;
  --rasgo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 18' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0 L1200 0 L1200 10 L1189 7.5 L1172 6.7 L1158 9.7 L1151 11.1 L1144 10.3 L1137 6.9 L1124 14.3 L1116 8.2 L1100 15.5 L1085 10.0 L1064 6.5 L1044 8.9 L1035 7.2 L1025 14.2 L1016 11.8 L999 9.7 L985 6.6 L978 8.1 L961 10.3 L950 11.9 L937 9.0 L918 13.0 L908 11.7 L894 14.8 L876 8.9 L854 7.2 L841 13.6 L833 10.9 L826 12.7 L808 11.7 L788 9.1 L771 11.9 L756 10.6 L736 15.4 L723 12.6 L716 13.0 L699 15.9 L680 8.8 L668 12.7 L662 10.6 L653 7.2 L646 13.7 L638 8.5 L626 14.7 L618 10.5 L604 14.8 L585 14.6 L574 10.2 L562 14.8 L541 7.5 L532 8.3 L523 10.8 L507 8.6 L501 10.2 L489 11.7 L468 12.9 L454 12.2 L437 6.5 L416 13.8 L396 14.0 L384 10.0 L376 12.3 L369 6.7 L360 7.6 L349 6.5 L343 7.5 L335 9.6 L329 14.7 L313 7.5 L303 9.5 L291 7.2 L271 15.9 L258 10.8 L251 7.0 L239 8.6 L220 7.6 L213 15.5 L199 7.5 L184 6.3 L170 15.8 L150 13.0 L140 9.7 L131 13.7 L117 13.8 L105 8.2 L86 15.8 L67 14.1 L48 13.4 L38 11.2 L26 6.3 L20 8.8 L10 12.9 L0 10.5 L0 0 Z'/%3E%3C/svg%3E");
  color-scheme: light;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: calc(var(--topo-h) + 8px); -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation: none !important; transition: none !important; } }
body { margin: 0; background: var(--papel); color: var(--marinho); font-family: var(--f); font-size: 16.5px; line-height: 1.75; overflow-x: clip; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--marinho); }
p { margin: 0 0 .8em; }
h1, h2, h3 { font-family: var(--f); font-weight: 400; margin: 0; text-wrap: balance; }
button { font: inherit; }
:focus-visible { outline: 2px solid var(--ouro); outline-offset: 3px; border-radius: 3px; }
.pular { position: absolute; left: -9999px; top: 0; background: var(--marinho); color: #fff; padding: 12px 16px; z-index: 100; }
.pular:focus { left: 16px; top: 16px; }
.centro { text-align: center; }
.nota { font-size: .86rem; color: var(--suave); font-style: italic; }
.rotulo { font-size: .7rem; letter-spacing: var(--caixa); text-transform: uppercase; color: var(--suave); margin: 0 0 .3em; }
.opcional { color: var(--suave); font-weight: 400; }

/* ---------- Botões ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5em; min-height: 50px; padding: 12px 26px; font-family: var(--f); font-size: .74rem; letter-spacing: var(--caixa); text-transform: uppercase; text-decoration: none; text-align: center; line-height: 1.3; border-radius: 2px; border: 1px solid var(--marinho); cursor: pointer; transition: background .15s, color .15s; }
.btn-cheio { background: var(--marinho); color: var(--branco); }
.btn-cheio:hover { background: var(--marinho-2); }
.btn-linha { background: var(--branco); color: var(--marinho); }
.btn-linha:hover { background: #f4f6fa; }
.btn-ouro { background: transparent; color: var(--ouro); border-color: var(--ouro); }
.btn-ouro:hover { background: var(--ouro); color: var(--branco); }
.btn-suave { background: #f4f6fa; color: var(--marinho); border-color: var(--linha); }
.btn-texto { background: none; border: none; color: var(--marinho); text-decoration: underline; text-underline-offset: 4px; min-height: 44px; padding: 8px 10px; letter-spacing: 0; text-transform: none; font-size: .9rem; }
.btn-largo { width: 100%; }
.btn[disabled] { opacity: .55; cursor: progress; }
.btn-mini { font: inherit; font-size: .8rem; color: var(--marinho); background: #f4f6fa; border: 1px solid var(--linha); border-radius: 3px; padding: 3px 10px; cursor: pointer; }

/* ---------- Topo: menu dividido pelo monograma ---------- */
body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-area-inset-top, 0px); background: var(--branco); z-index: 41; }
.topo { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 40; background: rgba(255, 255, 255, .95); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border-bottom: 1px solid transparent; transition: border-color .2s; }
.topo.rolou { border-bottom-color: var(--linha); }
.topo-in { max-width: 1180px; margin: 0 auto; height: var(--topo-h); display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
.topo-marca { grid-column: 2; display: grid; place-items: center; text-decoration: none; }
.mono { width: 40px; height: 46px; color: var(--ouro); }
.topo-nav { display: none; gap: 26px; }
.topo-nav-esq { justify-content: flex-end; grid-column: 1; grid-row: 1; }
.topo-nav-dir { justify-content: flex-start; grid-column: 3; grid-row: 1; }
.topo-nav a { text-decoration: none; font-size: .66rem; letter-spacing: var(--caixa); text-transform: uppercase; padding: 6px 0; border-bottom: 1px solid transparent; white-space: nowrap; }
.topo-nav a:hover, .topo-nav a.atual { border-bottom-color: var(--ouro); }
.topo-menu { grid-column: 3; grid-row: 1; justify-self: end; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 14px; background: var(--branco); color: var(--marinho); border: 1px solid var(--marinho); border-radius: 2px; font-size: .7rem; letter-spacing: var(--caixa); text-transform: uppercase; cursor: pointer; }
.hamb { display: inline-grid; gap: 4px; width: 16px; }
.hamb i { display: block; height: 1.5px; background: currentColor; transition: transform .2s, opacity .2s; }
.topo-menu[aria-expanded="true"] .hamb i:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
.topo-menu[aria-expanded="true"] .hamb i:nth-child(2) { opacity: 0; }
.topo-menu[aria-expanded="true"] .hamb i:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }
.gaveta { position: fixed; z-index: 39; left: 0; right: 0; top: calc(env(safe-area-inset-top, 0px) + var(--topo-h)); bottom: 0; background: var(--branco); overflow-y: auto; padding: 8px max(16px, env(safe-area-inset-right, 0px)) calc(24px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px)); }
.gaveta nav { display: grid; max-width: 520px; margin: 0 auto; }
.gaveta a { display: flex; flex-direction: column; text-decoration: none; padding: 18px 4px; border-bottom: 1px solid var(--linha); font-size: .9rem; letter-spacing: var(--caixa); text-transform: uppercase; }
.gaveta a small { font-size: .8rem; font-style: italic; color: var(--suave); text-transform: none; letter-spacing: 0; }
@media (min-width: 1040px) { .topo-nav { display: flex; } .topo-menu { display: none; } .gaveta { display: none !important; } }

/* ---------- Folhas de papel ---------- */
main { padding: 0 0 8px; }
.folha { position: relative; background: var(--branco); max-width: 1240px; margin: 0 auto 26px; padding-block: clamp(56px, 8vw, 92px) clamp(56px, 8vw, 88px); box-shadow: 0 1px 2px rgba(60, 50, 30, .05), 0 12px 30px -18px rgba(60, 50, 30, .25); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.folha-programa { padding-block: clamp(44px, 6vw, 64px); }
.sec-in { position: relative; z-index: 2; max-width: 1040px; margin: 0 auto; padding-left: max(20px, env(safe-area-inset-left, 0px)); padding-right: max(20px, env(safe-area-inset-right, 0px)); }
.sec-estreita { max-width: 640px; }
.sec-cab { text-align: center; margin-bottom: clamp(30px, 5vw, 48px); }
.titulo { font-size: clamp(1rem, 2.6vw, 1.2rem); letter-spacing: .2em; text-transform: uppercase; padding-left: .2em; line-height: 1.5; }
.orn-titulo { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 8px 0 0; color: var(--ouro); }
.orn-titulo i { width: 5px; height: 5px; border-radius: 50%; background: var(--ouro); }
.orn { width: 52px; height: 11px; color: var(--ouro); }
.orn-d { transform: scaleX(-1); }
.sec-sub { max-width: 56ch; margin: 14px auto 0; color: var(--suave); font-style: italic; font-size: .95rem; }

/* Flores nas bordas das folhas */
.flor { position: absolute; pointer-events: none; user-select: none; z-index: 3; }
.flor-lado-esq { left: 0; top: 18px; width: clamp(90px, 14vw, 190px); transform: translateX(-38%); }
.flor-lado-dir { right: 0; top: 30px; width: clamp(100px, 15vw, 210px); transform: translateX(38%); }
@media (max-width: 700px) { .flor-lado-esq, .flor-lado-dir { width: 92px; top: 8px; } .flor-lado-esq { transform: translateX(-46%); } .flor-lado-dir { transform: translateX(46%); } }

/* ---------- Ilustrações e espaços reservados ---------- */
.ilus { position: relative; margin: 0; aspect-ratio: var(--ar); max-width: 100%; }
.ilus img { width: 100%; height: 100%; object-fit: cover; }
.ilus.vazia { background: radial-gradient(ellipse at 30% 30%, rgba(247, 232, 154, .45), transparent 60%), radial-gradient(ellipse at 75% 70%, rgba(235, 90, 156, .14), transparent 55%), radial-gradient(ellipse at 60% 20%, rgba(83, 152, 50, .12), transparent 50%), #fbfaf6; border: 1px dashed var(--ouro-claro); border-radius: 46% 54% 48% 52% / 6% 8% 6% 8%; }
.ilus.vazia::after { content: attr(data-ph); position: absolute; inset: 0; display: grid; place-items: center; padding: 12px; text-align: center; font-size: .72rem; letter-spacing: .08em; color: var(--ouro); font-style: italic; }

/* ---------- Abertura ---------- */
.abertura { padding-block: clamp(32px, 6vw, 64px) clamp(40px, 6vw, 72px); overflow: hidden; }
.abertura-in { position: relative; z-index: 2; max-width: 1180px; margin: 0 auto; padding-left: max(20px, env(safe-area-inset-left, 0px)); padding-right: max(20px, env(safe-area-inset-right, 0px)); display: grid; gap: 28px; align-items: center; }
@media (min-width: 900px) { .abertura-in { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px; padding-right: 0; } }
.abertura-texto { text-align: center; display: flex; flex-direction: column; align-items: center; padding-top: clamp(8px, 4vw, 40px); }
.sobretitulo { font-size: .78rem; letter-spacing: .3em; text-transform: uppercase; margin: 0 0 22px; padding-left: .3em; }
.nomes { margin: 0; line-height: 0; width: min(100%, 420px); }
.nomes img { width: 100%; }
.data-linha { display: flex; align-items: center; gap: 14px; margin: 26px 0 6px; }
.data-linha span { font-size: clamp(1.25rem, 3.4vw, 1.6rem); letter-spacing: .14em; padding-left: .14em; }
.local-curto { font-size: .7rem; letter-spacing: .26em; text-transform: uppercase; color: var(--suave); padding-left: .26em; }
.contagem { display: flex; gap: clamp(14px, 3vw, 26px); justify-content: center; margin: 22px 0 28px; }
.contagem div { display: flex; flex-direction: column; align-items: center; min-width: 44px; }
.contagem b { font-weight: 400; font-size: 1.35rem; font-variant-numeric: tabular-nums; line-height: 1.2; }
.contagem span { font-size: .58rem; letter-spacing: var(--caixa); text-transform: uppercase; color: var(--suave); }
.abertura-cena { position: relative; }
.ilus-hero { border-radius: 0; }
.ilus-hero img { object-fit: contain; }
.flor-hero { right: -4%; bottom: -14%; width: clamp(150px, 30%, 330px); }
.flor-topo-esq { left: 0; top: 0; width: clamp(110px, 14vw, 200px); transform: translate(-30%, -26%); z-index: 1; }
@media (max-width: 899px) { .abertura-cena { margin: 0 -20px; } .flor-hero { right: -6%; bottom: -18%; width: 40%; } }

/* ---------- Programa do dia ---------- */
.programa { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 12px; }
@media (min-width: 760px) { .programa { display: flex; justify-content: center; gap: 0; } }
.programa li { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; flex: 1 1 0; max-width: 220px; margin: 0 auto; }
.icone { display: inline-grid; place-items: center; width: 34px; height: 34px; flex: none; }
.icone img { width: 100%; height: 100%; object-fit: contain; }
.icone.vazio { border: 1px dashed var(--ouro-claro); border-radius: 50%; background: #fbfaf6; position: relative; }
.icone.vazio::after { content: attr(data-ph); font-size: 6.5px; line-height: 1.1; color: var(--ouro); font-style: italic; text-align: center; padding: 2px; word-break: break-all; }
.icone-prog { width: 92px; height: 92px; margin-bottom: 14px; }
@media (min-width: 760px) { .icone-prog { width: 112px; height: 112px; } }
.icone-prog.vazio::after { font-size: 8px; }
@media (min-width: 760px) {
  .programa li:not(:last-child)::after { content: ""; position: absolute; top: 56px; left: calc(50% + 70px); right: calc(-50% + 70px); border-top: 1px solid var(--ouro-claro); }
  .programa li:not(:last-child)::before { content: ""; position: absolute; top: 53px; left: 100%; width: 7px; height: 7px; margin-left: -3.5px; border-radius: 50%; background: var(--ouro); z-index: 1; }
}
.p-hora { font-size: 1.15rem; letter-spacing: .06em; }
.p-tit { font-weight: 700; font-size: .64rem; letter-spacing: var(--caixa); text-transform: uppercase; margin-top: 2px; }
.p-txt { font-size: .8rem; font-style: italic; color: var(--suave); margin-top: 6px; line-height: 1.5; max-width: 22ch; }

/* ---------- Local e hospedagem ---------- */
.local-grade { display: grid; gap: 40px; align-items: center; max-width: 1120px; }
@media (min-width: 900px) { .local-grade { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr) minmax(0, 1fr); gap: 36px; } .local-2 { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 56px; max-width: 900px; } }
.local-col { text-align: center; }
.local-col .titulo { font-size: .95rem; }
.local-nome { font-weight: 700; font-size: .95rem; letter-spacing: var(--caixa); text-transform: uppercase; margin: 22px 0 6px; }
.local-end { font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--suave); line-height: 1.8; }
.local-nota { font-size: .86rem; font-style: italic; color: var(--suave); margin: 12px auto; max-width: 30ch; }
.links-sub { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.links-sub a, .links-sub button { background: none; border: 0; padding: 8px 4px; min-height: 40px; font-size: .68rem; font-weight: 700; letter-spacing: var(--caixa); text-transform: uppercase; color: var(--ouro-texto); text-decoration: underline; text-decoration-color: var(--ouro-claro); text-underline-offset: 5px; cursor: pointer; }
.agenda-opcoes { display: grid; gap: 8px; max-width: 240px; margin: 8px auto 0; }
.ilus-local.vazia { border-radius: 40% 60% 55% 45% / 45% 40% 60% 55%; }
.icones-linha { list-style: none; margin: 22px 0 8px; padding: 0; display: flex; justify-content: center; gap: 22px; }
.icones-linha li { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 78px; }
.icones-linha .icone { width: 36px; height: 36px; }
.icones-linha span { font-size: .6rem; letter-spacing: .1em; text-transform: uppercase; line-height: 1.5; color: var(--suave); }
.ic { width: 30px; height: 30px; fill: none; stroke: var(--marinho); stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.aviso { background: #fbf6e6; padding: 14px 18px; margin-bottom: 24px; text-align: center; font-style: italic; }
.como-chegar { list-style: none; padding: 0; margin: 0 auto 44px; display: grid; gap: 22px; max-width: 860px; }
@media (min-width: 700px) { .como-chegar { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.como-chegar li { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; }
.como-chegar .icone { width: 104px; height: 104px; margin-bottom: 6px; }
.como-chegar b { font-weight: 700; font-size: .7rem; letter-spacing: var(--caixa); text-transform: uppercase; }
.como-chegar span { font-size: .84rem; font-style: italic; color: var(--suave); max-width: 24ch; line-height: 1.5; }
.faixas { display: grid; gap: 22px; margin-bottom: 18px; }
@media (min-width: 860px) { .faixas { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; } }
.faixa { border: 1px solid var(--linha); padding: 0 22px 18px; text-align: center; }
.faixa-topo { background: #f6f4f0; margin: 0 -22px 4px; padding: 22px 16px 16px; }
.faixa-topo .faixa-nome { margin-bottom: 0; }
.faixa-preco { font-size: 1.3rem; letter-spacing: .2em; color: var(--ouro); margin: 0; padding-left: .2em; }
.faixa-nome { font-size: .82rem; font-weight: 700; letter-spacing: var(--caixa); text-transform: uppercase; margin: 6px 0 18px; }
.faixa-desc { font-size: .84rem; font-style: italic; color: var(--suave); margin: 4px 0 8px; }
.ico { flex: none; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--c) 14%, white); color: var(--c); }
.ico svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.hotel { border-top: 1px solid var(--linha); padding: 16px 0 8px; display: grid; gap: 3px; }
.hotel-nome { font-size: .74rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--marinho); }
.hotel-end { font-size: .82rem; color: var(--suave); }
.hotel-tempo { font-size: .8rem; font-style: italic; color: var(--suave); }
.hotel a { justify-self: center; font-size: .64rem; font-weight: 700; letter-spacing: var(--caixa); text-transform: uppercase; color: var(--ouro-texto); text-decoration-color: var(--ouro-claro); text-underline-offset: 5px; min-height: 36px; display: inline-flex; align-items: center; }

/* ---------- Traje ---------- */
.traje-tipo { margin: 14px 0 0; font-style: italic; color: var(--ouro); font-size: 1.05rem; }
.traje-grade { display: grid; gap: 28px 18px; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; }
.traje-centro { grid-column: 1 / -1; order: 3; text-align: center; }
@media (min-width: 860px) { .traje-grade { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1fr); gap: 36px; } .traje-centro { grid-column: auto; order: 0; } }
.traje-fig { margin: 0; text-align: center; }
.ilus-traje { max-width: 260px; margin: 0 auto; }
.ilus-traje img { object-fit: contain; }
.ilus-traje.vazia { border-radius: 50% 50% 46% 54% / 30% 30% 12% 12%; }
.traje-fig figcaption { margin-top: 14px; font-size: .9rem; line-height: 1.6; }
.traje-fig figcaption b { display: block; font-weight: 400; font-size: .66rem; letter-spacing: .24em; text-transform: uppercase; color: var(--ouro); margin-bottom: 4px; }
.traje-fig figcaption i { display: block; font-size: .8rem; color: var(--suave); }
.traje-frase { font-style: italic; font-size: 1rem; line-height: 1.8; max-width: 34ch; margin: 0 auto 24px; }
.traje-dicas { list-style: none; padding: 0; margin: 0 auto; display: grid; gap: 14px; max-width: 340px; text-align: left; }
.traje-dicas li { display: flex; align-items: center; gap: 14px; font-size: .82rem; color: var(--suave); line-height: 1.5; }
.traje-dicas .icone { width: 76px; height: 76px; }

/* ---------- Nossa história ---------- */
.galeria { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; }
.foto-btn { flex: 0 1 calc(50% - 7px); background: none; border: 0; padding: 0; cursor: zoom-in; }
@media (min-width: 640px) { .foto-btn { flex-basis: calc(33.333% - 10px); } }
@media (min-width: 960px) { .foto-btn { flex-basis: calc(20% - 12px); } }
@media (min-width: 640px) and (max-width: 959px) { .foto-btn { flex-basis: calc(20% - 12px); } }
.ilus-foto { padding: 7px; background: var(--branco); border: 1px solid var(--linha); box-shadow: 0 4px 14px -8px rgba(60, 50, 30, .35); }
.ilus-foto img { width: 100%; height: 100%; object-fit: cover; }
.ilus-foto.vazia { border-radius: 0; border-style: dashed; }

/* ---------- Formulários ---------- */
.cartao { background: var(--branco); }
.passo { display: grid; gap: 12px; }
.rotulo-campo { font-size: .7rem; letter-spacing: var(--caixa); text-transform: uppercase; display: block; margin-top: 10px; }
.ajuda { font-size: .86rem; color: var(--suave); font-style: italic; margin: 0; }
input[type="text"], input[type="tel"], input[type="number"], textarea, select { width: 100%; min-height: 52px; padding: 12px 2px; font: inherit; font-size: 1.02rem; color: var(--marinho); background: transparent; border: 0; border-bottom: 1px solid #b9c2d0; border-radius: 0; }
textarea { resize: vertical; min-height: 110px; line-height: 1.6; border: 1px solid #b9c2d0; padding: 12px; }
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--ouro); box-shadow: 0 1px 0 var(--ouro); }
select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--marinho) 50%), linear-gradient(135deg, var(--marinho) 50%, transparent 50%); background-position: calc(100% - 14px) 50%, calc(100% - 9px) 50%; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 32px; }
.hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.msg { margin: 0; min-height: 1.2em; font-size: .9rem; }
.msg.erro { color: var(--erro); }
.msg.ok { color: var(--ok); }
.contador { text-align: right; }
.escolha-vai { display: grid; gap: 10px; grid-template-columns: 1fr 1fr; }
@media (max-width: 420px) { .escolha-vai { grid-template-columns: 1fr; } }
.pessoas { display: grid; gap: 14px; }
.pessoa { border: 1px solid var(--linha); padding: 16px 18px; display: grid; gap: 8px; }
.pessoa-detalhes { display: grid; gap: 10px; }
@media (min-width: 560px) { .pessoa-detalhes { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .pessoa-detalhes .largo { grid-column: 1 / -1; } }
.pessoa-detalhes label { font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; display: grid; gap: 2px; }
.remover { justify-self: start; }
.passo-ok { text-align: center; justify-items: center; }
.mono-ok { width: 46px; height: 54px; color: var(--ouro); }
.ok-titulo { font-size: 1rem; letter-spacing: var(--caixa); text-transform: uppercase; margin: 0; }
.ok-lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 2px; font-style: italic; }
.botoes-col { display: grid; gap: 10px; margin-top: 12px; }
.contato { text-align: center; margin-top: 22px; font-size: .88rem; font-style: italic; }

/* ---------- Presentes ---------- */
.ilus-presentes { margin: 0 auto; max-width: 780px; }
.ilus-presentes.vazia { border-radius: 50% 50% 48% 52% / 22% 20% 24% 22%; }
.presentes-sub { text-align: center; margin-top: 24px; }
.filtros { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 26px 0 30px; }
.chip { min-height: 42px; padding: 8px 16px; border: 1px solid var(--linha); background: var(--branco); color: var(--marinho); font: inherit; font-size: .64rem; letter-spacing: var(--caixa); text-transform: uppercase; cursor: pointer; border-radius: 999px; }
.chip.ativo { border-color: var(--ouro); color: var(--ouro); }
.presentes-grade { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); }
.presente { display: flex; flex-direction: column; border: 1px solid var(--linha); background: var(--branco); }
.presente-foto { position: relative; aspect-ratio: 16 / 10; background: #fbf8f1; display: grid; place-items: center; overflow: hidden; }
.presente-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
.presente-mono { width: 40px; height: 46px; color: var(--ouro-claro); }
.presente-corpo { display: flex; flex-direction: column; gap: 6px; padding: 16px 16px 18px; flex: 1; }
.presente h3 { font-weight: 700; font-size: .72rem; line-height: 1.6; letter-spacing: .1em; text-transform: uppercase; }
.presente p { font-size: .84rem; color: var(--suave); font-style: italic; margin: 0; flex: 1; line-height: 1.55; }
.presente-rodape { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.presente-valor { font-size: 1rem; color: var(--ouro); font-variant-numeric: tabular-nums; }
.presente .btn { min-height: 42px; padding: 8px 14px; font-size: .62rem; }
.presente-livre { background: #fbfaf6; }

/* ---------- Recados ---------- */
.recados-grade { display: grid; gap: 30px; align-items: start; }
@media (min-width: 900px) { .recados-grade { grid-template-columns: minmax(0, 360px) minmax(0, 1fr); } }
.recado-form { display: grid; gap: 8px; }
.mural { columns: 1; column-gap: 16px; }
@media (min-width: 600px) { .mural { columns: 2; } }
.mural.vazio { columns: 1; }
.recado { break-inside: avoid; border: 1px solid var(--linha); padding: 20px 20px 16px; margin-bottom: 16px; }
.recado-texto { font-style: italic; font-size: .95rem; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; margin-bottom: 10px; }
.recado-autor { font-size: .66rem; letter-spacing: var(--caixa); text-transform: uppercase; margin: 0; }
.recado-data { font-size: .76rem; color: var(--suave); margin: 0; }
.recado.exemplo { opacity: .8; }
.mural-vazio { column-span: all; color: var(--suave); font-style: italic; text-align: center; padding: 24px; border: 1px dashed var(--linha); }

/* ---------- Rodapé ---------- */
.rodape { text-align: center; padding: 44px 0 0; overflow: hidden; }
.rodape > * { margin-left: max(20px, env(safe-area-inset-left, 0px)); margin-right: max(20px, env(safe-area-inset-right, 0px)); }
.rodape-frase { font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; margin-top: 0; margin-bottom: 18px; }
.mono-rodape { width: 96px; height: 110px; margin: 6px 0; }
.rodape-data { font-size: .72rem; letter-spacing: .2em; color: var(--suave); margin-top: 8px; }
/* Faixa de flores que preenche a base; os caules são cortados pela borda inferior */
.rodape > .rodape-jardim { margin: 18px 0 0; height: clamp(110px, 15vw, 190px); background: url("assets/flores-3.webp") repeat-x center top / auto 150%; }
@media (max-width: 1039px) { .rodape > .rodape-jardim { margin-bottom: 0; } .rodape { padding-bottom: 0; } }

/* ---------- Botão fixo (celular) ---------- */
.cta-fixo { position: fixed; z-index: 30; left: max(16px, env(safe-area-inset-left, 0px)); right: max(16px, env(safe-area-inset-right, 0px)); bottom: calc(14px + env(safe-area-inset-bottom, 0px)); min-height: 54px; display: flex; align-items: center; justify-content: center; background: var(--marinho); color: var(--branco); text-decoration: none; font-size: .74rem; letter-spacing: var(--caixa); text-transform: uppercase; box-shadow: 0 8px 24px rgba(20, 54, 92, .3); transition: transform .25s, opacity .25s; }
.cta-fixo.escondido { transform: translateY(140%); opacity: 0; pointer-events: none; }
@media (min-width: 1040px) { .cta-fixo { display: none; } }

/* ---------- Modal Pix e lightbox ---------- */
.modal { position: fixed; inset: 0; z-index: 60; display: grid; place-items: end center; }
@media (min-width: 640px) { .modal { place-items: center; } }
.modal-fundo { position: absolute; inset: 0; background: rgba(20, 54, 92, .5); }
.modal-caixa { position: relative; width: min(100%, 500px); max-height: 92vh; overflow-y: auto; background: var(--branco); padding: 30px max(20px, env(safe-area-inset-right, 0px)) calc(28px + env(safe-area-inset-bottom, 0px)) max(20px, env(safe-area-inset-left, 0px)); }
@media (min-width: 640px) { .modal-caixa { padding: 34px; } }
.modal-caixa form, #pixPasso2 { display: grid; gap: 10px; }
.modal-x { position: absolute; top: 8px; right: 8px; width: 46px; height: 46px; border: 0; background: transparent; color: var(--marinho); font-size: 1.8rem; line-height: 1; cursor: pointer; }
.pix-titulo { font-size: .86rem; line-height: 1.6; letter-spacing: var(--caixa); text-transform: uppercase; padding-right: 44px; margin-bottom: 4px; }
.pix-valor { font-size: 1.15rem; color: var(--ouro); margin: 0 0 8px; }
.pix-passos { margin: 0; padding-left: 1.2em; display: grid; gap: 4px; font-size: .92rem; }
.pix-codigo { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .76rem; min-height: 0; word-break: break-all; background: #f7f7f5; }
.pix-qr-box { display: grid; gap: 8px; justify-items: center; text-align: center; padding: 8px 0; }
.pix-qr { width: 210px; max-width: 100%; }
.pix-qr svg, .pix-qr img { width: 100%; height: auto; display: block; }
@media (pointer: coarse) and (max-width: 640px) { .pix-qr-box { display: none; } }
.lightbox { position: fixed; inset: 0; z-index: 70; background: rgba(20, 30, 45, .9); display: grid; place-items: center; padding: max(16px, env(safe-area-inset-top, 0px)) max(16px, env(safe-area-inset-right, 0px)) max(16px, env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px)); }
.lightbox img { max-width: 100%; max-height: 88vh; width: auto; border: 8px solid #fff; }
.lightbox .modal-x { color: #fff; top: max(12px, env(safe-area-inset-top, 0px)); right: max(12px, env(safe-area-inset-right, 0px)); }
.aviso-demo { position: fixed; z-index: 50; top: calc(env(safe-area-inset-top, 0px) + var(--topo-h) + 8px); left: 50%; transform: translateX(-50%); background: #fbf6e6; color: var(--marinho); font-size: .78rem; padding: 6px 14px; border-radius: 999px; box-shadow: 0 2px 8px rgba(0, 0, 0, .1); white-space: nowrap; }
body.travado { overflow: hidden; }
@media (max-width: 1260px) { .folha { margin-bottom: 18px; } }

/* Dourado de hot stamp: degradê metálico nos textos dourados */
.faixa-preco, .traje-tipo, .traje-fig figcaption b, .presente-valor {
  background: linear-gradient(110deg, #94723a 0%, #d6bb7b 28%, #a7843f 50%, #e3cf97 72%, #94723a 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* Ornamentos: linhas finas douradas com folhas e uma flor */
.divisor { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 12px auto 0; max-width: 300px; }
.divisor span { flex: 1; height: 1px; background: linear-gradient(to right, transparent, #c9ad74); }
.divisor span:last-child { background: linear-gradient(to left, transparent, #c9ad74); }
.divisor svg { width: 64px; height: 24px; flex: none; }
.ramo-data { display: inline-flex; align-items: center; width: clamp(70px, 11vw, 104px); }
.ramo-data::before { content: ""; flex: 1; height: 1px; background: linear-gradient(to right, transparent, #c9ad74); }
.ramo-data svg { width: 54px; height: 18px; flex: none; }
.ramo-esq { transform: scaleX(-1); }

/* Arranjos nos cantos dos painéis brancos, cortados rente ao painel */
.cantos { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 1; }
.canto { position: absolute; width: clamp(170px, 19vw, 280px); height: auto; user-select: none; }
.canto-te { top: 0; left: 0; transform: translate(-16%, -18%); }
.canto-td { top: 0; right: 0; transform: translate(16%, -18%); }
.canto-bd { bottom: 0; right: 0; transform: translate(16%, 18%); }
.folha > .wrap, .folha > .sec-cab, .folha > div:not(.cantos) { position: relative; z-index: 2; }
@media (max-width: 700px) { .canto { width: 130px; } .canto-te { transform: translate(-26%, -26%); } .canto-td { transform: translate(26%, -26%); } .canto-bd { transform: translate(26%, 26%); } }

/* ================= Ajustes do celular ================= */
@media (max-width: 1039px) {
  .topo-menu { border: 0; background: none; padding: 10px; min-width: 44px; justify-content: center; }
}
@media (max-width: 759px) {
  /* Respiro padrão nas laterais */
  .sec-in { padding-left: max(40px, env(safe-area-inset-left, 0px)); padding-right: max(40px, env(safe-area-inset-right, 0px)); }

  /* Horários: linha do tempo com rolagem lateral */
  .folha-programa .sec-in { padding-left: 0; padding-right: 0; }
  .programa { display: flex; gap: 0; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px 40px 10px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .programa::-webkit-scrollbar { display: none; }
  .programa li { flex: 0 0 220px; max-width: none; margin: 0; scroll-snap-align: center; }
  .icone-prog { width: 76px; height: 76px; margin-bottom: 10px; }
  .programa li:not(:last-child)::after { content: ""; position: absolute; top: 38px; left: calc(50% + 46px); right: calc(-50% + 46px); border-top: 1px solid var(--ouro-claro); }
  .programa li:not(:last-child)::before { content: ""; position: absolute; top: 35px; left: 100%; width: 7px; height: 7px; margin-left: -3.5px; border-radius: 50%; background: var(--ouro); z-index: 1; }
  .p-txt { font-size: .74rem; max-width: 20ch; }

  /* Hospedagem */
  .como-chegar { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 32px; }
  .como-chegar .icone { width: 64px; height: 64px; margin-bottom: 2px; }
  .como-chegar b { font-size: .56rem; letter-spacing: .12em; }
  .como-chegar span { font-size: .7rem; line-height: 1.4; }
  .faixa { padding: 0 16px 12px; }
  .faixa-topo { margin: 0 -16px 4px; padding: 16px 12px 12px; }
  .faixa-preco { font-size: 1.1rem; }
  .faixa-nome { font-size: .7rem; margin-bottom: 12px; }
  .hotel { padding: 12px 0 4px; }
  .hotel-nome { font-size: .64rem; }
  .hotel-end { font-size: .74rem; }
  .hotel-tempo { font-size: .72rem; }
  .hotel a { font-size: .58rem; min-height: 32px; }

  /* Presentes em duas colunas */
  .presentes-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .presente-corpo { padding: 12px 11px 12px; gap: 4px; }
  .presente h3 { font-size: .58rem; letter-spacing: .08em; line-height: 1.5; }
  .presente p { font-size: .7rem; line-height: 1.45; }
  .presente-rodape { flex-direction: column; align-items: stretch; gap: 8px; margin-top: 8px; }
  .presente-valor { font-size: .86rem; text-align: center; }
  .presente .btn { min-height: 36px; padding: 6px 8px; font-size: .56rem; width: 100%; }
  .presente-mono { width: 30px; height: 34px; }

  /* Recados em duas colunas */
  .mural { columns: 2; column-gap: 10px; }
  .recado { padding: 14px 12px 10px; margin-bottom: 10px; }
  .recado-texto { font-size: .78rem; line-height: 1.55; }
  .recado-autor { font-size: .56rem; }
  .recado-data { font-size: .66rem; }
}

/* Menu aberto: barra superior fixa e fundo travado */
body.travado .topo { position: fixed; left: 0; right: 0; top: 0; padding-top: env(safe-area-inset-top, 0px); }
body.travado main { padding-top: var(--topo-h); }
html:has(body.travado) { overflow: hidden; }
.gaveta { top: calc(env(safe-area-inset-top, 0px) + var(--topo-h)); overscroll-behavior: contain; }
@media (max-width: 759px) {
  .nomes { width: 76%; }
  .local-grade { gap: 6px; }
  .local-2 .links-sub { margin-bottom: 0; }
}
