/* Ritmo do Aki: entrada assentada, saída curta e toque imediato. */
:root {
  --mov-toque: 110ms; --mov-controle: 180ms; --mov-aba: 220ms;
  --mov-painel: 260ms; --mov-pagina: 300ms; --mov-saida: 160ms;
  --mov-assentar: cubic-bezier(.22,1,.36,1); --mov-sair: cubic-bezier(.4,0,1,1);
  --transicao: var(--mov-controle) var(--mov-assentar);
  --mola: var(--mov-assentar); --mola-vidro: var(--mov-assentar); --mola-suave: var(--mov-assentar); --mola-tempo: 260ms;
}
/* O controlador anima uma superfície por vez. Sem cascata, flash de carregamento
   nem segunda animação CSS sobre Web Animations. */
html[data-aki-movimento] .conteudo > *,
html[data-aki-movimento] :is(.nativo-avancar,.nativo-voltar,.modal,.menu-ctx,.menu-ctx-camada,.painel-detalhe),
html[data-aki-movimento] #camada-modal { animation: none !important; animation-delay: 0s !important; }
html[data-aki-movimento][data-nav="pendente"] .conteudo > * { opacity: 1; }
html[data-aki-movimento] .modal { view-transition-name: none; }
html:root[data-tema] :is(.botao,.botao-icone,.pilula,.nav-item,.nav-mais,.nav-mais-destino,.menu-acao,.menu-ctx-item,.esc-btn,.esc-aba,.leitor-ferr,.leitor-opt,.chat-acao,summary) {
  transition-property: color,background-color,border-color,opacity,scale;
  transition-duration: var(--mov-controle); transition-timing-function: var(--mov-assentar);
}
@media (hover:hover) {
  html:root[data-tema] :is(.botao,.botao-icone,.menu-acao,.esc-btn,.leitor-ferr):not(:disabled):hover { scale: 1.012; }
}
html:root[data-tema] :is(.botao,.botao-icone,.pilula,.nav-item,.nav-mais,.nav-mais-destino,.menu-acao,.menu-ctx-item,.esc-btn,.esc-aba,.leitor-ferr,.leitor-opt,.chat-acao):not(:disabled):active {
  scale: .975; transition-duration: var(--mov-toque);
}
html:root[data-tema] .nav-item::after { transition: opacity var(--mov-aba) var(--mov-assentar); }
html:root[data-tema] :is(.menu-acao,.nav-item,.nav-mais):active { transform: none; }
html:root[data-tema] .nav-item:active .nav-icone { transform: none; }
/* Não anima texto autoral, PDF, vídeo, canvas, campo ou frames da transmissão. */
html[data-aki-movimento] :is(.esc-folha,.leitor-pagina,canvas,video,textarea,input) { scale: none; }
@media (prefers-reduced-motion:reduce) {
  html:root[data-tema] :is(button,summary,.nav-item::after) { transition: none !important; scale: none !important; }
}
html[data-tema-movimento="parado"] :is(button,summary,.nav-item::after) { transition: none !important; scale: none !important; }

/* Diálogos e popovers nativos mantêm sua semântica de fechar no instante da ação.
   O navegador retém só a pintura até concluir a saída, quando há suporte. */
@supports (transition-behavior: allow-discrete) {
  html[data-aki-movimento] :is(dialog,[popover]) {
    opacity: 0; transform: translateY(8px);
    transition: opacity var(--mov-painel) var(--mov-assentar), transform var(--mov-painel) var(--mov-assentar), display var(--mov-painel) allow-discrete, overlay var(--mov-painel) allow-discrete;
    transition-behavior: allow-discrete;
  }
  html[data-aki-movimento] :is(dialog[open],[popover]:popover-open) { opacity: 1; transform: none; }
  @starting-style { html[data-aki-movimento] :is(dialog[open],[popover]:popover-open) { opacity: 0; transform: translateY(8px); } }
  html[data-aki-movimento] dialog:has(canvas,video,[contenteditable]) { transform: none; }
}
@media (prefers-reduced-motion:reduce) { html[data-aki-movimento] :is(dialog,[popover]) { transition: none !important; transform: none !important; } }
html[data-tema-movimento="parado"] :is(dialog,[popover]) { transition: none !important; transform: none !important; }
