/* =========================================================
   NINA — assistente virtual
   Self-contained: usa --blue do site quando existir.
   ========================================================= */
.nina { --nina-azul: var(--blue, #1470af); --nina-azul-esc: #0f5a8d; --nina-tinta: #14202b;
  position: fixed; left: clamp(14px, 2vw, 28px); bottom: clamp(14px, 2vw, 28px); z-index: 80;
  font-family: var(--font, "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif); color: var(--nina-tinta); -webkit-font-smoothing: antialiased; }
.nina *, .nina *::before, .nina *::after { box-sizing: border-box; }
.nina button, .nina input { font: inherit; }
.nina-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- botão flutuante ---------- */
.nina-launcher { position: relative; display: block; width: 64px; height: 64px; padding: 0; border: 0; border-radius: 50%; background: none; cursor: pointer;
  filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .3)); transition: transform .2s ease; }
.nina-launcher:hover { transform: scale(1.07); }
.nina-launcher:focus-visible { outline: 3px solid #fff; box-shadow: 0 0 0 6px var(--nina-azul); }
.nina-av { display: block; width: 100%; height: 100%; border-radius: 50%; overflow: hidden; border: 3px solid #fff; background: var(--nina-azul); }
.nina-av svg { display: block; width: 100%; height: 100%; }
.nina-dot { position: absolute; right: -1px; bottom: 2px; width: 17px; height: 17px; border-radius: 50%; background: #22c55e; border: 3px solid #fff; }
.nina-dot::after { content: ""; position: absolute; inset: -3px; border-radius: 50%; border: 2px solid #22c55e; opacity: 0; animation: nina-onda 2.4s ease-out infinite; }
@keyframes nina-onda { 0% { transform: scale(.7); opacity: .7; } 80%, 100% { transform: scale(1.7); opacity: 0; } }

/* ---------- convite (balãozinho) ---------- */
.nina-convite { position: absolute; left: 78px; bottom: 12px; display: flex; align-items: center; max-width: min(260px, calc(100vw - 120px)); background: rgba(255, 255, 255, .96);
  border: 1px solid rgba(200, 210, 225, .9); border-radius: 18px 18px 18px 6px; box-shadow: 0 10px 28px rgba(10, 30, 50, .22); animation: nina-entra .35s ease both; }
.nina-convite[hidden] { display: none; }
.nina-convite__txt { padding: 11px 6px 11px 16px; border: 0; background: none; color: var(--nina-tinta); font-size: 15px; text-align: left; cursor: pointer; }
.nina-convite__x { width: 32px; height: 32px; margin: 0 6px 0 0; border: 0; border-radius: 50%; background: none; color: #6b7a89; font-size: 20px; line-height: 1; cursor: pointer; }
.nina-convite__x:hover { background: rgba(0, 0, 0, .06); }

/* ---------- painel (vidro) ---------- */
.nina-painel { position: absolute; left: 0; bottom: 78px; display: flex; flex-direction: column; width: min(390px, calc(100vw - 28px)); height: min(610px, calc(100vh - 130px)); min-height: 360px;
  border-radius: 22px; overflow: hidden; background: rgba(255, 255, 255, .72);
  -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, .75); box-shadow: 0 26px 64px rgba(10, 30, 50, .3), inset 0 1px 0 rgba(255, 255, 255, .7);
  transform-origin: 0 100%; opacity: 0; transform: translateY(16px) scale(.96); visibility: hidden; pointer-events: none;
  transition: opacity .24s ease, transform .24s ease, visibility 0s linear .24s; }
.nina[data-aberto] .nina-painel { opacity: 1; transform: none; visibility: visible; pointer-events: auto; transition-delay: 0s; }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { .nina-painel { background: rgba(250, 252, 255, .97); } }

.nina-topo { position: relative; display: flex; align-items: center; gap: 12px; padding: 12px 10px 12px 14px; color: #fff; background: var(--nina-topo, linear-gradient(135deg, rgba(20, 112, 175, .94), rgba(15, 90, 141, .94))); }
.nina-topo::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: var(--nina-topo-enfeite, none); }
.nina-topo > * { position: relative; z-index: 1; }
.nina-av--topo { width: 44px; height: 44px; flex: none; border-width: 2px; }
.nina-topo__txt { display: grid; flex: 1; min-width: 0; line-height: 1.2; }
.nina-topo__txt strong { font-size: 17px; font-weight: 600; letter-spacing: -0.02em; }
.nina-topo__txt span { font-size: 12.5px; opacity: .92; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nina-topo__txt span[data-estado="aberto"]::before, .nina-topo__txt span[data-estado="fechado"]::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%; background: #4ade80; vertical-align: 1px; }
.nina-topo__txt span[data-estado="fechado"]::before { background: #fbbf24; }
.nina-ic { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #fff; cursor: pointer; transition: background .15s; }
.nina-ic:hover { background: rgba(255, 255, 255, .2); }
.nina-ic:focus-visible { outline: 2px solid #fff; }
.nina-ic svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- mensagens ---------- */
.nina-msgs { flex: 1; display: flex; flex-direction: column; gap: 9px; padding: 16px 14px 10px; overflow-y: auto; overscroll-behavior: contain; scroll-behavior: smooth; }
.nina-b { max-width: 88%; padding: 10px 14px; font-size: 15px; line-height: 1.5; letter-spacing: -0.005em; overflow-wrap: anywhere; animation: nina-entra .3s ease both; }
.nina-b--nina { align-self: flex-start; background: rgba(255, 255, 255, .93); border: 1px solid rgba(205, 215, 228, .9); border-radius: 18px 18px 18px 6px; }
.nina-b--eu { align-self: flex-end; background: var(--nina-azul); color: #fff; border-radius: 18px 18px 6px 18px; }
.nina-b strong { font-weight: 600; }
@keyframes nina-entra { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

.nina-dig { align-self: flex-start; display: inline-flex; align-items: center; gap: 5px; padding: 14px 16px; background: rgba(255, 255, 255, .93); border: 1px solid rgba(205, 215, 228, .9); border-radius: 18px 18px 18px 6px; animation: nina-entra .25s ease both; }
.nina-dig i { width: 7px; height: 7px; border-radius: 50%; background: #7d8c9b; animation: nina-pula 1.15s ease-in-out infinite; }
.nina-dig i:nth-child(2) { animation-delay: .16s; } .nina-dig i:nth-child(3) { animation-delay: .32s; }
@keyframes nina-pula { 0%, 60%, 100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-5px); opacity: 1; } }

/* ---------- atalhos (balões de resposta rápida) ---------- */
.nina-opc { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin: 2px 0 4px; animation: nina-entra .32s ease both; }
.nina-pill { display: inline-flex; align-items: center; gap: 10px; max-width: 94%; padding: 10px 16px; border: 1.5px solid rgba(20, 112, 175, .32); border-radius: 22px; background: rgba(255, 255, 255, .95);
  color: var(--nina-azul-esc); font-size: 15px; text-align: left; cursor: pointer; transition: transform .15s ease, border-color .15s, background .15s, box-shadow .15s; }
.nina-pill::before { content: ""; flex: none; width: 9px; height: 9px; border-radius: 50%; background: #c9d3de; transition: background .15s; }
.nina-pill:hover { transform: translateX(3px); border-color: var(--nina-azul); background: #fff; box-shadow: 0 4px 12px rgba(20, 112, 175, .14); }
.nina-pill:hover::before { background: var(--nina-azul); }
.nina-pill:focus-visible { outline: 3px solid var(--nina-azul); outline-offset: 2px; }
.nina-pill--ext::after { content: "↗"; margin-left: 2px; font-size: 13px; opacity: .7; }
.nina-pill--suave { border-color: rgba(120, 135, 150, .35); color: #4a5a69; }

/* ---------- "isso ajudou?" ---------- */
.nina-fb { display: flex; align-items: center; gap: 6px; align-self: flex-start; margin: -2px 0 0 4px; font-size: 12px; color: #5d6d7c; }
.nina-fb button { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid rgba(175, 190, 210, .8); border-radius: 50%; background: rgba(255, 255, 255, .9); font-size: 14px; line-height: 1; cursor: pointer; }
.nina-fb button:hover { background: #fff; border-color: var(--nina-azul); }
.nina-fb button:focus-visible { outline: 3px solid var(--nina-azul); outline-offset: 2px; }

/* ---------- campo de texto ---------- */
.nina-form { display: flex; gap: 8px; padding: 10px 12px 6px; background: rgba(255, 255, 255, .66); border-top: 1px solid rgba(205, 215, 228, .8); }
.nina-form input { flex: 1; min-width: 0; min-height: 44px; padding: 0 16px; border: 1.5px solid rgba(175, 190, 210, .9); border-radius: 22px; background: rgba(255, 255, 255, .96); color: var(--nina-tinta); font-size: 16px; }
.nina-form input::placeholder { color: #7a8896; }
.nina-form input:focus { outline: 3px solid rgba(20, 112, 175, .35); border-color: var(--nina-azul); }
.nina-enviar { display: grid; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--nina-azul); color: #fff; cursor: pointer; transition: transform .15s, background .15s; }
.nina-enviar:hover { transform: scale(1.06); background: var(--nina-azul-esc); }
.nina-enviar:focus-visible { outline: 3px solid var(--nina-azul); outline-offset: 2px; }
.nina-enviar svg { width: 20px; height: 20px; fill: currentColor; }
.nina-nota { margin: 0; padding: 2px 14px 9px; background: rgba(255, 255, 255, .66); color: #5d6d7c; font-size: 11.5px; text-align: center; }

/* ---------- arrastar e soltar ---------- */
.nina-launcher { touch-action: none; cursor: grab; }
.nina.nina-arrastando .nina-launcher { cursor: grabbing; transform: scale(1.12); filter: drop-shadow(0 16px 26px rgba(0, 0, 0, .42)); transition: none; }
.nina-movendo, .nina-movendo * { user-select: none; -webkit-user-select: none; cursor: grabbing !important; }
.nina[data-h="dir"] .nina-convite { left: auto; right: 78px; border-radius: 18px 18px 6px 18px; }
@media (min-width: 521px) {
  .nina-topo { cursor: grab; touch-action: none; }
  .nina-painel { height: min(610px, var(--nina-esp, calc(100vh - 130px))); translate: var(--nina-dx, 0) 0; }
  .nina[data-h="dir"] .nina-painel { left: auto; right: 0; transform-origin: 100% 100%; }
  .nina[data-v="baixo"] .nina-painel { bottom: auto; top: 78px; transform-origin: 0 0; transform: translateY(-16px) scale(.96); }
  .nina[data-h="dir"][data-v="baixo"] .nina-painel { transform-origin: 100% 0; }
  .nina[data-aberto][data-v="baixo"] .nina-painel { transform: none; }
}

/* ---------- celular ---------- */
@media (max-width: 520px) {
  .nina-painel { position: fixed; left: 10px; right: 10px; bottom: 10px; width: auto; height: min(80vh, 660px); border-radius: 20px; }
  .nina[data-aberto] .nina-launcher, .nina[data-aberto] .nina-convite { display: none; }
  .nina-launcher { width: 58px; height: 58px; }
}
@media (prefers-reduced-motion: reduce) {
  .nina-painel, .nina-b, .nina-opc, .nina-dig, .nina-convite, .nina-launcher, .nina-pill { transition: none !important; animation: none !important; }
  .nina-dot::after { animation: none; }
  .nina-msgs { scroll-behavior: auto; }
}
@media print { .nina { display: none; } }

/* =========================================================
   NINA A CARÁTER — trajes e barrinha por tema sazonal
   O PHP imprime data-tema="<id>" no widget (includes/nina.php). As variáveis
   --nina-c-<tema> ligam o traje desenhado dentro do símbolo #nina-rosto
   (herdam para dentro do <use>); --nina-topo e --nina-topo-enfeite vestem
   a barrinha do chat. As cores --tema-* vêm do CSS do tema em vigor.
   ========================================================= */
.nina:not([data-tema="original"]) { --nina-topo: linear-gradient(135deg, var(--tema-principal, #1470af), var(--tema-escuro, #0f5a8d)); }
.nina:not([data-tema="original"]) .nina-av { border-color: #fff; }

/* Halloween: a Nina vira vampira; barrinha roxo-noite com lua e morcegos */
.nina[data-tema="halloween"], .lnina[data-tema="halloween"] { --nina-c-halloween: inline;
  --nr-a-tremor: nr-tremor 30s linear infinite; --nr-a-pose: nr-pose 30s ease-in-out infinite;
  --nina-topo: linear-gradient(135deg, rgba(45, 27, 78, .97), rgba(28, 17, 48, .97));
  --nina-topo-enfeite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40' viewBox='0 0 120 40'%3E%3Ccircle cx='100' cy='14' r='9' fill='%23ffd98a' opacity='.9'/%3E%3Ccircle cx='104' cy='11' r='8' fill='%232d1b4e' opacity='.9'/%3E%3Cg fill='%23110a1f'%3E%3Cpath d='M70 20c-1 2-2 3-3.5 3-1.5-2.5-4-3-6.5-2.5 1.5 1.5 1.5 3.5.5 5 2-.5 4 .5 5 2.5 1.5-1 3-1.5 4.5-1.5s3 .5 4.5 1.5c1-2 3-3 5-2.5-1-1.5-1-3.5.5-5-2.5-.5-5 0-6.5 2.5-1.5 0-2.5-1-3.5-3z'/%3E%3Cpath d='M86 30c-.7 1.3-1.3 2-2.3 2-1-1.7-2.7-2-4.3-1.7 1 1 1 2.3.3 3.3 1.3-.3 2.7.3 3.3 1.7 1-.7 2-1 3-1s2 .3 3 1c.7-1.3 2-2 3.3-1.7-.7-1-.7-2.3.3-3.3-1.7-.3-3.3 0-4.3 1.7-1 0-1.7-.7-2.3-2z'/%3E%3C/g%3E%3C/svg%3E") right 10px top 2px / 120px 40px no-repeat; }
.nina[data-tema="halloween"] .nina-av, .lnina[data-tema="halloween"] .lnina__av { border-color: #e3681f; }
.nina[data-tema="halloween"] .nina-dot { background: #e3681f; }
.nina[data-tema="halloween"] .nina-dot::after { border-color: #e3681f; }

/* Natal: gorro e casaco vermelho; barrinha vermelha com neve */
.nina[data-tema="natal"], .lnina[data-tema="natal"] { --nina-c-natal: inline;
  --nina-topo: linear-gradient(135deg, #a8142c, #680c1b);
  --nina-topo-enfeite: radial-gradient(circle, rgba(255,255,255,.85) 1.3px, transparent 1.8px) 6px 4px / 26px 22px,
                       radial-gradient(circle, rgba(255,255,255,.55) 1px, transparent 1.4px) 18px 14px / 30px 26px; }
.nina[data-tema="natal"] .nina-av, .lnina[data-tema="natal"] .lnina__av { border-color: #1d6b45; }

/* Independência: rosto pintado de verde, amarelo e azul; barrinha verde com a faixa da bandeira */
.nina[data-tema="independencia"], .lnina[data-tema="independencia"] { --nina-c-independencia: inline;
  --nina-topo: linear-gradient(135deg, #0b6b3a, #074224);
  --nina-topo-enfeite: linear-gradient(90deg, #0b6b3a 0 34%, #f7c948 34% 67%, #1e40af 67%) left bottom / 100% 4px no-repeat; }
.nina[data-tema="independencia"] .nina-av, .lnina[data-tema="independencia"] .lnina__av { border-color: #f7c948; }

/* Ano Novo: chapeuzinho de festa e brilhos dourados */
.nina[data-tema="ano-novo"], .lnina[data-tema="ano-novo"] { --nina-c-ano-novo: inline;
  --nina-topo: linear-gradient(135deg, #14264d, #0b1530);
  --nina-topo-enfeite: radial-gradient(circle, rgba(212,166,42,.9) 1.2px, transparent 1.7px) 8px 6px / 24px 20px,
                       radial-gradient(circle, rgba(255,255,255,.7) .9px, transparent 1.3px) 20px 12px / 34px 28px; }
.nina[data-tema="ano-novo"] .nina-av, .lnina[data-tema="ano-novo"] .lnina__av { border-color: #d4a62a; }

/* Confraternização: azul sereno e a pombinha */
.nina[data-tema="confraternizacao"], .lnina[data-tema="confraternizacao"] { --nina-c-confraternizacao: inline;
  --nina-topo: linear-gradient(135deg, #2a6f97, #1b4a66);
  --nina-topo-enfeite: radial-gradient(circle, rgba(227,199,109,.8) 1px, transparent 1.5px) 10px 8px / 28px 24px; }
.nina[data-tema="confraternizacao"] .nina-av, .lnina[data-tema="confraternizacao"] .lnina__av { border-color: #e3c76d; }

/* Carnaval: máscara, plumas e abadá; barrinha roxa com serpentinas e confetes */
.nina[data-tema="carnaval"], .lnina[data-tema="carnaval"] { --nina-c-carnaval: inline;
  --nina-topo: linear-gradient(135deg, #5b1f9e, #36125f);
  --nina-topo-enfeite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40' viewBox='0 0 120 40'%3E%3Cg fill='none' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M8 0c4 4 5 7 1 11s-5 7-1 11' stroke='%23ff2e88'/%3E%3Cpath d='M30 0c-4 4-5 7-1 11s5 7 1 11' stroke='%23ffb703'/%3E%3Cpath d='M104 0c4 4 5 7 1 11s-5 7-1 11' stroke='%2322c55e'/%3E%3C/g%3E%3Ccircle cx='52' cy='8' r='1.8' fill='%23ffb703'/%3E%3Ccircle cx='70' cy='30' r='1.6' fill='%23ff2e88'/%3E%3Crect x='86' y='12' width='3' height='5' rx='1' fill='%232a9df4' transform='rotate(25 87 14)'/%3E%3Ccircle cx='116' cy='32' r='1.5' fill='%2322c55e'/%3E%3C/svg%3E") right top / 120px 40px no-repeat; }
.nina[data-tema="carnaval"] .nina-av, .lnina[data-tema="carnaval"] .lnina__av { border-color: #ffb703; }
.nina[data-tema="carnaval"] .nina-dot { background: #ff2e88; }
.nina[data-tema="carnaval"] .nina-dot::after { border-color: #ff2e88; }

/* 1º de Abril: chapéu de bobo da corte e camisa de losangos; barrinha roxa com post-its e um "?" */
.nina[data-tema="primeiro-de-abril"], .lnina[data-tema="primeiro-de-abril"] { --nina-c-primeiro-de-abril: inline;
  --nina-topo: linear-gradient(135deg, #5b2a86, #381a53);
  --nina-topo-enfeite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40' viewBox='0 0 120 40'%3E%3Cg transform='rotate(-8 20 14)'%3E%3Crect x='10' y='4' width='20' height='20' fill='%23f7d774'/%3E%3Crect x='16' y='1' width='8' height='5' fill='rgba(255,255,255,.6)'/%3E%3C/g%3E%3Cg transform='rotate(7 100 20)'%3E%3Crect x='90' y='10' width='20' height='20' fill='%23fbe9a6'/%3E%3Crect x='96' y='7' width='8' height='5' fill='rgba(255,255,255,.6)'/%3E%3C/g%3E%3Ctext x='20' y='20' font-family='Arial,Helvetica,sans-serif' font-weight='700' font-size='14' text-anchor='middle' fill='%235b2a86' transform='rotate(-8 20 14)'%3E%3F%3C/text%3E%3Ctext x='100' y='26' font-family='Arial,Helvetica,sans-serif' font-weight='700' font-size='14' text-anchor='middle' fill='%231a1a1a' transform='rotate(7 100 20)'%3E!%3C/text%3E%3Ccircle cx='58' cy='30' r='1.6' fill='%23f7d774'/%3E%3Ccircle cx='70' cy='8' r='1.4' fill='%23f7d774'/%3E%3C/svg%3E") right top / 120px 40px no-repeat; }
.nina[data-tema="primeiro-de-abril"] .nina-av, .lnina[data-tema="primeiro-de-abril"] .lnina__av { border-color: #f7d774; }
.nina[data-tema="primeiro-de-abril"] .nina-dot { background: #f7d774; }
.nina[data-tema="primeiro-de-abril"] .nina-dot::after { border-color: #f7d774; }

/* Temporada do Leão (IRPF): orelhinhas de leoa, camisa verde com broche; barrinha verde-escura com moedas douradas */
.nina[data-tema="leao"], .lnina[data-tema="leao"] { --nina-c-leao: inline;
  --nina-topo: linear-gradient(135deg, #1b5e3b, #0f3a24);
  --nina-topo-enfeite: radial-gradient(circle, rgba(212,160,23,.95) 2px, rgba(212,160,23,.35) 3px, transparent 3.6px) 10px 6px / 34px 26px,
                       radial-gradient(circle, rgba(232,184,109,.75) 1.2px, transparent 1.7px) 24px 16px / 40px 30px; }
.nina[data-tema="leao"] .nina-av, .lnina[data-tema="leao"] .lnina__av { border-color: #d4a017; }
.nina[data-tema="leao"] .nina-dot { background: #d4a017; }
.nina[data-tema="leao"] .nina-dot::after { border-color: #d4a017; }

/* Páscoa: orelhinhas de coelho e blusa lilás; barrinha lilás com ovinhos pastel */
.nina[data-tema="pascoa"], .lnina[data-tema="pascoa"] { --nina-c-pascoa: inline;
  --nina-topo: linear-gradient(135deg, #7a5ba8, #553a80);
  --nina-topo-enfeite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40' viewBox='0 0 120 40'%3E%3Cg transform='rotate(-14 16 16)'%3E%3Cpath d='M16 6c-4 0-7 6-7 10 0 4 3 7 7 7s7-3 7-7c0-4-3-10-7-10z' fill='%23f6c1d0'/%3E%3Cpath d='M10 15q6 2.5 12 0' fill='none' stroke='%23fff' stroke-width='1.4'/%3E%3C/g%3E%3Cg transform='rotate(12 100 24)'%3E%3Cpath d='M100 14c-4 0-7 6-7 10 0 4 3 7 7 7s7-3 7-7c0-4-3-10-7-10z' fill='%23bfe8d4'/%3E%3Ccircle cx='98' cy='22' r='1.2' fill='%23fff'/%3E%3Ccircle cx='102.5' cy='26' r='1.2' fill='%23fff'/%3E%3C/g%3E%3Cpath d='M58 4c-3 0-5 4.5-5 7.5S55 17 58 17s5-2.5 5-5.5S61 4 58 4z' fill='%23fbe39a'/%3E%3Ccircle cx='40' cy='32' r='1.6' fill='%23f6c1d0'/%3E%3Ccircle cx='78' cy='9' r='1.4' fill='%23bfe8d4'/%3E%3C/svg%3E") right top / 120px 40px no-repeat; }
.nina[data-tema="pascoa"] .nina-av, .lnina[data-tema="pascoa"] .lnina__av { border-color: #f6c1d0; }
.nina[data-tema="pascoa"] .nina-dot { background: #f6c1d0; }
.nina[data-tema="pascoa"] .nina-dot::after { border-color: #f6c1d0; }

/* Dia das Mães: flor no cabelo e blusa rosa */
.nina[data-tema="dia-das-maes"], .lnina[data-tema="dia-das-maes"] { --nina-c-dia-das-maes: inline;
  --nina-topo: linear-gradient(135deg, #b23a6a, #7a2447);
  --nina-topo-enfeite: radial-gradient(circle, rgba(242,167,195,.75) 1.6px, transparent 2.1px) 10px 6px / 30px 24px; }
.nina[data-tema="dia-das-maes"] .nina-av, .lnina[data-tema="dia-das-maes"] .lnina__av { border-color: #f2a7c3; }

/* Festa Junina: chapéu de palha, camisa xadrez e pintinhas; barrinha com bandeirinhas */
.nina[data-tema="festa-junina"], .lnina[data-tema="festa-junina"] { --nina-c-festa-junina: inline;
  --nina-topo: linear-gradient(135deg, #b8361c, #7a2210);
  --nina-topo-enfeite: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='12' viewBox='0 0 48 12'%3E%3Cpath d='M0 0h48' stroke='%23fff' stroke-width='1' opacity='.7'/%3E%3Cpath d='M0 0h12l-6 10zM24 0h12l-6 10z' fill='%23f2b705'/%3E%3Cpath d='M12 0h12l-6 10zM36 0h12l-6 10z' fill='%232f7fb8'/%3E%3C/svg%3E") left top / 48px 12px repeat-x; }
.nina[data-tema="festa-junina"] .nina-av, .lnina[data-tema="festa-junina"] .lnina__av { border-color: #f2b705; }

/* Campanhas: a cor da causa e o laço no peito */
.nina[data-tema="outubro-rosa"], .lnina[data-tema="outubro-rosa"] { --nina-c-outubro-rosa: inline; --nina-topo: linear-gradient(135deg, #c2185b, #7d0f3a); }
.nina[data-tema="outubro-rosa"] .nina-av, .lnina[data-tema="outubro-rosa"] .lnina__av { border-color: #f48fb1; }
.nina[data-tema="setembro-amarelo"], .lnina[data-tema="setembro-amarelo"] { --nina-c-setembro-amarelo: inline; --nina-topo: linear-gradient(135deg, #8a6600, #4d3800); }
.nina[data-tema="setembro-amarelo"] .nina-av, .lnina[data-tema="setembro-amarelo"] .lnina__av { border-color: #f7c948; }
.nina[data-tema="novembro-azul"], .lnina[data-tema="novembro-azul"] { --nina-c-novembro-azul: inline; --nina-topo: linear-gradient(135deg, #0d47a1, #072a60); }
.nina[data-tema="novembro-azul"] .nina-av, .lnina[data-tema="novembro-azul"] .lnina__av { border-color: #64b5f6; }

/* =========================================================
   NINA EM MOVIMENTO — vale para todos os trajes
   O desenho fica dentro de um <symbol> usado via <use>: por isso as animações são ligadas por classe (nr-*) e,
   no Halloween, as de transformação são ligadas por variável (herda para dentro do <use>, como --nina-c-*).
   ========================================================= */
.nr-corpo, .nr-cabeca, .nr-cabelo-t, .nr-pose, .nr-tremor, .nr-fone { transform-box: view-box; }
.nr-pisca { transform-box: fill-box; transform-origin: 50% 50%; animation: nr-pisca 5.6s ease-in-out infinite; }
.nr-olhar { animation: var(--nr-a-olhar, nr-olhar 9s ease-in-out infinite); transform: translate(var(--nr-dx, 0px), var(--nr-dy, 0px)); }   /* no Halloween os olhos seguem o cursor (variáveis ligadas por Assets/temas/temas.js) */
.nr-corpo { transform-origin: 48px 98px; animation: nr-respira 4.2s ease-in-out infinite; }
.nr-cabeca, .nr-cabelo-t { transform-origin: 48px 72px; animation: nr-balanca 7s ease-in-out infinite; }
.nr-pose { transform-origin: 48px 72px; animation: var(--nr-a-pose, none); }
.nr-tremor { transform-origin: 48px 60px; animation: var(--nr-a-tremor, none); }
.nr-fone { transform-origin: 48px 40px; animation: nr-fone 24s cubic-bezier(.4,0,.3,1) -17.4s infinite; }   /* a primeira colocação do fone acontece ~2 s depois de a página abrir */
@keyframes nr-respira { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.02); } }
@keyframes nr-balanca { 0%, 100% { transform: rotate(0) translateY(0); } 20% { transform: rotate(-2deg) translateY(-.5px); } 45% { transform: rotate(1.6deg) translateY(.3px); } 70% { transform: rotate(-.9deg) translateY(-.2px); } }
@keyframes nr-pisca { 0%, 44%, 48%, 92%, 100% { transform: scaleY(1); } 46% { transform: scaleY(.08); } 94.5% { transform: scaleY(.08); } }
@keyframes nr-olhar { 0%, 16%, 38%, 60%, 80%, 100% { transform: translate(0, 0); } 20%, 34% { transform: translate(-1px, .2px); } 64%, 76% { transform: translate(1px, -.2px); } }
/* tira o fone, olha para ele e põe de volta (com um quiquinho) */
@keyframes nr-fone {
  0%, 70% { transform: translateY(0) rotate(0); }
  74% { transform: translateY(-3px) rotate(-3deg); }
  79%, 85% { transform: translateY(-22px) rotate(-10deg); }
  91% { transform: translateY(2px) rotate(1.5deg); }
  93.5% { transform: translateY(-1.2px) rotate(-.6deg); }
  96% { transform: translateY(.5px) rotate(0); }
  100% { transform: translateY(0) rotate(0); }
}

/* Halloween: vampira -> zumbi -> lobisomem (30 s por volta; cada forma fica ~8 s e a troca leva ~1,2 s) */
.nr-f { opacity: 0; }
.nr-f-vamp { opacity: var(--nr-ov, 1); animation: var(--nr-av, nr-f-vamp 30s ease-in-out infinite); }
.nr-f-zumbi { opacity: var(--nr-oz, 0); animation: var(--nr-az, nr-f-zumbi 30s ease-in-out infinite); }
.nr-f-lobo { opacity: var(--nr-ol, 0); animation: var(--nr-al, nr-f-lobo 30s ease-in-out infinite); }
@keyframes nr-f-vamp { 0%, 27% { opacity: 1; } 31%, 90% { opacity: 0; } 94%, 100% { opacity: 1; } }
@keyframes nr-f-zumbi { 0%, 27% { opacity: 0; } 31%, 59% { opacity: 1; } 63%, 100% { opacity: 0; } }
@keyframes nr-f-lobo { 0%, 59% { opacity: 0; } 63%, 90% { opacity: 1; } 94%, 100% { opacity: 0; } }
.nr-flash { opacity: 0; }
.nr-flash-z { animation: nr-flash-z 30s linear infinite; }
.nr-flash-l { animation: nr-flash-l 30s linear infinite; }
.nr-flash-v { animation: nr-flash-v 30s linear infinite; }
@keyframes nr-flash-z { 0%, 26% { opacity: 0; } 29% { opacity: .9; } 32%, 100% { opacity: 0; } }
@keyframes nr-flash-l { 0%, 58% { opacity: 0; } 61% { opacity: .9; } 64%, 100% { opacity: 0; } }
@keyframes nr-flash-v { 0%, 89% { opacity: 0; } 92% { opacity: .9; } 95%, 100% { opacity: 0; } }
@keyframes nr-tremor { 0%, 100% { transform: none; } 27.00%{transform:translate(0px,0) scale(1.000)} 27.50%{transform:translate(-0.9px,0) scale(1.009)} 28.00%{transform:translate(0.9px,0) scale(1.018)} 28.50%{transform:translate(-0.8px,0) scale(1.026)} 29.00%{transform:translate(0.8px,0) scale(1.035)} 29.50%{transform:translate(-0.5px,0) scale(1.026)} 30.00%{transform:translate(0.5px,0) scale(1.018)} 30.50%{transform:translate(-0.2px,0) scale(1.009)} 31.00%{transform:translate(0px,0) scale(1.000)} 59.00%{transform:translate(0px,0) scale(1.000)} 59.50%{transform:translate(-0.9px,0) scale(1.009)} 60.00%{transform:translate(0.9px,0) scale(1.018)} 60.50%{transform:translate(-0.8px,0) scale(1.026)} 61.00%{transform:translate(0.8px,0) scale(1.035)} 61.50%{transform:translate(-0.5px,0) scale(1.026)} 62.00%{transform:translate(0.5px,0) scale(1.018)} 62.50%{transform:translate(-0.2px,0) scale(1.009)} 63.00%{transform:translate(0px,0) scale(1.000)} 90.00%{transform:translate(0px,0) scale(1.000)} 90.50%{transform:translate(-0.9px,0) scale(1.009)} 91.00%{transform:translate(0.9px,0) scale(1.018)} 91.50%{transform:translate(-0.8px,0) scale(1.026)} 92.00%{transform:translate(0.8px,0) scale(1.035)} 92.50%{transform:translate(-0.5px,0) scale(1.026)} 93.00%{transform:translate(0.5px,0) scale(1.018)} 93.50%{transform:translate(-0.2px,0) scale(1.009)} 94.00%{transform:translate(0px,0) scale(1.000)} }
/* postura de cada forma: o zumbi cai a cabeça de lado e balança; o lobisomem empina o queixo */
@keyframes nr-pose {
  0%, 27% { transform: rotate(0) translate(0, 0) scale(1); }
  31% { transform: rotate(7deg) translate(1px, 1.5px) scale(1); }
  40% { transform: rotate(4deg) translate(.6px, 1px) scale(1); }
  50% { transform: rotate(8deg) translate(1.2px, 1.8px) scale(1); }
  59% { transform: rotate(6deg) translate(1px, 1.5px) scale(1); }
  63%, 90% { transform: rotate(-2deg) translate(0, -1.4px) scale(1.03); }
  94%, 100% { transform: rotate(0) translate(0, 0) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .nr-corpo, .nr-cabeca, .nr-cabelo-t, .nr-pose, .nr-tremor, .nr-fone, .nr-pisca, .nr-olhar, .nr-f, .nr-flash { animation: none !important; }
  .nr-f-zumbi, .nr-f-lobo { opacity: 0; }
  .nr-f-vamp { opacity: 1; }
}

/* ---------- conversa por voz (modo "ligação") ----------
   Cobre a área das mensagens enquanto a pessoa fala com a Nina. Estados em data-fase: ouvindo, pensando, falando, mudo, erro. */
.nina[data-voz] .nina-msgs, .nina[data-voz] .nina-form, .nina[data-voz] .nina-nota { display: none; }
.nina-voz { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 22px 18px 16px; overflow-y: auto; text-align: center;
  background: radial-gradient(120% 70% at 50% 0%, rgba(20, 112, 175, .14), transparent 60%); }
.nina-voz[hidden] { display: none; }
.nina-voz__av { position: relative; display: grid; place-items: center; width: 132px; height: 132px; margin: 6px 0 2px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; }
.nina-voz__av .nina-av { position: relative; z-index: 1; width: 104px; height: 104px; border-width: 4px; box-shadow: 0 10px 28px rgba(20, 112, 175, .3); transition: transform .25s ease; }
.nina-voz__av:focus-visible { outline: 3px solid var(--nina-azul); outline-offset: 4px; }
.nina-voz__onda { position: absolute; inset: 0; border-radius: 50%; background: rgba(20, 112, 175, .22); opacity: 0; }
.nina-voz[data-fase="ouvindo"] .nina-voz__onda { animation: nina-voz-ouve 1.6s ease-in-out infinite; }
.nina-voz[data-fase="falando"] .nina-voz__onda { background: rgba(74, 222, 128, .32); animation: nina-voz-fala .9s ease-in-out infinite; }
.nina-voz[data-fase="falando"] .nina-voz__av .nina-av { animation: nina-voz-pulsa .9s ease-in-out infinite; }
.nina-voz[data-fase="pensando"] .nina-voz__onda { opacity: .5; animation: nina-voz-pensa 1.2s linear infinite; }
.nina-voz[data-fase="mudo"] .nina-voz__av .nina-av, .nina-voz[data-fase="erro"] .nina-voz__av .nina-av { filter: grayscale(.6); }
@keyframes nina-voz-ouve { 0% { transform: scale(.8); opacity: .55; } 100% { transform: scale(1.12); opacity: 0; } }
@keyframes nina-voz-fala { 0%, 100% { transform: scale(.86); opacity: .35; } 50% { transform: scale(1.04); opacity: .65; } }
@keyframes nina-voz-pulsa { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.04); } }
@keyframes nina-voz-pensa { from { transform: rotate(0) scale(.9); } to { transform: rotate(360deg) scale(.9); } }
.nina-voz[data-fase="pensando"] .nina-voz__onda { background: conic-gradient(from 0deg, rgba(20, 112, 175, 0), rgba(20, 112, 175, .5)); }
.nina-voz__estado { margin: 0; font-size: 15px; font-weight: 600; color: var(--nina-azul-esc); min-height: 1.4em; }
.nina-voz[data-fase="erro"] .nina-voz__estado { color: #b4232c; }
.nina-voz__eu { margin: 0; min-height: 1.4em; font-size: 14px; color: #5d6d7c; font-style: italic; overflow-wrap: anywhere; }
.nina-voz__eu:not(:empty)::before { content: "Você: "; font-style: normal; font-weight: 600; }
.nina-voz__nina { margin: 0; max-width: 100%; padding: 10px 14px; border-radius: 16px; background: rgba(255, 255, 255, .93); border: 1px solid rgba(205, 215, 228, .9); font-size: 15px; line-height: 1.45; color: var(--nina-tinta); text-align: left; overflow-wrap: anywhere; }
.nina-voz__nina:empty { display: none; }
.nina-voz__opc { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.nina-voz__opc .nina-pill { max-width: 100%; padding: 7px 12px; font-size: 13.5px; }
.nina-voz__opc .nina-pill::before { display: none; }
.nina-voz__acoes { display: flex; gap: 10px; margin-top: auto; padding-top: 10px; }
.nina-voz__btn { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 16px; border: 1.5px solid rgba(20, 112, 175, .32); border-radius: 22px; background: rgba(255, 255, 255, .95); color: var(--nina-azul-esc); font-size: 14px; font-weight: 600; cursor: pointer; transition: background .15s, border-color .15s, color .15s; }
.nina-voz__btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.nina-voz__btn:hover { background: #fff; border-color: var(--nina-azul); }
.nina-voz__btn:focus-visible { outline: 3px solid var(--nina-azul); outline-offset: 2px; }
.nina-voz__btn[aria-pressed="true"] { background: #fde8e8; border-color: #e2a3a3; color: #9b1c1c; }
.nina-voz__btn[aria-pressed="true"] svg { stroke: #9b1c1c; }
.nina-voz__btn--sair { background: #b4232c; border-color: #b4232c; color: #fff; }
.nina-voz__btn--sair:hover { background: #981a22; border-color: #981a22; }
@media (prefers-reduced-motion: reduce) { .nina-voz__onda, .nina-voz__av .nina-av { animation: none !important; } .nina-voz[data-fase="ouvindo"] .nina-voz__onda, .nina-voz[data-fase="falando"] .nina-voz__onda { opacity: .4; transform: none; } }

.nina-ic[aria-pressed="true"] { background: rgba(255, 255, 255, .28); }

/* ---------- ligação: ícones, telefone no ouvido e boca falando ---------- */
.nina-ic--ligar svg, .nina-voz__btn--sair svg { fill: currentColor; stroke: none; }
.nina-ic--ligar:not([aria-pressed="true"]) svg { animation: nina-toca 6s ease-in-out infinite; }
@keyframes nina-toca { 0%, 88%, 100% { transform: rotate(0); } 90% { transform: rotate(-14deg); } 92% { transform: rotate(12deg); } 94% { transform: rotate(-10deg); } 96% { transform: rotate(8deg); } 98% { transform: rotate(-4deg); } }
/* dentro da tela de ligação, a Nina atende: a mão sobe com o telefone e a cabeça se inclina para ele */
.nina-voz .nina-av { --nina-c-tel: inline; --nr-a-tel: nr-tel-pega .9s cubic-bezier(.2, .9, .3, 1.15) both; --nr-a-pose: nr-tel-cabeca 1s ease .2s both; }
.nina-voz[data-fase="falando"] .nina-av { --nr-a-boca: nr-fala 1.1s linear infinite; --nr-a-sorriso: nr-fala-sorriso 1.1s linear infinite; --nr-a-tremor: nr-fala-cabeca .55s ease-in-out infinite; }
.nina-voz[data-fase="pensando"] .nina-av { --nr-a-tremor: nr-pensa-cabeca 1.6s ease-in-out infinite; }
.nr-telefone, .nr-telefone-mov, .nr-boca, .nr-boca-aberta, .nr-boca-sorriso { transform-box: view-box; }
.nr-telefone-mov { transform-origin: 27px 70px; animation: var(--nr-a-tel, none); }
.nr-boca-aberta { opacity: 0; transform-origin: 48px 55.5px; animation: var(--nr-a-boca, none); }
.nr-boca-sorriso { animation: var(--nr-a-sorriso, none); }
@keyframes nr-tel-pega { 0% { transform: translate(-8px, 38px) rotate(-30deg); opacity: 0; } 35% { opacity: 1; } 70% { transform: translate(0, -2.5px) rotate(3deg); } 100% { transform: translate(0, 0) rotate(0); } }
@keyframes nr-tel-cabeca { to { transform: rotate(-5deg) translate(-1px, .4px); } }
/* boca: abre e fecha em tamanhos diferentes para parecer fala, não um pisca-pisca */
@keyframes nr-fala { 0% { opacity: 0; transform: scaleY(.25); } 10% { opacity: 1; transform: scaleY(1); } 22% { opacity: 1; transform: scaleY(.45); } 34% { opacity: 1; transform: scaleY(.9); } 46% { opacity: 0; transform: scaleY(.2); } 56% { opacity: 1; transform: scaleY(.7); } 68% { opacity: 1; transform: scaleY(1.05); } 80% { opacity: 1; transform: scaleY(.5); } 92% { opacity: 0; transform: scaleY(.2); } 100% { opacity: 0; transform: scaleY(.25); } }
@keyframes nr-fala-sorriso { 0%, 46%, 92%, 100% { opacity: 1; } 10%, 34%, 56%, 80% { opacity: 0; } }
@keyframes nr-fala-cabeca { 0%, 100% { transform: rotate(0) translateY(0); } 50% { transform: rotate(1.2deg) translateY(.6px); } }
@keyframes nr-pensa-cabeca { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-2.5deg) translateX(-.6px); } }
@media (prefers-reduced-motion: reduce) { .nr-telefone-mov, .nr-boca-aberta, .nr-boca-sorriso, .nina-ic--ligar svg { animation: none !important; } .nina-voz[data-fase="falando"] .nr-boca-aberta { opacity: 1; } .nina-voz[data-fase="falando"] .nr-boca-sorriso { opacity: 0; } }

/* ---------- modo híbrido: escreve e a Nina lê em voz alta ---------- */
.nina-ic--ler svg { fill: currentColor; stroke: none; }
.nina-ic--ler .nina-ic__onda { opacity: .35; transition: opacity .2s; }
.nina-ic--ler[aria-pressed="true"] { background: rgba(255, 255, 255, .28); }
.nina-ic--ler[aria-pressed="true"] .nina-ic__onda { opacity: 1; }
.nina[data-falando] .nina-ic--ler[aria-pressed="true"] .nina-ic__onda { animation: nina-ondas .9s ease-in-out infinite alternate; }
@keyframes nina-ondas { from { opacity: .25; } to { opacity: 1; } }
/* enquanto lê, a Nina do topo mexe a boca; um toque nela interrompe */
.nina[data-falando] .nina-av--topo { --nr-a-boca: nr-fala 1.1s linear infinite; --nr-a-sorriso: nr-fala-sorriso 1.1s linear infinite; --nr-a-tremor: nr-fala-cabeca .55s ease-in-out infinite; cursor: pointer; }
.nina[data-falando] .nina-launcher .nina-av { --nr-a-boca: nr-fala 1.1s linear infinite; --nr-a-sorriso: nr-fala-sorriso 1.1s linear infinite; }

.nina-voz__modo { margin: -4px 0 0; font-size: 12px; color: #5d6d7c; min-height: 1.2em; }
.nina-voz__modo[data-modo="rt"] { color: #15803d; font-weight: 600; }
.nina-voz__modo[data-modo="basico"] { color: #b45309; font-weight: 600; }
.nina-nota[data-modo="rt"] { color: #15803d; }
.nina-nota[data-modo="basico"] { color: #b45309; }

/* ---------- ligação: tela de conferência (agendar reunião / anotar contato) ---------- */
.nina-voz[data-card] .nina-voz__nina, .nina-voz[data-card] .nina-voz__eu, .nina-voz[data-card] .nina-voz__opc, .nina-voz[data-card] .nina-voz__modo { display: none; }
.nina-voz[data-card] { gap: 6px; padding-top: 12px; }
.nina-voz[data-card] .nina-voz__av { width: 72px; height: 72px; margin: 0; }
.nina-voz[data-card] .nina-voz__av .nina-av { width: 58px; height: 58px; border-width: 3px; }
.nina-voz__card { display: grid; gap: 8px; width: 100%; padding: 12px; border-radius: 16px; background: rgba(255, 255, 255, .96); border: 1px solid rgba(205, 215, 228, .95); text-align: left; box-shadow: 0 6px 18px rgba(10, 30, 50, .1); }
.nina-voz__card[hidden] { display: none; }
.nina-voz__card-t { margin: 0; font-size: 14px; font-weight: 600; color: var(--nina-azul-esc); }
.nina-voz__card label { display: grid; gap: 3px; font-size: 12px; font-weight: 600; color: #4a5a69; }
.nina-voz__card input, .nina-voz__card select { min-height: 38px; padding: 0 10px; border: 1.5px solid rgba(175, 190, 210, .9); border-radius: 10px; background: #fff; color: var(--nina-tinta); font: inherit; font-size: 16px; font-weight: 400; }
.nina-voz__card input:focus, .nina-voz__card select:focus { outline: 3px solid rgba(20, 112, 175, .35); border-color: var(--nina-azul); }
.nina-voz__card-c { margin: 0; font-size: 11.5px; line-height: 1.4; color: #5d6d7c; }
.nina-voz__erro { margin: 0; min-height: 0; font-size: 12.5px; font-weight: 600; color: #b4232c; }
.nina-voz__erro:empty { display: none; }
.nina-voz__card-b { display: flex; gap: 8px; }
.nina-voz__btn--ok { background: var(--nina-azul); border-color: var(--nina-azul); color: #fff; }
.nina-voz__btn--ok:hover { background: var(--nina-azul-esc); border-color: var(--nina-azul-esc); }
.nina-voz__btn--ok:disabled { opacity: .7; cursor: progress; }

/* =========================================================
   NINA VIVA — camadas de expressão e postura
   Quem manda nelas é o Animation Manager (Assets/nina-vida.js), que escreve as variáveis --nv-* no
   #nina (e no cartão de leitura #lnina); elas herdam para dentro do <use>, como as --nr-* acima.
   Sem o nina-vida.js, TODAS as variáveis ficam no valor de repouso abaixo e o desenho é o de sempre.
   As transições suaves (ease-in-out) são calculadas pelo próprio JS, quadro a quadro, e só enquanto algo se move.
   ========================================================= */
.nv-olhar, .nv-piscadas, .nv-olho, .nv-sobr, .nv-boca, .nv-boca-base, .nv-m-canto-lado, .nv-bochecha, .nv-cabeca, .nv-corpo, .nv-braco, .nv-antebraco { transform-box: view-box; }
.nina-launcher .nina-av { --nv-g: 1.3; }                      /* Nina pequena: movimentos de translação um pouco maiores para serem vistos */
.nina-av--topo { --nv-g: 1.5; }
.nina-voz[data-card] .nina-voz__av { --nv-g: 1.25; }
/* olhos */
.nv-olhar { transform: translate(calc(var(--nv-ox, 0px) * var(--nv-g, 1)), calc(var(--nv-oy, 0px) * var(--nv-g, 1))); }
.nv-piscadas { transform-origin: 48px 47.5px; transform: scaleY(var(--nv-pisca, 1)); }                 /* piscadas extras (duplo piscar); o piscar de sempre continua em .nr-pisca */
.nv-olho-e { transform-origin: 41px 47.5px; transform: scaleY(var(--nv-ee, 1)); }
.nv-olho-d { transform-origin: 55px 47.5px; transform: scaleY(var(--nv-ed, 1)); }
/* sobrancelhas */
.nv-sobr-e { transform-origin: 41.5px 41px; transform: translateY(var(--nv-bey, 0px)) rotate(var(--nv-ber, 0deg)); }
.nv-sobr-d { transform-origin: 54.5px 41px; transform: translateY(var(--nv-bdy, 0px)) rotate(var(--nv-bdr, 0deg)); }
/* boca: postura (desloca/gira), forma de sempre (estica/achata) e formas extras (aparecem por opacidade) */
.nv-boca { transform-box: view-box; transform-origin: 48px 55.5px; transform: translate(var(--nv-mx, 0px), var(--nv-my, 0px)) rotate(var(--nv-mr, 0deg)); }
.nv-boca-base { transform-origin: 48px 55.5px; opacity: var(--nv-mb, 1); transform: scale(var(--nv-msx, 1), var(--nv-msy, 1)); }
.nv-m-canto { opacity: var(--nv-mcanto, 0); }
.nv-m-canto-lado { transform-origin: 48px 55.5px; transform: scaleX(var(--nv-mdir, 1)); }
.nv-m-o { opacity: var(--nv-mo, 0); }
.nv-m-riso { opacity: var(--nv-mriso, 0); }
.nv-bochecha { transform-origin: 48px 53px; opacity: var(--nv-bo, 1); transform: scale(var(--nv-bos, 1)); }
/* cabeça (o cabelo de trás usa a mesma classe, para acompanhar), corpo e ombros */
.nv-cabeca { transform-origin: 48px 72px; transform: translate(calc(var(--nv-hx, 0px) * var(--nv-g, 1)), calc(var(--nv-hy, 0px) * var(--nv-g, 1))) rotate(var(--nv-hr, 0deg)) scale(var(--nv-hs, 1)); }
.nv-corpo { transform-origin: 48px 98px; transform: translate(calc(var(--nv-cx, 0px) * var(--nv-g, 1)), calc(var(--nv-cy, 0px) * var(--nv-g, 1))) rotate(var(--nv-cr, 0deg)) scale(var(--nv-cs, 1)); }
/* braço do aceno: escondido (opacidade 0, abaixo do enquadramento) até --nv-ba > 0; o antebraço gira no cotovelo */
.nv-braco { opacity: calc(var(--nv-ba, 0) * 3); transform: translate(calc((1 - var(--nv-ba, 0)) * 8px), calc((1 - var(--nv-ba, 0)) * 36px)); }
.nv-antebraco { transform-origin: 83px 73.5px; transform: rotate(var(--nv-bw, 0deg)); }
/* despedida no cartão de leitura: o livro é baixado antes da mão subir */
@keyframes nv-livro-baixa { from { transform: translateY(0); opacity: 1; } to { transform: translateY(26px); opacity: 0; } }
.lnina[data-acena="baixando"] .lnina__av { --nr-a-livro: nv-livro-baixa .4s ease-in forwards; }
.lnina[data-acena="sim"] .lnina__av { --nina-c-livro: none; }
.lnina[data-fase="despedida"] .lnina__ctl button:first-child { display: none; }
@media (prefers-reduced-motion: reduce) { .lnina[data-acena="baixando"] .lnina__av { --nr-a-livro: none; } }
