/* =====================================================================
   Sagaro Convites — folha de estilo do convite
   ---------------------------------------------------------------------
   A estrutura (molduras, divisores, botões e cartões) é desenhada aqui.
   O tema fornece tokens e, quando disponível, uma cantoneira própria.
   As texturas são sempre geradas em CSS para não criar emendas ou blocos.

   Mobile-first: o layout base é o do celular; telas maiores recebem
   ajustes nas media queries ao final.
   ===================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto; }

body {
  margin: 0;
  min-height: 0;
  font-family: var(--font-body, system-ui, sans-serif);
  font-weight: var(--body-weight, 400);
  font-size: var(--body-size, clamp(1rem, 0.97rem + 0.2vw, 1.075rem));
  line-height: var(--body-line-height, 1.75);
  letter-spacing: var(--body-tracking, 0em);
  color: var(--c-ink);
  background-color: var(--c-bg);
  background-image:
    radial-gradient(120% 80% at 50% 0%,
      color-mix(in srgb, var(--c-surface) 55%, transparent) 0%, transparent 60%),
    linear-gradient(var(--bg-gradient-angle, 180deg), var(--c-bg) 0%,
      color-mix(in srgb, var(--c-bg-deep) var(--bg-gradient-strength, 100%), var(--c-bg)) 100%);
  background-attachment: var(--bg-attachment, fixed);
  overflow-x:hidden;
  overscroll-behavior-y:auto;
  overflow-y:auto;
  display:block;
  width:100%;
}

/* Base visual do fundo. `gradient` é o contrato legado. */
body.fundo-base-solid { background-image: none; }
body.fundo-base-gradient {
  background-image:
    radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--c-surface) 55%, transparent) 0%, transparent 60%),
    linear-gradient(var(--bg-gradient-angle, 180deg), var(--c-bg) 0%, color-mix(in srgb, var(--c-bg-deep) var(--bg-gradient-strength, 100%), var(--c-bg)) 100%);
}
body.fundo-base-image:not(.tema-com-fundo-imagem) {
  background-image:
    radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--c-surface) 55%, transparent) 0%, transparent 60%),
    linear-gradient(var(--bg-gradient-angle, 180deg), var(--c-bg) 0%, color-mix(in srgb, var(--c-bg-deep) var(--bg-gradient-strength, 100%), var(--c-bg)) 100%);
}
body.fundo-base-image.tema-com-fundo-imagem {
  background-image:
    linear-gradient(color-mix(in srgb, var(--c-bg) var(--bg-image-wash, 18%), transparent), color-mix(in srgb, var(--c-bg) var(--bg-image-wash, 18%), transparent)),
    var(--theme-background-image);
  background-size: auto, var(--bg-image-size, cover);
  background-position: center, center var(--bg-image-position, center);
  background-repeat: no-repeat, no-repeat;
}
body.fundo-base-image.tema-com-fundo-imagem.fundo-imagem-tile {
  background-size: auto, var(--bg-image-size, 720px);
  background-position: center, left top;
  background-repeat: no-repeat, repeat;
}

img { max-width: 100%; height: auto; display: block; }
a { color:var(--c-primary);text-decoration:none; }
a,button,input,select,textarea,label { touch-action:manipulation; }
a:hover { text-decoration: underline; }

/* ---------------------------------------------------------------------
   Textura do fundo — gerada, não carregada
   ------------------------------------------------------------------ */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--texture-opacity, 0.2);
  background-repeat: repeat;
}
.textura-nenhuma::before { display: none; }

/* Vinheta independente da textura; 0 preserva todos os temas históricos. */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--bg-vignette-opacity, 0);
  background: radial-gradient(ellipse at center, transparent 48%, color-mix(in srgb, var(--c-ink) 42%, transparent) 100%);
}

.textura-linho::before {
  background-image:
    repeating-linear-gradient(0deg, color-mix(in srgb, var(--c-ink) 22%, transparent) 0 1px, transparent 1px 5px),
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--c-ink) 16%, transparent) 0 1px, transparent 1px 6px);
  background-size: 6px 6px, 7px 7px;
}
.textura-papel::before {
  background-image:
    radial-gradient(circle, color-mix(in srgb, var(--c-ink) 25%, transparent) 0 .55px, transparent .75px),
    radial-gradient(circle, color-mix(in srgb, var(--c-metal) 24%, transparent) 0 .45px, transparent .7px);
  background-size: 11px 13px, 17px 19px;
  background-position: 0 0, 5px 7px;
}
.textura-algodao::before {
  background-image:
    repeating-linear-gradient(32deg, color-mix(in srgb, var(--c-ink) 14%, transparent) 0 1px, transparent 1px 7px),
    repeating-linear-gradient(122deg, color-mix(in srgb, var(--c-surface) 60%, transparent) 0 2px, transparent 2px 9px);
  background-size: 9px 9px, 13px 13px;
}
.textura-aquarela::before {
  background-image:
    radial-gradient(ellipse at 18% 22%, color-mix(in srgb, var(--c-primary) 16%, transparent) 0 14%, transparent 42%),
    radial-gradient(ellipse at 78% 68%, color-mix(in srgb, var(--c-secondary, var(--c-primary)) 14%, transparent) 0 12%, transparent 40%),
    radial-gradient(ellipse at 46% 92%, color-mix(in srgb, var(--c-metal) 10%, transparent) 0 10%, transparent 36%);
  background-size: 260px 230px, 310px 270px, 290px 250px;
  background-position: 0 0, 95px 42px, 28px 110px;
}
.textura-moire::before {
  background-image:
    repeating-radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--c-metal) 45%, transparent) 0 1px, transparent 1px 9px),
    repeating-radial-gradient(circle at 75% 80%, color-mix(in srgb, var(--c-metal) 35%, transparent) 0 1px, transparent 1px 11px);
}
.textura-seda::before {
  background-image:
    repeating-linear-gradient(88deg, color-mix(in srgb, var(--c-surface) 58%, transparent) 0 1px, transparent 1px 5px),
    linear-gradient(105deg, transparent 0 35%, color-mix(in srgb, var(--c-metal) 14%, transparent) 48%, transparent 62% 100%);
  background-size: 6px 100%, 90px 100%;
}
.textura-perolado::before {
  background-image:
    radial-gradient(circle, color-mix(in srgb, #fff 78%, transparent) 0 1.4px, transparent 2px),
    radial-gradient(circle, color-mix(in srgb, var(--c-metal) 24%, transparent) 0 .7px, transparent 1.4px);
  background-size: 18px 18px, 29px 29px;
  background-position: 0 0, 8px 11px;
}
.textura-pontilhado::before {
  background-image: radial-gradient(circle, color-mix(in srgb, var(--c-ink) 34%, transparent) 0 .7px, transparent .9px);
  background-size: 8px 8px;
}
.textura-granulado::before {
  background-image:
    radial-gradient(circle, color-mix(in srgb, var(--c-ink) 22%, transparent) 0 .45px, transparent .7px),
    radial-gradient(circle, color-mix(in srgb, var(--c-primary) 18%, transparent) 0 .5px, transparent .75px),
    radial-gradient(circle, color-mix(in srgb, var(--c-metal) 18%, transparent) 0 .4px, transparent .7px);
  background-size: 7px 9px, 11px 13px, 17px 15px;
  background-position: 0 0, 3px 5px, 8px 2px;
}
.textura-ceu-papel::before {
  background-image:
    radial-gradient(circle, color-mix(in srgb, var(--c-metal) 60%, transparent) 0 .8px, transparent 1px),
    radial-gradient(circle, color-mix(in srgb, var(--c-surface) 58%, transparent) 0 .6px, transparent .9px);
  background-size: 23px 27px, 37px 41px;
  background-position: 0 0, 11px 17px;
}
.textura-arabesco::before {
  background-image:
    radial-gradient(ellipse at 100% 0%, transparent 0 62%, color-mix(in srgb, var(--c-metal) 34%, transparent) 63% 64%, transparent 65%),
    radial-gradient(ellipse at 0 100%, transparent 0 62%, color-mix(in srgb, var(--c-metal) 24%, transparent) 63% 64%, transparent 65%);
  background-size: 48px 48px;
}

/* ---------------------------------------------------------------------
   Cantoneiras
   Uma única peça, espelhada por CSS nos quatro cantos.
   ------------------------------------------------------------------ */
.cantoneiras {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
}
.cantoneira {
  position: absolute;
  width: var(--corner-size, 140px);
  height: var(--corner-size, 140px);
  color: var(--c-metal);
  opacity: var(--corner-opacity, 0.55);
}
.cantoneira svg { width: 100%; height: 100%; display: block; }
.tema-com-cantoneira .cantoneira {
  background-image: var(--theme-corner-image);
  background-repeat: no-repeat;
  background-position: left top;
  background-size: contain;
}
.tema-com-cantoneira .cantoneira svg { display: none; }

.cantoneira--tl { top: var(--corner-inset-y, 10px); left: var(--corner-inset-x, 10px); transform: rotate(var(--corner-rotation, 0deg)); }
.cantoneira--tr { top: var(--corner-inset-y, 10px); right: var(--corner-inset-x, 10px); transform: scaleX(-1) rotate(var(--corner-rotation, 0deg)); }
.cantoneira--bl { bottom: var(--corner-inset-y, 10px); left: var(--corner-inset-x, 10px); transform: scaleY(-1) rotate(var(--corner-rotation, 0deg)); }
.cantoneira--br { bottom: var(--corner-inset-y, 10px); right: var(--corner-inset-x, 10px); transform: scale(-1, -1) rotate(var(--corner-rotation, 0deg)); }

/* Duas cantoneiras: só as diagonais opostas */
.cantoneira-2 .cantoneira--tr,
.cantoneira-2 .cantoneira--bl { display: none; }

/* No celular a cantoneira encolhe para não brigar com o texto */
@media (max-width: 560px) {
  .cantoneira { width: calc(var(--corner-size, 140px) * var(--corner-mobile-scale, .62)); height: calc(var(--corner-size, 140px) * var(--corner-mobile-scale, .62)); }
}

/* ---------------------------------------------------------------------
   Estrutura
   ------------------------------------------------------------------ */
.convite { position: relative; z-index: 1; }

.secao {
  position: relative;
  padding: var(--section-space, 2.65rem) 1.1rem;
}
.secao__interno {
  width: 100%;
  max-width: var(--content-width, 46rem);
  margin: 0 auto;
}
.secao--larga .secao__interno { max-width: var(--content-wide-width, 64rem); }

/* O Renderer decide em quais seções a decoração existe. CSS apenas apresenta
   a marcação recebida; não reinterpreta a regra do tema. */
.secao > .cantoneiras, .capa > .cantoneiras { display: block; }
.secao__interno { position: relative; z-index: 3; }

/* ---------------------------------------------------------------------
   Tipografia
   ------------------------------------------------------------------ */
.nome-debutante {
  width: fit-content;
  max-width: min(100%, 15ch);
  box-sizing: border-box;
  margin: .38em auto .26em;
  padding: .08em .18em .14em;
  color: var(--c-primary);
  font-family: var(--font-name);
  font-weight: var(--name-weight, 400);
  font-size: var(--name-size, clamp(2.85rem, 12vw, 6.25rem));
  line-height: var(--name-line-height, .98);
  letter-spacing: var(--name-tracking, 0.01em);
  text-align: center;
  text-wrap: balance;
  overflow-wrap: normal;
  word-break: keep-all;
  hyphens: none;
}
.nome-debutante[data-nome-longo="1"] { max-width:min(100%,18ch);font-size:clamp(2.35rem,9.5vw,5.25rem); }
.nome-debutante[data-nome-muito-longo="1"] { max-width:min(100%,22ch);font-size:clamp(1.95rem,7.8vw,4.35rem);line-height:1.02; }

.titulo-secao {
  font-family: var(--font-title);
  font-weight: var(--title-weight, 400);
  font-size: var(--title-size, clamp(1.55rem, 5.5vw, 2.35rem));
  line-height: var(--title-line-height, 1.15);
  letter-spacing: var(--title-tracking, 0.1em);
  text-transform: var(--title-transform, uppercase);
  text-align: center;
  margin: 0 0 0.35em;
  color: var(--c-ink);
}
.subtitulo {
  font-family: var(--font-title);
  font-size: 0.82rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  text-align: center;
  color: var(--c-ink-soft);
  margin: 0 0 2.25rem;
}
.texto p { margin: 0 0 1.15em; }
.texto p:last-child { margin-bottom: 0; }
.texto--centro { text-align: center; }

.assinatura {
  font-family: var(--font-name);
  font-size: clamp(1.6rem, 6vw, 2.2rem);
  color: var(--c-primary);
  text-align: center;
  margin-top: 1.5rem;
  line-height: 1.2;
}

/* ---------------------------------------------------------------------
   Divisor ornamentado — CSS + um losango
   ------------------------------------------------------------------ */
.divisor {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  margin: 1.05rem auto 1.55rem;
  max-width: 18rem;
  color: var(--c-metal);
}
.divisor::before,
.divisor::after {
  content: "";
  flex: 1;
  height: var(--rule-weight, 1px);
  background: linear-gradient(90deg, transparent, currentColor 45%, currentColor 55%, transparent);
}
.divisor__marca {
  width: 9px; height: 9px;
  border: 1px solid currentColor;
  transform: rotate(45deg);
  flex: 0 0 auto;
}
.divisor__marca::after {
  content: "";
  display: block;
  width: 3px; height: 3px;
  background: currentColor;
  margin: 2px;
}

/* Opt-in: `divisor-estilo-theme` não altera o divisor histórico. */
body:not(.divisor-estilo-theme) .divisor {
  max-width: var(--divider-width, 288px);
  opacity: var(--divider-opacity, 1);
}
body:not(.divisor-estilo-theme) .divisor::before,
body:not(.divisor-estilo-theme) .divisor::after { height: var(--divider-thickness, 1px); }
.divisor-estilo-none .divisor { display: none; }
.divisor-estilo-line .divisor__marca { display: none; }
.divisor-estilo-line .divisor::before,
.divisor-estilo-line .divisor::after { background: currentColor; }
.divisor-estilo-diamond .divisor__marca { width: 13px; height: 13px; }
.divisor-estilo-diamond .divisor__marca::after { width: 5px; height: 5px; margin: 3px; }
.divisor-estilo-classic .divisor::before,
.divisor-estilo-classic .divisor::after {
  background: linear-gradient(90deg, transparent, currentColor 45%, currentColor 55%, transparent);
}

/* ---------------------------------------------------------------------
   Cartão
   ------------------------------------------------------------------ */
.cartao {
  background: var(--card-bg, var(--c-surface));
  border: var(--card-border, 1px solid var(--c-line));
  border-radius: var(--radius, 4px);
  box-shadow: var(--shadow, none);
  padding: clamp(1.2rem, 3.8vw, 2rem);
}
.cartao + .cartao { margin-top: 1.25rem; }

/* Moldura interna fina, típica de papelaria fina */
.moldura { position: relative; }
.moldura::after {
  content: "";
  position: absolute;
  inset: 8px;
  border: var(--rule-weight, 1px) solid color-mix(in srgb, var(--c-metal) 55%, transparent);
  border-radius: calc(var(--radius, 4px) * 0.6);
  pointer-events: none;
}

/* ---------------------------------------------------------------------
   Botões
   ------------------------------------------------------------------ */
.botao {
  --botao-bg: var(--c-button-bg, var(--c-primary));
  --botao-ink: var(--c-button-ink, var(--c-primary-ink, #fff));
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 3rem;              /* alvo de toque confortável */
  padding: 0.8rem 1.9rem;
  font-family: var(--font-button);
  font-size: 0.8rem;
  font-weight: var(--button-weight, 500);
  letter-spacing: var(--button-tracking, 0.2em);
  text-transform: var(--button-transform, uppercase);
  color: var(--botao-ink);
  background: var(--botao-bg);
  border: 1px solid var(--botao-bg);
  border-radius: var(--radius-sm, 3px);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
  text-decoration: none;
}
.botao:hover { text-decoration: none; transform: translateY(-1px); box-shadow: 0 8px 22px rgba(0,0,0,.14); }
.botao:active { transform: translateY(0); }
.botao:focus-visible { outline: 2px solid var(--c-metal); outline-offset: 3px; }

.botao--contorno {
  background: transparent;
  color: var(--c-primary);
  border-color: color-mix(in srgb, var(--c-primary) 60%, transparent);
}
.botao--contorno:hover { background: color-mix(in srgb, var(--c-primary) 8%, transparent); }
.botao--pequeno { min-height: 2.4rem; padding: 0.5rem 1.1rem; font-size: 0.72rem; }
.botao--bloco { width: 100%; }

/* ---------------------------------------------------------------------
   Capa
   ------------------------------------------------------------------ */
.capa {
  position: relative;
  min-height: min(92svh, 52rem);
  display: grid;
  place-items: center;
  text-align: center;
  padding: 3.2rem 1.2rem 4rem;
  overflow: hidden;
}
.capa__conteudo { position: relative; z-index: 3; max-width: 34rem; }

.capa__olho {
  font-family: var(--font-title);
  font-size: 0.78rem;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--c-ink-soft);
  margin: 0;
}
.capa__frase {
  font-family: var(--font-title);
  font-style: italic;
  font-size: clamp(1.05rem, 3.6vw, 1.3rem);
  color: var(--c-ink-soft);
  margin: 0 auto 1.25rem;
  max-width: 26rem;
}
.capa__data {
  font-family: var(--font-title);
  font-size: clamp(0.95rem, 3.4vw, 1.15rem);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-ink);
  margin: 0 0 0.4rem;
}
.capa__hora { font-size: 0.9rem; letter-spacing: 0.12em; color: var(--c-ink-soft); margin: 0 0 1.45rem; }

.brasao {
  width: var(--crest-size, 120px);
  height: auto;
  margin: 0 auto 0.5rem;
  object-fit: contain;
}
.brasao-sombra .brasao { filter: drop-shadow(0 8px 18px rgba(0,0,0,.22)); }
.brasao-brilho .brasao { filter: drop-shadow(0 0 14px color-mix(in srgb, var(--c-metal) 70%, transparent)); }

/* Monograma desenhado, usado quando não há brasão enviado */
.monograma {
  width: var(--crest-size, 120px);
  height: var(--crest-size, 120px);
  margin: 0 auto 0.75rem;
  display: grid;
  place-items: center;
  border: 1px solid var(--c-metal);
  border-radius: 50%;
  position: relative;
  color: var(--c-primary);
  font-family: var(--font-title);
  font-size: calc(var(--crest-size, 120px) * 0.34);
  letter-spacing: 0.04em;
}
.monograma::after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 1px solid color-mix(in srgb, var(--c-metal) 45%, transparent);
  border-radius: 50%;
}

.capa__seta {
  position: absolute;
  left: 50%;
  bottom: 1.75rem;
  transform: translateX(-50%);
  z-index: 3;
  color: var(--c-ink-soft);
  font-size: 0.68rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  display: grid;
  gap: 0.5rem;
  justify-items: center;
  animation: flutua 2.6s ease-in-out infinite;
}
.capa__seta span:last-child {
  width: 1px; height: 28px;
  background: linear-gradient(180deg, currentColor, transparent);
}
@keyframes flutua {
  0%, 100% { transform: translateX(-50%) translateY(0); opacity: .85; }
  50%      { transform: translateX(-50%) translateY(6px); opacity: .45; }
}

/* ---------------------------------------------------------------------
   Contagem regressiva
   ------------------------------------------------------------------ */
.contagem { display: flex; justify-content: center; gap: 0.6rem; flex-wrap: wrap; }
.contagem__item {
  min-width: 4.7rem;
  padding: 1rem 0.7rem;
  text-align: center;
  background: var(--card-bg, var(--c-surface));
  border: 1px solid color-mix(in srgb, var(--c-metal) 40%, transparent);
  border-radius: var(--radius, 4px);
}
.contagem__numero {
  display: block;
  font-family: var(--font-title);
  font-size: clamp(1.7rem, 7vw, 2.5rem);
  line-height: 1;
  color: var(--c-primary);
  font-variant-numeric: tabular-nums;
}
.contagem__rotulo {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.62rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-ink-soft);
}
.contagem--linha .contagem__item { border: 0; background: transparent; min-width: 3.8rem; padding: 0.3rem; }
.contagem--linha .contagem__item + .contagem__item { border-left: 1px solid var(--c-line); }

