/* Cursivinha — mascote, balão e efeitos (compartilhado entre app e funil). Usa as variáveis --card, --line, --gold, --pri-d do tema. */
/* mascote + balão */
.mrow{display:flex;align-items:flex-end;gap:10px;margin:6px 0 10px}
.mas{width:86px;flex:none;position:relative}
.mas-svg{width:100%;height:auto;overflow:visible;display:block}
.mas-body{animation:bob 2.4s ease-in-out infinite;transform-origin:50% 100%}
.mas-shadow{animation:shad 2.4s ease-in-out infinite;transform-origin:50% 50%;transform-box:fill-box}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes shad{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.82)}}
.mas-eyes{transform-box:fill-box;transform-origin:center;animation:blink 4.6s infinite}
@keyframes blink{0%,94%,100%{transform:scaleY(1)}97%{transform:scaleY(.1)}}
.mas-mouth{opacity:0;transform-box:fill-box;transform-origin:center}
.mas.talk .mas-mouth{opacity:1;animation:talk .22s infinite alternate}
.mas.talk .mas-smile,.mas.wow .mas-smile{opacity:0}
.mas.wow .mas-mouth{opacity:1}
@keyframes talk{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.mas.jump .mas-body{animation:jump .7s cubic-bezier(.3,1.5,.5,1)}
@keyframes jump{0%{transform:translateY(0) scale(1,1)}25%{transform:translateY(4px) scale(1.08,.9)}55%{transform:translateY(-26px) scale(.94,1.08) rotate(-6deg)}80%{transform:translateY(0) scale(1.06,.94)}100%{transform:none}}
.mas.wow .mas-body{animation:wowk .5s}
@keyframes wowk{0%,100%{transform:rotate(0)}25%{transform:rotate(-7deg)}75%{transform:rotate(7deg)}}
.mas-arm{transform-box:view-box}
.mas.wave .mas-arm.r{transform-origin:70px 62px;animation:wave .9s ease-in-out infinite}
@keyframes wave{0%,100%{transform:rotate(0)}50%{transform:rotate(-26deg)}}
.mas.happy .mas-body{animation:bob 1s ease-in-out infinite}
.mas.happy .mas-arm.r,.mas.happy .mas-arm.l{animation:cheer .5s ease-in-out infinite alternate;transform-origin:50px 62px}
@keyframes cheer{from{transform:rotate(-10deg)}to{transform:rotate(10deg)}}
.mas.work .mas-body{animation:work .5s ease-in-out infinite alternate}
@keyframes work{from{transform:rotate(-5deg)}to{transform:rotate(5deg) translateY(-3px)}}
.bub{position:relative;flex:1;min-height:56px;padding:12px 16px;border-radius:20px 20px 20px 6px;background:var(--card);border:2px solid var(--line);font-weight:700;font-size:18px;line-height:1.3;box-shadow:0 4px 0 var(--line)}
.bub::before{content:'';position:absolute;left:-9px;bottom:14px;width:14px;height:14px;background:var(--card);border-left:2px solid var(--line);border-bottom:2px solid var(--line);transform:rotate(45deg)}
.bub span:empty::after{content:'…'}


.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.75);pointer-events:none}
/* efeitos globais */
.fx-layer{position:fixed;inset:0;pointer-events:none;z-index:2000;overflow:hidden}
.fx-p{position:absolute;line-height:1;will-change:transform}
.fx-float{position:absolute;font:700 22px 'Andika',sans-serif;color:#d9570f;text-shadow:0 2px 0 #fff,0 0 8px #fff;white-space:nowrap}
.fx-float.xp{color:var(--pri-d)}


/* fundo com letrinhas flutuando */
.bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:radial-gradient(60% 40% at 80% 0%,var(--blob1,#ffe9c7) 0,transparent 70%),radial-gradient(50% 40% at 0% 100%,var(--blob2,#e0f5ef) 0,transparent 70%)}
.bg span{position:absolute;bottom:-60px;opacity:.55;font-weight:700;animation:floatUp linear infinite;will-change:transform}
@keyframes floatUp{0%{transform:translateY(0) rotate(-12deg);opacity:0}10%{opacity:.55}90%{opacity:.5}100%{transform:translateY(-115vh) rotate(18deg);opacity:0}}
/* aparecer ao rolar */
.rv{opacity:0;transform:translateY(26px) scale(.96)}
.rv.in{opacity:1;transform:none;transition:opacity .5s ease var(--d,0ms),transform .6s cubic-bezier(.2,1.3,.4,1) var(--d,0ms)}
/* palavras que pulam */
.wd span{display:inline-block;animation:popw2 .55s cubic-bezier(.2,1.6,.4,1) both;animation-delay:calc(.1s + var(--w)*.07s)}
@keyframes popw2{from{opacity:0;transform:translateY(18px) scale(.6) rotate(-6deg)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.bg{display:none}.rv{opacity:1;transform:none}}
