/* CHAT (aba IA) — aviso de conteúdo bloqueado (LOCKED), header/mensagens/composer (AI TAB), tela inicial do chat (AI HOME). */

/* LOCKED */
.locked-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px 20px;text-align:center;margin-bottom:10px;position:relative;overflow:hidden;}
.locked-blur-text{filter:blur(5px);opacity:0.3;pointer-events:none;font-size:var(--font-size-base);line-height:1.7;color:var(--text-muted);margin-bottom:16px;user-select:none;}
.locked-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;}
.lock-icon{font-size:24px;margin-bottom:8px;}
.lock-title{font-family:var(--font-heading);font-size:var(--font-size-lg);margin-bottom:6px;}
.lock-sub{font-size:var(--font-size-meta);color:var(--text-muted);margin-bottom:14px;line-height:1.5;}
.btn-unlock{background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-mid1) 33%,var(--gradient-mid2) 66%,var(--gradient-end) 100%);border:none;border-radius:10px;padding:11px 24px;font-family:var(--font-body);font-size:var(--font-size-md);font-weight:500;color:var(--color-white);cursor:pointer;transition:transform 0.15s ease-out;}
.btn-unlock:active{transform:scale(0.97);}

/* AI TAB — Fase UI.4a (tasks/todo.md): header deixou de ser uma seção com
   título+subtítulo (o logo/navbar acima já identifica o produto, repetir
   "Orbita AI" aqui só gastava altura sem dizer nada novo) e virou uma
   barrinha utilitária mínima — só o contexto (nome do mapa carregado) +
   os 2 botões funcionais (Histórico/Nova conversa), sem borda separando
   do resto (a intenção é a conversa começar quase imediatamente, sem
   sensação de "seção" antes dela). #ai-subhead continua sendo escrito via
   JS (chat.js/core.js) — só o estilo mudou, o elemento é o mesmo.*/