.contagem__realizada {
  text-align: center;
  font-family: var(--font-title);
  font-style: italic;
  font-size: clamp(1.1rem, 4vw, 1.4rem);
  color: var(--c-ink-soft);
}

/* ---------------------------------------------------------------------
   Programação e locais
   ------------------------------------------------------------------ */
.programacao { display: grid; gap: 1.1rem; }
.compromisso { display: grid; gap: 0.5rem; }
.compromisso__hora {
  font-family: var(--font-title);
  font-size: 1.5rem;
  color: var(--c-primary);
  letter-spacing: 0.06em;
}
.compromisso__nome {
  font-family: var(--font-title);
  font-size: 0.8rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--c-ink-soft);
  margin: 0;
}
.compromisso__local { font-weight: 400; margin: 0; }
.compromisso__endereco { color: var(--c-ink-soft); font-size: 0.94rem; margin: 0; }
.compromisso__nota { font-size: 0.9rem; font-style: italic; color: var(--c-ink-soft); margin: 0; }
.compromisso__acoes { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.35rem; }

.endereco-oculto {
  font-size: 0.9rem;
  font-style: italic;
  color: var(--c-ink-soft);
  padding: 0.6rem 0.9rem;
  border-left: 2px solid var(--c-metal);
  background: color-mix(in srgb, var(--c-metal) 8%, transparent);
}

/* Variante em sequência vertical */
.programacao--timeline { position: relative; padding-left: 1.75rem; }
.programacao--timeline::before {
  content: "";
  position: absolute;
  left: 5px; top: 0.6rem; bottom: 0.6rem;
  width: 1px;
  background: linear-gradient(180deg, transparent, var(--c-metal) 12%, var(--c-metal) 88%, transparent);
}
.programacao--timeline .compromisso { position: relative; }
.programacao--timeline .compromisso::before {
  content: "";
  position: absolute;
  left: -1.75rem; top: 0.75rem;
  width: 11px; height: 11px;
  border: 1px solid var(--c-metal);
  background: var(--c-bg);
  transform: rotate(45deg);
}

/* ---------------------------------------------------------------------
   Lista de itens (regras, traje, FAQ, contato)
   ------------------------------------------------------------------ */
.itens--grade { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; }
.item {
  display: grid;
  grid-template-columns: 2.5rem 1fr;
  gap: 0.9rem;
  align-items: start;
  flex: 1 1 17rem;
  max-width: 21.5rem;
}
.item__icone {
  width: 2.5rem; height: 2.5rem;
  display: grid; place-items: center;
  border: 1px solid color-mix(in srgb, var(--c-metal) 55%, transparent);
  border-radius: 50%;
  color: var(--c-primary);
}
.item__icone svg { width: 1.15rem; height: 1.15rem; }
.item__icone i { font-size: 1.08rem; line-height: 1; }
.item__titulo {
  font-family: var(--font-title);
  font-size: 0.82rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin: 0.3rem 0 0.15rem;
}
.item__texto { margin: 0; color: var(--c-ink-soft); font-size: 0.97rem; line-height: 1.55; }

.itens--lista { display: grid; gap: 0.85rem; }
.itens--lista .item { border-bottom: 1px solid var(--c-line); padding-bottom: 0.85rem; }
.itens--lista .item:last-child { border-bottom: 0; padding-bottom: 0; }

/* Acordeão com <details>, sem JavaScript */
.itens--acordeao { display: grid; gap: 0.6rem; }
.acordeao {
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm, 3px);
  background: var(--card-bg, var(--c-surface));
}
.acordeao > summary {
  cursor: pointer;
  list-style: none;
  padding: 0.95rem 1.1rem;
  font-family: var(--font-title);
  font-size: 0.95rem;
  letter-spacing: 0.04em;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  min-height: 3rem;
}
.acordeao > summary::-webkit-details-marker { display: none; }
.acordeao > summary::after {
  content: "+";
  color: var(--c-primary);
  font-size: 1.25rem;
  line-height: 1;
  transition: transform .2s ease;
}
.acordeao[open] > summary::after { transform: rotate(45deg); }
.acordeao__corpo { padding: 0 1.1rem 1.1rem; color: var(--c-ink-soft); }

/* ---------------------------------------------------------------------
   Galeria
   ------------------------------------------------------------------ */
.galeria { display: grid; gap: 0.5rem; grid-template-columns: repeat(2, 1fr); }
.galeria__foto {
  position: relative;
  margin: 0;
  overflow: hidden;
  border-radius: var(--radius-sm, 3px);
  background: color-mix(in srgb, var(--c-ink) 6%, transparent);
  cursor: zoom-in;
  aspect-ratio: 3 / 4;
}
.galeria__foto img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.galeria__foto:hover img { transform: scale(1.04); }
.galeria__foto figcaption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 1.5rem 0.75rem 0.6rem;
  font-size: 0.78rem;
  color: #fff;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.62));
}

/* Faixa deslizante */
.galeria--faixa {
  display: flex;
  gap: 0.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 0.5rem;
  -webkit-overflow-scrolling: touch;
}
.galeria--faixa .galeria__foto {
  flex: 0 0 70%;
  scroll-snap-align: center;
}

/* Ampliação */
.lupa {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: none;
  place-items: center;
  padding: 1.25rem;
  background: rgba(12, 10, 8, .93);
  backdrop-filter: blur(3px);
}
.lupa[data-aberta="1"] { display: grid; }
.lupa img { max-width: 100%; max-height: 82svh; border-radius: 2px; }
.lupa__legenda { color: #f4efe6; text-align: center; font-size: 0.85rem; margin-top: 0.85rem; }
.lupa__fechar,
.lupa__anterior,
.lupa__proxima {
  position: absolute;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.28);
  color: #fff;
  width: 3rem; height: 3rem;
  border-radius: 50%;
  font-size: 1.35rem;
  cursor: pointer;
  display: grid; place-items: center;
}
.lupa__fechar   { top: 1rem; right: 1rem; }
.lupa__anterior { left: 0.75rem; top: 50%; transform: translateY(-50%); }
.lupa__proxima  { right: 0.75rem; top: 50%; transform: translateY(-50%); }

/* ---------------------------------------------------------------------
   Confirmação de presença
   ------------------------------------------------------------------ */
.formulario { display: grid; gap: 1.1rem; }
.campo { display: grid; gap: 0.4rem; }
.campo > label {
  font-family: var(--font-title);
  font-size: 0.74rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-ink-soft);
}
.campo input[type="text"],
.campo input[type="tel"],
.campo input[type="email"],
.campo input[type="number"],
.campo select,
.campo textarea {
  width: 100%;
  min-height: 3rem;
  padding: 0.75rem 0.9rem;
  font-family: inherit;
  font-size: 1rem;           /* 16px evita o zoom automático do iOS */
  color: var(--c-ink);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm, 3px);
  transition: border-color .18s ease, box-shadow .18s ease;
}
.campo textarea { min-height: 6.5rem; resize: vertical; line-height: 1.6; }
.campo input:focus, .campo select:focus, .campo textarea:focus {
  outline: none;
  border-color: var(--c-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-primary) 16%, transparent);
}
.campo__ajuda { font-size: 0.82rem; color: var(--c-ink-soft); }
.campo__erro  { font-size: 0.82rem; color: #b3261e; }

/* Escolha de presença em blocos grandes, fáceis no celular */
.escolhas { display: grid; gap: 0.5rem; }
.escolha {
  position: relative;
  display: flex; align-items: center; gap: 0.75rem;
  min-height: 3.25rem;
  padding: 0.85rem 1rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm, 3px);
  background: var(--c-surface);
  cursor: pointer;
}
.escolha input { position: absolute; opacity: 0; pointer-events: none; }
.escolha__marca {
  width: 1.1rem; height: 1.1rem;
  border: 1px solid var(--c-metal);
  border-radius: 50%;
  flex: 0 0 auto;
  display: grid; place-items: center;
}
.escolha input:checked + .escolha__marca::after {
  content: "";
  width: 0.55rem; height: 0.55rem;
  border-radius: 50%;
  background: var(--c-primary);
}
.escolha:has(input:checked) {
  border-color: var(--c-primary);
  background: color-mix(in srgb, var(--c-primary) 7%, var(--c-surface));
}
.escolha input:focus-visible + .escolha__marca { outline: 2px solid var(--c-metal); outline-offset: 2px; }

.rsvp__resposta {
  text-align: center;
  padding: 1.5rem 1rem;
}
.rsvp__resposta h3 {
  font-family: var(--font-title);
  font-size: 1.35rem;
  margin: 0 0 0.5rem;
  color: var(--c-primary);
}
.rsvp__fechado {
  text-align: center;
  font-style: italic;
  color: var(--c-ink-soft);
}
.oculto { display: none !important; }

/* Sugestões de nome da lista de convidados */
.sugestoes {
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm, 3px);
  background: var(--c-surface);
  max-height: 12rem;
  overflow-y: auto;
}
.sugestoes:empty { display: none; }
.sugestoes li { padding: 0.65rem 0.9rem; cursor: pointer; min-height: 2.75rem; }
.sugestoes li:hover, .sugestoes li[aria-selected="true"] { background: color-mix(in srgb, var(--c-primary) 10%, transparent); }

/* ---------------------------------------------------------------------
   Aviso destacado (modo de emergência)
   ------------------------------------------------------------------ */
.aviso {
  position: sticky;
  top: 0;
  z-index: 60;
  padding: 0.8rem 1.1rem;
  text-align: center;
  font-size: 0.92rem;
  color: var(--c-primary-ink, #fff);
  background: var(--c-primary);
  box-shadow: 0 2px 14px rgba(0,0,0,.18);
}

/* ---------------------------------------------------------------------
   Música
   ------------------------------------------------------------------ */
.musica {
  position: fixed;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  z-index: 70;
  min-width: 9.6rem;
  min-height: 3.15rem;
  padding: .65rem 1rem;
  border-radius: 999px;
  border: 1px solid var(--c-metal);
  background: color-mix(in srgb, var(--c-surface) 92%, transparent);
  color: var(--c-primary);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  backdrop-filter: blur(9px);
  box-shadow: 0 8px 24px rgba(0,0,0,.14);
  font-family: var(--font-button);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .04em;
}
.musica__icone { font-size: .95rem; line-height: 1; min-width: 1rem; }
.musica__texto { white-space: nowrap; font-weight: 700; }
.musica[data-tocando="1"] { animation: pulsa 2.4s ease-in-out infinite; }
.musica--erro { color: #9c2f2f; border-color: #c96c6c; }
@media (max-width: 430px) {
  .musica { min-width: 8.4rem; min-height: 3rem; padding-inline: .82rem; font-size: .72rem; }
}
.modo-previa [data-preview-module][data-preview-destaque="1"] {
  outline: 2px solid color-mix(in srgb, var(--c-primary) 72%, white);
  outline-offset: -2px;
  animation: preview-highlight 1.15s ease-out 1;
}
@keyframes preview-highlight {
  from { box-shadow: inset 0 0 0 999px color-mix(in srgb, var(--c-primary) 12%, transparent); }
  to { box-shadow: inset 0 0 0 999px transparent; }
}
@keyframes pulsa {
  0%, 100% { box-shadow: 0 6px 18px rgba(0,0,0,.12); }
  50%      { box-shadow: 0 6px 26px color-mix(in srgb, var(--c-metal) 55%, transparent); }
}

/* ---------------------------------------------------------------------
   Rodapé
   ------------------------------------------------------------------ */
.rodape {
  position:relative;
  width:100%;
  margin:0;
  padding:1.45rem 1.1rem max(1.45rem,env(safe-area-inset-bottom));
  text-align:center;
  color:var(--c-ink-soft);
  background:color-mix(in srgb,var(--c-bg-deep) 72%,var(--c-surface));
  border-top:1px solid color-mix(in srgb,var(--c-metal) 34%,var(--c-line));
  font-size:.78rem;
  letter-spacing:.045em;
  overflow:hidden;
}
.rodape::before { content:"";display:block;width:2.8rem;height:1px;margin:0 auto .85rem;background:var(--c-metal);opacity:.7; }
.rodape p { margin:.15rem 0; }
.rodape__marca { font-weight:600; }
.rodape__ano { font-size:.68rem;opacity:.72; }
.rodape a { color:inherit;text-decoration:underline;text-underline-offset:2px; }

/* ---------------------------------------------------------------------
   Entrada suave das seções
   ------------------------------------------------------------------ */
.revela {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .7s ease, transform .7s ease;
}
.revela[data-visivel="1"] { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .revela { opacity: 1; transform: none; transition: none; }
  .capa__seta, .musica[data-tocando="1"] { animation: none; }
  .galeria__foto img { transition: none; }
}

/* ---------------------------------------------------------------------
   Telas maiores
   ------------------------------------------------------------------ */
@media (min-width: 640px) {
  .galeria { grid-template-columns: repeat(3, 1fr); gap: 0.65rem; }
  .galeria--faixa .galeria__foto { flex-basis: 42%; }
  .compromisso { grid-template-columns: 7rem 1fr; align-items: baseline; column-gap: 1.25rem; }
  .compromisso__hora { text-align: right; }
  .compromisso__corpo { display: grid; gap: 0.3rem; }
}

@media (min-width: 900px) {
  .bloco--com-foto {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: center;
  }
  .bloco--com-foto .bloco__foto img { border-radius: var(--radius, 4px); }
  .galeria { grid-template-columns: repeat(4, 1fr); }
  .galeria--colunas-3 { grid-template-columns: repeat(3, 1fr); }
}

/* ---------------------------------------------------------------------
   Impressão — a convidada às vezes imprime os dados da festa
   ------------------------------------------------------------------ */
@media print {
  body { background: #fff; color: #000; }
  body::before, .cantoneiras, .musica, .capa__seta, .lupa, .galeria { display: none !important; }
  .capa { min-height: auto; padding: 1rem 0; }
  .secao { padding: 0.75rem 0; page-break-inside: avoid; }
  .botao { display: none; }
}

/* Grades incompletas ficam centralizadas, inclusive quando existem 3, 5 ou 7 itens. */
.itens--grade {
  justify-content: center;
}
.itens--grade > * {
  min-width: min(100%, 15rem);
}

/* Lacre Imperial: a capa se comporta como uma carta real selada, não como um círculo decorativo solto. */
.tema-lacre-imperial .capa { padding-inline: clamp(1rem,4vw,2rem); }
.tema-lacre-imperial .capa__conteudo {
  isolation:isolate;
  width:min(100%,36rem);
  padding:clamp(3.6rem,9vw,5.3rem) clamp(1.25rem,5vw,2.8rem) clamp(1.8rem,5vw,2.8rem);
  background:color-mix(in srgb,var(--c-surface) 96%,var(--c-bg));
  border:1px solid color-mix(in srgb,var(--c-metal) 62%,var(--c-line));
  outline:1px solid color-mix(in srgb,var(--c-metal) 28%,transparent);
  outline-offset:-.7rem;
  box-shadow:0 24px 64px rgba(66,35,31,.18);
}
.tema-lacre-imperial .capa__conteudo::before,
.tema-lacre-imperial .capa__conteudo::after {
  content:"";position:absolute;left:0;right:0;top:0;height:clamp(3.2rem,8vw,4.6rem);z-index:-1;pointer-events:none;
}
.tema-lacre-imperial .capa__conteudo::before {
  background:
    linear-gradient(28deg,transparent 49.45%,color-mix(in srgb,var(--c-metal) 38%,transparent) 49.8% 50.2%,transparent 50.55%) left top/50% 100% no-repeat,
    linear-gradient(-28deg,transparent 49.45%,color-mix(in srgb,var(--c-metal) 38%,transparent) 49.8% 50.2%,transparent 50.55%) right top/50% 100% no-repeat;
}
.tema-lacre-imperial .capa__conteudo::after { border-bottom:1px solid color-mix(in srgb,var(--c-metal) 26%,var(--c-line)); }
.tema-lacre-imperial .monograma {
  width:clamp(5.4rem,20vw,7.2rem);height:clamp(5.4rem,20vw,7.2rem);
  margin-top:calc(clamp(3.6rem,9vw,5.3rem) * -1.18);
  margin-bottom:1.35rem;
  color:var(--c-metal-soft);
  background:radial-gradient(circle at 34% 28%,color-mix(in srgb,var(--c-primary) 72%,white),var(--c-primary) 52%,color-mix(in srgb,var(--c-primary) 72%,black));
  border:.34rem double color-mix(in srgb,var(--c-metal) 75%,var(--c-primary));
  box-shadow:0 .8rem 1.7rem rgba(66,35,31,.30),inset 0 .18rem .45rem rgba(255,255,255,.24);
  transform:rotate(-2deg);
}
.tema-lacre-imperial .monograma::after { inset:.5rem;border-color:color-mix(in srgb,var(--c-metal-soft) 54%,transparent); }
.tema-lacre-imperial .monograma {
  box-sizing:border-box;
  width:clamp(6.8rem,24vw,8.8rem);
  height:clamp(6.8rem,24vw,8.8rem);
  padding:.08em .12em 0;
  font-family:var(--font-name);
  font-size:clamp(3.25rem,12vw,4.8rem);
  line-height:1;
  letter-spacing:.01em;
  white-space:nowrap;
}
.tema-lacre-imperial .monograma[data-iniciais="2"] {
  font-size:clamp(2.7rem,10vw,4rem);
  letter-spacing:.015em;
}

.tema-lacre-imperial .brasao { max-width:9rem;filter:drop-shadow(0 .75rem 1rem rgba(66,35,31,.24)); }
.tema-lacre-imperial .nome-debutante { text-shadow:0 1px 0 rgba(255,255,255,.65); }
.tema-lacre-imperial .cartao { position:relative; }
.tema-lacre-imperial .cartao::after { content:"";position:absolute;inset:.55rem;border:1px solid color-mix(in srgb,var(--c-metal) 45%,transparent);pointer-events:none; }

/* Social Chic: linguagem de cards e destaques, com navegação visual mais jovem. */
.tema-social-chic .capa { padding: 1rem; }
.tema-social-chic .capa__conteudo { border-radius: 2.2rem; border: 1px solid var(--c-line); box-shadow: var(--shadow); overflow:hidden; }
.tema-social-chic .capa__brasao { border-radius:50%; outline:4px solid color-mix(in srgb,var(--c-primary) 28%,var(--c-metal)); outline-offset:5px; }
.tema-social-chic .titulo-secao { text-transform:none; letter-spacing:.02em; }
.tema-social-chic .galeria__foto { border-radius: 1.4rem; }
.tema-social-chic .item { border-radius: 1.3rem; background:var(--card-bg); box-shadow:0 10px 28px rgba(35,28,55,.08); padding:1.2rem; }

.compromisso--marco { grid-template-columns: 4.4rem minmax(4.5rem,auto) 1fr; align-items:center; }
.marco-visual { width:4.1rem;height:4.1rem;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:color-mix(in srgb,var(--c-primary) 10%,var(--c-surface));border:1px solid color-mix(in srgb,var(--c-metal) 58%,var(--c-line));color:var(--c-primary); }
.marco-visual img { width:100%;height:100%;object-fit:cover; }
.marco-visual svg { width:1.55rem;height:1.55rem; }
@media(max-width:620px){.compromisso--marco{grid-template-columns:3.7rem 1fr}.compromisso--marco .compromisso__hora{grid-column:2}.compromisso--marco .compromisso__corpo{grid-column:2}.marco-visual{grid-row:1/3;width:3.45rem;height:3.45rem}}



/* 2.4.0 — controles flutuantes protegidos contra estilos do tema */
.musica {
  width:auto!important;
  height:auto!important;
  max-width:calc(100vw - 2rem)!important;
  max-height:3.4rem!important;
  writing-mode:horizontal-tb!important;
  text-orientation:mixed!important;
  white-space:nowrap!important;
  overflow:hidden;
  flex-direction:row!important;
  transform:none!important;
  line-height:1!important;
}
.musica span { display:inline-block!important;writing-mode:horizontal-tb!important; }
.tema-social-chic .musica { top:auto;bottom:max(1rem,env(safe-area-inset-bottom));right:1rem; }
@media (max-width:520px) {
  .musica {
    width:3rem!important;
    min-width:3rem!important;
    height:3rem!important;
    min-height:3rem!important;
    max-width:3rem!important;
    max-height:3rem!important;
    padding:0!important;
    border-radius:50%!important;
    right:.7rem;
    bottom:max(.7rem,env(safe-area-inset-bottom));
  }
  .musica__icone { min-width:0;display:grid!important;place-items:center;font-size:1rem; }
  .musica__texto {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
    border:0;
  }
}

/* =====================================================================
   Sagaro 2.4.0 — direção de arte específica por coleção
   Cada tema mantém a mesma estrutura funcional, mas recebe ritmo, molduras
   e superfícies próprios para não parecer apenas uma troca de cores.
   ===================================================================== */
.secao { padding-top:clamp(2rem,5vw,var(--section-space,3.15rem));padding-bottom:clamp(2rem,5vw,var(--section-space,3.15rem)); }
.secao + .secao { border-top:1px solid color-mix(in srgb,var(--c-line) 46%,transparent); }

/* Arabesque — papelaria clássica emoldurada */
.tema-arabesque .capa::after { content:"";position:absolute;inset:clamp(.75rem,2.2vw,1.45rem);border:1px solid color-mix(in srgb,var(--c-metal) 66%,transparent);outline:1px solid color-mix(in srgb,var(--c-metal) 24%,transparent);outline-offset:-.55rem;pointer-events:none; }
.tema-arabesque .capa__conteudo { padding:clamp(1rem,4vw,2.1rem); }
.tema-arabesque .secao:nth-of-type(even) { background:color-mix(in srgb,var(--c-surface) 62%,transparent); }
.tema-arabesque .cartao,.tema-arabesque .item { box-shadow:0 12px 36px rgba(89,66,32,.055); }
.tema-arabesque .titulo-secao::first-letter { color:var(--c-primary); }
.tema-arabesque .item__icone { border-style:double;border-width:3px; }

/* Céu de Safira — gala noturna com constelações e joias */
.tema-ceu-de-safira .capa { background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--c-primary) 12%,transparent),transparent 28%),linear-gradient(180deg,transparent,color-mix(in srgb,var(--c-bg-deep) 62%,transparent)); }
.tema-ceu-de-safira .capa::after { content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,color-mix(in srgb,var(--c-metal) 70%,transparent) 0 .7px,transparent 1px);background-size:41px 47px;opacity:.42; }
.tema-ceu-de-safira .secao:nth-of-type(even) { background:color-mix(in srgb,var(--c-surface) 58%,transparent); }
.tema-ceu-de-safira .cartao,.tema-ceu-de-safira .item,.tema-ceu-de-safira .contagem__item { background:linear-gradient(145deg,color-mix(in srgb,var(--c-surface) 94%,transparent),color-mix(in srgb,var(--c-bg-deep) 88%,transparent));box-shadow:0 18px 46px rgba(1,6,16,.24); }
.tema-ceu-de-safira .item__icone { box-shadow:0 0 18px color-mix(in srgb,var(--c-metal) 18%,transparent); }
.tema-ceu-de-safira .galeria__foto { border:1px solid color-mix(in srgb,var(--c-metal) 42%,transparent); }

