  /* ===========================================================
     ARQUITETURA CSS — O Jardim da Elis
     · tokens.css      → cores, tipografia, espaço, raio, sombra, motion, z
     · components.css  → componentes reutilizáveis do Design System:
         header, botões, inputs, stepper, toast,
         nav-sheet, footer, sprig-rule, eyebrow, paper-grain
     · este <style>    → composição específica de PÁGINA (não reutilizável):
         shell de preview, hero (collage), apresentação,
         festa e painel RSVP.
     =========================================================== */
  html,body { height:100%; }
  html{ scroll-behavior:smooth; }
  .sr-only{
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0, 0, 0, 0); white-space:nowrap; border:0;
  }
  /* ===========================================================
     SHELL: por padrão renderiza em "modo preview" (moldura de
     celular p/ avaliação). Para PRODUÇÃO (mobile-first, ocupando
     o viewport real, sem moldura): acesse com ?mode=production
     ou remova a classe "shell-preview" do <body>.
     =========================================================== */
  body { background: var(--color-bg-primary); }
  body.shell-preview { background:#E9E4DE; }
  .device {
    width:100%; height:100dvh; margin:0 auto; position:relative;
    background:var(--color-bg-primary); overflow-y:auto; overflow-x:hidden;
    scroll-behavior:smooth; -webkit-overflow-scrolling:touch;
    overscroll-behavior:none;
  }
  .device::-webkit-scrollbar{ width:0; }
  body.shell-preview .device { max-width:430px; box-shadow:0 30px 80px -30px rgba(58,34,41,.5); }
  @media (min-width:480px){ body.shell-preview .device{ height:min(940px,96dvh); margin-top:2dvh; border-radius:36px; } }
  body.is-intro-gated .device{ overflow:hidden; }
  body.is-intro-gated.shell-preview .device{ box-shadow:none; }
  body.is-intro-gated,
  body.is-intro-gated .device,
  body.is-intro-gated .entry-loader{ touch-action:none; overscroll-behavior:none; }
  body.is-intro-gated:not(.shell-preview) .entry-loader{ position:fixed; }
  @media (max-width:479px){
    body.is-intro-gated .entry-loader{ position:fixed; }
  }

  /* entrada */
  .entry-loader{ position:absolute; inset:0; z-index:650; display:grid; place-items:center;
    padding:calc(34px + var(--safe-top)) var(--gutter) calc(28px + var(--safe-bottom));
    background:var(--c-coral); color:var(--c-margarida); text-align:center; overflow:hidden;
    transition:opacity 680ms var(--motion-ease-soft), visibility 680ms var(--motion-ease-soft), transform 680ms var(--motion-ease-soft);
    container-type:inline-size; }
  .entry-loader::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.22;
    background:
      linear-gradient(rgba(247,242,236,.18) 1px, transparent 1px),
      linear-gradient(90deg, rgba(247,242,236,.18) 1px, transparent 1px);
    background-size:28px 28px; transform:rotate(-8deg) scale(1.18); }
  .entry-loader::after{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
    background:
      radial-gradient(circle at 50% 36%, rgba(58,34,41,.22), transparent 36%),
      radial-gradient(circle at 12% 18%, rgba(247,242,236,.20), transparent 11%),
      radial-gradient(circle at 86% 74%, rgba(247,242,236,.16), transparent 13%); }
  .entry-loader.is-hidden{ opacity:0; visibility:hidden; pointer-events:none; transform:scale(1.035); }
  .entry-loader__inner{ position:relative; z-index:1; width:min(100%, 354px); display:grid; justify-items:center; gap:16px;
    animation:entryLoaderFloat 1800ms ease-in-out infinite alternate; }
  .entry-loader__ornament{ width:clamp(110px, 34cqw, 154px); height:auto; display:block;
    filter:brightness(0) saturate(100%) invert(96%) sepia(7%) saturate(389%) hue-rotate(329deg) brightness(101%) contrast(94%);
    animation:entryFlowerSpin 2400ms ease-in-out infinite; transform-origin:center; }
  .entry-loader__title{ margin:6px 0 0; font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    font-weight:800; letter-spacing:.01em; font-size:clamp(1.45rem, 7.2cqw, 2rem); line-height:1.06;
    color:var(--c-margarida); text-wrap:balance; text-transform:uppercase; }
  .entry-loader__phrase{ min-height:2.9em; margin:0; max-width:28ch; padding:9px 15px; border-radius:999px;
    color:var(--c-coral); background:var(--c-margarida); border:none;
    font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    font-size:clamp(.9rem, 3.6cqw, 1rem); font-weight:700; line-height:1.3; text-wrap:balance; }
  .entry-loader__progress{ width:min(274px, 76cqw); height:19px; margin-top:2px; padding:4px; border-radius:999px; overflow:hidden;
    background:rgba(58,34,41,.28); border:2px solid rgba(247,242,236,.82); }
  .entry-loader__progress span{ display:block; width:100%; height:100%; border-radius:inherit;
    background:repeating-linear-gradient(90deg, var(--c-margarida) 0 15px, rgba(247,242,236,.72) 15px 19px);
    transform:scaleX(var(--entry-progress,.08)); transform-origin:left center; transition:transform 420ms var(--motion-ease-soft); }
  @keyframes entryLoaderFloat{
    from{ transform:translate3d(0,-7px,0); }
    to{ transform:translate3d(0,7px,0); }
  }
  @keyframes entryFlowerSpin{
    0%,100%{ transform:translateY(0) rotate(-3deg) scale(1); }
    50%{ transform:translateY(-8px) rotate(3deg) scale(1.04); }
  }

  /* header sticky dentro do device */
  .app-header{ position:sticky; }
  /* ambient decor */
  .leaf, .petal-fall{ position:absolute; pointer-events:none; z-index:var(--z-decor); }

  /* ---------- HERO "Revelação" → css/hero-reveal.css ---------- */

  /* ---------- generic section ---------- */
  /* conteúdo sobe POR CIMA da hero travada (sticky z:0) → precisa ser opaco e acima */
  .device > .sec, .device > .app-footer{ position:relative; z-index:1; }
  .sec{ padding:var(--section-gap) 0; background:var(--color-bg-primary); }
  .sec--rose{ background:var(--color-bg-rose); }
  .sec--mint{ background:var(--color-bg-mint); }
  .sec--straw{ background:var(--color-bg-straw); }
  .sec__head{ margin-bottom:var(--space-8); }
  .sec__head .eyebrow{ margin-bottom:10px; display:block; }

  /* motion ambiental entre seções */
  .ambient-bees{ position:sticky; top:0; width:100%; height:0; z-index:7; pointer-events:none; overflow:visible; }
  .ambient-bees.is-hidden{ display:none; }
  .bee-flight{ position:absolute; left:0; top:0; width:var(--bee-size,42px); height:var(--bee-size,42px);
    opacity:0; filter:blur(var(--bee-blur,0)); transform:translate3d(var(--bee-x0,-12vw), var(--bee-y0,42vh), 0) scale(var(--bee-scale,.7));
    will-change:transform, opacity; }
  .bee-flight__body{ width:100%; height:100%; transform-origin:center; }
  .bee-flight__body svg{ display:block; width:100%; height:100%; }
  @media (min-width:0px){
    .bee-flight.is-flying{ animation:beeFlight var(--bee-duration,16000ms) linear var(--bee-delay,0ms) forwards; }
    .bee-flight.is-flying .bee-flight__body{ animation:beeBob var(--bee-bob-duration,1600ms) ease-in-out infinite alternate; }
  }
  @keyframes beeFlight{
    0%{ opacity:0; transform:translate3d(var(--bee-x0,-12vw), var(--bee-y0,44vh), 0) scale(calc(var(--bee-scale,.7) * .92)) rotate(var(--bee-r0,-5deg)); }
    4%{ opacity:var(--bee-opacity,.72); }
    18%{ transform:translate3d(var(--bee-xa,22vw), var(--bee-ya,38vh), 0) scale(calc(var(--bee-scale,.7) * .98)) rotate(var(--bee-ra,4deg)); }
    34%{ transform:translate3d(var(--bee-xb,42vw), var(--bee-yb,30vh), 0) scale(calc(var(--bee-scale,.7) * 1.02)) rotate(var(--bee-rb,-6deg)); }
    57%{ transform:translate3d(var(--bee-xc,62vw), var(--bee-yc,48vh), 0) scale(var(--bee-scale,.7)) rotate(var(--bee-rc,7deg)); }
    76%{ transform:translate3d(var(--bee-xd,84vw), var(--bee-yd,34vh), 0) scale(calc(var(--bee-scale,.7) * .98)) rotate(var(--bee-rd,-4deg)); }
    94%{ opacity:var(--bee-opacity,.72); }
    100%{ opacity:0; transform:translate3d(var(--bee-x1,108vw), var(--bee-y1,52vh), 0) scale(calc(var(--bee-scale,.7) * .96)) rotate(var(--bee-r1,-3deg)); }
  }
  @keyframes beeBob{
    from{ transform:translate3d(0,-3px,0) rotate(-3deg); }
    to{ transform:translate3d(0,4px,0) rotate(4deg); }
  }
  /* ===== APRESENTAÇÃO — pinada, revela linha a linha ===== */
  .intro-pin{ position:relative; height:100dvh;
    background:
      radial-gradient(circle at 50% 38%, rgba(247,242,236,0.10), transparent 42%),
      radial-gradient(125% 95% at 62% 104%, #f45770 0%, rgba(244,87,112,0) 56%),
      linear-gradient(180deg, #E98291 0%, #EE8A94 58%, #D98598 100%); }
  /* CELEBRAR — fundo menta sólido (override só desta seção) */
  #celebrar{ background:#9AD3B6; }
  /* centraliza corretamente a composição (dividers + texto): padding vertical simétrico
     e sem o empurrão extra do --space-8 superior, deixando o flex centrar o trio */
  #celebrar .intro-pin__stage{ padding-top:calc(var(--header-h) + var(--safe-top));
    padding-bottom:calc(var(--header-h) + var(--safe-bottom)); }
  #celebrar .intro-divider{ margin-bottom:var(--space-7); }
  #celebrar .intro-divider--bottom{ margin-top:var(--space-7); }
  /* divider_8 (base) um pouco maior */
  #celebrar .intro-divider--bottom{ width:clamp(74px,21vw,104px); }
  /* virada "Vamos celebrar!" — texto em verde */
  #celebrar .intro-finale{ color:#5fa886; }
  @media (min-width:860px){
    body:not(.shell-preview) #celebrar .intro-divider{ width:clamp(138px,14vw,190px); }
  }
  /* Continuar na virada do Celebrar — mesmo verde dos dividers (só o tom) */
  #celebrar.intro-pin.is-finale .intro-hint .hero-reveal__scroll-text{ color:#5fa886; }
  #celebrar.intro-pin.is-finale .intro-hint .scroll-mouse{ border-color:#5fa886; }
  #celebrar.intro-pin.is-finale .intro-hint .scroll-mouse__dot{ background:#5fa886; }
  /* textura de ruído suave sobre o bg rosa */
  .intro-pin::after{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-size:180px 180px; opacity:.035; mix-blend-mode:soft-light; }
  /* off-white do estado-final (reveal-bg) com textura de papel */
  .intro-finale-bg{ position:absolute; inset:0; z-index:0; opacity:0; pointer-events:none;
    background:radial-gradient(circle at 50% 24%, rgba(246, 203, 212, 0.18), transparent 38%), #F7F2EC;
    transition:opacity 900ms var(--motion-ease-soft); }
  .intro-finale-bg::after{ content:""; position:absolute; inset:0; pointer-events:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.62' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
    background-size:420px 420px; opacity:.055; }
  .intro-pin.is-finale .intro-finale-bg{ opacity:1; }
  .intro-pin__stage{ position:sticky; top:0; height:100dvh; min-height:100svh;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding:calc(var(--header-h) + var(--safe-top) + var(--space-8)) var(--gutter) calc(var(--space-16) + var(--safe-bottom));
    text-align:center; overflow:hidden; }
  @media (min-width:0px){
    .intro-pin.is-revealing .intro-pin__stage{ animation:sectionStageArrive 980ms var(--motion-ease-organic) both; }
  }
  @keyframes sectionStageArrive{
    from{ opacity:.84; filter:blur(3px); transform:translate3d(0,22px,0) scale(.988); }
    to{ opacity:1; filter:none; transform:none; }
  }
  .intro-pin__text{ margin:0; max-width:min(20ch, 84vw); text-align:center; position:relative; z-index:2;
    font-family:'Fraunces', Georgia, 'Times New Roman', serif; font-weight:400; font-style:italic;
    font-size:clamp(1.3rem,5.6vw,1.65rem); line-height:1.42; letter-spacing:-.004em;
    color:#F7F2EC; text-wrap:balance;
    transition:opacity 620ms var(--motion-ease-soft), transform 900ms var(--motion-ease-organic); }
  .intro-pin.is-finale .intro-pin__text{ opacity:0; transform:translateY(-16px); }

  /* dividers de flor (cima = divider_5, baixo = divider_6) — estáticos; saem no giro */
  .intro-divider{ display:block; width:clamp(116px,36vw,172px); height:auto; margin:0 auto var(--space-8);
    position:relative; z-index:2; opacity:1;
    transition:opacity 820ms var(--motion-ease-soft), transform 1000ms var(--motion-ease-organic),
               filter 720ms var(--motion-ease-soft); }
  .intro-divider--bottom{ width:clamp(58px,17vw,84px); margin:var(--space-8) auto 0; }
  .intro-pin.is-finale .intro-divider{ opacity:0; transform:translateY(-26px) scale(1.1); filter:blur(4px); }
  .intro-pin.is-finale .intro-divider--bottom{ transform:translateY(26px) scale(1.1); }

  /* ESTADO-FINAL: frase editorial em Coral Doce sobre off-white */
  .intro-finale{ position:absolute; inset:0; margin:0; z-index:2;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:clamp(var(--space-5),4.5vh,var(--space-10));
    padding:calc(var(--header-h) + var(--safe-top)) clamp(var(--gutter),7vw,2.6rem) var(--space-16);
    font-family:'Fraunces', Georgia, 'Times New Roman', serif; font-weight:600; font-style:italic;
    font-size:clamp(2.3rem,10.5vw,3.4rem); line-height:1.06; letter-spacing:-.02em;
    color:var(--color-accent-secondary); text-align:center; text-wrap:balance; max-width:min(15ch,88vw); margin-inline:auto;
    opacity:0; transform:translateY(40px) scale(.97); pointer-events:none;
    transition:opacity 1100ms cubic-bezier(.22,1,.36,1), transform 1100ms cubic-bezier(.22,1,.36,1);
    will-change:opacity, transform; }
  .intro-pin.is-finale .intro-finale{ opacity:1; transform:translateY(0) scale(1); }
  /* dividers rosa do estado-final — surgem acompanhando o giro */
  .intro-divider-finale{ display:block; height:auto; opacity:0; filter:blur(5px); }
  .intro-divider-finale--top{ width:clamp(116px,36vw,172px); transform:translateY(-22px) scale(1.08); }
  .intro-divider-finale--bottom{ width:clamp(58px,17vw,84px); transform:translateY(22px) scale(1.08); }
  .intro-pin.is-finale .intro-divider-finale{ opacity:1; transform:translateY(0) scale(1); filter:none;
    transition:opacity 1000ms var(--motion-ease-soft) 120ms, transform 1100ms var(--motion-ease-organic) 120ms, filter 900ms var(--motion-ease-soft) 120ms; }

  .celebration-burst{ position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; perspective:720px; }
  .celebration-burst__piece{ position:absolute; left:var(--piece-start-x,50%); top:var(--piece-start-y,50%);
    width:var(--piece-size,18px); height:var(--piece-size,18px); color:var(--piece-color,#EE8A94);
    filter:blur(var(--piece-blur,0px));
    opacity:0; transform:translate3d(-50%,-50%,0) scale(.5) rotate(var(--piece-r0,0deg));
    transform-origin:center; will-change:transform, opacity, filter;
    animation:celebrationBurst var(--piece-duration,1700ms) cubic-bezier(.16,1,.3,1) var(--piece-delay,0ms) forwards; }
  .celebration-burst__piece svg{ display:block; width:100%; height:100%; fill:currentColor; }
  @keyframes celebrationBurst{
    0%{ opacity:0; transform:translate3d(-50%,-50%,0) scale(.42) rotate(var(--piece-r0,0deg)); }
    12%{ opacity:var(--piece-opacity,.82); }
    58%{ opacity:var(--piece-opacity,.82); transform:translate3d(calc(-50% + var(--piece-x1,0px)), calc(-50% + var(--piece-y1,0px)), var(--piece-z,0px)) scale(var(--piece-scale1,1)) rotate(var(--piece-r1,180deg)); }
    100%{ opacity:0; transform:translate3d(calc(-50% + var(--piece-x2,0px)), calc(-50% + var(--piece-y2,0px)), var(--piece-z,0px)) scale(var(--piece-scale2,.78)) rotate(var(--piece-r2,420deg)); }
  }

  /* pétalas caindo — 3 camadas (profundidade) */
  .intro-petals{ position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; }
  .intro-petal{ position:absolute; top:-8%; opacity:0; will-change:transform, opacity;
    filter:blur(var(--blur,0px)); }
  .intro-petal svg{ display:block; width:100%; height:100%; }
  @media (min-width:0px){
    .intro-petal{ animation:introPetalFall linear infinite; }
  }
  @keyframes introPetalFall{
    0%   { transform:translate3d(0,-10%,0) rotate(0deg) scale(var(--s,1)); opacity:0; }
    8%   { opacity:var(--opacity,.6); }
    50%  { transform:translate3d(var(--drift,18px),52vh,0) rotate(180deg) scale(var(--s,1)); }
    90%  { opacity:var(--opacity,.6); }
    100% { transform:translate3d(0,108vh,0) rotate(360deg) scale(var(--s,1)); opacity:0; }
  }

  /* pétalas continuam caindo também no estado-final (sobre o branco) */

  .device{ --continue-bottom:max(var(--space-16), calc(var(--space-12) + var(--safe-bottom))); }
  .device.is-section-jumping{ overflow:hidden; }
  .intro-hint{ position:absolute; left:50%; transform:translateX(-50%);
    bottom:var(--continue-bottom);
    display:flex; flex-direction:column; align-items:center; gap:11px; z-index:3;
    background:none; border:none; padding:8px 14px; cursor:pointer;
    -webkit-tap-highlight-color:transparent;
    opacity:0; pointer-events:none;
    transition:opacity 600ms var(--motion-ease-soft), transform 150ms var(--motion-ease-organic); }
  .intro-hint.is-ready{ opacity:1; pointer-events:auto; }
  .intro-hint:active{ transform:translateX(-50%) scale(.96); }
  .intro-hint:focus-visible{ outline:2px solid #F7F2EC; outline-offset:2px; border-radius:16px; }
  /* Continuar + ícone delicado; some quase totalmente no estado-final */
  .intro-hint .hero-reveal__scroll-text{ color:#F7F2EC; font-size:.625rem; font-weight:700; letter-spacing:.22em; opacity:.78; }
  .intro-hint .scroll-mouse{ border-color:#F7F2EC; }
  .intro-hint .scroll-mouse__dot{ background:#F7F2EC; }
  .intro-pin.is-finale .intro-hint{ opacity:.32; }
  .intro-pin.is-finale .intro-hint .hero-reveal__scroll-text{ color:var(--color-accent-secondary); }
  .intro-pin.is-finale .intro-hint .scroll-mouse{ border-color:var(--color-accent-secondary); }
  .intro-pin.is-finale .intro-hint .scroll-mouse__dot{ background:var(--color-accent-secondary); }

  /* ===== ÁLBUM — pinado, uma foto por vez (fullscreen) ===== */
  .album-pin{ position:relative; height:100dvh; background:#000; }
  .album-pin__stage{ position:sticky; top:0; height:100dvh; min-height:100svh; overflow:hidden; }
  .album-slide{ position:absolute; inset:0; opacity:0; z-index:1; will-change:opacity; }
  .album-slide__media{ position:absolute; inset:0; width:100%; height:100%; display:block; object-fit:cover; object-position:center 34%; background:#1a0f12; transform-origin:center; transform:scale(1); will-change:transform; }
  /* a foto que chega já fica opaca POR BAIXO; a que sai dissolve POR CIMA dela
     — nunca encolhe e nunca clareia: sem borda preta, sem "pulinho", igual na ida e na volta */
  .album-slide.is-active{ opacity:1; z-index:2; }
  .album-slide.is-leaving{ opacity:0; z-index:3; transition:opacity 1200ms var(--motion-ease-soft); }
  /* respiro de zoom (ken burns) bem sutil e contínuo — via transition, sem salto ao reativar */
  @media (min-width:0px){
    .album-slide__media{ transition:transform 10000ms var(--motion-ease-soft); }
    .album-slide.is-active .album-slide__media{ transform:scale(1.045); }
  }
  /* scrims p/ legibilidade dos controles sobre qualquer foto */
  .album-scrim{ position:absolute; left:0; right:0; bottom:0; height:38%; z-index:3; pointer-events:none;
    background:linear-gradient(to top, rgba(40,22,28,.52), rgba(40,22,28,0)); }
  .album-scrim--top{ top:0; bottom:auto; height:18%;
    background:linear-gradient(to bottom, rgba(40,22,28,.4), rgba(40,22,28,0)); }
  .album-skip{ position:absolute; top:calc(var(--safe-top) + clamp(8px, 1.8svh, 18px)); right:calc(env(safe-area-inset-right, 0px) + clamp(10px, 3.2vw, 18px));
    z-index:5; opacity:0; pointer-events:none; }
  .album-pin.is-ready .album-skip{ opacity:1; pointer-events:auto; }
  .album-pin.is-skipping .album-skip,
  .album-pin.is-skipping .album-hint{ opacity:0; pointer-events:none; }
  .album-skip .btn-pular__label{ color:var(--c-margarida); background:transparent; border:2px solid var(--c-margarida); font-size:11px; letter-spacing:.14em; padding:8px 14px 8px 16px; font-weight:700; box-shadow:none; transition:color var(--motion-duration-fast) var(--motion-ease-soft), border-color var(--motion-duration-fast) var(--motion-ease-soft); }
  .album-skip:active .btn-pular__label,
  .album-skip.is-bursting .btn-pular__label{ color:var(--c-coral); border-color:var(--c-coral); }
  /* hint reutiliza a estrutura do intro-hint, sempre branco + acima do scrim */
  .album-hint{ position:absolute; left:50%; transform:translateX(-50%);
    bottom:var(--continue-bottom);
    display:flex; flex-direction:column; align-items:center; gap:11px; z-index:4;
    background:none; border:none; padding:8px 14px; cursor:pointer;
    -webkit-tap-highlight-color:transparent;
    opacity:0; pointer-events:none;
    transition:opacity 600ms var(--motion-ease-soft), transform 150ms var(--motion-ease-organic); }
  .album-pin.is-ready .album-hint{ opacity:1; pointer-events:auto; }
  .album-hint:active{ transform:translateX(-50%) scale(.96); }
  .album-hint:focus-visible{ outline:2px solid #F7F2EC; outline-offset:2px; border-radius:16px; }
  .album-hint .hero-reveal__scroll-text{ color:#F7F2EC; font-size:.625rem; font-weight:700; letter-spacing:.22em; opacity:.78; }
  .album-hint .scroll-mouse{ border-color:#F7F2EC; }
  .album-hint .scroll-mouse__dot{ background:#F7F2EC; }

  /* indicador de fotos: pontos separados, com alvo de toque ampliado */
  .album-dots{ position:absolute; left:50%; transform:translateX(-50%);
    bottom:calc(var(--continue-bottom) + 6.4rem);
    z-index:4; display:flex; align-items:center; justify-content:center; gap:6px;
    width:auto; max-width:calc(100vw - var(--gutter)*2); padding:0;
    border:0; border-radius:0; background:transparent; backdrop-filter:none; }
  .album-dot{ flex:0 0 18px; width:18px; height:var(--target-min); border-radius:999px; border:0; padding:0; cursor:pointer;
    background:transparent; opacity:1; position:relative; -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
  .album-dot::after{ content:""; position:absolute; left:50%; top:50%; width:var(--target-min); height:var(--target-min);
    transform:translate(-50%,-50%); border-radius:999px; }
  .album-dot::before{ content:""; position:absolute; left:50%; top:50%; width:9px; height:9px; border-radius:999px;
    transform:translate(-50%,-50%); background:#F7F2EC; opacity:.78; box-shadow:0 1px 8px rgba(40,22,28,.44);
    transition:opacity .45s var(--motion-ease-soft), width .45s var(--motion-ease-soft), height .45s var(--motion-ease-soft), background .45s var(--motion-ease-soft); }
  .album-dot:hover::before{ opacity:.92; }
  .album-dot.is-past::before{ opacity:.82; background:rgba(247,242,236,.82); }
  .album-dot.is-on::before{ opacity:1; width:24px; height:9px; background:#EE8A94; }
  .album-dot:focus-visible{ outline:2px solid #F7F2EC; outline-offset:4px; background:rgba(247,242,236,.12); }
  .section-jump-veil{ position:fixed; inset:0; z-index:640; display:grid; place-items:center; pointer-events:none;
    opacity:0; visibility:hidden; background:
      radial-gradient(circle at 50% 42%, rgba(255,253,251,.94), rgba(251,238,240,.9) 42%, rgba(154,211,182,.30) 100%),
      linear-gradient(180deg, #FBE2E6 0%, #F7F2EC 52%, #E5F3EA 100%);
    transition:opacity 520ms var(--motion-ease-soft), visibility 520ms var(--motion-ease-soft); }
  .section-jump-veil.is-visible{ opacity:1; visibility:visible; pointer-events:auto; }
  .section-jump-veil.is-leaving{ opacity:0; visibility:hidden; transition-duration:620ms; }
  .section-jump-veil__ornament{ width:clamp(96px,28vw,138px); height:auto; display:block; filter:drop-shadow(0 12px 28px rgba(238,138,148,.16));
    animation:sectionJumpBloom 1100ms var(--motion-ease-organic) both; }
  @keyframes sectionJumpBloom{
    0%{ opacity:0; transform:translateY(16px) scale(.82) rotate(-4deg); filter:blur(8px) drop-shadow(0 12px 28px rgba(238,138,148,0)); }
    58%{ opacity:1; filter:blur(0) drop-shadow(0 12px 28px rgba(238,138,148,.16)); }
    100%{ opacity:1; transform:translateY(0) scale(1) rotate(0); }
  }

  /* ===== O CONVITE — papel delicado, centralizado ===== */
  /* ===== O CONVITE — réplica do convite impresso (ref. anexada) ===== */
  /* Festa reaproveita a estrutura .intro-pin (pin sticky + fullscreen) das seções anteriores */
  #festa{
    --invite-stage-top:calc(var(--header-h) + var(--safe-top) + clamp(8px, 1.6svh, 16px));
    --invite-stage-bottom:calc(var(--safe-bottom) + clamp(12px, 2svh, 20px));
    --invite-inline:clamp(14px, 5vw, 22px);
    --invite-top-floral-w:clamp(94px, 28vw, 112px);
    --invite-name-gap:clamp(16px, 2.8svh, 24px);
    --invite-name-size:clamp(13.5px, 3.9vw, 15px);
    --invite-vine-w:clamp(82px, 24vw, 98px);
    --invite-vine-gap:clamp(15px, 2.7svh, 24px);
    --invite-date-gap:clamp(20px, 3.5svh, 30px);
    --invite-date-size:clamp(50px, 15.4vw, 58px);
    --invite-time-size:clamp(34px, 10.8vw, 41px);
    --invite-branch-w:clamp(94px, 26vw, 112px);
    --invite-branch-gap:clamp(22px, 3.6svh, 34px);
    --invite-address-gap:clamp(22px, 3.6svh, 34px);
    --invite-address-line:1.22;
    --invite-address-main-size:clamp(14px, 4.1vw, 17px);
    --invite-address-sub-size:clamp(12px, 3.45vw, 14px);
    --invite-address-sub-gap:clamp(5px, 1svh, 8px);
    --invite-rsvp-gap:clamp(26px, 4.2svh, 38px);
    --invite-rsvp-min-h:clamp(43px, 6.4svh, 50px);
    --invite-rsvp-pad-y:clamp(11px, 1.8svh, 15px);
    --invite-rsvp-pad-x:clamp(30px, 9vw, 38px);
    --invite-rsvp-font-size:clamp(12px, 3.35vw, 13px);
    --invite-actions-gap:clamp(9px, 1.6svh, 14px);
    --invite-action-min-h:clamp(40px, 6svh, 44px);
    --invite-action-font-size:clamp(11.5px, 3.15vw, 12px);
    background:#F7F2EC; height:auto; min-height:100dvh;
  }
  #festa::after{
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='132' height='132'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.78' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-size:132px 132px; opacity:.055; mix-blend-mode:multiply;
  }
  #festa .intro-pin__stage{
    justify-content:center;
    padding-top:var(--invite-stage-top);
    padding-bottom:var(--invite-stage-bottom);
  }
  /* Continuar do convite: mesmo tom da virada, mas em uma posição segura acima da borda */
  #festa .intro-hint{ display:none; }
  #festa .intro-hint .hero-reveal__scroll-text{ color:var(--color-accent-secondary); }
  #festa .intro-hint .scroll-mouse{ border-color:var(--color-accent-secondary); }
  #festa .intro-hint .scroll-mouse__dot{ background:var(--color-accent-secondary); }
  .device.is-footer-visible #festa .intro-hint{ opacity:0 !important; visibility:hidden; pointer-events:none; }
  #festa.rsvp-open .intro-hint{ opacity:0; pointer-events:none; }
  /* RSVP rola normalmente abaixo do convite quando aberto */
  #festa .container{ position:relative; z-index:2; }
  .convite-petals{ position:absolute; inset:0; z-index:8; overflow:hidden; pointer-events:none; perspective:1100px; transform-style:preserve-3d; }
  .convite-petal{ position:absolute; left:0; top:0; width:var(--petal-size,16px); aspect-ratio:.68;
    opacity:0; z-index:var(--petal-z,2); filter:blur(var(--petal-blur,0px));
    transform-origin:50% 18%; transform-style:preserve-3d; will-change:transform, opacity; }
  .convite-petal.is-front{ z-index:40; }
  .convite-petal__shape{ display:block; width:100%; height:100%;
    border-radius:64% 36% 68% 32% / 72% 44% 56% 28%;
    background:
      radial-gradient(circle at 38% 30%, rgba(255,253,251,.58) 0 8%, transparent 23%),
      linear-gradient(145deg, var(--petal-c1,#F6CBD4), var(--petal-c2,#EE8A94) 58%, var(--petal-c3,#D98598));
    transform-origin:50% 18%; will-change:transform; }
  @media (min-width:0px){
    .convite-petal{
      animation:convitePetalDrift var(--petal-duration,58s) linear var(--petal-delay,-8s) infinite;
    }
    .convite-petal__shape{
      animation:convitePetalFlutter var(--petal-flutter,8s) ease-in-out var(--petal-flutter-delay,-2s) infinite alternate;
    }
  }
  .convite-petals.is-js-driven .convite-petal{ animation:none; }
  @keyframes convitePetalDrift{
    0%{ opacity:0; transform:translate3d(-18vw,var(--petal-top,10vh),var(--petal-depth,0px)) scale(var(--petal-scale,.8)); }
    12%{ opacity:var(--petal-opacity,.34); }
    86%{ opacity:var(--petal-opacity,.34); }
    100%{ opacity:0; transform:translate3d(118vw,calc(var(--petal-top,10vh) + var(--petal-fall,36vh)),var(--petal-depth,0px)) scale(var(--petal-scale,.8)); }
  }
  @keyframes convitePetalFlutter{
    0%{ transform:translate3d(0,0,0) rotateX(18deg) rotateY(-28deg) rotateZ(var(--petal-r0,-18deg)); }
    24%{ transform:translate3d(0,var(--petal-float-a,3px),0) rotateX(-24deg) rotateY(22deg) rotateZ(var(--petal-r1,74deg)); }
    52%{ transform:translate3d(0,var(--petal-float-b,-2px),0) rotateX(30deg) rotateY(-32deg) rotateZ(var(--petal-r2,156deg)); }
    78%{ transform:translate3d(0,var(--petal-float-c,4px),0) rotateX(-18deg) rotateY(28deg) rotateZ(var(--petal-r3,246deg)); }
    100%{ transform:translate3d(0,var(--petal-float-d,1px),0) rotateX(16deg) rotateY(-18deg) rotateZ(var(--petal-r4,316deg)); }
  }
  .convite{ position:relative; z-index:2; width:min(100%,430px); max-width:430px; box-sizing:border-box; margin:0 auto; text-align:center; padding:0 var(--invite-inline); transform:none; }
  .convite [data-reveal]{ transition-delay:var(--reveal-delay,0ms); }
  .convite__floral{ display:block; height:auto; margin-left:auto; margin-right:auto; }
  .convite__floral--top{ width:var(--invite-top-floral-w); }
  .convite__name{ font-family:'Nunito', var(--font-sans), sans-serif; font-weight:400;
    font-size:var(--invite-name-size); letter-spacing:.27em; text-transform:uppercase; color:#3A2229; margin:var(--invite-name-gap) 0 0; }
  .convite__vine{ display:block; width:var(--invite-vine-w); height:auto; margin:var(--invite-vine-gap) auto 0; }
  .convite__date{ font-family:'Fraunces', Georgia, serif; font-weight:700; font-style:normal;
    font-size:var(--invite-date-size); line-height:1; letter-spacing:.005em; color:#EE8A94; margin:var(--invite-date-gap) 0 0; }
  .convite__time{ font-family:'Fraunces', Georgia, serif; font-weight:500; font-style:italic;
    font-size:var(--invite-time-size); line-height:1; color:#9AD3B6; margin:6px 0 0; }
  .convite__floral--branch{ width:var(--invite-branch-w); margin-top:var(--invite-branch-gap); }
  .convite__addr{ margin:var(--invite-address-gap) 0 0; line-height:var(--invite-address-line); }
  .convite__addr-1{ display:block; font-family:'Fraunces', Georgia, serif; font-style:italic; font-weight:500;
    font-size:var(--invite-address-main-size); color:#3A2229; }
  .convite__addr-2{ display:block; font-family:'Nunito', var(--font-sans), sans-serif; font-weight:400;
    font-size:var(--invite-address-sub-size); color:#3A2229; margin-top:var(--invite-address-sub-gap); }
  .convite__rsvp{ display:inline-flex; align-items:center; justify-content:center; width:auto; min-height:var(--invite-rsvp-min-h);
    margin:var(--invite-rsvp-gap) 0 0; padding:var(--invite-rsvp-pad-y) var(--invite-rsvp-pad-x); border-radius:999px; background:#EE8A94; color:#fff;
    font-family:'Nunito', var(--font-sans), sans-serif; font-weight:700; font-size:var(--invite-rsvp-font-size);
    letter-spacing:.08em; text-transform:uppercase; box-shadow:none; }
  .convite__rsvp:hover{ background:#e87c87; transform:translateY(-1px); }
  .convite__rsvp:active{ transform:scale(.98); }
  .convite__actions{ position:relative; z-index:6; display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:center; gap:8px; margin:var(--invite-actions-gap) auto 0; max-width:100%; }
  .convite-action-menu{ position:relative; flex:0 1 auto; }
  .convite__action{ min-height:var(--invite-action-min-h); width:100%; padding:0 14px; border:1px solid rgba(130,120,110,.24);
    background:rgba(255,253,251,.76); color:#82786e; box-shadow:none;
    font-family:'Nunito', var(--font-sans), sans-serif; font-size:var(--invite-action-font-size); font-weight:600; letter-spacing:.035em; text-transform:none; }
  .convite__action svg{ width:16px; height:16px; stroke-width:1.8; flex:none; }
  .convite__action:hover{ border-color:rgba(238,138,148,.5); background:#FFFDFB; color:#5E3A44; transform:translateY(-1px); }
  .convite__action[aria-expanded="true"]{ border-color:rgba(238,138,148,.55); background:#FFFDFB; color:#5E3A44; }
  .convite-options{ position:absolute; left:50%; bottom:calc(100% + 9px); width:max-content; min-width:184px; max-width:min(82vw, 250px);
    padding:7px; border:1px solid rgba(238,138,148,.22); border-radius:18px; background:rgba(255,253,251,.97);
    box-shadow:0 20px 46px -28px rgba(58,34,41,.6); transform:translate(-50%,6px); opacity:0; visibility:hidden; pointer-events:none;
    transition:opacity 180ms var(--motion-ease-soft), transform 220ms var(--motion-ease-organic), visibility 180ms var(--motion-ease-soft); }
  .convite-action-menu.is-open .convite-options{ opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%,0); }
  .convite-option{ width:100%; min-height:44px; display:flex; align-items:center; justify-content:flex-start; gap:8px;
    padding:0 12px; border:0; border-radius:12px; background:transparent; color:#5E3A44; text-decoration:none; cursor:pointer;
    font-family:'Nunito', var(--font-sans), sans-serif; font-size:12.5px; line-height:1.2; font-weight:400; letter-spacing:.01em; text-align:left; }
  .convite-option:hover{ background:rgba(238,138,148,.09); color:#3A2229; }
  .convite-option:focus-visible{ outline:2px solid rgba(238,138,148,.55); outline-offset:2px; }
  @media (orientation:portrait) and (max-height:740px){
    #festa{
      --invite-stage-top:calc(var(--header-h) + var(--safe-top) + 7px);
      --invite-stage-bottom:calc(var(--safe-bottom) + 10px);
      --invite-top-floral-w:clamp(86px, 26vw, 100px);
      --invite-name-gap:clamp(12px, 2.1svh, 18px);
      --invite-name-size:13px;
      --invite-vine-w:clamp(76px, 22vw, 88px);
      --invite-vine-gap:clamp(11px, 2svh, 16px);
      --invite-date-gap:clamp(14px, 2.4svh, 20px);
      --invite-date-size:clamp(46px, 14.7vw, 52px);
      --invite-time-size:clamp(31px, 10.2vw, 36px);
      --invite-branch-w:clamp(86px, 24vw, 98px);
      --invite-branch-gap:clamp(16px, 2.7svh, 22px);
      --invite-address-gap:clamp(16px, 2.8svh, 22px);
      --invite-address-line:1.18;
      --invite-address-main-size:14.5px;
      --invite-address-sub-size:12px;
      --invite-address-sub-gap:5px;
      --invite-rsvp-gap:clamp(18px, 3.1svh, 24px);
      --invite-rsvp-min-h:42px;
      --invite-rsvp-pad-y:11px;
      --invite-rsvp-pad-x:30px;
      --invite-rsvp-font-size:12px;
      --invite-actions-gap:8px;
      --invite-action-min-h:40px;
      --invite-action-font-size:11.5px;
    }
    .convite{ padding-inline:18px; }
    .convite__name{ letter-spacing:.22em; }
    .convite__time{ margin-top:4px; }
    .convite__actions{ gap:7px; }
    .convite__action{ padding-inline:10px; }
  }
  @media (orientation:portrait) and (max-height:640px){
    #festa{
      --invite-stage-top:calc(var(--header-h) + var(--safe-top) + 5px);
      --invite-stage-bottom:calc(var(--safe-bottom) + 8px);
      --invite-top-floral-w:clamp(78px, 25vw, 88px);
      --invite-name-gap:10px;
      --invite-name-size:12.5px;
      --invite-vine-w:74px;
      --invite-vine-gap:10px;
      --invite-date-gap:12px;
      --invite-date-size:clamp(42px, 14vw, 48px);
      --invite-time-size:clamp(29px, 10vw, 34px);
      --invite-branch-w:84px;
      --invite-branch-gap:14px;
      --invite-address-gap:14px;
      --invite-address-main-size:13.5px;
      --invite-address-sub-size:11.5px;
      --invite-address-sub-gap:4px;
      --invite-rsvp-gap:16px;
      --invite-rsvp-min-h:40px;
      --invite-rsvp-pad-y:10px;
      --invite-rsvp-pad-x:28px;
      --invite-actions-gap:7px;
    }
    .convite{ padding-inline:16px; }
    .convite__name{ letter-spacing:.2em; }
  }
  @media (orientation:portrait) and (max-height:580px){
    #festa{
      --invite-stage-top:calc(var(--header-h) + var(--safe-top) + 4px);
      --invite-stage-bottom:calc(var(--safe-bottom) + 6px);
      --invite-top-floral-w:clamp(72px, 23vw, 82px);
      --invite-name-gap:8px;
      --invite-name-size:12px;
      --invite-vine-w:68px;
      --invite-vine-gap:8px;
      --invite-date-gap:10px;
      --invite-date-size:clamp(39px, 13.6vw, 45px);
      --invite-time-size:clamp(27px, 9.4vw, 31px);
      --invite-branch-w:78px;
      --invite-branch-gap:11px;
      --invite-address-gap:11px;
      --invite-address-main-size:13px;
      --invite-address-sub-size:11px;
      --invite-rsvp-gap:13px;
      --invite-rsvp-min-h:39px;
      --invite-rsvp-pad-y:9px;
      --invite-rsvp-pad-x:24px;
      --invite-actions-gap:6px;
      --invite-action-min-h:38px;
      --invite-action-font-size:11px;
    }
  }
  @media (max-width:300px){
    .convite{
      width:100%;
      max-width:100%;
      box-sizing:border-box;
      padding-inline:14px;
    }
    #festa{
      --invite-date-size:clamp(40px,16vw,46px);
      --invite-time-size:clamp(28px,11vw,32px);
    }
    .convite__date{ letter-spacing:0; }
    .convite-action-menu{ flex:1 1 100%; }
  }
  .route-warning{ position:fixed; inset:0; z-index:var(--z-modal); display:grid; align-items:end; justify-items:center;
    padding:calc(14px + var(--safe-top)) 12px calc(14px + var(--safe-bottom)); opacity:0; visibility:hidden;
    pointer-events:none; transition:opacity 240ms var(--motion-ease-soft), visibility 240ms var(--motion-ease-soft); }
  .route-warning.is-open{ opacity:1; visibility:visible; pointer-events:auto; }
  .route-warning__scrim{ position:absolute; inset:0; background:rgba(58,34,41,.36); backdrop-filter:blur(8px); }
  .route-warning__panel{ position:relative; z-index:1; width:min(100%, 390px); border:1px solid rgba(239,202,210,.9);
    border-radius:28px; background:linear-gradient(180deg, rgba(251,238,240,.95) 0, #FFFDFB 42%, #FFFDFB 100%);
    box-shadow:0 26px 70px -32px rgba(58,34,41,.5); padding:22px 18px 18px; text-align:center;
    transform:translateY(18px) scale(.985); opacity:.9; transition:transform 320ms var(--motion-ease-organic), opacity 220ms var(--motion-ease-soft); }
  .route-warning.is-open .route-warning__panel{ transform:none; opacity:1; }
  .route-warning__close{ position:absolute; top:12px; right:12px; width:var(--target-min); height:var(--target-min);
    display:grid; place-items:center; border:0; border-radius:50%; background:rgba(255,253,251,.82); color:#82786e; cursor:pointer; }
  .route-warning__close svg{ width:19px; height:19px; }
  .route-warning__ornament{ display:block; width:74px; height:auto; margin:0 auto 8px; }
  .route-warning__title{ margin:0; font-family:'Fraunces', Georgia, serif; font-weight:500; font-style:italic;
    font-size:clamp(1.65rem, 8vw, 2.25rem); line-height:1; color:#EE8A94; }
  .route-warning__text{ margin:12px auto 0; max-width:31ch; color:#82786e; font-size:.92rem; line-height:1.42; }
  .route-warning__text strong{ color:#5E3A44; font-weight:800; }
  .route-warning__actions{ display:grid; gap:9px; margin-top:16px; }
  .route-warning__open{ min-height:50px; background:#EE8A94; color:#fff; border-radius:999px; font-weight:700; letter-spacing:.01em; text-transform:none; }
  .route-warning__open:focus-visible,.route-warning__close:focus-visible{
    outline:2px solid rgba(238,138,148,.55); outline-offset:2px; }
  @media (max-width:360px){
    .convite__actions{ gap:7px; }
    .convite-action-menu{ flex:1 1 132px; }
    .convite__action{ padding-inline:10px; }
    .convite-options{ min-width:100%; }
  }
  @media (min-width:860px){
    body:not(.shell-preview) .intro-pin__stage{ padding-inline:clamp(2rem,8vw,7rem); }
    body:not(.shell-preview) .intro-pin__text{
      max-width:min(25ch,46rem);
      font-size:clamp(1.62rem,2vw,2.16rem);
      line-height:1.42;
    }
    body:not(.shell-preview) .intro-finale{
      max-width:min(16ch,62vw);
      font-size:clamp(3.35rem,5.1vw,5.85rem);
      gap:clamp(var(--space-6),5vh,var(--space-12));
    }
    body:not(.shell-preview) .intro-divider{ width:clamp(150px,14vw,220px); }
    body:not(.shell-preview) .intro-divider--bottom{ width:clamp(76px,7vw,112px); }
    body:not(.shell-preview) #celebrar .intro-pin__text{
      max-width:min(23ch,44rem);
      font-size:clamp(1.72rem,2.15vw,2.28rem);
    }
    body:not(.shell-preview) #celebrar .intro-divider--bottom{ width:clamp(86px,8vw,122px); }
    body:not(.shell-preview) .album-skip{ top:calc(var(--safe-top) + clamp(10px, 1.8svh, 20px)); right:calc(env(safe-area-inset-right, 0px) + clamp(12px, 2.4vw, 28px)); }
    body:not(.shell-preview) .album-dots{ gap:9px; bottom:calc(var(--continue-bottom) + 5.8rem); }
    body:not(.shell-preview) .album-dot{ flex-basis:22px; }
    body:not(.shell-preview) .album-dot.is-on::before{ width:30px; }
    body:not(.shell-preview) #festa .intro-pin__stage{
      padding-top:calc(var(--header-h) + var(--safe-top) + var(--space-2));
      padding-bottom:calc(var(--continue-bottom) + 3.25rem);
    }
    body:not(.shell-preview) #festa .intro-hint{
      bottom:max(var(--space-2), calc(var(--safe-bottom) + var(--space-2)));
    }
    body:not(.shell-preview) .convite{
      width:min(42vw,540px);
      max-width:540px;
      padding:0 clamp(28px,3.2vw,44px) 2px;
      transform:translateY(clamp(0px,.8svh,10px));
    }
    body:not(.shell-preview) .convite__floral--top{ width:clamp(120px,10vw,144px); }
    body:not(.shell-preview) .convite__name{ margin-top:20px; font-size:16.5px; letter-spacing:.29em; }
    body:not(.shell-preview) .convite__vine{ width:clamp(104px,8.8vw,128px); margin-top:18px; }
    body:not(.shell-preview) .convite__date{ margin-top:22px; font-size:clamp(4.1rem,5.25vw,4.9rem); }
    body:not(.shell-preview) .convite__time{ font-size:clamp(2.82rem,3.55vw,3.32rem); }
    body:not(.shell-preview) .convite__floral--branch{ width:clamp(112px,9vw,132px); margin-top:24px; }
    body:not(.shell-preview) .convite__addr{ margin-top:24px; }
    body:not(.shell-preview) .convite__addr-1{ font-size:clamp(1.08rem,1.5vw,1.28rem); }
    body:not(.shell-preview) .convite__addr-2{ font-size:clamp(.9rem,1.1vw,1rem); }
    body:not(.shell-preview) .convite__rsvp{ margin-top:28px; padding-inline:44px; }
    body:not(.shell-preview) .convite__actions{ margin-top:12px; gap:10px; }
  }

  /* rsvp */
  .device.is-rsvp-locked{ overflow:hidden; }
  .rsvp-sheet{ position:fixed; inset:0; z-index:var(--z-modal); display:grid; align-items:end; justify-items:center;
    padding:calc(12px + var(--safe-top)) 10px calc(10px + var(--safe-bottom)); opacity:0; visibility:hidden;
    pointer-events:none; transition:opacity 260ms var(--motion-ease-soft), visibility 260ms var(--motion-ease-soft); }
  .rsvp-sheet.is-open{ opacity:1; visibility:visible; pointer-events:auto; }
  .rsvp-sheet__scrim{ position:absolute; inset:0; background:rgba(58,34,41,.42); backdrop-filter:blur(9px); }
  .rsvp-sheet__panel{ position:relative; z-index:1; width:min(100%, 430px); max-height:min(92dvh, 780px);
    overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; border:1px solid rgba(239,202,210,.92);
    border-radius:28px 28px 0 0; background:
      linear-gradient(180deg, rgba(251,238,240,.92) 0, rgba(255,253,251,.96) 118px, #FFFDFB 100%);
    box-shadow:0 28px 72px -28px rgba(58,34,41,.44); padding:18px 18px 0;
    transform:translateY(24px) scale(.985); opacity:.88;
    transition:transform 360ms var(--motion-ease-organic), opacity 260ms var(--motion-ease-soft); }
  .rsvp-sheet.is-open .rsvp-sheet__panel{ transform:none; opacity:1; }
  .rsvp-sheet__handle{ display:block; width:46px; height:5px; border-radius:999px; margin:0 auto 12px; background:rgba(58,34,41,.14); }
  .rsvp-sheet__close{ position:absolute; top:14px; right:14px; width:var(--target-min); height:var(--target-min); border:0; border-radius:50%;
    display:grid; place-items:center; background:rgba(255,253,251,.86); color:#82786e; box-shadow:0 8px 20px -14px rgba(58,34,41,.55); cursor:pointer; }
  .rsvp-sheet__close svg{ width:20px; height:20px; }
  .rsvp-sheet__close:focus-visible{ outline:2px solid var(--color-focus-ring); outline-offset:2px; }
  .rsvp-sheet__header{ text-align:center; padding:4px 34px 20px; }
  .rsvp-sheet__ornament{ display:block; width:88px; height:auto; margin:0 auto 10px; }
  .rsvp-sheet__title{ margin:0; font-family:'Fraunces', Georgia, serif; font-style:italic; font-weight:500;
    font-size:clamp(1.9rem, 9vw, 2.65rem); line-height:.98; color:#EE8A94; letter-spacing:0; text-wrap:balance; }
  .rsvp-form{ padding-bottom:0; }
  .rsvp-honey{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }
  .rsvp-counts{ display:grid; grid-template-columns:1fr; gap:0; }
  .rsvp-counts .field{ min-width:0; }
  .rsvp-counts .stepper{ min-width:0; }
  .rsvp-sheet .field{ margin-bottom:16px; }
  .rsvp-sheet .field__label{ color:#82786e; font-size:.86rem; line-height:1.2; }
  .rsvp-sheet .field__optional{ color:var(--color-text-tertiary); font-weight:400; }
  .rsvp-sheet .input,.rsvp-sheet .textarea,.rsvp-sheet .select{ min-height:50px; border-radius:16px; background:#FFFDFB; }
  .rsvp-sheet .textarea{ min-height:86px; }
  .rsvp-check{ margin:0 0 16px; padding:2px 0; }
  .rsvp-sheet__actions{ position:sticky; bottom:0; z-index:2; margin:2px -18px 0; padding:20px 18px calc(16px + var(--safe-bottom));
    background:linear-gradient(180deg, rgba(255,253,251,0) 0, rgba(255,253,251,.96) 16px, #FFFDFB 100%); }
  .rsvp-status{ min-height:0; margin:0 0 12px; padding:0 4px; text-align:center;
    font-family:'Nunito', var(--font-sans), sans-serif; font-size:.86rem; line-height:1.35; color:#82786e;
    opacity:0; transform:translateY(4px); transition:opacity 220ms var(--motion-ease-soft), transform 220ms var(--motion-ease-soft); }
  .rsvp-status:not(:empty){ min-height:38px; margin-bottom:10px; opacity:1; transform:none; }
  .rsvp-status[data-tone="error"]{ color:#B05E74; }
  .rsvp-status[data-tone="success"]{ color:#3F9D7E; }
  .rsvp-status[data-tone="warning"]{ color:#82786e; }
  .rsvp-duplicate{ display:grid; gap:10px; padding:12px; border:1px solid rgba(238,138,148,.24); border-radius:18px;
    background:linear-gradient(180deg, rgba(255,247,248,.92), rgba(255,253,251,.94)); text-align:left; }
  .rsvp-duplicate__title{ display:block; color:#B05E74; font-size:.9rem; font-weight:700; line-height:1.2; }
  .rsvp-duplicate__text{ display:block; color:#82786e; font-size:.84rem; line-height:1.42; }
  .rsvp-duplicate__actions{ display:grid; grid-template-columns:1fr; gap:8px; }
  .rsvp-duplicate__actions button{ min-height:42px; border-radius:999px; border:1px solid rgba(130,120,110,.18);
    font-family:'Nunito', var(--font-sans), sans-serif; font-size:.84rem; font-weight:800; cursor:pointer;
    transition:transform 180ms var(--motion-ease-soft), background 220ms var(--motion-ease-soft), border-color 220ms var(--motion-ease-soft); }
  .rsvp-duplicate__update{ background:#EE8A94; color:#fff; border-color:#EE8A94; }
  .rsvp-duplicate__cancel{ background:#FFFDFB; color:#82786e; }
  .rsvp-duplicate__actions button:active{ transform:scale(.98); }
  .rsvp-submit{ min-height:54px; background:#EE8A94; box-shadow:0 14px 30px -18px rgba(194,96,122,.78); }
  .rsvp-submit:hover{ background:#e87c87; }
  .device.is-rsvp-success-locked{ overflow:hidden; }
  .rsvp-success{ position:fixed; inset:0; z-index:calc(var(--z-modal) + 20); display:grid; place-items:center;
    padding:calc(18px + var(--safe-top)) 14px calc(18px + var(--safe-bottom)); opacity:0; visibility:hidden; pointer-events:none;
    perspective:1200px; overflow:hidden; transition:opacity 420ms var(--motion-ease-soft), visibility 420ms var(--motion-ease-soft); }
  .rsvp-success.is-open{ opacity:1; visibility:visible; pointer-events:auto; }
  .rsvp-success__scrim{ position:absolute; inset:0; z-index:0;
    background:
      radial-gradient(circle at 52% 38%, rgba(255,253,251,.52), rgba(247,242,236,.18) 34%, rgba(58,34,41,.32) 100%),
      rgba(58,34,41,.22);
    backdrop-filter:blur(12px) saturate(1.04); }
  .rsvp-success__ambient{ position:absolute; inset:0; z-index:1; overflow:hidden; pointer-events:none; }
  .rsvp-success__ambient span{ position:absolute; width:clamp(118px,38vw,210px); aspect-ratio:1.18; border-radius:46% 54% 52% 48% / 42% 45% 55% 58%;
    background:radial-gradient(circle at 38% 32%, rgba(255,244,246,.78), rgba(238,138,148,.18) 58%, transparent 74%);
    opacity:0; filter:blur(2px); transform:translate3d(0,18px,-80px) scale(.7) rotate(var(--ambient-r,-8deg)); }
  .rsvp-success__ambient span:nth-child(1){ left:-32px; top:12%; --ambient-r:-16deg; }
  .rsvp-success__ambient span:nth-child(2){ right:-56px; top:48%; width:clamp(150px,42vw,240px); --ambient-r:18deg; background:radial-gradient(circle at 44% 38%, rgba(154,211,182,.32), rgba(154,211,182,.08) 56%, transparent 74%); }
  .rsvp-success__ambient span:nth-child(3){ left:18%; bottom:-54px; width:clamp(130px,38vw,220px); --ambient-r:8deg; }
  .rsvp-success.is-open .rsvp-success__ambient span{ animation:successAmbient 5200ms var(--motion-ease-organic) var(--ambient-delay,0ms) both; }
  .rsvp-success.is-open .rsvp-success__ambient span:nth-child(2){ --ambient-delay:220ms; }
  .rsvp-success.is-open .rsvp-success__ambient span:nth-child(3){ --ambient-delay:420ms; }
  .rsvp-success__panel{ position:relative; z-index:3; width:min(92vw, 430px); min-height:min(485px, calc(100dvh - 86px));
    display:grid; grid-template-rows:minmax(205px,.86fr) auto; align-items:center; overflow:visible; border:0; background:transparent;
    transform:translate3d(0,34px,0) rotateX(10deg) rotate(-2deg) scale(.84); opacity:0; }
  .rsvp-success__panel::before{ content:""; position:absolute; inset:46px -2px 12px; z-index:-1;
    border:1px solid rgba(239,202,210,.7); border-radius:52% 48% 47% 53% / 34% 37% 63% 66%;
    background:
      radial-gradient(circle at 48% 14%, rgba(255,240,243,.96), rgba(255,253,251,.98) 42%, rgba(247,242,236,.97) 100%),
      #FFFDFB;
    box-shadow:0 32px 86px -42px rgba(58,34,41,.52), inset 0 -18px 48px rgba(238,138,148,.07);
    transform:rotate(-1.8deg); }
  .rsvp-success__panel::after{ content:""; position:absolute; right:-38px; top:44px; z-index:-2; width:132px; aspect-ratio:1;
    border-radius:56% 44% 46% 54% / 50% 44% 56% 50%; background:radial-gradient(circle at 35% 35%, rgba(154,211,182,.34), rgba(154,211,182,.09) 62%, transparent 74%);
    filter:blur(.3px); transform:rotate(18deg) scale(.7); opacity:0; }
  .rsvp-success.is-open .rsvp-success__panel{ animation:successPanelArrive 1650ms cubic-bezier(.16,1.1,.28,1) both; }
  .rsvp-success.is-open .rsvp-success__panel::after{ animation:successSideBloom 2400ms var(--motion-ease-organic) 240ms both; }
  .rsvp-success__stage{ position:relative; z-index:4; min-height:205px; display:grid; place-items:end center; isolation:isolate; pointer-events:none; }
  .rsvp-success__stage::before,
  .rsvp-success__stage::after{ content:""; position:absolute; border-radius:999px; opacity:0; pointer-events:none; }
  .rsvp-success__stage::before{ width:238px; height:84px; bottom:18px; background:radial-gradient(ellipse, rgba(154,211,182,.18), transparent 67%); transform:scale(.72); }
  .rsvp-success__stage::after{ width:210px; height:210px; bottom:-44px; background:conic-gradient(from 20deg, transparent, rgba(238,138,148,.13), transparent, rgba(154,211,182,.14), transparent); filter:blur(.2px); transform:scale(.52) rotate(-28deg); }
  .rsvp-success.is-open .rsvp-success__stage::before{ animation:successGroundGlow 2600ms var(--motion-ease-organic) 220ms both; }
  .rsvp-success.is-open .rsvp-success__stage::after{ animation:successHalo 3200ms var(--motion-ease-organic) 80ms both; }
  .rsvp-success__halo{ position:absolute; bottom:-24px; width:240px; aspect-ratio:1; border-radius:50%;
    background:radial-gradient(circle, rgba(154,211,182,.21), rgba(154,211,182,.07) 54%, transparent 70%);
    transform:scale(.46); opacity:0; }
  .rsvp-success.is-open .rsvp-success__halo{ animation:successHalo 3200ms var(--motion-ease-organic) 80ms both; }
  .rsvp-success__flower{ position:relative; z-index:3; width:clamp(118px,34vw,156px); height:auto; filter:none; margin-bottom:14px;
    transform:translateY(18px) scale(.24) rotate(-12deg); opacity:0; transform-origin:center bottom; }
  .rsvp-success.is-open .rsvp-success__flower{ animation:successBloom 1900ms cubic-bezier(.16,1.24,.32,1) 160ms both; }
  .rsvp-success__bee{ position:absolute; z-index:var(--bee-layer,8); left:-74px; top:var(--bee-top,22%); width:var(--bee-size,64px); height:var(--bee-size,64px); opacity:0; pointer-events:none; transform:translate3d(0,0,var(--bee-depth,0px)) rotate(-8deg); }
  .rsvp-success__bee svg{ display:block; width:100%; height:100%; }
  .rsvp-success__bee.is-flying{ animation:successBee var(--bee-duration,5600ms) cubic-bezier(.44,0,.18,1) var(--bee-delay,780ms) both; }
  .rsvp-success__bee--back{ --bee-size:42px; --bee-top:12%; --bee-layer:3; --bee-depth:-90px; --bee-delay:1380ms; --bee-duration:6400ms; --bee-opacity:.72;
    --bee-y0:-12px; --bee-x1:14vw; --bee-y1:-32px; --bee-x2:32vw; --bee-y2:-58px; --bee-x3:54vw; --bee-y3:-20px; --bee-x4:76vw; --bee-y4:-48px; --bee-y5:-24px;
    --bee-s0:.56; --bee-s1:.68; --bee-s2:.78; --bee-s3:.7; --bee-s4:.62; --bee-s5:.54; --bee-r0:-7deg; --bee-r1:8deg; --bee-r2:-5deg; --bee-r3:7deg; --bee-r4:-6deg; --bee-r5:5deg; }
  .rsvp-success__bee--near{ --bee-size:78px; --bee-top:36%; --bee-layer:9; --bee-depth:120px; --bee-delay:1880ms; --bee-duration:7000ms; --bee-opacity:.84;
    --bee-y0:34px; --bee-x1:9vw; --bee-y1:16px; --bee-x2:28vw; --bee-y2:44px; --bee-x3:52vw; --bee-y3:-8px; --bee-x4:73vw; --bee-y4:28px; --bee-y5:2px;
    --bee-s0:.72; --bee-s1:.9; --bee-s2:1.04; --bee-s3:.94; --bee-s4:.82; --bee-s5:.7; --bee-r0:-10deg; --bee-r1:6deg; --bee-r2:10deg; --bee-r3:-7deg; --bee-r4:5deg; --bee-r5:-4deg; }
  .success-particle{ position:absolute; left:var(--particle-start-x,50%); top:var(--particle-start-y,42%); z-index:var(--particle-layer,4);
    width:var(--particle-size,10px); height:calc(var(--particle-size,10px) * var(--particle-ratio,1.45)); border-radius:70% 72% 64% 60%;
    background:var(--particle-color,#EE8A94); opacity:0; filter:blur(var(--particle-blur,0)); transform:translate3d(-50%,-50%,var(--particle-depth,0px)) scale(.18) rotate(var(--particle-r0,0deg));
    pointer-events:none; will-change:transform, opacity; }
  .success-particle.is-dot{ border-radius:50%; --particle-ratio:1; }
  .success-particle.is-spark{ height:calc(var(--particle-size,10px) * .34); border-radius:999px; }
  .rsvp-success.is-open .success-particle{ animation:successBurst var(--particle-duration,4200ms) cubic-bezier(.13,.72,.18,1) var(--particle-delay,0ms) both; }
  .rsvp-success__copy{ position:relative; z-index:5; display:grid; justify-items:center; gap:9px; padding:0 28px 32px; text-align:center;
    opacity:0; transform:translateY(22px); }
  .rsvp-success.is-open .rsvp-success__copy{ animation:successCopy 1100ms var(--motion-ease-organic) 860ms both; }
  .rsvp-success__eyebrow{ margin:0; color:#9AD3B6; font-size:.72rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; }
  .rsvp-success__title{ margin:0; font-family:'Fraunces', Georgia, serif; font-style:italic; font-weight:500;
    font-size:clamp(2.35rem,12vw,3.55rem); line-height:.92; color:#EE8A94; text-wrap:balance; }
  .rsvp-success__text{ max-width:28ch; margin:0; color:#82786e; font-size:.96rem; line-height:1.45; text-wrap:balance; }
  .rsvp-success__continue{ min-height:50px; margin-top:8px; padding-inline:28px; background:#EE8A94; color:#fff; box-shadow:0 14px 30px -20px rgba(194,96,122,.85); }
  .rsvp-success__continue:hover{ background:#e87c87; }
  @keyframes successAmbient{
    0%{ opacity:0; transform:translate3d(0,24px,-80px) scale(.66) rotate(var(--ambient-r,-8deg)); }
    34%{ opacity:.92; transform:translate3d(0,-2px,-80px) scale(1) rotate(calc(var(--ambient-r,-8deg) + 5deg)); }
    100%{ opacity:.72; transform:translate3d(0,0,-80px) scale(.94) rotate(calc(var(--ambient-r,-8deg) + 2deg)); }
  }
  @keyframes successPanelArrive{
    0%{ opacity:0; transform:translate3d(0,34px,0) rotateX(10deg) rotate(-2deg) scale(.84); }
    34%{ opacity:1; transform:translate3d(0,-7px,0) rotateX(0) rotate(1.1deg) scale(1.03); }
    58%{ transform:translate3d(0,3px,0) rotate(-.55deg) scale(.992); }
    100%{ opacity:1; transform:translate3d(0,0,0) rotate(0) scale(1); }
  }
  @keyframes successSideBloom{
    0%{ opacity:0; transform:rotate(18deg) scale(.7); }
    48%{ opacity:.9; transform:rotate(8deg) scale(1.06); }
    100%{ opacity:.68; transform:rotate(12deg) scale(1); }
  }
  @keyframes successGroundGlow{
    0%{ opacity:0; transform:scale(.62); }
    52%{ opacity:.92; transform:scale(1.08); }
    100%{ opacity:.72; transform:scale(1); }
  }
  @keyframes successHalo{
    0%{ opacity:0; transform:scale(.42) rotate(-28deg); }
    34%{ opacity:1; transform:scale(1.12) rotate(12deg); }
    100%{ opacity:.62; transform:scale(1) rotate(0deg); }
  }
  @keyframes successBloom{
    0%{ opacity:0; transform:translateY(22px) scale(.2) rotate(-13deg); }
    30%{ opacity:1; transform:translateY(-10px) scale(1.14) rotate(6deg); }
    56%{ transform:translateY(3px) scale(.96) rotate(-2deg); }
    100%{ opacity:1; transform:translateY(0) scale(1) rotate(0); }
  }
  @keyframes successBurst{
    0%{ opacity:0; transform:translate3d(-50%,-50%,var(--particle-depth,0px)) scale(.14) rotate(var(--particle-r0,0deg)); }
    12%{ opacity:var(--particle-opacity,.9); }
    32%{ transform:translate3d(calc(-50% + var(--particle-x1,0vw)), calc(-50% + var(--particle-y1,0vh)), var(--particle-depth,0px)) scale(calc(var(--particle-scale,1) * .9)) rotate(var(--particle-r1,120deg)); }
    68%{ opacity:var(--particle-opacity,.9); transform:translate3d(calc(-50% + var(--particle-x2,0vw)), calc(-50% + var(--particle-y2,0vh)), var(--particle-depth,0px)) scale(var(--particle-scale,1)) rotate(var(--particle-r2,240deg)); }
    100%{ opacity:0; transform:translate3d(calc(-50% + var(--particle-x3,0vw)), calc(-50% + var(--particle-y3,0vh)), var(--particle-depth,0px)) scale(calc(var(--particle-scale,1) * .82)) rotate(var(--particle-r3,420deg)); }
  }
  @keyframes successBee{
    0%{ opacity:0; transform:translate3d(-24px,var(--bee-y0,20px),var(--bee-depth,0px)) scale(var(--bee-s0,.72)) rotate(var(--bee-r0,-9deg)); }
    10%{ opacity:var(--bee-opacity,.88); transform:translate3d(var(--bee-x1,10vw),var(--bee-y1,-6px),var(--bee-depth,0px)) scale(var(--bee-s1,.86)) rotate(var(--bee-r1,6deg)); }
    34%{ transform:translate3d(var(--bee-x2,34vw),var(--bee-y2,-40px),var(--bee-depth,0px)) scale(var(--bee-s2,1.02)) rotate(var(--bee-r2,-4deg)); }
    58%{ transform:translate3d(var(--bee-x3,58vw),var(--bee-y3,18px),var(--bee-depth,0px)) scale(var(--bee-s3,.9)) rotate(var(--bee-r3,8deg)); }
    82%{ opacity:var(--bee-opacity,.88); transform:translate3d(var(--bee-x4,78vw),var(--bee-y4,-28px),var(--bee-depth,0px)) scale(var(--bee-s4,.78)) rotate(var(--bee-r4,-5deg)); }
    100%{ opacity:0; transform:translate3d(calc(100vw + 92px),var(--bee-y5,10px),var(--bee-depth,0px)) scale(var(--bee-s5,.7)) rotate(var(--bee-r5,5deg)); }
  }
  @keyframes successCopy{
    0%{ opacity:0; transform:translateY(24px) scale(.97); }
    66%{ opacity:1; transform:translateY(-2px) scale(1.01); }
    to{ opacity:1; transform:translateY(0); }
  }
  @media (max-width:360px){
    .rsvp-success{ padding-inline:10px; }
    .rsvp-success__panel{ width:min(92vw, 392px); min-height:min(466px, calc(100dvh - 58px)); }
    .rsvp-success__panel::before{ inset:38px -2px 12px; }
    .rsvp-success__copy{ padding-inline:20px; }
    .rsvp-success__title{ font-size:clamp(2.15rem,12vw,3rem); }
  }
  @media (min-width:420px){ .rsvp-duplicate__actions{ grid-template-columns:1fr auto; } .rsvp-duplicate__cancel{ padding-inline:18px; } }
  @media (max-width:340px){
    .rsvp-sheet__panel{ padding-inline:16px; }
    .rsvp-sheet__actions{ margin-inline:-16px; padding-inline:16px; }
  }
  @media (min-width:480px){
    .rsvp-counts{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; }
  }
  @media (min-width:700px){
    .rsvp-sheet{ align-items:center; padding:32px; }
    .rsvp-sheet__panel{ width:min(560px, calc(100vw - 48px)); max-height:min(92dvh, 780px); border-radius:32px; padding:22px 26px 0; }
    .rsvp-sheet__header{ padding-inline:46px; }
    .rsvp-sheet__actions{ margin-inline:-26px; padding-inline:26px; }
    .route-warning{ align-items:center; padding:32px; }
  }