.ai-header{padding:8px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;}
.ai-header-sub{font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ai-header-actions{display:flex;gap:6px;flex-shrink:0;}
.ai-header-btn{background:transparent;border:1px solid var(--border);border-radius:8px;padding:4px 10px;font-size:11px;color:var(--text-muted);cursor:pointer;white-space:nowrap;font-family:var(--font-body);}
.ai-header-btn:active{opacity:0.7;}
/* Busca nas conversas anteriores (aiSearch*, js/chat.js) */
.ai-search-bar{position:relative;margin:0 16px 8px;flex-shrink:0;}
.ai-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-dim);pointer-events:none;}
.ai-search-input{display:block;width:100%;box-sizing:border-box;padding:9px 12px 9px 36px;border-radius:10px;border:1px solid var(--border);background:rgba(var(--overlay-rgb),0.04);color:var(--text);font-family:var(--font-body);font-size:16px;outline:none;transition:border-color 0.15s;}
.ai-search-input:focus{border-color:rgba(var(--gradient-start-rgb),0.5);}
.ai-search-input::placeholder{color:var(--text-dim);}
.ai-search-results{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.ai-search-status{padding:16px;font-size:13px;color:var(--text-muted);}
.ai-search-item{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;}
.ai-search-item:active{opacity:0.7;}
.ai-search-meta{font-size:11px;color:var(--text-dim);margin-bottom:4px;}
.ai-search-snippet{font-size:14px;color:var(--text);line-height:1.45;}
.ai-search-snippet mark{background:rgba(var(--gradient-start-rgb),0.22);color:inherit;border-radius:3px;padding:0 1px;}
@keyframes aiSearchHit{from{box-shadow:0 0 0 2px rgba(var(--gradient-start-rgb),0.6);}to{box-shadow:0 0 0 2px transparent;}}
.ai-search-hit{animation:aiSearchHit 2.4s ease-out;border-radius:12px;}
.ai-messages{flex:1;overflow-y:auto;padding:8px 20px 16px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch;}
@keyframes aiMsgIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.ai-msg{animation:aiMsgIn 0.2s ease-out;}
/* Fase UI.4a: a pergunta da usuária continua bolha (ajuda a marcar onde a
   pergunta termina e a leitura começa), mas mais contida e discreta —
   max-width menor, borda mais fraca — pra não competir visualmente com a
   resposta. A resposta da Orbita solta a moldura de balão inteiramente:
   sem fundo, sem borda, ocupando a largura toda — lida como um texto
   pessoal escrito pra ela, não como uma mensagem recebida num app de
   mensagens. */
.ai-msg.user{align-self:flex-end;max-width:82%;}
.ai-msg.assistant{align-self:stretch;max-width:100%;}
.ai-bubble{border-radius:16px;font-size:var(--font-size-base);line-height:1.65;font-weight:300;}
.ai-msg.user .ai-bubble{padding:10px 14px;background:var(--accent-dim);border:1px solid rgba(var(--accent-rgb),0.15);color:var(--text);border-bottom-right-radius:4px;}
.ai-msg.assistant .ai-bubble{padding:0;background:transparent;border:none;color:var(--text);border-radius:0;}
/* Fase UI.4c (tasks/todo.md) — a saudação proativa (mensagem que abre a
   conversa sozinha, ver announceProactiveOpeningInChat em js/chat.js) tem
   assinatura visual própria, discreta: um traço fino na cor de destaque
   (não uma caixa) + um glifo pequeno abrindo o primeiro parágrafo — sinaliza
   "isto é diferente de uma resposta comum" sem card, sem peso, sem gastar
   altura extra. Mesmo glifo (✦) já usado no ícone da aba Órbita/logo do
   preauth — reforça identidade sem introduzir elemento novo. */
.ai-msg.ai-opening .ai-bubble{padding-left:13px;border-left:2px solid rgba(var(--accent-rgb),0.35);}
.ai-msg.ai-opening .ai-bubble p:first-child::before{content:'✦  ';color:var(--accent);}
.ai-bubble p{margin-bottom:10px;}
/* Hierarquia de 3 níveis dentro de um bloco de leitura de sinastria/aspecto
   (### título da IA → parágrafo de mecanismo → dado técnico/diálogo) —
   título sempre visível com destaque forte (nível 1), corpo no peso padrão
   já existente (nível 2), dado técnico (reaproveita .tech-accordion* já
   usado na página de interpretação) e diálogo hipotético diferenciados
   como nível 3, pra não competir visualmente com a leitura. */
.ai-block-title{font-weight:700;font-size:1.08em;margin-top:18px;margin-bottom:6px;}
.ai-block-title:first-child{margin-top:0;}
.ai-dialogue{background:var(--bg);border-left:2px solid var(--border);border-radius:0 8px 8px 0;padding:8px 12px;margin:8px 0;}
.ai-dialogue-line{font-size:0.92em;font-style:italic;color:var(--text-muted);line-height:1.5;}
.ai-dialogue-line+.ai-dialogue-line{margin-top:4px;}
.ai-dialogue-line strong{font-style:normal;color:var(--text);}
.ai-bubble .tech-accordion{margin-top:8px;}
.ai-bubble .tech-accordion-toggle{padding:8px 0;font-size:12px;}
.ai-bubble .tech-row{font-size:12px;}
/* "Pensando" do chat: 4 pontos que acendem em sequência (substituiu o mascote em 2026-10-03). */
.ai-thinking-dots{display:inline-flex;align-items:center;gap:5px;height:20px;vertical-align:middle;}
.ai-thinking-dots i{width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.25;animation:ai-dot-light 1.2s ease-in-out infinite;}
.ai-thinking-dots i:nth-child(2){animation-delay:.15s;}
.ai-thinking-dots i:nth-child(3){animation-delay:.3s;}
.ai-thinking-dots i:nth-child(4){animation-delay:.45s;}
@keyframes ai-dot-light{0%,60%,100%{opacity:.25;transform:scale(1);}30%{opacity:1;transform:scale(1.25);}}
@media (prefers-reduced-motion:reduce){.ai-thinking-dots i{animation:none;opacity:.6;}}
[data-mascote] svg{display:block;width:100%;height:100%;}
[data-mascote] .m-knock{fill:var(--bg);} /* "recorte" em volta dos planetinhas = cor do fundo, claro ou escuro */
.ai-bubble p:last-child{margin-bottom:0;}
/* Read Aloud (TTS, 2026-08-28) — mesma linguagem visual discreta do botão
   "salvar" já existente (texto pequeno, opacidade reduzida), só que como
   classe (não estilo inline) pra poder reagir ao data-state. Botão
   "salvar" (js/chat.js:addSinteseSaveButton) é encaixado dentro deste
   mesmo wrap quando existe, ao lado do ícone de ouvir. */
.ai-tts{display:flex;align-items:center;gap:10px;margin-top:6px;}
.ai-tts-btn,.ai-tts-stop{background:none;border:none;cursor:pointer;font-size:11px;color:var(--text-muted);opacity:0.6;padding:2px 6px;font-family:'DM Sans','Noto Sans','Noto Sans JP',sans-serif;display:inline-flex;align-items:center;gap:4px;}
.ai-tts-stop{text-decoration:underline;}
.ai-tts-btn:hover,.ai-tts-stop:hover{opacity:0.9;}
.ai-tts[data-state="speaking"] .ai-tts-btn,.ai-tts[data-state="paused"] .ai-tts-btn{color:var(--accent);opacity:0.9;}
.ai-tts[data-state="loading"] .ai-tts-btn{opacity:0.5;cursor:default;}
.ai-tts[data-state="idle"] .ai-tts-stop{display:none;}
.ai-tts-icon{display:inline-flex;}
.ai-tts-icon svg{display:block;}
/* Rótulo ("Ouvir"/"Pausar"/"Retomar") só como tooltip nativo via title
   agora (pedido da usuária, 2026-09-12) — sem texto visível ao lado do
   ícone. O span continua no DOM (ttsSetState ainda escreve nele) só pra
   não precisar tocar na lógica de estado; só escondido visualmente. */
.ai-tts-label{display:none;}
.ai-suggestions{display:flex;flex-wrap:wrap;gap:8px;padding:10px 20px 0;flex-shrink:0;}
.ai-suggestion{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:8px 14px;font-size:var(--font-size-md);color:var(--text-muted);cursor:pointer;transition:all 0.2s;}
.ai-suggestion:hover{border-color:var(--accent);color:var(--accent);}
/* Fase UI.4e (tasks/todo.md) — divisor do composer mais discreto (era a
   mesma opacidade de --border usada em bordas "estruturais" tipo cards;
   aqui é só uma referência sutil de onde a conversa termina, não uma
   seção nova) e campo de texto com borda mais suave — continua com
   affordance clara de campo editável, só menos "formulário". */
.ai-input-row{padding:12px 20px;border-top:1px solid rgba(74,85,104,0.1);display:flex;gap:10px;align-items:flex-end;flex-shrink:0;padding-bottom:calc(12px + var(--safe-bottom,0px));}
.ai-textarea{flex:1;background:var(--surface);border:1px solid rgba(74,85,104,0.14);border-radius:14px;padding:12px 14px;font-family:var(--font-body);font-size:var(--font-size-body);font-weight:300;color:var(--text);outline:none;resize:none;max-height:100px;-webkit-appearance:none;transition:border-color 0.2s;}
.ai-textarea:focus{border-color:var(--accent);}
.ai-send{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-mid1) 33%,var(--gradient-mid2) 66%,var(--gradient-end) 100%);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.ai-premium-gate{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px;text-align:center;}
.ai-premium-gate .gate-icon{font-size:40px;margin-bottom:16px;}
.ai-premium-gate h3{font-family:var(--font-heading);font-size:var(--font-size-2xl);margin-bottom:10px;}
.ai-premium-gate p{font-size:var(--font-size-base);color:var(--text-muted);line-height:1.6;margin-bottom:24px;}

