﻿/* ft-assistant-avatar.css — o avatar 2D do assistente (Views/Shared/_FtAssistantAvatar.cshtml).

   Veio do ft-theme.css em 2026-09-25 para o bundle `~/wwwroot/css/ft-layout`, carregado em TODA página:
   com o assistente na topnav, o avatar aparece também na tela legada, que não carrega o fixtres-components.
   As regras já tinham fallback nos tokens do assistente, então a cor sai certa sem o ft-light/ft-dark.
   Rostos do kit (.assistant-face-kit*), .assistant-2d e .assistant-bubble2d continuam no ft-assistant.css. */

/* ============================================================ ASSISTENTE — o avatar do assistente de IA
   A peça mora em `Views/Shared/_FtAssistantAvatar.cshtml` e é SVG INLINE, nunca `<symbol>` + `<use>`:
   o `<use>` clona num shadow DOM que seletor de fora não alcança, e os quatro estados são exatamente
   regras que mexem em partes internas do desenho. No sprite ele ficaria parado para sempre.

   O CSS está AQUI, e não dentro do `<svg>`, porque a peça se repete na tela (uma por mensagem do
   chat): um `<style>` por instância seria o mesmo bloco copiado dezenas de vezes no DOM.

   ESTADO por classe no próprio `<svg>`: `is-idle` · `is-thinking` · `is-working` · `is-done`.
   Cada um muda a FORMA da boca e dos olhos, não só o movimento — é o que faz o estado continuar
   legível a 22px e com `prefers-reduced-motion`, que desliga toda a animação no fim deste bloco. */
    .assistant{display:inline-block;vertical-align:middle;flex:none;overflow:visible}
    .assistant .assistant-shell{fill:var(--ft-color-assistant-primary, #fe9402)}
    .assistant .assistant-cup{fill:var(--ft-color-assistant-primary-dark, #e3820a)}
    .assistant .assistant-screen{fill:#1c2634}
    .assistant .assistant-glass{fill:none;stroke:#fff;stroke-width:1.2;stroke-linecap:round;opacity:.12}
    .assistant .assistant-shine{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;opacity:.18}
    .assistant .assistant-shade{fill:none;stroke:#000;stroke-width:1.6;stroke-linecap:round;opacity:.1}
    .assistant .assistant-fill{fill:var(--ft-color-assistant-secondary, #00b638)}
    .assistant .assistant-vein{fill:none;stroke:var(--ft-color-assistant-secondary-dark, #0b7d2b);stroke-width:1;stroke-linecap:round;opacity:.75}
    .assistant .assistant-stem{fill:none;stroke:var(--ft-color-assistant-secondary, #00b638);stroke-width:2.6;stroke-linecap:round}
    .assistant .assistant-line{fill:none;stroke:var(--ft-color-assistant-secondary, #00b638);stroke-width:4.3;stroke-linecap:round;stroke-linejoin:round}
    .assistant .assistant-face{filter:drop-shadow(0 0 1.4px rgba(0,182,56,.9))}
    .assistant .assistant-scan{fill:none;stroke:var(--ft-color-assistant-secondary, #00b638);stroke-width:1.8;stroke-linecap:round;opacity:.65}
    .assistant .assistant-ring{fill:none;stroke:var(--ft-color-assistant-secondary, #00b638);stroke-width:2.4;opacity:0}
    /* forma de cada estado — vale também sem movimento */
    .assistant .assistant-eye-bar,.assistant .assistant-mouth-dots,.assistant .assistant-mouth-line,.assistant .assistant-mouth-big,.assistant .assistant-scan,.assistant .assistant-ring{display:none}
    .assistant.is-thinking .assistant-mouth-smile{display:none}
    .assistant.is-thinking .assistant-mouth-dots{display:inline}
    .assistant.is-thinking .assistant-eyes{transform:translate(1.5px,-1.5px) scaleY(.75)}
    .assistant.is-working .assistant-eye-arc,.assistant.is-working .assistant-mouth-smile{display:none}
    .assistant.is-working .assistant-eye-bar,.assistant.is-working .assistant-mouth-line,.assistant.is-working .assistant-scan{display:inline}
    .assistant.is-working .assistant-eyes{transform:translateY(1.5px)}
    .assistant.is-done .assistant-mouth-smile{display:none}
    .assistant.is-done .assistant-mouth-big,.assistant.is-done .assistant-ring{display:inline}
    .assistant.is-done .assistant-eyes{transform:translateY(-1px) scale(1.08)}
    .assistant.is-done .assistant-screen{stroke:var(--ft-color-assistant-secondary, #00b638);stroke-width:1.5;stroke-opacity:.5}
    /* eixos das transformações */
    .assistant .assistant-head{transform-origin:32px 59px}
    .assistant .assistant-leaf{transform-origin:32px 18px}
    .assistant .assistant-eyes,.assistant .assistant-blink,.assistant .assistant-dot,.assistant .assistant-mouth-big,.assistant .assistant-ring{transform-box:fill-box;transform-origin:center}
    /* movimento */
    .assistant.is-idle .assistant-head{animation:assistant-breathe 4.5s ease-in-out infinite}
    .assistant.is-idle .assistant-blink{animation:assistant-blink 5.5s ease-in-out infinite}
    .assistant.is-idle .assistant-leaf{animation:assistant-sway 6s ease-in-out infinite}
    .assistant.is-thinking .assistant-dot{animation:assistant-dot 1.2s ease-in-out infinite}
    .assistant.is-thinking .assistant-dot:nth-child(2){animation-delay:.15s}
    .assistant.is-thinking .assistant-dot:nth-child(3){animation-delay:.3s}
    .assistant.is-thinking .assistant-leaf{animation:assistant-antenna 1.2s ease-in-out infinite}
    .assistant.is-working .assistant-scan{animation:assistant-scan 1.6s linear infinite}
    .assistant.is-working .assistant-blink{animation:assistant-read 1.6s ease-in-out infinite}
    .assistant.is-done .assistant-head{animation:assistant-hop .7s cubic-bezier(.3,.9,.3,1) 1}
    .assistant.is-done .assistant-ring{animation:assistant-ring .8s ease-out 1}
    .assistant.is-done .assistant-mouth-big{animation:assistant-pop .45s .08s cubic-bezier(.2,1.5,.4,1) both}
    @keyframes assistant-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
    @keyframes assistant-blink{0%,91%,96%,100%{transform:scaleY(1)}93.5%{transform:scaleY(.08)}}
    @keyframes assistant-sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
    @keyframes assistant-dot{0%,60%,100%{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1.15)}}
    @keyframes assistant-antenna{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
    @keyframes assistant-scan{0%{transform:translateY(0);opacity:0}12%{opacity:.65}88%{opacity:.65}100%{transform:translateY(24px);opacity:0}}
    @keyframes assistant-read{0%,100%{transform:translateX(-1.5px)}45%{transform:translateX(1.5px)}50%{transform:translateX(-1.5px)}95%{transform:translateX(1.5px)}}
    @keyframes assistant-hop{0%{transform:translateY(0) scale(1)}22%{transform:translateY(.6px) scale(1.05,.94)}55%{transform:translateY(-3px) scale(.96,1.05)}80%{transform:translateY(0) scale(1.02,.98)}100%{transform:translateY(0) scale(1)}}
    @keyframes assistant-ring{0%{opacity:.85;transform:scale(.8)}100%{opacity:0;transform:scale(1.15)}}
    @keyframes assistant-pop{0%{transform:scale(.3)}100%{transform:scale(1)}}
    @media (prefers-reduced-motion:reduce){.assistant *{animation:none!important}}
