/* ===========================================================
   Jardim das Borboletas — convite em forma de apresentação
   Fontes: Baloo 2 (base) + Pacifico + Grandstander (acentos)
   Ícones: Simple Icons (WhatsApp) e Material Icons, embutidos.
   =========================================================== */
:root{
  --roxo:#4E2178;
  --roxo-claro:#7A44B0;
  --rosa:#E8617F;
  --rosa-escuro:#C9455F;
  --verde-folha:#4B9152;
  --creme:#FDF3E0;
  --creme-2:#F7E6C8;
  --papel:#FFFBF2;
  --papel-2:#F8ECD6;
  --borda-creme:#E0BE8C;
  --verde-2:#3B8442;
  --azul-2:#23568A;
  --mad-1:#A0693C;
  --mad-2:#7C4A28;
  --mad-3:#5E351B;
  --arred:22px;
  --script:"Pacifico",cursive;
  --mao:"Grandstander","Baloo 2",cursive;
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  overflow:hidden;
  background:#2A180F;
  color:var(--roxo);
  font-family:"Baloo 2",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-weight:600;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
[hidden]{display:none!important}
button{font:inherit;color:inherit}

/* ======================= PALCO / SLIDES ======================= */
.palco{position:fixed;inset:0;overflow:hidden;background:#EADFC9}

.slide{
  position:absolute;inset:0;
  overflow:hidden;
  opacity:0;
  visibility:hidden;
  transform:scale(1.025);
  transition:opacity .8s ease, transform .8s ease, visibility 0s linear .8s;
}
.slide.ativo{
  opacity:1;
  visibility:visible;
  transform:none;
  transition:opacity .8s ease, transform .8s ease, visibility 0s;
}

/* --- fundo com aproximação lenta (efeito Ken Burns) --- */
.fundo{
  position:absolute;inset:-2.5%;
  background-size:cover;
  background-repeat:no-repeat;
  background-color:#BFE0EE;
  will-change:transform;
}
.fundo-jardim{background-image:url("assets/background.jpg");background-position:center 62%}
.fundo-piscina{background-image:url("assets/background_pool.jpg");background-position:center 58%}
.slide.ativo .fundo,
.slide.saindo .fundo{animation:aproxima var(--dur,6s) linear both}
@keyframes aproxima{from{transform:scale(1)}to{transform:scale(1.085)}}

.pilha{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  gap:clamp(14px,4vh,30px);
  padding:calc(env(safe-area-inset-top) + 34px) 16px calc(env(safe-area-inset-bottom) + 24px);
  text-align:center;
}
/* na tela do jardim o título abre no alto, sobre o arco de flores */
.pilha .titulo{margin-top:clamp(4px,2.5vh,22px)}
.pilha-baixo{justify-content:flex-end;padding-bottom:calc(env(safe-area-inset-bottom) + 34px)}

/* --- entradas --- */
.anima{opacity:0}
.slide.ativo .anima,
.slide.saindo .anima{animation:entra .85s cubic-bezier(.2,.85,.3,1) both;animation-delay:var(--d,0s)}
@keyframes entra{
  from{opacity:0;transform:translateY(20px) scale(.97)}
  to  {opacity:1;transform:none}
}

/* ======================= TELA 1 · JARDIM ======================= */
.titulo{
  position:relative;
  isolation:isolate;
  margin:0;
  font-weight:800;
  line-height:1.04;
  color:var(--roxo);
  padding-inline:26px;
  text-shadow:
    0 0 10px rgba(255,255,255,1),
    0 0 22px rgba(255,255,255,.95),
    0 0 40px rgba(255,252,244,.8),
    0 2px 0 rgba(255,255,255,.9);
}
.titulo::before{
  content:"";position:absolute;z-index:-1;
  left:-24px;right:-24px;top:-30px;bottom:-22px;pointer-events:none;
  background:radial-gradient(50% 48% at 50% 50%,
    rgba(255,251,242,.74) 0%,rgba(255,251,242,.46) 44%,rgba(255,251,242,0) 100%);
}
.titulo .l1{display:block;font-size:clamp(27px,8.4vw,47px)}
.titulo .l2{display:block;font-size:clamp(20px,6.2vw,36px)}

.retrato{
  position:relative;
  width:min(58vw,240px);
  aspect-ratio:1;
  flex:0 0 auto;
  border-radius:50%;
  background:radial-gradient(circle at 50% 30%,#FFF7E6,#F0D8A8);
  border:6px solid #FDF3E0;
  outline:4px solid #C79343;
  box-shadow:0 16px 40px rgba(0,0,0,.45),0 0 0 12px rgba(255,255,255,.14);
  overflow:hidden;
}
.retrato.pequeno{width:min(34vw,128px);border-width:5px;outline-width:3px;box-shadow:0 8px 22px rgba(120,80,40,.3)}
.retrato img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.retrato-luz{
  position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:linear-gradient(150deg,rgba(255,255,255,.5),rgba(255,255,255,0) 42%);
}

/* ======================= TELAS NEUTRAS ======================= */
.s-neutra{background:linear-gradient(165deg,var(--papel) 0%,var(--papel-2) 100%)}
.s-neutra::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(60% 40% at 12% 8%,rgba(232,97,127,.10),transparent 70%),
    radial-gradient(55% 40% at 90% 92%,rgba(122,68,176,.10),transparent 70%);
}
.moldura{
  position:absolute;inset:clamp(12px,3.6vw,20px);
  border:3px solid var(--borda-creme);
  border-radius:30px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:0;
  padding:clamp(20px,5vw,32px) clamp(16px,4.6vw,26px);
  overflow-y:auto;
  overscroll-behavior:contain;
  text-align:center;
}
.moldura::before{
  content:"";position:absolute;inset:7px;
  border:2px dashed rgba(199,147,67,.5);
  border-radius:23px;pointer-events:none;
}
/* borboletas paradas nos cantos — decorativas, sem animação */
.canto{position:absolute;width:clamp(26px,7vw,38px);opacity:.5;pointer-events:none}
.canto svg{width:100%;height:auto;display:block}
.canto .asa{animation:none}
.c1{top:18px;left:20px;transform:rotate(-24deg);color:#C88BE0}
.c2{top:22px;right:22px;transform:rotate(28deg);color:#F0A93E}
.c3{bottom:24px;left:24px;transform:rotate(18deg);color:#6FC6E8}
.c4{bottom:18px;right:20px;transform:rotate(-30deg);color:#EE8FAB}

.risco{
  display:block;width:clamp(60px,22vw,110px);height:3px;border-radius:3px;
  margin:clamp(9px,2.2vh,16px) 0;
  background:linear-gradient(90deg,transparent,var(--borda-creme) 22%,var(--borda-creme) 78%,transparent);
}

/* --- tela 2 ---
   3 "estrofes" (Estamos esperando/vocês · para um almoço/e uma tarde ·
   cheios/de alegria!). Dentro de cada uma as duas linhas ficam coladas;
   entre estrofes há um respiro bem maior — daí as classes -2. */
.t-a{margin:0;font-weight:800;color:var(--roxo);font-size:clamp(21px,6.6vw,32px);line-height:1.08}
.t-b{
  margin:-.05em 0 0;font-family:var(--script);font-weight:400;
  color:var(--rosa);font-size:clamp(50px,16.5vw,84px);line-height:1.02;
  text-shadow:0 3px 0 rgba(232,97,127,.14);
}
.t-c{
  margin:clamp(16px,4.4vh,28px) 0 0;
  font-weight:600;color:var(--roxo-claro);
  font-size:clamp(18px,5.4vw,26px);line-height:1.15;
}
.t-c.t-c2{margin-top:.06em}
.t-d{
  margin:clamp(16px,4.4vh,28px) 0 0;font-family:var(--mao);font-weight:700;
  color:var(--verde-folha);font-size:clamp(26px,8.6vw,44px);line-height:1.08;
  transform:rotate(-2.5deg);
}
.t-d.t-d2{margin-top:-.06em}

/* --- tela 3 --- */
.t-anote{
  margin:0 0 -.1em;font-family:var(--mao);font-weight:700;
  color:var(--rosa);font-size:clamp(27px,8.4vw,42px);line-height:1.15;
  transform:rotate(-3deg);
}
.t-dia{
  margin:0;font-weight:800;color:var(--roxo);
  font-size:clamp(76px,26vw,132px);line-height:.86;
  letter-spacing:-.03em;
  text-shadow:0 5px 0 rgba(78,33,120,.12);
}
.t-mes{
  margin:-.04em 0 0;font-family:var(--script);font-weight:400;
  color:var(--verde-folha);font-size:clamp(28px,9vw,45px);line-height:1.12;
}
.t-semana{
  margin:.5em 0 0;font-weight:800;color:var(--rosa-escuro);
  font-size:clamp(13px,3.9vw,17px);text-transform:uppercase;letter-spacing:.34em;
  text-indent:.34em;
}
.t-hora{margin:0;font-weight:700;color:var(--roxo);font-size:clamp(16px,4.8vw,22px)}
.t-local{margin:.42em 0 0;display:flex;flex-direction:column;gap:2px;line-height:1.22}
.t-local b{font-weight:800;color:var(--roxo);font-size:clamp(16px,4.7vw,21px)}
.t-local span{font-weight:600;color:var(--roxo-claro);font-size:clamp(12px,3.5vw,15px)}

/* --- tela 5 · final --- */
.s-final .moldura{gap:0;justify-content:center}
.f-nome{
  margin:.6em 0 0;font-weight:800;color:var(--roxo);
  font-size:clamp(22px,6.6vw,32px);line-height:1.12;
  max-width:22ch;text-wrap:balance;
}
.f-nome small{
  display:block;margin-top:3px;
  font-family:var(--script);font-weight:400;
  color:var(--rosa);font-size:max(16px,.62em);line-height:1.35;
}

.f-bloco{display:flex;flex-direction:column;align-items:center;margin-top:clamp(9px,2.4vh,18px)}
.f-rotulo{
  font-weight:800;font-size:11px;text-transform:uppercase;
  letter-spacing:.22em;text-indent:.22em;
  color:#B9924F;margin-bottom:3px;
}
.f-destaque{
  font-family:var(--script);font-weight:400;
  color:var(--rosa-escuro);font-size:clamp(22px,6.6vw,29px);line-height:1.3;
}
.f-lugar{font-weight:800;color:var(--roxo);font-size:clamp(16px,4.7vw,20px);line-height:1.2}
.f-sub{font-weight:600;color:var(--roxo-claro);font-size:clamp(12px,3.5vw,14.5px);margin-top:2px;line-height:1.25}

.rever{
  margin-top:clamp(10px,2.4vh,16px);
  border:0;background:none;cursor:pointer;
  color:#A98B62;font-weight:700;font-size:13px;
  letter-spacing:.02em;
}

/* botões do convite final: pílulas empilhadas, uma linha cada */
.acoes{
  display:flex;flex-direction:column;gap:9px;
  width:100%;max-width:290px;
  margin-top:clamp(14px,3.2vh,24px);
}
.pilula{
  display:flex;align-items:center;justify-content:center;gap:9px;
  min-height:46px;padding:0 18px;
  border-radius:999px;
  font-weight:800;font-size:clamp(14px,4.1vw,16px);
  text-decoration:none;white-space:nowrap;
  transition:transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.pilula svg{width:20px;height:20px;flex:0 0 auto;display:block;fill:currentColor}
.pilula:active{transform:translateY(1px) scale(.985)}

.pilula-cheia{
  background:linear-gradient(180deg,#57B45C,#3E8E41);
  color:#fff;
  box-shadow:0 4px 14px rgba(62,142,65,.34), inset 0 1px 0 rgba(255,255,255,.3);
}
.pilula-cheia:active{box-shadow:0 2px 7px rgba(62,142,65,.34), inset 0 1px 0 rgba(255,255,255,.3)}

.pilula-vazia{
  background:rgba(255,255,255,.55);
  color:var(--roxo);
  border:2px solid rgba(122,68,176,.4);
  box-shadow:0 2px 8px rgba(120,80,40,.1);
}
.pilula-vazia:active{background:rgba(122,68,176,.1)}

/* ======================= CARTÃO (tela 4) ======================= */
.cartao{
  display:flex;align-items:center;justify-content:center;gap:10px;
  width:100%;max-width:520px;
  background:linear-gradient(180deg,var(--creme),var(--creme-2));
  border:2.5px solid var(--borda-creme);
  border-radius:var(--arred);
  box-shadow:0 5px 0 rgba(120,80,40,.18),0 10px 22px rgba(0,0,0,.25);
  padding:14px 16px;
  text-align:center;
}
.cartao p{margin:0;font-size:clamp(15px,4.4vw,20px);font-weight:700;line-height:1.28;text-wrap:balance}
.coracao{width:22px;height:22px;flex:0 0 auto;fill:var(--rosa);stroke:none}

/* ======================= BARRA DE PROGRESSO ======================= */
.barra{
  position:absolute;z-index:12;
  top:calc(env(safe-area-inset-top) + 7px);
  left:10px;right:10px;
  display:flex;gap:4px;pointer-events:none;
}
.barra i{
  flex:1;height:3px;border-radius:3px;overflow:hidden;position:relative;
  background:rgba(90,58,28,.26);
  box-shadow:0 0 0 1px rgba(255,255,255,.28);
}
.barra i::after{
  content:"";position:absolute;inset:0;border-radius:3px;
  background:var(--rosa);
  transform:scaleX(0);transform-origin:left;
}
.barra i.feito::after{transform:scaleX(1)}
.barra i.andando::after{animation:encher var(--t,6s) linear forwards}
@keyframes encher{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ============================ PORTA ============================ */
.porta{position:fixed;inset:0;z-index:20;perspective:1400px;perspective-origin:50% 45%}
.porta.fechada-off{display:none}

.folha{
  position:absolute;top:0;bottom:0;width:50.4%;
  backface-visibility:hidden;
  transition:transform 1.5s cubic-bezier(.62,.02,.3,1);
  background:
    linear-gradient(90deg,rgba(0,0,0,.42),rgba(0,0,0,0) 16%,rgba(0,0,0,0) 84%,rgba(0,0,0,.42)),
    repeating-linear-gradient(91deg,rgba(255,255,255,.05) 0 2px,rgba(0,0,0,.05) 2px 7px,rgba(0,0,0,0) 7px 13px),
    repeating-linear-gradient(90deg,rgba(0,0,0,.22) 0 3px,rgba(0,0,0,0) 3px 76px),
    linear-gradient(175deg,var(--mad-1),var(--mad-2) 55%,var(--mad-3));
}
.folha.esq{left:0;transform-origin:left center}
.folha.dir{right:0;transform-origin:right center}
.folha::before{
  content:"";position:absolute;inset:7% 12%;
  border-radius:120px 120px 14px 14px;
  box-shadow:
    inset 0 0 0 3px rgba(0,0,0,.42),
    inset 0 0 0 7px rgba(255,255,255,.12),
    inset 0 16px 30px rgba(0,0,0,.38),
    0 2px 0 rgba(255,255,255,.09),
    0 0 26px rgba(0,0,0,.32);
  background:linear-gradient(175deg,rgba(255,255,255,.06),rgba(0,0,0,.14));
}
.folha::after{
  content:"";position:absolute;top:50%;width:13px;height:56px;border-radius:8px;
  background:linear-gradient(180deg,#F0CE84,#B98A34 55%,#7C5A18);
  box-shadow:0 3px 8px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.6);
  transform:translateY(-50%);
}
.folha.esq::after{right:12px}
.folha.dir::after{left:12px}
.porta.abrindo .folha.esq{transform:rotateY(-108deg) translateZ(4px)}
.porta.abrindo .folha.dir{transform:rotateY(108deg) translateZ(4px)}

.brilho{
  position:absolute;left:50%;top:0;bottom:0;width:8px;transform:translateX(-50%);
  background:linear-gradient(90deg,transparent,rgba(255,244,200,.85),transparent);
  filter:blur(4px);opacity:.55;
  animation:respira 3.4s ease-in-out infinite;pointer-events:none;
}
@keyframes respira{50%{opacity:1;width:14px}}
.porta.abrindo .brilho{
  animation:none;
  transition:opacity .5s ease .35s, width .8s ease .2s, filter .8s ease;
  opacity:0;width:120vw;filter:blur(60px);
}

.porta-conteudo{
  position:absolute;inset:0;z-index:3;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  padding:calc(env(safe-area-inset-top) + 20px) 20px calc(env(safe-area-inset-bottom) + 24px);
  text-align:center;
  transition:opacity .3s ease, transform .35s ease;
}
.porta.abrindo .porta-conteudo{opacity:0;transform:scale(.94);pointer-events:none}

.convite-para{
  margin:0;color:#FFE9C0;font-size:clamp(12px,3.6vw,16px);font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  text-shadow:0 2px 6px rgba(0,0,0,.6);opacity:.92;
}
.medalhao{
  position:relative;width:min(50vw,205px);aspect-ratio:1;flex:0 0 auto;
  border-radius:50%;
  background:radial-gradient(circle at 50% 30%,#FFF7E6,#F0D8A8);
  border:6px solid #FDF3E0;outline:4px solid #C79343;
  box-shadow:0 14px 34px rgba(0,0,0,.55),0 0 0 12px rgba(255,255,255,.08);
  overflow:hidden;
  animation:flutua 4.5s ease-in-out infinite;
}
@keyframes flutua{50%{transform:translateY(-9px)}}
.medalhao img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.medalhao-fallback{width:70%;height:70%;margin:15% auto;color:var(--roxo-claro);display:block}
.medalhao-brilho{
  position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:linear-gradient(150deg,rgba(255,255,255,.55),rgba(255,255,255,0) 42%);
}

.nome-convidado{
  margin:0;max-width:min(100%,17ch);
  font-weight:800;line-height:1.14;color:#FFF6E2;
  text-wrap:balance;overflow-wrap:break-word;
  text-shadow:0 3px 0 rgba(0,0,0,.35),0 8px 22px rgba(0,0,0,.7);
}
.nome-convidado.tam-g  {font-size:clamp(28px,8.6vw,46px)}
.nome-convidado.tam-m  {font-size:clamp(24px,7vw,38px);max-width:min(100%,22ch)}
.nome-convidado.tam-p  {font-size:clamp(20px,5.6vw,31px);max-width:min(100%,26ch)}
.nome-convidado.tam-pp {font-size:clamp(17px,4.6vw,26px);max-width:min(100%,30ch)}
.nome-convidado small{
  display:block;margin-top:5px;font-family:var(--script);font-weight:400;
  font-size:max(14px,.44em);color:#FFD9A6;
}

.pilula-rosa{
  margin-top:6px;
  min-height:54px;padding:0 26px;
  font-size:clamp(17px,4.9vw,20px);
  background:linear-gradient(180deg,#F2839C,#C9455F);
  color:#fff;cursor:pointer;border:0;
  box-shadow:0 6px 20px rgba(180,50,80,.5), inset 0 1px 0 rgba(255,255,255,.34);
  animation:pulsa 2.4s ease-in-out infinite;
}
.pilula-rosa svg{width:22px;height:22px}
.pilula-rosa:active{animation:none}
@keyframes pulsa{50%{transform:scale(1.04)}}
.dica{
  margin:0;color:#FFE9C0;opacity:.85;
  font-size:clamp(11px,3.1vw,13px);font-weight:600;
  text-shadow:0 2px 6px rgba(0,0,0,.6);
}

/* ========================= BORBOLETAS ========================= */
.borboletas{position:fixed;inset:0;z-index:30;pointer-events:none;overflow:hidden}
.borboleta{
  position:absolute;top:0;left:0;
  width:var(--tam,38px);
  will-change:transform;
  animation:var(--rota) var(--dur,26s) linear infinite;
  animation-delay:var(--atraso,0s);
}
.borboleta > .balanco{display:block;animation:balancar var(--bal,3.2s) ease-in-out infinite alternate}
@keyframes balancar{
  from{transform:translateX(-6px) rotate(-6deg)}
  to  {transform:translateX(6px) rotate(6deg)}
}
.borboleta svg{width:100%;height:auto;display:block;color:var(--cor,#E9743A)}

.asa-cima,.asa-baixo{
  fill:currentColor;
  stroke:rgba(45,22,8,.34);
  stroke-width:1.8;
  stroke-linejoin:round;
}
.asa-baixo{fill:color-mix(in srgb,currentColor 84%,#3B2A4E 16%)}
.mancha{fill:rgba(255,255,255,.6)}
.corpo{fill:#3B2A4E}
.antenas path{fill:none;stroke:#3B2A4E;stroke-width:2.4;stroke-linecap:round}
.antenas circle{fill:#3B2A4E}

.asa{
  transform-box:view-box;
  transform-origin:50px 42px;
  animation:bater var(--asa,.3s) ease-in-out infinite alternate;
}
@keyframes bater{
  from{transform:scaleX(1) scaleY(1)}
  to  {transform:scaleX(.38) scaleY(1.07)}
}

/* Rotas de voo. O desenho aponta para cima, então rotate(90deg) faz a
   borboleta olhar para a direita e rotate(-90deg) para a esquerda. */
@keyframes voa1{
  0%  {transform:translate3d(-15vw,66vh,0) rotate(90deg)}
  10% {transform:translate3d(-1vw,61vh,0)  rotate(74deg)}
  20% {transform:translate3d(12vw,58vh,0)  rotate(88deg)}
  30% {transform:translate3d(25vw,61vh,0)  rotate(106deg)}
  40% {transform:translate3d(38vw,64vh,0)  rotate(92deg)}
  55% {transform:translate3d(58vw,55vh,0)  rotate(74deg)}
  70% {transform:translate3d(78vw,55vh,0)  rotate(96deg)}
  85% {transform:translate3d(98vw,57vh,0)  rotate(82deg)}
  100%{transform:translate3d(118vw,48vh,0) rotate(78deg)}
}
@keyframes voa2{
  0%  {transform:translate3d(115vw,18vh,0) rotate(-90deg)}
  12% {transform:translate3d(98vw,24vh,0)  rotate(-108deg)}
  26% {transform:translate3d(78vw,20vh,0)  rotate(-76deg)}
  40% {transform:translate3d(58vw,26vh,0)  rotate(-106deg)}
  56% {transform:translate3d(38vw,18vh,0)  rotate(-74deg)}
  72% {transform:translate3d(18vw,24vh,0)  rotate(-104deg)}
  88% {transform:translate3d(0vw,17vh,0)   rotate(-76deg)}
  100%{transform:translate3d(-16vw,20vh,0) rotate(-92deg)}
}
@keyframes voa3{
  0%  {transform:translate3d(-14vw,36vh,0) rotate(86deg)}
  14% {transform:translate3d(4vw,30vh,0)   rotate(72deg)}
  30% {transform:translate3d(26vw,36vh,0)  rotate(104deg)}
  46% {transform:translate3d(48vw,30vh,0)  rotate(74deg)}
  62% {transform:translate3d(70vw,37vh,0)  rotate(106deg)}
  80% {transform:translate3d(94vw,31vh,0)  rotate(76deg)}
  100%{transform:translate3d(116vw,34vh,0) rotate(92deg)}
}
@keyframes voa4{
  0%  {transform:translate3d(112vw,84vh,0) rotate(-88deg)}
  15% {transform:translate3d(92vw,78vh,0)  rotate(-72deg)}
  32% {transform:translate3d(68vw,84vh,0)  rotate(-108deg)}
  50% {transform:translate3d(44vw,77vh,0)  rotate(-74deg)}
  68% {transform:translate3d(22vw,83vh,0)  rotate(-106deg)}
  86% {transform:translate3d(2vw,78vh,0)   rotate(-76deg)}
  100%{transform:translate3d(-16vw,82vh,0) rotate(-90deg)}
}

/* borboleta do medalhão: batida suave, para ficar sempre legível */
.medalhao-fallback .asa{animation:bater-suave .95s ease-in-out infinite alternate}
@keyframes bater-suave{
  from{transform:scaleX(1)}
  to  {transform:scaleX(.86) scaleY(1.02)}
}

/* ======================== BOTÃO DE SOM ======================== */
.som{
  position:fixed;z-index:40;
  right:calc(env(safe-area-inset-right) + 10px);
  top:calc(env(safe-area-inset-top) + 18px);
  width:38px;height:38px;
  display:grid;place-items:center;
  border-radius:50%;
  border:2px solid rgba(255,255,255,.8);
  background:rgba(60,26,95,.62);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  cursor:pointer;
  box-shadow:0 3px 12px rgba(0,0,0,.45);
  transition:transform .12s ease,background .2s ease;
}
.som:active{transform:scale(.92)}
.som.mudo{background:rgba(40,18,64,.72)}
.som svg{width:21px;height:21px;fill:#fff;stroke:none;display:block}
.som .ico-off,.som.mudo .ico-on{display:none}
.som.mudo .ico-off{display:block}

/* ========================= AJUSTES ========================= */
@media (min-width:620px){
  .pilha,.moldura{max-width:600px;margin:0 auto;left:0;right:0}
  .borboleta{--tam:44px}
}
@media (max-height:660px){
  .medalhao{width:min(36vw,150px)}
  .porta-conteudo{gap:10px}
  .convite-para{font-size:12px}
  .retrato{width:min(42vw,168px)}
}
@media (max-width:359px){
  .btn{flex-direction:column;gap:4px;text-align:center}
}

@media (prefers-reduced-motion:reduce){
  .borboletas{display:none}
  .medalhao,.pilula-rosa,.brilho{animation:none}
  .folha{transition-duration:.45s}
  .slide{transition-duration:.25s}
  .slide.ativo .fundo,.slide.saindo .fundo{animation:none}
  .slide.ativo .anima,.slide.saindo .anima{animation-duration:.3s;animation-delay:0s}
}