/* AI HOME — Estados 1/2 (ver docs de navegação); some assim que a 1ª mensagem é enviada */
.ai-input-wrap{display:flex;flex-direction:column;flex-shrink:0;}
#ai-home{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;text-align:center;gap:16px;overflow-y:auto;}
.ai-home-title{font-family:var(--font-heading);font-size:24px;color:var(--text);max-width:420px;}
.ai-home-discover{font-size:var(--font-size-md);color:var(--text-muted);margin-top:6px;}
.ai-home-categories{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:480px;}
.ai-cat-chip{background:none;border:1px solid var(--border);border-radius:999px;padding:7px 14px;font-family:var(--font-body);font-size:var(--font-size-sm,13px);color:var(--text-muted);cursor:pointer;transition:all 0.2s;}
.ai-cat-chip:hover{border-color:var(--accent);}
.ai-followups{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:12px;}
.ai-followup-chip{text-align:left;color:var(--accent);border-color:rgba(var(--accent-rgb),0.28);}
.ai-cat-chip.active{background:var(--accent-dim);border-color:transparent;color:var(--accent);}
/* Reestruturação Chat-como-Home (Incremento A) — card de navegação pra
   experiências que continuam sendo página própria (hoje só Mapa Astral).
   Mesma linguagem visual de .aspect-card (borda+raio+padding), não de
   .ai-cat-chip/.ai-suggestion (que são chips de seleção/pergunta, outro
   propósito). */