/* Jardim de Lavanda — aquarela botânica leve, sem grandes vazios */
.tema-jardim-lavanda .capa { background:radial-gradient(ellipse at 8% 12%,color-mix(in srgb,var(--c-primary) 18%,transparent),transparent 32%),radial-gradient(ellipse at 92% 82%,color-mix(in srgb,var(--c-metal-soft) 36%,transparent),transparent 34%); }
.tema-jardim-lavanda .secao::before { content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 0 18%,color-mix(in srgb,var(--c-primary) 8%,transparent),transparent 27%),radial-gradient(ellipse at 100% 82%,color-mix(in srgb,var(--c-metal-soft) 14%,transparent),transparent 25%); }
.tema-jardim-lavanda .secao__interno { position:relative;z-index:1; }
.tema-jardim-lavanda .secao:nth-of-type(even) { background:color-mix(in srgb,var(--c-surface) 58%,transparent); }
.tema-jardim-lavanda .cartao,.tema-jardim-lavanda .item { border-color:color-mix(in srgb,var(--c-primary) 20%,var(--c-line));box-shadow:0 15px 38px rgba(91,69,105,.07); }
.tema-jardim-lavanda .item__icone { background:color-mix(in srgb,var(--c-primary) 7%,var(--c-surface)); }

/* Pérola Rosé — editorial couture com faixas suaves */
.tema-perola-rose .capa { background:linear-gradient(135deg,color-mix(in srgb,var(--c-surface) 84%,transparent),transparent 55%),radial-gradient(circle at 78% 18%,color-mix(in srgb,var(--c-metal) 14%,transparent),transparent 28%); }
.tema-perola-rose .secao:nth-of-type(3n+2) { background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--c-bg-deep) 62%,transparent),transparent); }
.tema-perola-rose .cartao,.tema-perola-rose .item { border-radius:18px;box-shadow:0 16px 42px rgba(109,63,68,.065); }
.tema-perola-rose .titulo-secao { letter-spacing:clamp(.09em,1.4vw,.18em); }
.tema-perola-rose .galeria__foto { border-radius:18px; }

/* Princesa Real — palácio contemporâneo, sem estética infantil */
.tema-princesa-real .capa::after { content:"";position:absolute;inset:clamp(.8rem,3vw,2rem);border:1px solid color-mix(in srgb,var(--c-metal) 62%,transparent);border-radius:48% 48% 1.5rem 1.5rem/10% 10% 1.5rem 1.5rem;pointer-events:none; }
.tema-princesa-real .secao:nth-of-type(even) { background:linear-gradient(135deg,color-mix(in srgb,var(--c-bg-deep) 62%,transparent),color-mix(in srgb,var(--c-surface) 70%,transparent)); }
.tema-princesa-real .cartao,.tema-princesa-real .item { border:1px solid color-mix(in srgb,var(--c-metal) 34%,var(--c-line));box-shadow:0 18px 44px rgba(38,54,83,.08); }
.tema-princesa-real .item__icone { border-radius:9px;transform:rotate(45deg); }
.tema-princesa-real .item__icone > * { transform:rotate(-45deg); }
.tema-princesa-real .botao { box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c-metal) 44%,transparent); }

/* Lacre Imperial — páginas internas com aparência de carta */
.tema-lacre-imperial .secao { margin:clamp(.3rem,1vw,.7rem) auto;width:min(calc(100% - 1rem),74rem);background:color-mix(in srgb,var(--c-surface) 88%,var(--c-bg));box-shadow:0 14px 38px rgba(72,42,34,.075); }
.tema-lacre-imperial .secao::after { content:"";position:absolute;inset:.55rem;border:1px solid color-mix(in srgb,var(--c-metal) 24%,transparent);pointer-events:none; }
.tema-lacre-imperial .titulo-secao { font-size:clamp(1.35rem,4.6vw,2rem); }
.tema-lacre-imperial .item__icone { border-radius:5px;background:color-mix(in srgb,var(--c-primary) 5%,var(--c-surface)); }
.tema-lacre-imperial .botao { border-radius:2px; }

/* Social Chic — editorial jovem em cartões, sem copiar rede social */
.tema-social-chic .convite { padding-bottom:.75rem; }
.tema-social-chic .capa__conteudo { width:min(100%,36rem);padding:clamp(2rem,7vw,4rem) clamp(1rem,5vw,2.4rem);background:linear-gradient(165deg,var(--c-surface),color-mix(in srgb,var(--c-bg-deep) 42%,var(--c-surface))); }
.tema-social-chic .secao { width:min(calc(100% - .8rem),70rem);margin:.35rem auto;border:1px solid var(--c-line);border-radius:1.7rem;background:color-mix(in srgb,var(--c-surface) 94%,transparent);box-shadow:0 16px 42px rgba(44,31,52,.065); }
.tema-social-chic .secao + .secao { border-top:1px solid var(--c-line); }
.tema-social-chic .divisor { max-width:7rem; }
.tema-social-chic .divisor::before,.tema-social-chic .divisor::after { height:3px;border-radius:999px;background:linear-gradient(90deg,var(--c-primary),var(--c-metal)); }
.tema-social-chic .divisor__marca { display:none; }
.tema-social-chic .itens--lista .item { border-bottom:0; }
.tema-social-chic .contagem__item { border-radius:1.15rem; }
.tema-social-chic .botao { border-radius:999px;letter-spacing:.07em;text-transform:none;font-weight:700; }
.tema-social-chic .programacao--timeline::before { width:3px;border-radius:999px; }

@media(max-width:560px){
  .tema-lacre-imperial .secao,.tema-social-chic .secao{width:calc(100% - .7rem)}
  .tema-social-chic .secao{border-radius:1.25rem}
  .tema-princesa-real .capa::after{inset:.55rem;border-radius:42% 42% 1rem 1rem/7% 7% 1rem 1rem}
}

/* Sugestões de presentes: faixas claras e fáceis de consultar, inspiradas
   em listas impressas de debutante, mas adaptadas ao tema escolhido. */
.lista-preset--presentes .secao__interno { max-width:52rem; }
.lista-preset--presentes .itens--lista { gap:.7rem; }
.lista-preset--presentes .itens--lista .item {
  display:block;
  max-width:none;
  padding:.78rem 1.25rem;
  border:1px solid color-mix(in srgb,var(--c-primary) 76%,var(--c-metal));
  border-radius:999px;
  color:var(--c-primary-ink);
  background:var(--c-primary);
  text-align:center;
  box-shadow:0 8px 20px color-mix(in srgb,var(--c-primary) 14%,transparent);
}
.lista-preset--presentes .item__icone { display:none; }
.lista-preset--presentes .item__titulo { margin:0;color:inherit;font-size:clamp(.82rem,2.4vw,1rem);letter-spacing:.06em; }
.lista-preset--presentes .item__texto { margin:.08rem 0 0;color:color-mix(in srgb,var(--c-primary-ink) 88%,transparent);font-family:var(--font-title);font-size:.82rem;line-height:1.25;text-transform:uppercase;letter-spacing:.04em; }
.lista-preset--presentes .item a { color:inherit;text-decoration:underline; }

/* Regras: ícone central e texto equilibrado, inclusive com 5 ou 7 itens. */
.lista-preset--faq .item,.lista-preset--regras .item { grid-template-columns:1fr;justify-items:center;text-align:center;padding:1rem;flex-basis:15rem; }
.lista-preset--faq .item__icone,.lista-preset--regras .item__icone { width:3.2rem;height:3.2rem; }
.lista-preset--faq .item__icone i,.lista-preset--regras .item__icone i { font-size:1.45rem; }
.lista-preset--faq .item__titulo,.lista-preset--regras .item__titulo { margin-top:.15rem; }
@media(max-width:520px){.lista-preset--presentes .itens--lista .item{border-radius:18px;padding:.75rem .9rem}.lista-preset--faq .item,.lista-preset--regras .item{flex-basis:9rem;padding:.65rem}}

@media (max-width: 560px) {
  .secao { padding-top:2rem;padding-bottom:2rem; }
  .titulo-secao { font-size:clamp(1.35rem,7vw,1.9rem); }
  .divisor { margin:.9rem auto 1.25rem; }
  .cartao { padding:1.15rem; }
  .capa { height:100svh;height:100dvh;min-height:100svh;min-height:100dvh;max-height:100svh;max-height:100dvh;padding:2.35rem 1rem 3.2rem; }
}

/* Compatibilidade com convites publicados antes da 2.4.1.
   O HTML antigo pode ainda conter a navegação; ela permanece invisível até
   o convite ser republicado com o renderizador novo. */
.convite-menu__botao,
.convite-menu { display:none!important; }
body.menu-convite-aberto { overflow:auto!important; }

/* 2.4.8 — fim físico da página e prevenção do zoom automático no iPhone */
.convite { min-height:0;margin:0;padding-bottom:0; }
@media (max-width:760px) {
  input,select,textarea { font-size:16px!important; }
  body { background-attachment:scroll; }
}


/* Retorno seguro da prévia para o mesmo ponto do editor. */
.retorno-editor{position:fixed;inset:0 0 auto;z-index:10000;display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:52px;padding:.55rem max(.8rem,env(safe-area-inset-left)) .55rem max(.8rem,env(safe-area-inset-right));background:rgba(20,17,28,.96);color:#fff;font-family:system-ui,sans-serif;box-shadow:0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(10px)}
.retorno-editor a{display:inline-flex;align-items:center;min-height:38px;padding:.4rem .8rem;border-radius:999px;background:#fff;color:#2d1b45;font-weight:750;text-decoration:none}.retorno-editor span{font-size:.78rem;opacity:.82}.tem-retorno-editor{padding-top:52px}.tem-retorno-editor .musica{top:calc(64px + env(safe-area-inset-top))}
@media(max-width:520px){.retorno-editor span{display:none}.retorno-editor{justify-content:flex-start}}


/* Linha do tempo de memórias: eixo, foto, ano e texto compartilham a mesma grade. */
.programacao--memorias{position:relative;display:grid;gap:0;padding:0;margin-top:1.25rem}
.programacao--memorias::before{left:2.05rem;top:2.1rem;bottom:2.1rem;width:1px;background:linear-gradient(180deg,transparent,var(--c-metal) 8%,var(--c-metal) 92%,transparent)}
.programacao--memorias .compromisso--marco{position:relative;display:grid;grid-template-columns:4.1rem minmax(0,1fr);grid-template-areas:"visual data" "visual corpo";align-items:start;column-gap:1.15rem;row-gap:.25rem;min-height:6.7rem;padding:1rem 0;background:transparent;border:0;box-shadow:none}
.programacao--memorias .compromisso--marco::before{display:none}
.programacao--memorias .marco-visual{grid-area:visual;position:relative;z-index:2;width:4.1rem;height:4.1rem;margin:0;background:var(--c-bg);box-shadow:0 0 0 .42rem var(--c-bg)}
.programacao--memorias .compromisso__hora{grid-area:data;align-self:end;margin:0;font-size:1.2rem;line-height:1.2}
.programacao--memorias .compromisso__corpo{grid-area:corpo;min-width:0;padding:0}
.programacao--memorias .compromisso__local{font-size:1rem;line-height:1.35;margin:0 0 .2rem}
.programacao--memorias .compromisso__endereco{line-height:1.55}
@media(max-width:620px){.programacao--memorias::before{left:1.75rem}.programacao--memorias .compromisso--marco{grid-template-columns:3.5rem minmax(0,1fr);column-gap:1rem;min-height:6.1rem;padding:.9rem 0}.programacao--memorias .marco-visual{grid-row:auto;grid-area:visual;width:3.5rem;height:3.5rem}.programacao--memorias .compromisso__hora{grid-column:auto;grid-area:data;font-size:1.08rem}.programacao--memorias .compromisso__corpo{grid-column:auto;grid-area:corpo}}


/* A primeira tela móvel pertence integralmente à capa. */
@media(max-width:760px){
  .capa__conteudo{transform:scale(var(--capa-scale,1));transform-origin:center center;will-change:transform}
  .tem-retorno-editor .capa{height:calc(100dvh - 52px);min-height:calc(100dvh - 52px);max-height:calc(100dvh - 52px)}
}
.convite{width:100%;flex:0 0 auto;overflow:visible}.rodape{flex:0 0 auto;min-height:0}.rodape + .musica{margin:0}
html,body{padding-bottom:0!important;margin-bottom:0!important}


/* Confirmação por telefone e integrantes autorizados — 2.5.0 */
.rsvp-identificacao{display:grid;grid-template-columns:2.6rem 1fr;gap:.85rem;align-items:start;margin:0 0 1rem;padding:.85rem;border:1px solid var(--c-line);border-radius:var(--radius-sm,14px);background:color-mix(in srgb,var(--c-surface) 82%,transparent)}.rsvp-identificacao h3{margin:0;font-family:var(--font-title);font-weight:500}.rsvp-identificacao p{margin:.2rem 0 0;color:var(--c-ink-soft);font-size:.9rem;line-height:1.5}.rsvp-passo{display:grid!important;place-items:center;width:2.4rem;height:2.4rem;margin:0!important;border-radius:50%;background:var(--c-primary);color:var(--c-primary-ink,#fff)!important;font-weight:800}.rsvp-etapa{display:grid;gap:.85rem;margin-top:1rem}.rsvp-saudacao{padding:.85rem 1rem;border-left:3px solid var(--c-metal);background:color-mix(in srgb,var(--c-metal) 9%,transparent);font-family:var(--font-title);font-size:1.05rem;line-height:1.55}.rsvp-membros{display:grid;gap:.6rem}.rsvp-membro{display:grid;gap:.35rem;padding:.8rem;border:1px solid var(--c-line);border-radius:var(--radius-sm,12px);background:var(--c-surface);cursor:pointer}.rsvp-membro:has(input[type="checkbox"]:checked){border-color:var(--c-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--c-primary) 12%,transparent)}.rsvp-membro__topo{display:flex;align-items:center;gap:.65rem}.rsvp-membro__topo input{width:1.25rem;height:1.25rem;accent-color:var(--c-primary)}.rsvp-membro small{color:var(--c-ink-soft)}.rsvp-membro>input[type="text"]{margin-top:.3rem}.rsvp__resposta{padding:1.2rem;text-align:center;border:1px solid var(--c-line);border-radius:var(--radius,16px);background:var(--c-surface)}


/* 2.5.1 — documento termina exatamente no rodapé. */
html,body{height:auto!important;min-height:0!important;max-height:none;margin:0!important;padding:0!important}
body{display:block!important;overflow-x:hidden;overflow-y:auto}
.pagina-convite{position:relative;display:block;width:100%;height:auto;min-height:0;margin:0;padding:0;overflow:visible}
.pagina-convite>.convite,.pagina-convite>.rodape{position:relative;width:100%;margin:0}
#fim-convite{display:block;contain:layout paint;margin-bottom:0!important}

/* 2.5.5 — confirmação pública direta */
.rsvp-cartao--simples{max-width:620px;margin-inline:auto}.rsvp-prazo{text-align:center;margin:0 0 .85rem;color:var(--c-ink-soft);font-size:.82rem}.rsvp-identificacao--simples{display:block;padding:0;margin:0 0 1rem;border:0;background:transparent;text-align:center}.rsvp-identificacao--simples h3{font-size:1.25rem}.rsvp-identificacao--simples p{margin:.2rem 0 0}.rsvp-cartao--simples .rsvp-saudacao{padding:.7rem .8rem;font-size:1rem}.rsvp-cartao--simples .rsvp-membro{padding:.65rem .7rem}.rsvp-cartao--simples .rsvp-membro small{margin-left:1.9rem;font-size:.78rem}

/* Lista pública sem convidado principal — 2.5.5 */
.rsvp-respostas-lista{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.65rem}
.rsvp-respostas-lista button{min-height:2.5rem;padding:.48rem .72rem;border:1px solid var(--c-line);border-radius:999px;background:var(--c-surface);color:var(--c-ink-soft);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}
.rsvp-respostas-lista button.ativo{border-color:var(--c-primary);background:color-mix(in srgb,var(--c-primary) 9%,var(--c-surface));color:var(--c-primary)}
@media(max-width:430px){.rsvp-respostas-lista{display:grid;grid-template-columns:1fr 1fr}.rsvp-respostas-lista button{width:100%;padding-inline:.4rem;font-size:.72rem}}

/* 2.5.7 — ações permanentes e personalização visual da demonstração. */
.demo-acoes-fixas {
  position:sticky;
  z-index:1300;
  top:0;
  min-height:54px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:.75rem;
  padding:max(.55rem,env(safe-area-inset-top)) max(.75rem,env(safe-area-inset-right)) .55rem max(.75rem,env(safe-area-inset-left));
  border-bottom:1px solid #e7e0e9;
  background:rgba(255,255,255,.96);
  color:#291d30;
  box-shadow:0 7px 24px rgba(33,21,38,.12);
  backdrop-filter:blur(14px);
  font-family:"Jost",Arial,sans-serif;
}
.demo-acoes-fixas a { text-decoration:none; }
.demo-acoes-fixas__voltar {
  color:#5e5263;
  font-size:.78rem;
  font-weight:700;
}
.demo-acoes-fixas__tema {
  overflow:hidden;
  color:#3d2a47;
  font-size:.78rem;
  font-weight:800;
  text-align:center;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.demo-acoes-fixas__criar {
  min-height:40px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.55rem .9rem;
  border:1px solid #c96914;
  border-radius:999px;
  background:#e67f22;
  color:#fff;
  font-size:.76rem;
  font-weight:850;
  box-shadow:0 7px 18px rgba(207,106,20,.22);
}
.demo-personalizacao {
  position:relative;
  z-index:6;
  display:grid;
  gap:1rem;
  padding:1rem max(1rem,env(safe-area-inset-right)) 1.15rem max(1rem,env(safe-area-inset-left));
  border-bottom:1px solid #e9e1eb;
  background:linear-gradient(180deg,#fff,#f8f4fa);
  color:#2d2232;
  font-family:"Jost",Arial,sans-serif;
}
.demo-personalizacao__titulo { display:flex;align-items:end;justify-content:space-between;gap:1rem; }
.demo-personalizacao__titulo strong { font-size:1rem; }
.demo-personalizacao__titulo span { color:#786d7c;font-size:.72rem;text-align:right; }
.demo-personalizacao__grupo { display:grid;gap:.45rem;min-width:0; }
.demo-personalizacao__grupo h2 { margin:0;color:#67596c;font:800 .65rem/1 "Jost",sans-serif;letter-spacing:.1em;text-transform:uppercase; }
.demo-opcoes {
  display:flex;
  gap:.55rem;
  overflow-x:auto;
  padding:.1rem .1rem .4rem;
  scroll-snap-type:x proximity;
  scrollbar-width:thin;
}
.demo-opcoes a {
  scroll-snap-align:start;
  flex:0 0 auto;
  min-height:48px;
  border:1px solid #ddd4e0;
  border-radius:12px;
  background:#fff;
  color:#3d3242;
  text-decoration:none;
  box-shadow:0 4px 12px rgba(51,32,59,.05);
}
.demo-opcoes a.is-active { border-color:#7a3aa2;box-shadow:0 0 0 2px rgba(122,58,162,.13); }
.demo-tema-opcao,.demo-paleta-opcao { min-width:132px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.55rem;padding:.48rem .62rem; }
.demo-tema-opcao>span:last-child,.demo-paleta-opcao>span:last-child { font-size:.72rem;font-weight:750;line-height:1.15; }
.demo-tema-opcao__cores,.demo-paleta-opcao__cores { display:flex;align-items:center; }
.demo-tema-opcao__cores i,.demo-paleta-opcao__cores i {
  width:18px;
  height:18px;
  display:block;
  margin-left:-5px;
  border:1px solid rgba(0,0,0,.12);
  border-radius:50%;
  background:var(--demo-cor);
  box-shadow:0 0 0 2px #fff;
}
.demo-tema-opcao__cores i:first-child,.demo-paleta-opcao__cores i:first-child { margin-left:0; }
.demo-paleta-opcao { min-width:150px; }
.demo-paleta-opcao__cores i { width:22px;height:22px; }
.demo-fonte-opcao {
  min-width:180px;
  display:grid;
  gap:.12rem;
  padding:.5rem .7rem;
  text-align:center;
}
.demo-fonte-opcao strong {
  overflow:visible;
  max-width:100%;
  padding:.08em .18em .14em;
  color:#4a3156;
  font-family:var(--demo-fonte);
  font-size:1.22rem;
  font-weight:400;
  line-height:1.12;
  letter-spacing:var(--demo-tracking,0);
  white-space:normal;
  overflow-wrap:anywhere;
}
.demo-fonte-opcao span { color:#7a6e7e;font-size:.65rem;font-weight:700; }
@media(max-width:620px){
  .demo-acoes-fixas { grid-template-columns:auto 1fr;gap:.45rem;padding-left:.6rem;padding-right:.6rem; }
  .demo-acoes-fixas__tema { display:none; }
  .demo-acoes-fixas__voltar { font-size:.72rem; }
  .demo-acoes-fixas__criar { justify-self:end;min-height:42px;padding:.55rem .85rem;font-size:.74rem; }
  .demo-personalizacao { gap:.8rem;padding:.8rem .65rem .9rem; }
  .demo-personalizacao__titulo { display:grid;gap:.18rem; }
  .demo-personalizacao__titulo span { text-align:left;font-size:.68rem; }
  .demo-tema-opcao { min-width:124px; }
  .demo-paleta-opcao { min-width:140px; }
  .demo-fonte-opcao { min-width:160px; }
}

/* Font sets legados preservam os microajustes históricos acima. Quando a
   combinação passa pelo contrato tipográfico v2, o Admin volta a ter controle
   explícito desses mesmos atributos sem alterar temas antigos silenciosamente. */
.tipografia-avancada.tema-social-chic .titulo-secao { text-transform:var(--title-transform, none);letter-spacing:var(--title-tracking, .02em); }
.tipografia-avancada.tema-perola-rose .titulo-secao { letter-spacing:var(--title-tracking, clamp(.09em,1.4vw,.18em)); }
.tipografia-avancada.tema-lacre-imperial .titulo-secao { font-size:var(--title-size, clamp(1.35rem,4.6vw,2rem)); }
.tipografia-avancada.tema-social-chic .botao { letter-spacing:var(--button-tracking, .07em);text-transform:var(--button-transform, none);font-weight:var(--button-weight, 700); }


/* ---------------------------------------------------------------------
   Componentes avançados — opt-in por propriedade
   ------------------------------------------------------------------
   Cada classe `*-theme` preserva o CSS histórico do tema. As regras abaixo
   ficam no fim do arquivo para que uma escolha explícita do Admin possa
   sobrescrever microajustes antigos sem reescrevê-los. */
body:not(.conteudo-largura-theme) .secao__interno {
  max-width: var(--content-width, 46rem);
}
body:not(.conteudo-largura-theme) .secao--larga .secao__interno {
  max-width: var(--content-wide-width, 64rem);
}

body:not(.secoes-espaco-theme) .secao {
  padding-top: clamp(1.6rem, 5vw, var(--component-section-space, 3.15rem));
  padding-bottom: clamp(1.6rem, 5vw, var(--component-section-space, 3.15rem));
}

body:not(.cartao-superficie-theme) :is(.cartao,.item,.contagem__item,.acordeao) {
  background: var(--component-card-bg, var(--card-bg, var(--c-surface)));
}
body:not(.cartao-raio-theme) :is(.cartao,.item,.contagem__item,.acordeao) {
  border-radius: var(--component-card-radius, var(--radius, 4px));
}
body:not(.cartao-borda-theme) :is(.cartao,.item,.contagem__item,.acordeao) {
  border: var(--component-card-border, var(--card-border, 1px solid var(--c-line)));
}
body:not(.cartao-sombra-theme) :is(.cartao,.item,.contagem__item,.acordeao) {
  box-shadow: var(--component-card-shadow, var(--shadow, none));
}
body:not(.cartao-padding-theme) :is(.cartao,.item,.contagem__item) {
  padding: var(--component-card-padding, clamp(1.2rem, 3.8vw, 2rem));
}

body:not(.botao-formato-theme) .botao {
  border-radius: var(--component-button-radius, var(--radius-sm, 3px));
}
body:not(.botao-tamanho-theme) .botao:not(.botao--pequeno) {
  min-height: var(--component-button-height, 3rem);
  padding: var(--component-button-padding-y, .8rem) var(--component-button-padding-x, 1.9rem);
  font-size: var(--component-button-font-size, .8rem);
}
.botao-estilo-solid .botao:not(.botao--contorno) {
  color: var(--c-button-ink, var(--c-primary-ink, #fff));
  background: var(--c-button-bg, var(--c-primary));
  border-color: var(--c-button-bg, var(--c-primary));
}
.botao-estilo-outline .botao:not(.botao--contorno) {
  color: var(--c-button-bg, var(--c-primary));
  background: transparent;
  border-color: color-mix(in srgb, var(--c-button-bg, var(--c-primary)) 66%, transparent);
}
.botao-estilo-soft .botao:not(.botao--contorno) {
  color: var(--c-primary);
  background: color-mix(in srgb, var(--c-primary) 9%, var(--c-surface));
  border-color: color-mix(in srgb, var(--c-primary) 24%, transparent);
}

/* ---------------------------------------------------------------------
   Responsividade avançada — desktop é a base
   ------------------------------------------------------------------
   Estas regras são opt-in. Sem uma classe resp-*, os breakpoints históricos
   acima continuam sendo a única autoridade e nenhum tema antigo muda.
   Mobile: até 639px. Tablet: 640–899px. Desktop herda a composição base. */
@media (max-width: 639px) {
  body.resp-mobile-spacing-compact .secao { padding-top:1.55rem;padding-bottom:1.55rem; }
  body.resp-mobile-spacing-balanced .secao { padding-top:2.35rem;padding-bottom:2.35rem; }
  body.resp-mobile-spacing-airy .secao { padding-top:3.15rem;padding-bottom:3.15rem; }

  body.resp-mobile-padding-tight :is(.secao,.capa) { padding-left:.7rem;padding-right:.7rem; }
  body.resp-mobile-padding-standard :is(.secao,.capa) { padding-left:1.1rem;padding-right:1.1rem; }
  body.resp-mobile-padding-wide :is(.secao,.capa) { padding-left:1.55rem;padding-right:1.55rem; }

  body.resp-mobile-type-compact { --body-size:.94rem;--title-size:clamp(1.3rem,7vw,1.75rem);--name-size:clamp(2.35rem,11vw,4.6rem); }
  body.resp-mobile-type-standard { --body-size:1rem;--title-size:clamp(1.45rem,7.4vw,2rem);--name-size:clamp(2.7rem,12.2vw,5.15rem); }
  body.resp-mobile-type-large { --body-size:1.08rem;--title-size:clamp(1.65rem,8.2vw,2.25rem);--name-size:clamp(3.05rem,13.5vw,5.7rem); }
  body:is(.resp-mobile-type-compact,.resp-mobile-type-standard,.resp-mobile-type-large) .titulo-secao { font-size:var(--title-size); }
  body:is(.resp-mobile-type-compact,.resp-mobile-type-standard,.resp-mobile-type-large) .nome-debutante { font-size:var(--name-size); }
  body.resp-mobile-type-compact .nome-debutante[data-nome-longo="1"] { font-size:clamp(2.05rem,8.7vw,3.9rem); }
  body.resp-mobile-type-standard .nome-debutante[data-nome-longo="1"] { font-size:clamp(2.3rem,9.4vw,4.55rem); }
  body.resp-mobile-type-large .nome-debutante[data-nome-longo="1"] { font-size:clamp(2.55rem,10.4vw,4.95rem); }
  body.resp-mobile-type-compact .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(1.75rem,7.1vw,3.3rem); }
  body.resp-mobile-type-standard .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(1.95rem,7.7vw,3.85rem); }
  body.resp-mobile-type-large .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(2.1rem,8.4vw,4.2rem); }

  body.resp-mobile-crest-small { --crest-size:84px; }
  body.resp-mobile-crest-standard { --crest-size:120px; }
  body.resp-mobile-crest-large { --crest-size:156px; }
  body:is(.resp-mobile-crest-small,.resp-mobile-crest-standard,.resp-mobile-crest-large) .brasao { width:var(--crest-size);max-width:none; }
  body:is(.resp-mobile-crest-small,.resp-mobile-crest-standard,.resp-mobile-crest-large) .monograma { width:var(--crest-size);height:var(--crest-size);font-size:calc(var(--crest-size) * .34); }
  body:is(.resp-mobile-crest-small,.resp-mobile-crest-standard,.resp-mobile-crest-large) .monograma[data-iniciais="2"] { font-size:calc(var(--crest-size) * .28); }

  body.resp-mobile-corners-reduced .cantoneira {
    width:calc(var(--corner-size,140px) * var(--corner-mobile-scale,.62) * .72);
    height:calc(var(--corner-size,140px) * var(--corner-mobile-scale,.62) * .72);
  }
  body.resp-mobile-corners-hide .cantoneiras { display:none!important; }

  body.resp-mobile-gallery-1 .galeria:not(.galeria--faixa) { grid-template-columns:1fr; }
  body.resp-mobile-gallery-2 .galeria:not(.galeria--faixa) { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (min-width: 640px) and (max-width: 899px) {
  body.resp-tablet-spacing-compact .secao { padding-top:2.2rem;padding-bottom:2.2rem; }
  body.resp-tablet-spacing-balanced .secao { padding-top:3.15rem;padding-bottom:3.15rem; }
  body.resp-tablet-spacing-airy .secao { padding-top:4.2rem;padding-bottom:4.2rem; }

  body.resp-tablet-padding-tight :is(.secao,.capa) { padding-left:.9rem;padding-right:.9rem; }
  body.resp-tablet-padding-standard :is(.secao,.capa) { padding-left:1.5rem;padding-right:1.5rem; }
  body.resp-tablet-padding-wide :is(.secao,.capa) { padding-left:2.2rem;padding-right:2.2rem; }

  body.resp-tablet-width-narrow { --content-width:38rem;--content-wide-width:52rem; }
  body.resp-tablet-width-standard { --content-width:46rem;--content-wide-width:64rem; }
  body.resp-tablet-width-wide { --content-width:58rem;--content-wide-width:72rem; }

  body.resp-tablet-type-compact { --body-size:.96rem;--title-size:clamp(1.45rem,3.8vw,1.95rem);--name-size:clamp(3rem,8vw,4.8rem); }
  body.resp-tablet-type-standard { --body-size:1.04rem;--title-size:clamp(1.65rem,4.2vw,2.25rem);--name-size:clamp(3.5rem,8.8vw,5.6rem); }
  body.resp-tablet-type-large { --body-size:1.12rem;--title-size:clamp(1.9rem,4.7vw,2.55rem);--name-size:clamp(4rem,9.7vw,6.3rem); }
  body:is(.resp-tablet-type-compact,.resp-tablet-type-standard,.resp-tablet-type-large) .titulo-secao { font-size:var(--title-size); }
  body:is(.resp-tablet-type-compact,.resp-tablet-type-standard,.resp-tablet-type-large) .nome-debutante { font-size:var(--name-size); }
  body.resp-tablet-type-compact .nome-debutante[data-nome-longo="1"] { font-size:clamp(2.65rem,6.6vw,4.2rem); }
  body.resp-tablet-type-standard .nome-debutante[data-nome-longo="1"] { font-size:clamp(3rem,7.2vw,4.85rem); }
  body.resp-tablet-type-large .nome-debutante[data-nome-longo="1"] { font-size:clamp(3.35rem,7.9vw,5.35rem); }
  body.resp-tablet-type-compact .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(2.25rem,5.6vw,3.65rem); }
  body.resp-tablet-type-standard .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(2.55rem,6.1vw,4.15rem); }
  body.resp-tablet-type-large .nome-debutante[data-nome-muito-longo="1"] { font-size:clamp(2.85rem,6.7vw,4.6rem); }

  body.resp-tablet-crest-small { --crest-size:100px; }
  body.resp-tablet-crest-standard { --crest-size:135px; }
  body.resp-tablet-crest-large { --crest-size:175px; }
  body:is(.resp-tablet-crest-small,.resp-tablet-crest-standard,.resp-tablet-crest-large) .brasao { width:var(--crest-size);max-width:none; }
  body:is(.resp-tablet-crest-small,.resp-tablet-crest-standard,.resp-tablet-crest-large) .monograma { width:var(--crest-size);height:var(--crest-size);font-size:calc(var(--crest-size) * .34); }
  body:is(.resp-tablet-crest-small,.resp-tablet-crest-standard,.resp-tablet-crest-large) .monograma[data-iniciais="2"] { font-size:calc(var(--crest-size) * .28); }

  body.resp-tablet-corners-reduced .cantoneira { width:calc(var(--corner-size,140px) * .78);height:calc(var(--corner-size,140px) * .78); }
  body.resp-tablet-corners-hide .cantoneiras { display:none!important; }

  body.resp-tablet-gallery-2 .galeria:not(.galeria--faixa) { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.resp-tablet-gallery-3 .galeria:not(.galeria--faixa) { grid-template-columns:repeat(3,minmax(0,1fr)); }
  body.resp-tablet-gallery-4 .galeria:not(.galeria--faixa) { grid-template-columns:repeat(4,minmax(0,1fr)); }
}

@media print {
  /* Responsividade avançada — reset de impressão: a portaria/impressão continua compacta. */
  body[class*="resp-"] .secao { padding:.75rem 0; }
  body[class*="resp-"] .capa { padding:1rem 0; }
}

/* 4.0.10 — Theme Studio simples: papéis tipográficos explícitos */
.capa__frase { font-family: var(--font-cover-phrase, var(--font-title)); }
.capa__olho,
.capa__data,
.capa__hora { font-family: var(--font-cover-meta, var(--font-title)); }
.subtitulo { font-family: var(--font-subtitle, var(--font-title)); }
.contagem__numero,
.contagem__realizada { font-family: var(--font-countdown, var(--font-title)); }
.compromisso__hora,
.compromisso__nome { font-family: var(--font-schedule, var(--font-title)); }
.item__titulo,
.acordeao > summary,
.rsvp-identificacao h3 { font-family: var(--font-item, var(--font-title)); }

/* Divisor em arte. O asset é sempre ornamental e não interfere no conteúdo. */
body.divisor-estilo-image.tema-com-divisor-imagem .divisor {
  display:block;
  width:min(var(--divider-width, 288px), 92vw);
  max-width:none;
  height:clamp(34px, 8vw, 72px);
  margin:1rem auto 1.55rem;
  opacity:var(--divider-opacity, 1);
  background:var(--theme-divider-image) center / contain no-repeat;
}
body.divisor-estilo-image.tema-com-divisor-imagem .divisor::before,
body.divisor-estilo-image.tema-com-divisor-imagem .divisor::after,
body.divisor-estilo-image.tema-com-divisor-imagem .divisor__marca { display:none; }

/* Família visual dos ícones. A biblioteca de desenhos continua sendo a mesma. */
.item__icone { color:var(--theme-icon-color, var(--c-primary)); }
body.icones-familia-outline .item__icone {
  border:1px solid color-mix(in srgb,var(--theme-icon-color,var(--c-primary)) 52%,transparent);
  border-radius:50%;
  background:transparent;
  box-shadow:none;
}
body.icones-familia-soft .item__icone {
  border:0;
  border-radius:50%;
  background:color-mix(in srgb,var(--theme-icon-color,var(--c-primary)) 11%,var(--c-surface));
  box-shadow:none;
}
body.icones-familia-solid .item__icone {
  border:0;
  border-radius:50%;
  background:var(--theme-icon-color,var(--c-primary));
  color:var(--c-surface,#fff);
  box-shadow:none;
}
body.icones-familia-minimal .item__icone {
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
body.icones-familia-square .item__icone {
  border:1px solid color-mix(in srgb,var(--theme-icon-color,var(--c-primary)) 48%,transparent);
  border-radius:.55rem;
  background:color-mix(in srgb,var(--theme-icon-color,var(--c-primary)) 5%,var(--c-surface));
  box-shadow:none;
}
body.icones-familia-jewel .item__icone {
  border:1px solid color-mix(in srgb,var(--c-metal) 72%,transparent);
  border-radius:50% 50% 44% 56%;
  background:linear-gradient(145deg,color-mix(in srgb,var(--c-metal) 14%,var(--c-surface)),var(--c-surface));
  box-shadow:0 5px 14px color-mix(in srgb,var(--c-metal) 16%,transparent);
}

/* Densidade do tema: "normal" não sobrescreve o desenho histórico. */
body.densidade-tema-compact { --section-space:clamp(2.2rem,6vw,4rem); --card-padding:clamp(.9rem,2.6vw,1.35rem); }
body.densidade-tema-airy { --section-space:clamp(4.6rem,12vw,8rem); --card-padding:clamp(1.55rem,4.5vw,2.45rem); }
body.densidade-texto-compact { --theme-body-line-height:1.5; }
body.densidade-texto-normal { --theme-body-line-height:1.75; }
body.densidade-texto-airy { --theme-body-line-height:1.95; }
body[class*="densidade-texto-"] { line-height:var(--theme-body-line-height,1.75); }
body[class*="densidade-texto-"] .texto p,
body[class*="densidade-texto-"] .item__texto,
body[class*="densidade-texto-"] .compromisso__endereco,
body[class*="densidade-texto-"] .compromisso__nota { line-height:var(--theme-body-line-height,1.75); }

/* 4.0.11 — guia visual do tema e tamanho real dos ícones. */
.item__icone {
  width:var(--theme-icon-size, 38px);
  height:var(--theme-icon-size, 38px);
  min-width:var(--theme-icon-size, 38px);
}
.item__icone svg { width:calc(var(--theme-icon-size,38px) * .48);height:calc(var(--theme-icon-size,38px) * .48); }
.item__icone i { font-size:calc(var(--theme-icon-size,38px) * .45); }
.theme-guide-icon{display:none;width:72%;height:72%;background-color:currentColor;background-repeat:no-repeat;background-position:center;background-size:contain}
body.icones-familia-guide .item__icone{border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--theme-icon-color,var(--c-primary));}
body.icones-familia-guide .theme-icon-fallback{display:none}
body.icones-familia-guide .theme-guide-icon{display:block;background-color:transparent;background-image:var(--theme-guide-icon-fallback,none)}
body.icones-familia-guide .theme-guide-icon--traje-feminino{background-image:var(--theme-guide-icon-traje-feminino)}
body.icones-familia-guide .theme-guide-icon--traje-masculino{background-image:var(--theme-guide-icon-traje-masculino)}
body.icones-familia-guide .theme-guide-icon--horario{background-image:var(--theme-guide-icon-horario)}
body.icones-familia-guide .theme-guide-icon--data{background-image:var(--theme-guide-icon-data)}
body.icones-familia-guide .theme-guide-icon--local{background-image:var(--theme-guide-icon-local)}
body.icones-familia-guide .theme-guide-icon--mapa{background-image:var(--theme-guide-icon-mapa)}
body.icones-familia-guide .theme-guide-icon--estacionamento{background-image:var(--theme-guide-icon-estacionamento)}
body.icones-familia-guide .theme-guide-icon--carro{background-image:var(--theme-guide-icon-carro)}
body.icones-familia-guide .theme-guide-icon--presente{background-image:var(--theme-guide-icon-presente)}
body.icones-familia-guide .theme-guide-icon--musica{background-image:var(--theme-guide-icon-musica)}
body.icones-familia-guide .theme-guide-icon--valsa{background-image:var(--theme-guide-icon-valsa)}
body.icones-familia-guide .theme-guide-icon--camera{background-image:var(--theme-guide-icon-camera)}
body.icones-familia-guide .theme-guide-icon--galeria{background-image:var(--theme-guide-icon-galeria)}
body.icones-familia-guide .theme-guide-icon--confirmacao{background-image:var(--theme-guide-icon-confirmacao)}
body.icones-familia-guide .theme-guide-icon--mensagem{background-image:var(--theme-guide-icon-mensagem)}
body.icones-familia-guide .theme-guide-icon--telefone{background-image:var(--theme-guide-icon-telefone)}
body.icones-familia-guide .theme-guide-icon--whatsapp{background-image:var(--theme-guide-icon-whatsapp)}
body.icones-familia-guide .theme-guide-icon--acessibilidade{background-image:var(--theme-guide-icon-acessibilidade)}
body.icones-familia-guide .theme-guide-icon--regras{background-image:var(--theme-guide-icon-regras)}
body.icones-familia-guide .theme-guide-icon--informacao{background-image:var(--theme-guide-icon-informacao)}
body.icones-familia-guide .theme-guide-icon--festa{background-image:var(--theme-guide-icon-festa)}
body.icones-familia-guide .theme-guide-icon--bolo{background-image:var(--theme-guide-icon-bolo)}
body.icones-familia-guide .theme-guide-icon--bebida{background-image:var(--theme-guide-icon-bebida)}
body.icones-familia-guide .theme-guide-icon--comida{background-image:var(--theme-guide-icon-comida)}
body.icones-familia-guide .theme-guide-icon--cor{background-image:var(--theme-guide-icon-cor)}
body.icones-familia-guide .theme-guide-icon--estrela{background-image:var(--theme-guide-icon-estrela)}
body.icones-familia-guide .theme-guide-icon--coracao{background-image:var(--theme-guide-icon-coracao)}
body.icones-familia-guide .theme-guide-icon--coroa{background-image:var(--theme-guide-icon-coroa)}
body.icones-familia-guide .theme-guide-icon--joia{background-image:var(--theme-guide-icon-joia)}
body.icones-familia-guide .theme-guide-icon--magia{background-image:var(--theme-guide-icon-magia)}
body.icones-familia-guide .theme-guide-icon--idade{background-image:var(--theme-guide-icon-idade)}
body.icones-familia-guide .theme-guide-icon--convite{background-image:var(--theme-guide-icon-convite)}

/* Artes complementares da guia: sempre decorativas e fora do corredor de leitura. */
body.tema-com-guia-elementos .capa::before{content:"";position:absolute;left:50%;top:clamp(.4rem,2vw,1.2rem);transform:translateX(-50%);width:min(92vw,720px);height:clamp(100px,20vw,220px);background:var(--theme-cover-ornament-image) center top/contain no-repeat;pointer-events:none;z-index:1}
body.tema-com-guia-elementos .secao__interno::before{content:"";display:block;width:min(88vw,620px);height:clamp(48px,9vw,92px);margin:0 auto clamp(.35rem,1vw,.7rem);background:var(--theme-section-ornament-image) center/contain no-repeat;pointer-events:none;opacity:.92}
body.tema-com-guia-elementos .bloco__foto{position:relative;padding:clamp(.45rem,1.2vw,.8rem)}
body.tema-com-guia-elementos .bloco__foto::after{content:"";position:absolute;inset:0;background:var(--theme-photo-frame-image) center/100% 100% no-repeat;pointer-events:none;z-index:2}
body.tema-com-guia-elementos .rodape::before{width:min(78vw,520px);height:72px;margin:0 auto .5rem;background:var(--theme-footer-ornament-image) center/contain no-repeat;opacity:.9}
body.tema-com-guia-elementos .capa__olho::before{content:"";display:inline-block;width:1.4em;height:1.4em;margin-right:.38em;vertical-align:-.34em;background:var(--theme-accent-image) center/contain no-repeat;pointer-events:none}
/* Recoloração segura: os PNGs do guia viram máscaras alfa. */
body.icones-familia-guide .theme-guide-icon{background-image:none!important;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
body.icones-familia-guide .theme-guide-icon--traje-feminino{-webkit-mask-image:var(--theme-guide-icon-traje-feminino);mask-image:var(--theme-guide-icon-traje-feminino)}
body.icones-familia-guide .theme-guide-icon--traje-masculino{-webkit-mask-image:var(--theme-guide-icon-traje-masculino);mask-image:var(--theme-guide-icon-traje-masculino)}
body.icones-familia-guide .theme-guide-icon--horario{-webkit-mask-image:var(--theme-guide-icon-horario);mask-image:var(--theme-guide-icon-horario)}
body.icones-familia-guide .theme-guide-icon--data{-webkit-mask-image:var(--theme-guide-icon-data);mask-image:var(--theme-guide-icon-data)}
body.icones-familia-guide .theme-guide-icon--local{-webkit-mask-image:var(--theme-guide-icon-local);mask-image:var(--theme-guide-icon-local)}
body.icones-familia-guide .theme-guide-icon--mapa{-webkit-mask-image:var(--theme-guide-icon-mapa);mask-image:var(--theme-guide-icon-mapa)}
body.icones-familia-guide .theme-guide-icon--estacionamento{-webkit-mask-image:var(--theme-guide-icon-estacionamento);mask-image:var(--theme-guide-icon-estacionamento)}
body.icones-familia-guide .theme-guide-icon--carro{-webkit-mask-image:var(--theme-guide-icon-carro);mask-image:var(--theme-guide-icon-carro)}
body.icones-familia-guide .theme-guide-icon--presente{-webkit-mask-image:var(--theme-guide-icon-presente);mask-image:var(--theme-guide-icon-presente)}
body.icones-familia-guide .theme-guide-icon--musica{-webkit-mask-image:var(--theme-guide-icon-musica);mask-image:var(--theme-guide-icon-musica)}
body.icones-familia-guide .theme-guide-icon--valsa{-webkit-mask-image:var(--theme-guide-icon-valsa);mask-image:var(--theme-guide-icon-valsa)}
body.icones-familia-guide .theme-guide-icon--camera{-webkit-mask-image:var(--theme-guide-icon-camera);mask-image:var(--theme-guide-icon-camera)}
body.icones-familia-guide .theme-guide-icon--galeria{-webkit-mask-image:var(--theme-guide-icon-galeria);mask-image:var(--theme-guide-icon-galeria)}
body.icones-familia-guide .theme-guide-icon--confirmacao{-webkit-mask-image:var(--theme-guide-icon-confirmacao);mask-image:var(--theme-guide-icon-confirmacao)}
body.icones-familia-guide .theme-guide-icon--mensagem{-webkit-mask-image:var(--theme-guide-icon-mensagem);mask-image:var(--theme-guide-icon-mensagem)}
body.icones-familia-guide .theme-guide-icon--telefone{-webkit-mask-image:var(--theme-guide-icon-telefone);mask-image:var(--theme-guide-icon-telefone)}
body.icones-familia-guide .theme-guide-icon--whatsapp{-webkit-mask-image:var(--theme-guide-icon-whatsapp);mask-image:var(--theme-guide-icon-whatsapp)}
body.icones-familia-guide .theme-guide-icon--acessibilidade{-webkit-mask-image:var(--theme-guide-icon-acessibilidade);mask-image:var(--theme-guide-icon-acessibilidade)}
body.icones-familia-guide .theme-guide-icon--regras{-webkit-mask-image:var(--theme-guide-icon-regras);mask-image:var(--theme-guide-icon-regras)}
body.icones-familia-guide .theme-guide-icon--informacao{-webkit-mask-image:var(--theme-guide-icon-informacao);mask-image:var(--theme-guide-icon-informacao)}
body.icones-familia-guide .theme-guide-icon--festa{-webkit-mask-image:var(--theme-guide-icon-festa);mask-image:var(--theme-guide-icon-festa)}
body.icones-familia-guide .theme-guide-icon--bolo{-webkit-mask-image:var(--theme-guide-icon-bolo);mask-image:var(--theme-guide-icon-bolo)}
body.icones-familia-guide .theme-guide-icon--bebida{-webkit-mask-image:var(--theme-guide-icon-bebida);mask-image:var(--theme-guide-icon-bebida)}
body.icones-familia-guide .theme-guide-icon--comida{-webkit-mask-image:var(--theme-guide-icon-comida);mask-image:var(--theme-guide-icon-comida)}
body.icones-familia-guide .theme-guide-icon--cor{-webkit-mask-image:var(--theme-guide-icon-cor);mask-image:var(--theme-guide-icon-cor)}
body.icones-familia-guide .theme-guide-icon--estrela{-webkit-mask-image:var(--theme-guide-icon-estrela);mask-image:var(--theme-guide-icon-estrela)}
body.icones-familia-guide .theme-guide-icon--coracao{-webkit-mask-image:var(--theme-guide-icon-coracao);mask-image:var(--theme-guide-icon-coracao)}
body.icones-familia-guide .theme-guide-icon--coroa{-webkit-mask-image:var(--theme-guide-icon-coroa);mask-image:var(--theme-guide-icon-coroa)}
body.icones-familia-guide .theme-guide-icon--joia{-webkit-mask-image:var(--theme-guide-icon-joia);mask-image:var(--theme-guide-icon-joia)}
body.icones-familia-guide .theme-guide-icon--magia{-webkit-mask-image:var(--theme-guide-icon-magia);mask-image:var(--theme-guide-icon-magia)}
body.icones-familia-guide .theme-guide-icon--idade{-webkit-mask-image:var(--theme-guide-icon-idade);mask-image:var(--theme-guide-icon-idade)}
body.icones-familia-guide .theme-guide-icon--convite{-webkit-mask-image:var(--theme-guide-icon-convite);mask-image:var(--theme-guide-icon-convite)}

/* 4.0.14 — Renderer oficial do Sagaro Theme Composer 1.
   Tudo é opt-in por `composer-v1`; temas anteriores permanecem intactos. */
body.composer-v1.composer-com-page-texture::before { display:block;opacity:.16;background:var(--theme-page-texture-image) center/640px auto repeat; }

body.composer-v1 .capa { isolation:isolate;min-height:min(96svh,58rem); }
body.composer-v1.composer-com-cover-background .capa { background-image:linear-gradient(180deg,color-mix(in srgb,var(--c-bg) 58%,transparent),color-mix(in srgb,var(--c-bg) 72%,transparent)),var(--theme-cover-background-image);background-position:center;background-size:cover; }
body.composer-v1.composer-com-cover-ornament .capa::before { content:"";position:absolute;z-index:1;inset:0;background:var(--theme-cover-ornament-image) center/contain no-repeat;pointer-events:none; }
body.composer-v1.recipe-cover-framed .capa::after,
body.composer-v1.recipe-cover-royal .capa::after { content:"";position:absolute;z-index:2;inset:clamp(.75rem,3vw,2rem);border:1px solid color-mix(in srgb,var(--c-metal) 68%,transparent);outline:1px solid color-mix(in srgb,var(--c-metal) 25%,transparent);outline-offset:-.5rem;pointer-events:none; }
body.composer-v1.recipe-cover-minimal.composer-com-cover-ornament .capa::before { opacity:.22;background-size:72% auto;background-position:center bottom; }
body.composer-v1.recipe-cover-botanical.composer-com-cover-ornament .capa::before { background-size:min(96vw,900px) auto;background-position:center bottom; }
body.composer-v1.recipe-cover-cinematic .capa { min-height:100svh;background-position:center; }
body.composer-v1.recipe-cover-cinematic .capa::after { content:"";position:absolute;z-index:2;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--c-ink) 28%,transparent),transparent 32% 62%,color-mix(in srgb,var(--c-ink) 34%,transparent));pointer-events:none; }
body.composer-v1.recipe-cover-royal .monograma { border-width:3px;border-style:double;border-radius:50% 50% 42% 58%;box-shadow:0 10px 28px color-mix(in srgb,var(--c-metal) 22%,transparent); }

body.composer-v1.composer-com-section-ornament .secao__interno::after { content:"";position:absolute;z-index:-1;top:-1.1rem;right:-.65rem;width:clamp(70px,18vw,130px);aspect-ratio:1;background:var(--theme-section-ornament-image) center/contain no-repeat;opacity:.34;pointer-events:none; }
body.composer-v1.recipe-sections-clean .secao { background:transparent; }
body.composer-v1.recipe-sections-editorial .secao__interno { max-width:min(var(--content-width,46rem),88vw); }
body.composer-v1.recipe-sections-editorial .titulo-secao { text-align:left; }
body.composer-v1.recipe-sections-editorial .divisor { margin-left:0; }
body.composer-v1.recipe-sections-paper .secao__interno { padding:clamp(1.2rem,4vw,2.5rem);border:1px solid color-mix(in srgb,var(--c-line) 82%,transparent);border-radius:var(--radius);background:color-mix(in srgb,var(--c-surface) 88%,transparent);box-shadow:0 18px 48px color-mix(in srgb,var(--c-ink) 8%,transparent); }
body.composer-v1.recipe-sections-soft .secao:nth-of-type(even) { background:color-mix(in srgb,var(--c-bg-deep) 58%,transparent); }
body.composer-v1.recipe-sections-contrast .secao:nth-of-type(even) { color:var(--c-primary-ink);background:var(--c-primary); }
body.composer-v1.recipe-sections-contrast .secao:nth-of-type(even) :is(.titulo-secao,.texto,.item__titulo,.compromisso__local) { color:var(--c-primary-ink); }
body.composer-v1.recipe-sections-contrast .secao:nth-of-type(even) :is(.item__texto,.compromisso__endereco,.compromisso__nota) { color:color-mix(in srgb,var(--c-primary-ink) 88%,transparent); }

body.composer-v1.recipe-history-photo-led .bloco--com-foto { align-items:center;gap:clamp(1.5rem,5vw,4rem); }
body.composer-v1.composer-com-photo-frame .bloco__foto { position:relative;padding:clamp(.45rem,1.5vw,.9rem);overflow:visible; }
body.composer-v1.composer-com-photo-frame .bloco__foto::after { content:"";position:absolute;z-index:2;inset:0;background:var(--theme-photo-frame-image) center/100% 100% no-repeat;pointer-events:none; }
body.composer-v1.recipe-history-editorial .bloco--com-foto .texto { font-family:var(--font-title);font-size:1.12em; }
body.composer-v1.recipe-history-timeline .bloco--com-foto { display:grid;grid-template-columns:1fr; }
body.composer-v1.recipe-history-timeline .bloco--com-foto .texto { padding-left:1.4rem;border-left:1px solid var(--c-metal); }
body.composer-v1.recipe-history-cards .bloco--com-foto > * { padding:1.2rem;border:1px solid var(--c-line);border-radius:var(--radius);background:var(--card-bg);box-shadow:var(--shadow); }

body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item { padding:1rem;border:1px solid var(--c-line);border-radius:var(--radius);background:var(--card-bg);box-shadow:var(--shadow); }
body.composer-v1.recipe-items-list :is(.itens--grade,.itens--lista) { display:grid;grid-template-columns:1fr;gap:.7rem; }
body.composer-v1.recipe-items-list .item { max-width:none;padding-bottom:.7rem;border-bottom:1px solid var(--c-line); }
body.composer-v1.recipe-items-clean .item__icone { border:0;background:transparent; }

body.composer-v1.recipe-program-timeline .programacao { position:relative;padding-left:1.75rem; }
body.composer-v1.recipe-program-timeline .programacao::before { content:"";position:absolute;left:5px;top:.6rem;bottom:.6rem;width:1px;background:var(--c-metal);opacity:.7; }
body.composer-v1.recipe-program-timeline .compromisso::before { content:"";position:absolute;left:-1.75rem;top:.75rem;width:11px;height:11px;border:1px solid var(--c-metal);background:var(--c-bg);transform:rotate(45deg); }
body.composer-v1.recipe-program-timeline .compromisso { position:relative; }
body.composer-v1.recipe-program-cards .programacao .compromisso { padding:1.1rem;border:1px solid var(--c-line);border-radius:var(--radius);background:var(--card-bg);box-shadow:var(--shadow); }
body.composer-v1.recipe-program-minimal .programacao .compromisso { grid-template-columns:minmax(4rem,7rem) 1fr;padding:.7rem 0;border-bottom:1px solid var(--c-line); }

body.composer-v1.recipe-countdown-minimal .contagem__item { border:0;background:transparent;box-shadow:none; }
body.composer-v1.recipe-countdown-cards .contagem__item { box-shadow:var(--shadow); }
body.composer-v1.recipe-countdown-inline .contagem { flex-wrap:nowrap;gap:0; }
body.composer-v1.recipe-countdown-inline .contagem__item { min-width:0;flex:1;padding:.55rem .3rem;border:0;border-radius:0;background:transparent; }
body.composer-v1.recipe-countdown-inline .contagem__item+.contagem__item { border-left:1px solid var(--c-line); }

body.composer-v1.recipe-gallery-polaroid .galeria { gap:1rem; }
body.composer-v1.recipe-gallery-polaroid .galeria__foto { padding:.45rem .45rem 2rem;border-radius:2px;background:var(--c-surface);box-shadow:0 10px 25px color-mix(in srgb,var(--c-ink) 16%,transparent); }
body.composer-v1.recipe-gallery-polaroid .galeria__foto:nth-child(odd) { transform:rotate(-1.25deg); }
body.composer-v1.recipe-gallery-polaroid .galeria__foto:nth-child(even) { transform:rotate(1.25deg); }
body.composer-v1.recipe-gallery-editorial .galeria__foto:first-child { grid-column:1/-1;aspect-ratio:16/9; }
body.composer-v1.recipe-gallery-strip .galeria { display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.75rem; }
body.composer-v1.recipe-gallery-strip .galeria__foto { flex:0 0:min(76vw,22rem);scroll-snap-align:center; }

body.composer-v1.recipe-rsvp-minimal .rsvp-cartao { padding:0;border:0;background:transparent;box-shadow:none; }
body.composer-v1.recipe-rsvp-panel .rsvp-cartao { border:0;background:linear-gradient(145deg,color-mix(in srgb,var(--c-primary) 10%,var(--c-surface)),var(--c-surface)); }
body.composer-v1.recipe-rsvp-framed .rsvp-cartao { position:relative;border:1px solid var(--c-metal); }
body.composer-v1.recipe-rsvp-framed .rsvp-cartao::after { content:"";position:absolute;inset:8px;border:1px solid color-mix(in srgb,var(--c-metal) 50%,transparent);border-radius:calc(var(--radius,16px) - 4px);pointer-events:none; }

body.composer-v1.recipe-footer-minimal .rodape::before { width:2rem; }
body.composer-v1.recipe-footer-signature .rodape::before { width:min(12rem,44vw);background:linear-gradient(90deg,transparent,var(--c-metal),transparent); }

@media (min-width:700px) {
  body.composer-v1.recipe-history-photo-led .bloco--com-foto,
  body.composer-v1.recipe-history-editorial .bloco--com-foto { grid-template-columns:minmax(240px,.85fr) 1.15fr; }
  body.composer-v1.recipe-gallery-editorial .galeria { grid-template-columns:repeat(3,1fr); }
}
@media (max-width:560px) {
  body.composer-v1.composer-com-cover-ornament .capa::before { background-size:contain;background-position:center; }
  body.composer-v1.recipe-sections-paper .secao__interno { padding:1.1rem .9rem; }
  body.composer-v1.recipe-gallery-polaroid .galeria { gap:.55rem; }
  body.composer-v1.recipe-countdown-inline .contagem__numero { font-size:1.45rem; }
}
.item__presente-pix{display:inline-flex;align-items:center;justify-content:center;min-height:46px;margin-top:.45rem;padding:.65rem 1rem;border:1px solid currentColor;border-radius:999px;font-weight:700;text-decoration:none}

/* 4.0.35 — prévia compartilhável, sem ações reais */
.preview-share-notice-4035{position:sticky;top:0;z-index:9999;display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 14px;background:rgba(19,35,58,.94);color:#fff;font-family:Arial,sans-serif;font-size:13px;text-align:center;backdrop-filter:blur(10px)}.preview-share-notice-4035 strong{letter-spacing:.02em}.preview-share-notice-4035 span{opacity:.82}.rsvp-preview-note-4035{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:rgba(20,35,55,.07);font-size:.88rem;text-align:center}

/* 4.0.35 ajuste fino: retorno da prévia flutuante, sem deslocar o convite */
.retorno-editor{position:fixed;z-index:10000;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));inset:auto auto auto auto;display:block;min-height:0;padding:0;background:transparent;color:inherit;box-shadow:none;backdrop-filter:none}
.retorno-editor a{display:inline-flex;align-items:center;min-height:40px;padding:.48rem .86rem;border:1px solid rgba(255,255,255,.7);border-radius:999px;background:rgba(255,255,255,.94);color:#2d1b45;font:750 13px/1 system-ui,sans-serif;text-decoration:none;box-shadow:0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(10px)}
.retorno-editor span{display:none}.tem-retorno-editor{padding-top:0!important}.tem-retorno-editor .capa{height:100dvh;min-height:100dvh;max-height:100dvh}.tem-retorno-editor .musica{top:calc(64px + env(safe-area-inset-top))}

/* 4.0.40 — avisos que não podem passar despercebidos no convite */
.lista-preset--traje .item--reserved-color-4040{position:relative;margin-top:.55rem;padding:1rem!important;border:1px solid color-mix(in srgb,#d7a900 48%,var(--c-line));border-radius:var(--radius-sm,14px);background:linear-gradient(135deg,color-mix(in srgb,#fff1a8 48%,var(--c-surface)),var(--c-surface));box-shadow:0 8px 24px rgba(124,92,9,.08)}.lista-preset--traje .item--reserved-color-4040 .item__icone{background:#f3d45d!important;color:#5f4900!important}.lista-preset--traje .item--reserved-color-4040 .item__titulo{font-weight:800!important;color:color-mix(in srgb,#5f4900 76%,var(--c-ink))}.lista-preset--traje .item--reserved-color-4040 .item__texto{font-weight:600;color:var(--c-ink)}
.rsvp-companion-warning-4040{display:grid;grid-template-columns:38px minmax(0,1fr);gap:.75rem;align-items:start;padding:.9rem 1rem;border:1px solid #ddb842;border-radius:14px;background:#fff6c9;color:#4e3e08;box-shadow:0 7px 20px rgba(133,99,5,.08)}.rsvp-companion-warning-4040__icon{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:#f4d65f;color:#5e4907;font-size:1rem}.rsvp-companion-warning-4040 strong{display:block;margin:0 0 .18rem;font-size:.9rem}.rsvp-companion-warning-4040 p{margin:0;font-size:.82rem;line-height:1.48}.rsvp-companion-warning-4040 b{font-weight:850}.rsvp-companion-warning-final-4040{display:flex;align-items:flex-start;gap:.55rem;padding:.72rem .8rem;border:1px solid #e1c45e;border-radius:12px;background:#fffae4;color:#5b4809;font-size:.76rem;line-height:1.42}.rsvp-companion-warning-final-4040>i{margin-top:.1rem}.rsvp-companion-warning-final-4040 strong{display:block;margin-bottom:.08rem}.rsvp-membros-campo-4040 label{font-weight:800}
@media(max-width:430px){.rsvp-companion-warning-4040{grid-template-columns:34px minmax(0,1fr);padding:.8rem}.rsvp-companion-warning-4040__icon{width:32px;height:32px}.rsvp-companion-warning-4040 p{font-size:.77rem}}

/* 4.0.43 — o controle fixo de música não cobre o botão final do RSVP em telas estreitas. */
@media(max-width:520px){.tem-musica #confirmar .secao__interno{padding-bottom:calc(4.6rem + env(safe-area-inset-bottom))}}

/* 4.0.45 — contagem regressiva progressiva: unidades irrelevantes somem de verdade. */
.contagem__item[hidden]{display:none!important}
.contagem:has(.contagem__item:not([hidden])){align-items:stretch}

/* 4.0.45 — tinta específica para superfícies claras/escuras. */
.cartao{color:var(--c-surface-ink,var(--c-ink))}
.cartao :is(.item__texto,.compromisso__endereco,.compromisso__nota){color:var(--c-surface-ink-soft,var(--c-ink-soft))}
.contagem:not(.contagem--linha) .contagem__rotulo{color:var(--c-surface-ink-soft,var(--c-ink-soft))}


/* 4.0.51 — legibilidade é contrato, não preferência do tema.
   `primary` é ótimo como fundo/acento, mas nem sempre tem contraste suficiente
   como texto. Os tokens *_text são calculados no servidor para o fundo real. */
a { color:var(--c-primary-text,var(--c-primary)); }
.nome-debutante,
.assinatura,
.compromisso__hora { color:var(--c-primary-text,var(--c-primary)); }
.botao--contorno,
.botao-estilo-outline .botao:not(.botao--contorno) { color:var(--c-primary-text,var(--c-primary)); }
.botao-estilo-soft .botao:not(.botao--contorno) { color:var(--c-primary-text-surface,var(--c-primary-text,var(--c-primary))); }

/* Elementos que realmente pintam uma superfície usam tinta calculada para
   essa superfície. Isso é especialmente importante em temas escuros que têm
   cards claros. */
:is(.cartao,.contagem__item,.acordeao,.rsvp-membro,.rsvp__resposta) {
  color:var(--c-surface-ink,var(--c-ink));
}
:is(.cartao,.contagem__item,.acordeao,.rsvp-membro,.rsvp__resposta)
:is(.item__texto,.compromisso__endereco,.compromisso__nota,.acordeao__corpo,small,.contagem__rotulo) {
  color:var(--c-surface-ink-soft,var(--c-ink-soft));
}
.contagem__item .contagem__numero { color:var(--c-primary-text-surface,var(--c-surface-ink,var(--c-ink))); }
.acordeao > summary::after { color:var(--c-primary-text-surface,var(--c-surface-ink,var(--c-ink))); }
.rsvp-membro small { color:var(--c-surface-ink-soft,var(--c-ink-soft)); }

body.composer-v1.recipe-sections-paper .secao__interno,
body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item,
body.composer-v1.recipe-program-cards .programacao .compromisso,
body.composer-v1.recipe-history-cards .bloco--com-foto > *,
.tema-social-chic .secao,
.tema-lacre-imperial .secao {
  color:var(--c-surface-ink,var(--c-ink));
}
body.composer-v1.recipe-sections-paper .secao__interno :is(.item__texto,.compromisso__endereco,.compromisso__nota),
body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item .item__texto,
body.composer-v1.recipe-program-cards .programacao .compromisso :is(.compromisso__endereco,.compromisso__nota),
body.composer-v1.recipe-history-cards .bloco--com-foto > * .texto,
.tema-social-chic .secao :is(.item__texto,.compromisso__endereco,.compromisso__nota),
.tema-lacre-imperial .secao :is(.item__texto,.compromisso__endereco,.compromisso__nota) {
  color:var(--c-surface-ink-soft,var(--c-ink-soft));
}
body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item .item__icone,
body.composer-v1.recipe-program-cards .programacao .compromisso .compromisso__hora {
  color:var(--c-primary-text-surface,var(--c-surface-ink,var(--c-ink)));
}

/* Fotos e texturas continuam visíveis, mas nunca dominam o contraste. O wash
   mínimo do fundo é calculado no PHP; na capa do Composer a camada já chega
   com 58–72% de cor-base. */
body.fundo-base-image.tema-com-fundo-imagem { background-blend-mode:normal; }

/* Texto pequeno muito fino fica bonito em desktop e some no celular. A
   proteção só sobe o peso mínimo dos microtextos; títulos/nome não mudam. */
:is(.subtitulo,.item__texto,.compromisso__endereco,.compromisso__nota,.contagem__rotulo,.rodape,.acordeao__corpo) {
  font-weight:400;
}

/* 4.0.51 — piso tipográfico para leitura real no celular.
   Fontes de assinatura continuam decorativas no nome, mas informação nunca
   depende de corpo minúsculo, caixa-alta apertada ou fonte ornamental. */
.capa__olho { font-size:max(.82rem,13px); }
.capa__seta { font-size:max(.75rem,12px); }
.contagem__rotulo { font-size:max(.72rem,12px);letter-spacing:.14em; }
.compromisso__nome { font-size:max(.86rem,14px);letter-spacing:.16em; }
.item__titulo { font-size:max(.88rem,14px);letter-spacing:.10em; }
.campo > label { font-size:max(.82rem,13px);letter-spacing:.10em; }
.rodape { font-size:max(.84rem,13px); }
.rodape__ano { font-size:max(.76rem,12px); }

/* Presentes é informação prática: usa a fonte de leitura, não a fonte
   ornamental do título. Isso evita tamanhos e palavras difíceis de ler em
   combinações caligráficas. */
.lista-preset--presentes .item__titulo {
  font-family:var(--font-body,system-ui,sans-serif);
  font-size:clamp(.92rem,2.5vw,1rem);
  font-weight:650;
  letter-spacing:.025em;
  text-transform:none;
}
.lista-preset--presentes .item__texto {
  font-family:var(--font-body,system-ui,sans-serif);
  font-size:clamp(.92rem,2.5vw,1rem);
  font-weight:500;
  line-height:1.45;
  letter-spacing:0;
  text-transform:none;
}

/* Nomes muito longos não podem virar um bloco caligráfico impossível de ler.
   Nessa condição, priorizamos a família de títulos do próprio tema. */
.nome-debutante[data-nome-muito-longo="1"] {
  font-family:var(--font-title,Georgia,serif);
  font-style:normal;
  letter-spacing:min(var(--name-tracking,.04em),.06em);
}


/* 4.0.52 — mapa estático Geoapify */
.compromisso__mapa-estatico{margin:.85rem 0 0;overflow:hidden;border:1px solid var(--c-line);border-radius:calc(var(--radius,18px) * .82);background:var(--c-surface);box-shadow:0 8px 24px color-mix(in srgb,var(--c-ink) 8%,transparent)}
.compromisso__mapa-estatico img{display:block;width:100%;height:auto;aspect-ratio:5/2;object-fit:cover}
.compromisso__mapa-estatico figcaption{padding:.42rem .6rem;text-align:right;font:500 .64rem/1.25 var(--font-body,system-ui,sans-serif);color:var(--c-surface-ink-soft,var(--c-ink-soft));background:var(--c-surface)}
.compromisso__mapa-estatico figcaption a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* 4.0.53 — acabamento do endereço: dado prático nunca herda lettering
   ornamental, negrito, caixa alta ou tracking do tema. */
.compromisso__endereco{
  font-family:var(--font-body,system-ui,sans-serif)!important;
  font-size:clamp(.92rem,2.55vw,1rem);
  font-weight:400!important;
  font-style:normal!important;
  line-height:1.55;
  letter-spacing:0!important;
  text-transform:none!important;
}

/* 4.0.53 — Regras da festa são sempre duas colunas. Quando há quantidade
   ímpar, o último card ocupa a linha toda mas mantém a largura de uma coluna,
   centralizado. */
.lista-preset--regras :is(.itens--grade,.itens--lista){
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:.85rem!important;
  align-items:stretch;
  max-width:46rem;
  margin-inline:auto;
}
.lista-preset--regras :is(.itens--grade,.itens--lista)>.item{
  box-sizing:border-box;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:100%;
  margin:0!important;
  padding:.9rem!important;
  border:1px solid var(--c-line);
  border-radius:var(--radius-sm,14px);
  background:color-mix(in srgb,var(--c-surface) 94%,transparent);
}
.lista-preset--regras :is(.itens--grade,.itens--lista)>.item:last-child:nth-child(odd){
  grid-column:1/-1;
  width:calc(50% - .425rem)!important;
  justify-self:center;
}
@media(max-width:430px){
  .lista-preset--regras :is(.itens--grade,.itens--lista){gap:.55rem!important}
  .lista-preset--regras :is(.itens--grade,.itens--lista)>.item{padding:.62rem!important}
  .lista-preset--regras .item__icone{width:2.65rem;height:2.65rem}
  .lista-preset--regras .item__titulo{font-size:max(.78rem,12px);letter-spacing:.055em}
  .lista-preset--regras .item__texto{font-size:max(.82rem,13px);line-height:1.42}
  .lista-preset--regras :is(.itens--grade,.itens--lista)>.item:last-child:nth-child(odd){width:calc(50% - .275rem)!important}
}

/* 4.0.53 — cor reservada segue o tema. O amarelo fixo da 4.0.40 foi
   removido; o destaque continua forte por composição, borda e acento. */
.lista-preset--traje .item--reserved-color-4040{
  position:relative;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--c-primary) 42%,var(--c-line))!important;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c-primary) 9%,var(--c-surface)),var(--c-surface) 72%)!important;
  box-shadow:0 12px 30px color-mix(in srgb,var(--c-primary) 10%,transparent)!important;
}
.lista-preset--traje .item--reserved-color-4040::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:4px;
  background:linear-gradient(180deg,var(--c-primary),var(--c-metal));
}
.lista-preset--traje .item--reserved-color-4040 .item__icone{
  background:var(--c-primary)!important;
  color:var(--c-primary-ink,#fff)!important;
  border-color:transparent!important;
}
.lista-preset--traje .item--reserved-color-4040 .item__titulo{
  color:var(--c-surface-ink,var(--c-ink))!important;
  font-weight:750!important;
}
.lista-preset--traje .item--reserved-color-4040 .item__texto{
  color:var(--c-surface-ink-soft,var(--c-ink-soft))!important;
  font-weight:500!important;
}


/* =====================================================================
   4.0.54 — navegação, densidade e tipografia de leitura
   ===================================================================== */

/* O lettering do tema fica reservado aos pontos de identidade (nome da
   debutante, título principal e assinatura). Todo dado que o convidado precisa
   realmente ler usa a fonte de corpo, mesmo quando o tema escolhe uma fonte
   ornamental. */
:is(
  .capa__olho,.capa__subtitulo,.capa__data,.capa__hora,
  .subtitulo,.texto,.texto p,
  .contagem__numero,.contagem__rotulo,.contagem__realizada,
  .compromisso__hora,.compromisso__nome,.compromisso__local,
  .compromisso__endereco,.compromisso__nota,.compromisso__mapa-estatico figcaption,
  .item__titulo,.item__texto,.acordeao>summary,.acordeao__corpo,
  .rsvp-saudacao,.rsvp-identificacao h3,.rsvp-identificacao p,.rsvp-membro,.rsvp-membro small,
  .campo,.campo label,.campo input,.campo select,.campo textarea,
  .botao,.rodape,.rodape__marca,.rodape__ano,.musica
){
  font-family:var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
}
:is(.capa__subtitulo,.capa__data,.capa__hora,.subtitulo,.compromisso__nome,.item__titulo){
  font-style:normal!important;
  text-shadow:none;
}
.compromisso__nome,.item__titulo{
  letter-spacing:.035em!important;
  text-transform:none!important;
  font-weight:650!important;
}
.subtitulo{
  letter-spacing:.12em!important;
  line-height:1.45;
  margin-bottom:1.25rem;
}

/* Menos rolagem sem transformar o convite em uma página apertada. As receitas
   antigas de espaçamento mobile não podem reabrir grandes vazios. */
.secao{
  padding-top:clamp(1.55rem,3.8vw,2.15rem)!important;
  padding-bottom:clamp(1.55rem,3.8vw,2.15rem)!important;
}
.secao .divisor{margin-top:.65rem;margin-bottom:1rem;}
.secao .titulo-secao{margin-bottom:.24em;}
.secao .texto p{margin-bottom:.72em;}
.secao :is(.itens--grade,.itens--lista){row-gap:.72rem;}
@media(max-width:639px){
  body .secao,
  body.resp-mobile-spacing-compact .secao,
  body.resp-mobile-spacing-balanced .secao,
  body.resp-mobile-spacing-airy .secao{
    padding-top:1.25rem!important;
    padding-bottom:1.25rem!important;
  }
  body .secao--larga{padding-top:1.35rem!important;padding-bottom:1.35rem!important;}
  body .secao .divisor{margin:.55rem auto .85rem;}
  body .secao .subtitulo{margin-bottom:.85rem;}
}

/* =====================================================================
   4.0.55 — ações úteis sem menu persistente
   ===================================================================== */

/* O endereço continua sendo dado de leitura, mas agora pode ser copiado com
   uma ação discreta que não compete com o nome do local nem com o mapa. */
.compromisso__endereco-linha{display:flex;align-items:center;flex-wrap:wrap;gap:.42rem .65rem;margin-top:.12rem;}
.compromisso__endereco-linha .compromisso__endereco{flex:1 1 16rem;min-width:0;margin:0;}
.compromisso__copiar-endereco{
  appearance:none;
  -webkit-appearance:none;
  min-height:34px;
  padding:.38rem .68rem;
  border:1px solid color-mix(in srgb,var(--c-primary) 32%,var(--c-line));
  border-radius:999px;
  background:color-mix(in srgb,var(--c-primary) 7%,var(--c-surface));
  color:var(--c-primary);
  cursor:pointer;
  font:700 .72rem/1.1 var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
  letter-spacing:0!important;
  white-space:nowrap;
}
.compromisso__copiar-endereco:hover{background:color-mix(in srgb,var(--c-primary) 12%,var(--c-surface));}
.compromisso__copiar-endereco.is-copied{border-color:color-mix(in srgb,#2c7c55 55%,var(--c-line));color:#2c7c55;background:color-mix(in srgb,#2c7c55 8%,var(--c-surface));}
.compromisso__copiar-endereco:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px;}
.compromisso__copiar-feedback{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* A confirmação é a única ação persistente. Em vez de um menu com várias
   partes, há um CTA flutuante simples que some quando a própria seção de RSVP
   entra em foco ou quando a resposta é concluída. */
.rsvp-floating-cta{
  position:fixed;
  z-index:76;
  left:max(.75rem,env(safe-area-inset-left));
  right:max(.75rem,env(safe-area-inset-right));
  bottom:max(.72rem,env(safe-area-inset-bottom));
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.55rem;
  width:auto;
  min-height:50px;
  padding:.68rem 1rem;
  border:1px solid color-mix(in srgb,var(--c-primary) 78%,#fff);
  border-radius:999px;
  background:var(--c-primary);
  color:var(--c-primary-ink,#fff);
  box-shadow:0 12px 34px color-mix(in srgb,var(--c-primary) 32%,transparent);
  text-decoration:none;
  font:750 .86rem/1.1 var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
  letter-spacing:.01em!important;
  -webkit-tap-highlight-color:transparent;
  transition:opacity .18s ease,transform .18s ease,visibility .18s ease;
}
.rsvp-floating-cta>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--c-primary-ink,#fff) 18%,transparent);font-size:.8rem;}
.rsvp-floating-cta>strong{font:inherit;}
.rsvp-floating-cta:hover{filter:brightness(1.04);}
.rsvp-floating-cta:focus-visible{outline:3px solid color-mix(in srgb,var(--c-primary) 35%,#fff);outline-offset:3px;}
.rsvp-floating-cta.is-hidden{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(calc(100% + 1.1rem));}
.tem-musica .rsvp-floating-cta{right:max(4.35rem,calc(env(safe-area-inset-right) + 3.65rem));}
.rodape:has(+ *){isolation:auto;}

@media(min-width:640px){
  .rsvp-floating-cta{left:50%;right:auto;width:min(300px,calc(100% - 2rem));transform:translateX(-50%);}
  .rsvp-floating-cta.is-hidden{transform:translate(-50%,calc(100% + 1.1rem));}
  .tem-musica .rsvp-floating-cta{right:auto;}
}
@media(prefers-reduced-motion:reduce){.rsvp-floating-cta{transition:none;}}


/* 4.0.59 — Pix em destaque, comodidades junto do endereço e mais respiro nos flutuantes. */
.item--pix-highlight{
  position:relative;
  overflow:hidden;
  padding:1.05rem!important;
  border:1px solid color-mix(in srgb,var(--c-primary) 32%,var(--c-line))!important;
  border-radius:20px!important;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c-primary) 92%,transparent),color-mix(in srgb,var(--c-primary) 84%,var(--c-bg-deep)))!important;
  color:var(--c-primary-ink,#fff);
  box-shadow:0 16px 34px color-mix(in srgb,var(--c-primary) 18%,transparent)!important;
}
.item--pix-highlight .item__titulo,
.item--pix-highlight .item__texto,
.item--pix-highlight .item a{color:var(--c-primary-ink,#fff)!important}
.item--pix-highlight .item__icone{display:none}
.item--pix-highlight .item__presente-pix{
  position:relative;
  overflow:hidden;
  min-width:min(100%,270px);
  background:rgba(255,255,255,.08);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);
}
.gift-shimmer-lite{position:relative;overflow:hidden;isolation:isolate}
.gift-shimmer-lite::after{content:"";position:absolute;top:-40%;bottom:-40%;left:-42%;width:34%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.14),rgba(255,255,255,.55),rgba(255,255,255,.14),transparent);animation:gift-shimmer-sweep 2.8s ease-in-out infinite;pointer-events:none}
.compromisso__comodidades{display:grid;gap:.55rem;margin-top:.8rem}
.compromisso__comodidade{display:grid;grid-template-columns:2.6rem 1fr;gap:.85rem;align-items:start;padding:.8rem .9rem;border:1px solid color-mix(in srgb,var(--c-line) 88%,transparent);border-radius:16px;background:color-mix(in srgb,var(--c-surface) 96%,transparent)}
.compromisso__comodidade .item__titulo{margin:.1rem 0 .08rem}
.compromisso__comodidade .item__texto{line-height:1.45}
.compromisso__comodidade-icone{margin-top:.05rem}
.compromisso__nota--chegada{margin-top:.15rem;padding:.75rem .9rem;border-radius:14px;background:color-mix(in srgb,var(--c-primary) 5%,var(--c-surface));border-left:3px solid color-mix(in srgb,var(--c-primary) 42%,var(--c-line))}
.musica{right:max(1rem,calc(env(safe-area-inset-right) + .35rem));bottom:max(1rem,calc(env(safe-area-inset-bottom) + .15rem))}
@media (max-width:520px){.musica{right:max(.95rem,calc(env(safe-area-inset-right) + .55rem));bottom:max(.95rem,calc(env(safe-area-inset-bottom) + .25rem));box-shadow:0 10px 26px rgba(0,0,0,.18)}}
.rsvp-floating-cta{box-shadow:0 14px 36px color-mix(in srgb,var(--c-primary) 35%,transparent),0 0 0 1px color-mix(in srgb,var(--c-primary) 18%,transparent)}
@keyframes rsvp-glow{0%,100%{box-shadow:0 14px 36px color-mix(in srgb,var(--c-primary) 30%,transparent),0 0 0 0 color-mix(in srgb,var(--c-primary) 0%,transparent)}50%{box-shadow:0 18px 42px color-mix(in srgb,var(--c-primary) 40%,transparent),0 0 0 10px color-mix(in srgb,var(--c-primary) 0%,transparent)}}
@media(prefers-reduced-motion:no-preference){.rsvp-floating-cta{animation:rsvp-glow 2.8s ease-in-out infinite}}
@keyframes gift-shimmer-sweep{0%{left:-45%;opacity:0}10%{opacity:1}55%{left:118%;opacity:1}100%{left:118%;opacity:0}}
@media(prefers-reduced-motion:reduce){.gift-shimmer-lite::after,.rsvp-floating-cta{animation:none}}

/* =====================================================================
   4.0.60 — regras consistentes e ícones dentro da área segura
   ===================================================================== */
/* Reforço final: regras permanecem em duas colunas mesmo sob receitas de tema
   carregadas anteriormente. A última, quando ímpar, continua centralizada. */
.lista-preset--regras :is(.itens--grade,.itens--lista){
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:.55rem!important;
  max-width:46rem!important;
  margin-inline:auto!important;
}
.lista-preset--regras :is(.itens--grade,.itens--lista)>.item{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  padding:.68rem!important;
  overflow:hidden;
}
.lista-preset--regras :is(.itens--grade,.itens--lista)>.item:last-child:nth-child(odd){
  grid-column:1/-1!important;
  width:calc(50% - .275rem)!important;
  justify-self:center!important;
}
.lista-preset--regras .item__icone{
  position:static!important;
  box-sizing:border-box;
  max-width:100%;
  margin:.05rem auto .2rem!important;
  flex:none;
}
.lista-preset--regras .item>div{min-width:0;width:100%}

/* Comodidades novas ficam dentro do endereço. Nada pode “vazar” do card. */
.compromisso__comodidades{width:100%;max-width:100%;overflow:hidden}
.compromisso__comodidade{
  box-sizing:border-box;
  width:100%;
  max-width:100%;
  grid-template-columns:2.45rem minmax(0,1fr)!important;
  gap:.68rem!important;
  padding:.68rem .72rem!important;
  overflow:hidden;
}
.compromisso__comodidade>div{min-width:0}
.compromisso__comodidade .item__icone{
  position:static!important;
  width:2.35rem!important;
  height:2.35rem!important;
  min-width:2.35rem!important;
  margin:0!important;
  box-sizing:border-box;
}
.compromisso__comodidade .item__titulo,
.compromisso__comodidade .item__texto{overflow-wrap:anywhere}

/* O controle de música usa o ícone do próprio tema e fica mais para dentro da
   safe-area. O triângulo/pausa continua como estado funcional discreto. */
.musica__icone{
  position:relative;
  display:grid!important;
  place-items:center;
  width:1.45rem;
  height:1.45rem;
  min-width:1.45rem!important;
}
.musica__tema-icone{display:grid;place-items:center;width:1.15rem;height:1.15rem}
.musica__tema-icone .theme-guide-icon,
.musica__tema-icone .theme-icon-fallback{width:100%;height:100%}
.musica__tema-icone svg{width:100%;height:100%}
.musica__estado-icone{
  position:absolute;
  right:-.28rem;
  bottom:-.24rem;
  display:grid;
  place-items:center;
  min-width:.72rem;
  height:.72rem;
  padding:0 .08rem;
  border-radius:999px;
  background:var(--c-surface,#fff);
  color:var(--c-primary);
  font:800 .42rem/1 system-ui,sans-serif;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--c-primary) 22%,transparent);
}
@media(max-width:520px){
  .musica{
    right:max(1.2rem,calc(env(safe-area-inset-right) + .8rem))!important;
    bottom:max(1.1rem,calc(env(safe-area-inset-bottom) + .4rem))!important;
  }
  .lista-preset--regras :is(.itens--grade,.itens--lista)>.item{padding:.58rem!important}
  .lista-preset--regras .item__titulo{font-size:max(.75rem,12px)!important;line-height:1.25!important}
  .lista-preset--regras .item__texto{font-size:max(.79rem,12.5px)!important;line-height:1.35!important}
}


/* 4.0.61 — Pix primeiro e reconhecível na lista de presentes. */
.lista-preset--presentes .item--pix-highlight{
  display:grid!important;
  grid-template-columns:3rem minmax(0,1fr)!important;
  gap:.8rem!important;
  align-items:center!important;
  text-align:left!important;
  border-radius:20px!important;
  padding:.9rem 1rem!important;
}
.lista-preset--presentes .item--pix-highlight .item__icone{
  display:grid!important;
  width:3rem!important;
  height:3rem!important;
  margin:0!important;
  border:1px solid color-mix(in srgb,var(--c-primary-ink,#fff) 42%,transparent)!important;
  background:color-mix(in srgb,var(--c-primary-ink,#fff) 12%,transparent)!important;
  color:var(--c-primary-ink,#fff)!important;
  border-radius:50%!important;
}
.lista-preset--presentes .item--pix-highlight .item__icone i{font-size:1.35rem!important}
.lista-preset--presentes .item--pix-highlight>div{min-width:0;text-align:left}.lista-preset--presentes .item--pix-highlight .item__titulo{font-size:.95rem!important}.lista-preset--presentes .item--pix-highlight .item__texto{font-size:.78rem!important;text-transform:none!important;letter-spacing:0!important;line-height:1.4!important}
.lista-preset--presentes .item--pix-highlight .item__presente-pix{min-height:42px;margin-top:.45rem;padding:.55rem .9rem}
@media(max-width:520px){.lista-preset--presentes .item--pix-highlight{grid-template-columns:2.65rem minmax(0,1fr)!important;padding:.78rem .8rem!important}.lista-preset--presentes .item--pix-highlight .item__icone{width:2.65rem!important;height:2.65rem!important}}


/* =====================================================================
   4.0.62 — Traje coerente, centro óptico e RSVP realmente visível
   ===================================================================== */
/* Traje deixa de parecer texto solto: orientação e cor reservada usam a mesma
   linguagem de card, com ícone dentro da área segura e texto de leitura. */
.lista-preset--traje :is(.itens--lista,.itens--grade){
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:.72rem!important;
  width:min(100%,38rem)!important;
  margin-inline:auto!important;
}
.lista-preset--traje .item{
  box-sizing:border-box;
  display:grid!important;
  grid-template-columns:2.7rem minmax(0,1fr)!important;
  align-items:center!important;
  gap:.78rem!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  padding:.86rem .9rem!important;
  border:1px solid color-mix(in srgb,var(--c-line) 82%,var(--c-primary) 18%)!important;
  border-radius:16px!important;
  background:var(--c-surface)!important;
  box-shadow:0 10px 26px color-mix(in srgb,var(--c-ink) 8%,transparent)!important;
  color:var(--c-surface-ink,var(--c-ink))!important;
  text-align:left!important;
  overflow:hidden!important;
}
.lista-preset--traje .item>div{min-width:0!important;width:100%!important}
.lista-preset--traje .item__icone{
  position:static!important;
  width:2.7rem!important;
  height:2.7rem!important;
  min-width:2.7rem!important;
  margin:0!important;
  border-radius:50%!important;
  background:color-mix(in srgb,var(--c-primary) 9%,var(--c-surface))!important;
  color:var(--c-primary-text-surface,var(--c-primary))!important;
  border:1px solid color-mix(in srgb,var(--c-primary) 25%,var(--c-line))!important;
}
.lista-preset--traje .item__titulo{
  margin:0!important;
  color:var(--c-surface-ink,var(--c-ink))!important;
  font-family:var(--font-body,system-ui,sans-serif)!important;
  font-size:max(.92rem,15px)!important;
  font-weight:700!important;
  line-height:1.35!important;
  letter-spacing:.01em!important;
  text-transform:none!important;
  overflow-wrap:anywhere;
}
.lista-preset--traje .item__texto{
  margin:.18rem 0 0!important;
  color:var(--c-surface-ink-soft,var(--c-ink-soft))!important;
  font-family:var(--font-body,system-ui,sans-serif)!important;
  font-size:max(.86rem,14px)!important;
  font-weight:500!important;
  line-height:1.42!important;
}
.lista-preset--traje .item--dress-main-4062{
  border-color:color-mix(in srgb,var(--c-primary) 32%,var(--c-line))!important;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c-primary) 5%,var(--c-surface)),var(--c-surface))!important;
}
.lista-preset--traje .item--reserved-color-4040{
  margin-top:0!important;
  border-color:color-mix(in srgb,var(--c-primary) 38%,var(--c-line))!important;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c-primary) 8%,var(--c-surface)),var(--c-surface))!important;
  box-shadow:0 10px 26px color-mix(in srgb,var(--c-primary) 9%,transparent)!important;
}
.lista-preset--traje .item--reserved-color-4040::before{width:3px!important;background:var(--c-primary)!important}
.lista-preset--traje .item--reserved-color-4040 .item__icone{
  background:var(--c-primary)!important;
  color:var(--c-primary-ink,#fff)!important;
  border-color:transparent!important;
}
.lista-preset--traje .item--reserved-color-4040 .item__titulo{color:var(--c-surface-ink,var(--c-ink))!important}
.lista-preset--traje .item--reserved-color-4040 .item__texto{color:var(--c-surface-ink-soft,var(--c-ink-soft))!important}

/* Títulos longos ficam balanceados e centralizados no mesmo eixo da seção.
   Corrige o efeito de “Detalhes escolhidos com carinho” visualmente puxado. */
.secao__interno>.titulo-secao{
  box-sizing:border-box;
  width:fit-content;
  max-width:min(100%,22ch);
  margin-left:auto!important;
  margin-right:auto!important;
  padding-inline:.08em;
  text-align:center!important;
  text-wrap:balance;
  overflow-wrap:normal;
  word-break:normal;
}
.secao__interno>.titulo-secao + .divisor{margin-left:auto!important;margin-right:auto!important}
@media(max-width:639px){
  .secao{padding-left:1rem!important;padding-right:1rem!important}
  .secao__interno{width:100%!important;max-width:100%!important;margin-inline:auto!important}
  .secao__interno>.titulo-secao{max-width:min(100%,20ch);line-height:1.18!important}
  .galeria:not(.galeria--faixa){width:100%!important;margin-inline:auto!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .galeria__foto{min-width:0!important;max-width:100%!important;margin:0!important}
}

/* O CTA de presença fica acima do controle de música e nunca é removido por
   receitas de tema. Ele só se esconde quando a própria seção entra em vista. */
.rsvp-floating-cta{
  display:flex!important;
  z-index:90!important;
  visibility:visible;
}
.rsvp-floating-cta.is-hidden{visibility:hidden!important}
@media(max-width:639px){
  .tem-musica .rsvp-floating-cta{
    left:1rem!important;
    right:5.3rem!important;
    width:auto!important;
    bottom:max(1rem,calc(env(safe-area-inset-bottom) + .35rem))!important;
  }
}


/* 4.0.63 — presentes só existem quando foram escolhidos; linhas reais nunca
   podem colapsar em uma coluna estreita por herança de receitas do tema. */
.lista-preset--presentes .itens--lista{
  width:min(100%,42rem)!important;
  margin-inline:auto!important;
}
.lista-preset--presentes .itens--lista>.item:not(.item--pix-highlight){
  box-sizing:border-box!important;
  display:block!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  grid-template-columns:1fr!important;
}
.lista-preset--presentes .itens--lista>.item:not(.item--pix-highlight)>div{
  width:100%!important;
  min-width:0!important;
}


/* 4.0.66 — aceite obrigatório da política de acompanhantes no RSVP. */
.rsvp-guest-policy-ack{
  display:grid;grid-template-columns:1.55rem minmax(0,1fr);gap:.7rem;align-items:start;
  padding:.85rem .9rem;border:1px solid color-mix(in srgb,var(--c-primary) 26%,var(--c-line));
  border-radius:14px;background:color-mix(in srgb,var(--c-primary) 5%,var(--c-surface));
  color:var(--c-surface-ink,var(--c-ink));cursor:pointer;font-size:.8rem;line-height:1.45;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.rsvp-guest-policy-ack input{position:absolute;opacity:0;pointer-events:none}
.rsvp-guest-policy-ack__box{
  display:grid;place-items:center;width:1.45rem;height:1.45rem;margin-top:.05rem;border:1.5px solid color-mix(in srgb,var(--c-primary) 54%,var(--c-line));
  border-radius:7px;background:var(--c-surface);color:transparent;transition:.18s ease;
}
.rsvp-guest-policy-ack input:checked + .rsvp-guest-policy-ack__box{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-primary-ink,#fff)}
.rsvp-guest-policy-ack input:focus-visible + .rsvp-guest-policy-ack__box{outline:3px solid color-mix(in srgb,var(--c-primary) 24%,transparent);outline-offset:2px}
.rsvp-guest-policy-ack strong{font-weight:800}
.rsvp-guest-policy-ack.is-error{border-color:#b93a3a;background:#fff1f1;box-shadow:0 0 0 2px rgba(185,58,58,.08)}
@media(max-width:430px){.rsvp-guest-policy-ack{padding:.78rem .8rem;font-size:.77rem}}


/* 4.0.67 - tarja de conversao somente na previa privada da cliente. */
.preview-publish-banner-4067{position:fixed;z-index:110;top:0;left:0;right:0;min-height:48px;display:flex;align-items:center;justify-content:center;gap:1rem;padding:.45rem max(.8rem,env(safe-area-inset-left)) .45rem max(.8rem,env(safe-area-inset-right));background:rgba(24,19,29,.94);color:#fff;backdrop-filter:blur(14px);box-shadow:0 5px 18px rgba(0,0,0,.18);font-family:var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important}.preview-publish-banner-4067 span{display:flex;align-items:baseline;gap:.4rem;min-width:0}.preview-publish-banner-4067 strong{font-size:.78rem;white-space:nowrap}.preview-publish-banner-4067 small{opacity:.78;font-size:.7rem;white-space:nowrap}.preview-publish-banner-4067 a{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:.42rem .8rem;border-radius:999px;background:#fff;color:#3a214a;text-decoration:none;font-size:.75rem;font-weight:850;white-space:nowrap}.tem-publicar-agora-4067{padding-top:48px}.tem-publicar-agora-4067 .retorno-editor{top:48px}.tem-publicar-agora-4067.tem-retorno-editor{padding-top:100px!important}.tem-publicar-agora-4067.tem-retorno-editor .musica{top:calc(112px + env(safe-area-inset-top))}@media(max-width:520px){.preview-publish-banner-4067{justify-content:space-between;gap:.55rem;min-height:46px}.preview-publish-banner-4067 small{display:none}.preview-publish-banner-4067 strong{font-size:.72rem}.preview-publish-banner-4067 a{min-height:32px;padding:.38rem .7rem}.tem-publicar-agora-4067{padding-top:46px}.tem-publicar-agora-4067.tem-retorno-editor{padding-top:94px!important}}@media(prefers-reduced-motion:reduce){.preview-publish-banner-4067{backdrop-filter:none}}


/* 4.0.68 — ajuste estritamente visual/comportamental do RSVP solicitado. */
.rsvp-cartao--simples{padding:clamp(.85rem,2.2vw,1.15rem)!important}
.rsvp-cartao--simples .formulario{gap:.65rem!important}
.rsvp-etapa{gap:.58rem!important;margin-top:.7rem!important}
.rsvp-cartao--simples .campo{margin-bottom:.15rem!important}
.rsvp-cartao--simples .campo>label,.rsvp-cartao--simples .campo__rotulo{margin-bottom:.35rem!important}
.rsvp-cartao--simples .rsvp-membros{gap:.42rem!important}
.rsvp-cartao--simples .rsvp-membro{padding:.55rem .65rem!important;gap:.25rem!important}
.rsvp-cartao--simples .rsvp-membro__topo{gap:.5rem!important}
.rsvp-companion-warning-4040{grid-template-columns:30px minmax(0,1fr)!important;gap:.6rem!important;padding:.68rem .75rem!important;border-radius:12px!important;box-shadow:none!important}
.rsvp-companion-warning-4040__icon{width:28px!important;height:28px!important;border-radius:8px!important;font-size:.85rem!important}
.rsvp-companion-warning-4040__icon :is(svg,.theme-icon-fallback svg){width:16px!important;height:16px!important}
.rsvp-companion-warning-4040 strong{font-size:.82rem!important;margin-bottom:.08rem!important}
.rsvp-companion-warning-4040 p{font-size:.76rem!important;line-height:1.38!important}
.rsvp-guest-policy-ack{grid-template-columns:1.35rem minmax(0,1fr)!important;gap:.55rem!important;padding:.62rem .72rem!important;border-radius:11px!important;font-size:.78rem!important;line-height:1.3!important}
.rsvp-guest-policy-ack__box{width:1.25rem!important;height:1.25rem!important;border-radius:6px!important}
.rsvp-saudacao{display:grid;gap:.12rem;padding:.68rem .78rem!important;font-family:var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;font-size:.9rem!important;line-height:1.38!important}
.rsvp-saudacao__ola{display:block}
.rsvp-saudacao__nome{font-size:1.28em;font-weight:850;letter-spacing:-.015em}
.rsvp-saudacao__texto{display:block;color:inherit}
.rsvp-message-field{display:grid;gap:.28rem}
.rsvp-message-field label{margin-bottom:0!important}
.rsvp-message-help{margin:0;color:var(--c-surface-ink-soft,var(--c-ink-soft));font-size:.74rem;line-height:1.35}
.rsvp-message-field textarea{min-height:78px!important}
.rsvp-respostas-lista{margin-top:.45rem!important}
.rsvp-cartao--simples #rsvp-enviar,.rsvp-cartao--simples #rsvp-trocar-telefone{min-height:42px!important}
@media(max-width:430px){
  .rsvp-cartao--simples{padding:.72rem!important}
  .rsvp-companion-warning-4040{grid-template-columns:28px minmax(0,1fr)!important;padding:.62rem .68rem!important}
  .rsvp-guest-policy-ack{padding:.58rem .65rem!important;font-size:.75rem!important}
  .rsvp-saudacao__nome{font-size:1.34em}
}

/* =====================================================================
   4.0.69 — contraste, alinhamento e ícones como contratos de renderização
   ===================================================================== */
.icon-safety-fallback{display:none!important;width:1em;height:1em}.icon-font-missing .icon-font-candidate{display:none!important}.icon-font-missing .icon-safety-fallback{display:block!important}
.item__icone :is(.theme-icon-fallback,.theme-guide-icon,.icon-font-candidate){width:100%;height:100%;place-items:center}.item__icone .theme-icon-fallback{display:grid}.item__icone svg{display:block;width:62%;height:62%;margin:auto}
.lista-preset--regras :is(.itens--grade,.itens--lista)>.item{
  border:1px solid color-mix(in srgb,var(--c-primary) 18%,var(--c-line))!important;
  background:color-mix(in srgb,var(--c-surface) 96%,var(--c-primary) 4%)!important;
  color:var(--c-surface-ink,var(--c-ink))!important;
  box-shadow:0 8px 24px color-mix(in srgb,var(--c-ink) 7%,transparent)!important;
}
.lista-preset--regras .item__titulo{color:var(--c-surface-ink,var(--c-ink))!important;font-family:var(--font-body,system-ui,sans-serif)!important;font-weight:800!important}
.lista-preset--regras .item__texto{color:var(--c-surface-ink-soft,var(--c-ink-soft))!important;font-family:var(--font-body,system-ui,sans-serif)!important;font-weight:500!important}
.lista-preset--presentes .item--pix-highlight{
  background:var(--c-primary)!important;color:var(--c-primary-ink,#fff)!important;
  border-color:color-mix(in srgb,var(--c-primary-ink,#fff) 38%,transparent)!important;
  box-shadow:0 12px 28px color-mix(in srgb,var(--c-primary) 24%,transparent)!important;
}
.lista-preset--presentes .item--pix-highlight :is(.item__titulo,.item__texto,.item__presente-pix,.item__icone){color:var(--c-primary-ink,#fff)!important;font-family:var(--font-body,system-ui,sans-serif)!important}
.lista-preset--presentes .item--pix-highlight .item__presente-pix{border:1px solid color-mix(in srgb,var(--c-primary-ink,#fff) 72%,transparent)!important;background:color-mix(in srgb,var(--c-primary-ink,#fff) 10%,transparent)!important;text-decoration:none!important;font-weight:800!important}
.lista-preset--presentes :is(.itens--grade,.itens--lista){grid-template-columns:repeat(2,minmax(0,1fr))!important;align-items:stretch!important}
.lista-preset--presentes .item{min-width:0!important;align-content:start!important}.lista-preset--presentes .item>div{min-width:0!important}.lista-preset--presentes :is(.item__titulo,.item__texto){font-family:var(--font-body,system-ui,sans-serif)!important;overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important;white-space:normal!important}
.lista-preset--presentes .item--pix-highlight{grid-column:auto!important}.lista-preset--presentes .item--pix-highlight:only-child{grid-column:1/-1!important;width:min(100%,34rem)!important;justify-self:center!important}
@media(max-width:620px){.lista-preset--presentes :is(.itens--grade,.itens--lista){grid-template-columns:1fr!important}.lista-preset--presentes .item--pix-highlight{grid-column:1!important}}

/* =====================================================================
   4.5 — primeira dobra, prévia compacta e controles móveis seguros
   ===================================================================== */
html,body{width:100%;max-width:100%;overflow-x:clip!important;overscroll-behavior-x:none;touch-action:pan-y!important}.pagina-convite,.convite,.secao,.capa{width:100%;max-width:100%;overflow-x:clip}.pagina-convite{touch-action:pan-y!important}.convite :is(img,video,iframe,svg){max-width:100%}
.preview-publish-banner-4067{display:none!important}.tem-publicar-agora-4067{padding-top:0!important}.retorno-editor--450{top:max(10px,env(safe-area-inset-top))!important;left:max(10px,env(safe-area-inset-left))!important}.retorno-editor--450 a{display:grid!important;gap:.08rem;min-height:44px!important;padding:.5rem .78rem!important;background:rgba(24,21,29,.86)!important;color:#fff!important;border:1px solid rgba(255,255,255,.28)!important}.retorno-editor--450 a small{display:block!important;color:rgba(255,255,255,.7);font:700 .55rem/1 system-ui,sans-serif;letter-spacing:.09em;text-transform:uppercase}.retorno-editor--450 a strong{font:800 .72rem/1.15 system-ui,sans-serif}.tem-retorno-editor{padding-top:0!important}.tem-retorno-editor .capa{height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important}
.capa .botao[href="#depois-da-capa"]{position:relative;isolation:isolate;overflow:hidden;min-height:52px;padding:.82rem 1.45rem!important;box-shadow:0 14px 34px color-mix(in srgb,var(--c-primary) 30%,transparent),0 0 0 1px color-mix(in srgb,var(--c-primary-ink,#fff) 30%,transparent)!important;font-weight:900!important;letter-spacing:.02em}.capa .botao[href="#depois-da-capa"]::after{content:"";position:absolute;z-index:-1;inset:-40% auto -40% -55%;width:38%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:abrir-convite-reflexo-450 3.8s ease-in-out infinite}
@keyframes abrir-convite-reflexo-450{0%,48%{left:-55%;opacity:0}55%{opacity:1}78%{left:125%;opacity:0}100%{left:125%;opacity:0}}@keyframes abrir-convite-pulso-450{0%,88%,100%{transform:translateY(0)}92%{transform:translateY(-4px)}96%{transform:translateY(0)}}
@media(prefers-reduced-motion:no-preference){.capa .botao[href="#depois-da-capa"]{animation:abrir-convite-pulso-450 4.8s ease-in-out infinite}}
.rsvp-floating-cta{left:auto!important;right:max(1rem,env(safe-area-inset-right))!important;bottom:max(1rem,env(safe-area-inset-bottom))!important;width:auto!important;min-height:44px!important;padding:.55rem .8rem!important;font-size:.76rem!important;box-shadow:0 10px 24px color-mix(in srgb,var(--c-primary) 24%,transparent)!important;animation:none!important;transform:none!important}.rsvp-floating-cta>span{width:21px!important;height:21px!important}.rsvp-floating-cta.is-hidden{transform:translateY(calc(100% + 1.2rem))!important}.tem-musica .rsvp-floating-cta{right:max(5.1rem,calc(env(safe-area-inset-right) + 4.5rem))!important}
@media(max-width:520px){.convite :is(input,select,textarea){font-size:16px!important}.rsvp-floating-cta{max-width:calc(100% - 2rem)!important}.tem-musica .rsvp-floating-cta{left:1rem!important;right:5.1rem!important;justify-content:center}.retorno-editor--450 a{min-height:42px!important;padding:.45rem .68rem!important}}
@media(prefers-reduced-motion:reduce){.capa .botao[href="#depois-da-capa"],.capa .botao[href="#depois-da-capa"]::after{animation:none!important}}

/* =====================================================================
   4.5.2 — contraste do cartão real e leitura prática em todos os temas
   ===================================================================== */
/* Cartões transparentes e semitransparentes não usam mais, por engano, a
   tinta calculada apenas para uma superfície opaca. Os tokens `card-*` já
   consideram o fundo final, inclusive as duas pontas do degradê. */
:is(
  .cartao,.contagem__item,.acordeao,.rsvp-membro,.rsvp__resposta,
  .lista-preset--traje .item,.lista-preset--regras .item,
  .lista-preset--presentes .item:not(.item--pix-highlight),
  .compromisso__comodidade,.tema-social-chic .item,
  body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item,
  body.composer-v1.recipe-program-cards .programacao .compromisso,
  body.composer-v1.recipe-history-cards .bloco--com-foto>*
){color:var(--c-card-ink,var(--c-surface-ink,var(--c-ink)))!important}
:is(
  .cartao,.contagem__item,.acordeao,.rsvp-membro,.rsvp__resposta,
  .lista-preset--traje .item,.lista-preset--regras .item,
  .lista-preset--presentes .item:not(.item--pix-highlight),
  .compromisso__comodidade,.tema-social-chic .item,
  body.composer-v1.recipe-items-cards :is(.itens--grade,.itens--lista) .item,
  body.composer-v1.recipe-program-cards .programacao .compromisso,
  body.composer-v1.recipe-history-cards .bloco--com-foto>*
) :is(.item__texto,.compromisso__endereco,.compromisso__nota,.acordeao__corpo,.contagem__rotulo,.rsvp-message-help,small){color:var(--c-card-ink-soft,var(--c-surface-ink-soft,var(--c-ink-soft)))!important}
:is(.cartao,.contagem__item,.acordeao,.rsvp-membro,.rsvp__resposta) :is(h3,p,label,legend,.campo__rotulo,.rsvp-saudacao,.rsvp__fechado){color:var(--c-card-ink,var(--c-surface-ink,var(--c-ink)))!important}
.contagem__item .contagem__numero,.acordeao>summary::after{color:var(--c-primary-text-card,var(--c-card-ink,var(--c-ink)))!important}

/* Campos sempre pintam uma superfície própria; texto, ajuda e placeholder
   são vinculados a ela, não à cor decorativa da seção. */
.convite :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){background-color:var(--c-surface)!important;color:var(--c-surface-ink,var(--c-ink))!important}
.convite :is(input,textarea)::placeholder{color:var(--c-surface-ink-soft,var(--c-ink-soft))!important;opacity:1}

/* Social Chic e Lacre Imperial tinham uma regra histórica que aplicava tinta
   de superfície à seção inteira, mesmo quando ela era transparente. */
:is(.tema-social-chic,.tema-lacre-imperial) .secao{color:var(--c-ink)!important}
:is(.tema-social-chic,.tema-lacre-imperial) .secao :is(.titulo-secao,.texto,.texto p,.compromisso__local){color:var(--c-ink)!important}
:is(.tema-social-chic,.tema-lacre-imperial) .secao :is(.subtitulo,.compromisso__endereco,.compromisso__nota){color:var(--c-ink-soft)!important}
:is(.tema-social-chic,.tema-lacre-imperial) .secao .item{color:var(--c-card-ink,var(--c-surface-ink,var(--c-ink)))!important}
:is(.tema-social-chic,.tema-lacre-imperial) .secao .item .item__texto{color:var(--c-card-ink-soft,var(--c-surface-ink-soft,var(--c-ink-soft)))!important}

body.composer-v1.recipe-sections-paper .secao__interno{color:var(--c-card-ink,var(--c-surface-ink,var(--c-ink)))!important}
body.composer-v1.recipe-sections-paper .secao__interno :is(.titulo-secao,.texto,.texto p,.compromisso__local){color:var(--c-card-ink,var(--c-surface-ink,var(--c-ink)))!important}
body.composer-v1.recipe-sections-paper .secao__interno :is(.subtitulo,.item__texto,.compromisso__endereco,.compromisso__nota){color:var(--c-card-ink-soft,var(--c-surface-ink-soft,var(--c-ink-soft)))!important}
body.composer-v1.recipe-sections-contrast .secao:nth-of-type(even),body.composer-v1.recipe-sections-contrast .secao:nth-of-type(even) :is(.titulo-secao,.subtitulo,.texto,.texto p,.item__titulo,.item__texto,.compromisso__local,.compromisso__endereco,.compromisso__nota){color:var(--c-primary-ink)!important}

/* Avisos de segurança possuem paletas fixas auditadas e não herdam a tinta
   do cartão pai. */
.rsvp-companion-warning-4040,.rsvp-companion-warning-4040 :is(strong,p){color:#4e3e08!important}
.rsvp-companion-warning-final-4040,.rsvp-companion-warning-final-4040 :is(strong,p){color:#5b4809!important}

/* =====================================================================
   4.5.3 — presentes sem quebras artificiais e data/local completos
   ===================================================================== */
/* A grade externa pode mudar entre uma e duas colunas conforme o tema. O
   conteúdo de cada presente, porém, sempre ocupa a coluna inteira: nenhum
   max-width, flex-basis ou receita antiga pode reduzi-lo à largura da palavra. */
.lista-preset--presentes :is(.itens--grade,.itens--lista)>.item:not(.item--pix-highlight){
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  justify-content:flex-start!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  inline-size:100%!important;
}
.lista-preset--presentes :is(.itens--grade,.itens--lista)>.item:not(.item--pix-highlight)>.item__conteudo{
  box-sizing:border-box!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  align-self:stretch!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  inline-size:100%!important;
}
.lista-preset--presentes :is(.itens--grade,.itens--lista)>.item:not(.item--pix-highlight) :is(.item__titulo,.item__texto){
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  inline-size:100%!important;
  max-inline-size:none!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
  hyphens:none!important;
  white-space:normal!important;
  text-wrap:pretty;
}

/* Data e horário pertencem ao primeiro bloco do local. A faixa substitui o
   antigo ponto usado quando o evento legado não tinha horário próprio. */
.compromisso__quando{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:.28rem .6rem;
  min-width:0;
  margin:0 0 .2rem;
  padding:0 0 .72rem;
  border-bottom:1px solid color-mix(in srgb,var(--c-line) 86%,transparent);
  color:inherit;
  font-family:var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
  line-height:1.4;
}
.compromisso__data{
  min-width:0;
  color:inherit;
  font:750 clamp(.86rem,2.5vw,.98rem)/1.4 var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
  letter-spacing:.005em;
}
.compromisso__quando .compromisso__hora{
  margin:0!important;
  color:inherit!important;
  font:850 clamp(.86rem,2.5vw,.98rem)/1.4 var(--font-body,system-ui,-apple-system,"Segoe UI",sans-serif)!important;
  letter-spacing:.01em!important;
  white-space:nowrap;
}
.compromisso__quando-separador{opacity:.55;font-weight:800}
.compromisso__corpo{min-width:0}
/* A receita minimalista antiga reservava só 4–7rem para o horário. Como a
   faixa agora contém a data por extenso, ela passa a ocupar a largura real. */
body.composer-v1.recipe-program-minimal .programacao .compromisso{
  grid-template-columns:minmax(0,1fr)!important;
}
@media(max-width:620px){
  .compromisso__quando{gap:.2rem .45rem;padding-bottom:.58rem}
}

/* 4.5.10 — Papel de Alta Costura. As decorações são PNGs reais; estas regras
   apenas reservam o espaço certo e evitam volumes exagerados no celular. */
body.tema-papel-alta-costura .capa::before{height:clamp(86px,17vw,168px);width:min(94vw,760px)}
body.tema-papel-alta-costura .secao__interno::before{height:clamp(34px,7vw,64px);margin-bottom:.25rem}
body.tema-papel-alta-costura .rodape::before{height:58px}
body.tema-papel-alta-costura .card,
body.tema-papel-alta-costura .painel-convite{backdrop-filter:blur(1.5px)}
@media(max-width:620px){
  body.tema-papel-alta-costura .capa::before{height:82px;top:.25rem}
  body.tema-papel-alta-costura .secao__interno::before{height:38px}
  body.tema-papel-alta-costura .rodape::before{height:46px}
}