.ai-home-nav-cards{width:100%;max-width:480px;}
.ai-home-nav-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--cosmic-purple);border-radius:14px;padding:14px 16px;text-align:left;cursor:pointer;transition:border-color 0.2s;}
.ai-home-nav-card:hover{border-color:var(--accent);}
.ai-home-nav-card-label{font-size:var(--font-size-sm,13px);color:var(--text-muted);}
.ai-home-nav-card-title{font-family:var(--font-heading);font-size:var(--font-size-lg);color:var(--text);}
/* Fase UI.4b (tasks/todo.md) — widget (renderWidgetPills, js/chat.js) precisa
   parecer uma AÇÃO ("abre o Mapa/Sinastria de verdade"), não mais uma
   sugestão de pergunta como .ai-cat-chip: fundo tingido de accent (não só
   contorno), texto na cor de destaque, e uma seta pequena via ::before
   sinalizando "isto leva a outro lugar" — sem trazer ícone SVG novo nem
   mudar a lógica de clique (só a classe mudou em renderWidgetPills). */
.ai-widget-chip{display:inline-flex;align-items:center;gap:5px;background:var(--accent-dim);border:1px solid rgba(var(--accent-rgb),0.28);border-radius:999px;padding:7px 14px 7px 11px;font-family:var(--font-body);font-size:var(--font-size-sm,13px);font-weight:500;color:var(--accent);cursor:pointer;transition:all 0.2s;}
.ai-widget-chip::before{content:'↗';font-size:0.82em;opacity:0.75;}
.ai-widget-chip:active{opacity:0.7;}
#ai-home-questions{justify-content:center;max-width:480px;padding:0;}
.ai-typeahead{padding:0 20px 8px;display:flex;flex-direction:column;gap:6px;flex-shrink:0;}
.ai-typeahead-title{font-size:var(--font-size-sm,12px);color:var(--text-muted);padding:0 2px 2px;}
.ai-typeahead-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 14px;font-size:var(--font-size-base);color:var(--text);cursor:pointer;transition:border-color 0.2s;}
.ai-typeahead-item:hover{border-color:var(--accent);}
.ai-followup-title{font-size:var(--font-size-sm,12px);color:var(--text-muted);width:100%;padding:0 2px;}

/* Chat IA no desktop — Fase UI.4d (tasks/todo.md): decisão de produto
   explícita foi NÃO alargar (era "chat grande tipo Claude" antes) — uma
   coluna de leitura mais ESTREITA que isso, com bastante espaço negativo
   nas laterais, mais perto de uma carta pessoal que de um dashboard.
   Mesma largura de .moon-wrap (já uma convenção de "página de leitura"
   neste projeto) — não inventa um valor novo. Sem segunda coluna, sem
   painel de contexto lateral, por decisão de produto (mobile é a
   prioridade; desktop é a mesma experiência com mais respiro, não um
   produto diferente). Mobile fica exatamente como está (regras abaixo do
   mesmo breakpoint da sidebar em index.html — precisam vir DEPOIS das
   regras base acima na cascata, senão a base vence por ordem de código
   apesar do media). */
@media(min-width:900px){
  .ai-header,.ai-home,.ai-scope-chips,.ai-messages,.ai-suggestions,.ai-input-wrap{max-width:640px;margin-left:auto;margin-right:auto;width:100%;}
  .ai-messages{padding:32px 24px;gap:24px;}
  .ai-msg.assistant{max-width:100%;}
  .ai-bubble{font-size:16px;line-height:1.8;}
  .ai-msg.user .ai-bubble{padding:12px 16px;}
  .ai-input-row{padding:16px 24px;}
  .ai-textarea{font-size:16px;padding:14px 16px;}
  .ai-header{padding:12px 24px;}
  /* A barra de baixo aqui fica em bottom:20px e mede 86px (css/app-shell.css):
     ocupa 106px, mais que os 85px que .app-scroll reserva — cobria o campo.
     Só na aba do chat (.chat-scroll-lock, switchTab). */
  .app-scroll.chat-scroll-lock{padding-bottom:calc(118px + var(--safe-bottom));}
  .ai-suggestions{padding:12px 24px 0;}
}
/* Chips "Falar sobre: Pai · Marina" (chat de uma decisão, js/chat.js aiRenderFocusChips). */
.ai-focus-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 20px 0;border-top:1px solid rgba(74,85,104,0.1);}
.ai-focus-chips[hidden]{display:none;}
.ai-focus-chips + .ai-input-row{border-top:none;}
/* Chips de escopo ficam no topo do chat, fora da área de digitação. */
.ai-scope-chips{flex-shrink:0;justify-content:center;border-top:none;padding:4px 20px 8px;}
.ai-focus-label{font-size:12px;color:var(--text-dim);margin-right:2px;}
.ai-focus-chip{padding:6px 12px;font-size:12.5px;min-height:32px;}

/* "Como é minha relação com {nome}?" — resposta em cards (aiShowRelationshipMock,
   js/chat.js). Só tokens existentes; card no molde de .moon-card. */
.rel-answer{display:flex;flex-direction:column;gap:12px;}
.rel-jump-chips{display:flex;flex-wrap:wrap;gap:6px;}
.rel-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;scroll-margin-top:12px;}
.rel-card p{margin:0;color:var(--text-muted);}
.rel-card-title{font-family:var(--font-heading);font-size:var(--font-size-lg);font-weight:400;color:var(--accent);margin:0 0 6px;}
.rel-summary{border-left:3px solid var(--accent);}
.rel-summary p{font-family:var(--font-heading);font-size:var(--font-size-lg);color:var(--text);line-height:1.45;}


/* "Perguntar à Órbita sobre este tema" (2026-09-27, askOrbitaAboutTheme em
   js/chat.js) — botão no fim da página do tema; o contexto vai pro chat sem
   aparecer na tela. */
.ask-theme-btn{display:block;width:100%;margin:20px 0 8px;padding:12px 16px;background:var(--accent-dim);border:1px solid rgba(var(--accent-rgb),0.25);border-radius:12px;color:var(--accent);font-family:var(--font-body);font-size:var(--font-size-base);cursor:pointer;text-align:center;}
.ask-theme-btn:active{opacity:0.7;}
.guardar-menu-head{font-size:11px;color:var(--text-muted);padding:6px 10px 4px;}

/* Barra de seleção [Guardar] [Perguntar à Órbita] (2026-09-27, ensureGuardarUI em js/chat.js). */
.guardar-select-bar{position:fixed;z-index:200;display:flex;flex-wrap:wrap;max-width:calc(100vw - 16px);align-items:center;background:var(--surface2);border:1px solid var(--border-hover);border-radius:10px;padding:3px;box-shadow:0 4px 16px rgba(0,0,0,0.18);}
.guardar-select-btn{background:none;border:none;padding:6px 10px;font-size:12px;font-family:var(--font-body);color:var(--accent);cursor:pointer;white-space:nowrap;}
.guardar-select-btn+.guardar-select-btn{border-left:1px solid var(--border);}
.guardar-select-btn:disabled{opacity:0.7;cursor:default;}
/* Trecho citado acima do campo (aiSetQuote) e dentro da bolha enviada. */
.ai-quote{display:flex;align-items:flex-start;gap:10px;margin:8px 20px 0;padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;font-size:13px;color:var(--text-muted);}
.ai-quote[hidden]{display:none;}
.ai-quote-icon{flex-shrink:0;line-height:1.45;}
.ai-quote-text{flex:1;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.ai-quote-close{flex-shrink:0;background:none;border:none;font-size:18px;line-height:1;color:var(--text-muted);cursor:pointer;padding:0 2px;}
.ai-quote+.ai-input-row{border-top:none;}
/* Etiqueta "Sobre: …" do escopo da conversa (aiRenderScope). */
.ai-scope-tag{align-self:flex-start;align-items:center;padding:6px 10px;}
.ai-quote-in-msg{font-size:12.5px;line-height:1.45;color:var(--text-muted);border-left:2px solid rgba(var(--accent-rgb),0.4);padding-left:8px;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}
/* Copiar / Compartilhar resposta (attachAnswerActions). */
.ai-icon-btn{background:none;border:none;padding:4px;color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;border-radius:6px;}
.ai-icon-btn:active{opacity:0.6;}
.ai-icon-btn:disabled{opacity:0.4;cursor:default;}

/* Créditos (2026-10-01, js/credits.js) — saldo discreto acima da caixa do chat. */
.ai-credits-line{font-size:12px;color:var(--text-muted,#888);text-align:center;margin:0 0 6px;}
.ai-credits-buy{background:none;border:0;padding:0;color:var(--accent);font:inherit;cursor:pointer;text-decoration:underline;}

/* Painel "🔍 Como montei" (2026-10-20, só conta dona, js/chat.js
   attachTracePanel) — mesmo accordion do "Ver dados técnicos". */
.ai-trace{margin-top:8px;}
.ai-trace-title{font-size:12px;font-weight:600;color:var(--text);margin:0 0 4px;text-transform:uppercase;letter-spacing:0.04em;}
/* 2026-10-21: faixa de veredito, blocos só com espaço (sem divisores),
   rótulo pequeno e cinza, valor em negrito, "não"/"nenhum" apagado. */
.trc-verdict{display:block;text-decoration:none;font-size:12px;font-weight:600;border-radius:8px;padding:6px 10px;margin:4px 0 0;}
.trc-ok{background:var(--surface);color:var(--text-dim);}
.trc-warn{background:rgba(230,160,40,0.14);color:var(--text);cursor:pointer;}
.trc-verdict-sum{font-weight:400;color:var(--text-dim);}
.trc-block{margin-top:16px;}
.ai-trace .tech-accordion-toggle{border-top:none;}
.trc-row{font-size:12px;padding:2px 0;}
.trc-kv{width:100%;border-collapse:collapse;font-size:12px;}
.trc-kv td{padding:3px 12px 3px 0;vertical-align:baseline;}
.trc-kv td.trc-label{width:45%;}
.trc-label{font-size:11px;color:var(--text-muted);}
.trc-val{font-weight:600;color:var(--text);}
.trc-off,.trc-off .trc-val{font-weight:400;color:var(--text-muted);opacity:0.7;}
.trc-alert,.trc-finding{font-size:12px;color:var(--text);padding:4px 0;}
.trc-table-wrap{overflow-x:auto;}
.trc-table{width:100%;border-collapse:collapse;font-size:11px;}
.trc-table th{font-weight:400;color:var(--text-muted);text-align:left;padding:0 6px 4px 0;vertical-align:bottom;}
.trc-table td{color:var(--text);padding:4px 6px 4px 0;vertical-align:top;}
.trc-yes,.trc-dict-own{font-weight:600;}
.trc-dict-general{color:var(--text-dim);}
.trc-tag{font-size:10px;border-radius:6px;padding:1px 6px;margin-left:4px;background:var(--surface);color:var(--text-muted);}
.trc-tag-used{color:var(--text);font-weight:600;}
.trc-cost summary{cursor:pointer;}

/* Botão "parar" (2026-10-20, js/chat.js aiSetSending) e aviso de resposta interrompida. */
.ai-send.ai-stop{opacity:0.9;}
.ai-stopped-note{font-size:12px;color:var(--text-muted);font-style:italic;margin-top:8px;}

/* "Minhas notas" (2026-10-20, js/chat.js showAINotesList). */
.ai-notes-group{border-bottom:1px solid var(--border);padding:12px 16px;}
.ai-notes-group>summary{cursor:pointer;font-size:15px;font-weight:600;color:var(--text);list-style:none;display:flex;align-items:center;gap:8px;}
.ai-notes-group>summary::-webkit-details-marker{display:none;}
.ai-notes-count{font-size:12px;font-weight:400;color:var(--text-muted);}
.ai-notes-aspect{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);}
.ai-notes-kind{font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted);}
.ai-notes-cite{font-size:13px;color:var(--text-dim);margin:2px 0 6px;}
.ai-notes-note{font-size:14px;color:var(--text);line-height:1.5;margin-bottom:8px;}
.ai-notes-date{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;}

/* Notas guardadas no próprio aspecto (2026-10-20, js/chat.js aspectNotesSlot). */
.aspect-notes{margin:4px 0 8px;}
.aspect-notes>summary{cursor:pointer;font-size:12px;color:var(--accent);list-style:none;}
.aspect-notes>summary::-webkit-details-marker{display:none;}
.aspect-notes .ai-notes-note{font-size:13px;margin:6px 0 0;}
