/* ==========================================================================
   SIA.AI Design System v2 — Fundamentos globais
   --------------------------------------------------------------------------
   Escopo: tudo abaixo depende de `.sia-v2-body` (aplicada no <body> do layout
   v2) ou de classes com prefixo `sia-v2-`. Nenhuma regra atinge páginas
   legadas, mesmo que este arquivo seja carregado por engano.

   Ordem de carregamento: tokens.css → foundations.css → components.css →
   app-shell.css → utilities.css
   ========================================================================== */

/* --------------------------------------------------------------------------
   Reset mínimo — apenas o necessário, dentro do escopo do v2
   -------------------------------------------------------------------------- */
.sia-v2-body,
.sia-v2-body *,
.sia-v2-body *::before,
.sia-v2-body *::after {
  box-sizing: border-box;
}

.sia-v2-body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  background-color: var(--sia-v2-surface-app);
  color: var(--sia-v2-text);
  font-family: var(--sia-v2-font-sans);
  font-size: var(--sia-v2-font-size-body);
  font-weight: var(--sia-v2-font-weight-regular);
  line-height: var(--sia-v2-line-height-base);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

.sia-v2-body h1,
.sia-v2-body h2,
.sia-v2-body h3,
.sia-v2-body h4,
.sia-v2-body h5,
.sia-v2-body h6,
.sia-v2-body p,
.sia-v2-body figure,
.sia-v2-body blockquote,
.sia-v2-body dl,
.sia-v2-body dd {
  margin: 0;
}

.sia-v2-body ul,
.sia-v2-body ol {
  margin: 0;
  padding: 0;
}

.sia-v2-body img,
.sia-v2-body svg {
  display: block;
  max-width: 100%;
}

/* Controles herdam tipografia e cor do documento — mas **como reset**, e não
   como regra que dispute com componente.

   `:where()` não soma especificidade, e é isso que o seletor precisa dizer.
   Escrito como `.sia-v2-body button` (0-1-1), este reset vencia
   `.sia-v2-button--primary` (0-1-0) e pintava o texto do botão primário com a
   cor herdada do corpo — preto sobre o verde da marca. O hover
   (`.sia-v2-button--primary:hover`, 0-2-0) voltava ao branco, e o resultado era
   um botão que só ficava legível durante a interação. Só `<button>` sofria:
   `<a class="sia-v2-button--primary">` nunca casou com o seletor de tipo.

   Com `:where()` a conta cai para 0-1-0 e o desempate passa a ser a ordem —
   `components.css` carrega depois, então componente vence reset, que é a
   relação certa. Controle sem cor própria continua herdando, como antes.

   Mesmo defeito que a regra ampla `.sia-v2-body a { color }` já causou nesta
   folha, e a lição é a mesma: reset não decide identidade. */
.sia-v2-body :where(button, input, select, textarea) {
  font: inherit;
  color: inherit;
}

.sia-v2-body button {
  cursor: pointer;
}

.sia-v2-body [hidden] {
  display: none !important;
}

/* --------------------------------------------------------------------------
   Tipografia
   Caixa alta some dos títulos — sobrevive apenas em cabeçalhos de tabela e
   micro-rótulos, sempre em mono.
   -------------------------------------------------------------------------- */
.sia-v2-title-page {
  font-size: var(--sia-v2-font-size-page-title);
  font-weight: var(--sia-v2-font-weight-bold);
  line-height: var(--sia-v2-line-height-tight);
  letter-spacing: var(--sia-v2-letter-spacing-tight);
  color: var(--sia-v2-text);
}

.sia-v2-title-section {
  font-size: var(--sia-v2-font-size-section);
  font-weight: var(--sia-v2-font-weight-semibold);
  line-height: var(--sia-v2-line-height-snug);
  color: var(--sia-v2-text);
}

.sia-v2-title-card {
  font-size: var(--sia-v2-font-size-card-title);
  font-weight: var(--sia-v2-font-weight-semibold);
  line-height: var(--sia-v2-line-height-snug);
  color: var(--sia-v2-text);
}

.sia-v2-text-body {
  font-size: var(--sia-v2-font-size-body);
  font-weight: var(--sia-v2-font-weight-regular);
  line-height: var(--sia-v2-line-height-base);
  color: var(--sia-v2-text);
}

.sia-v2-text-secondary {
  font-size: var(--sia-v2-font-size-secondary);
  font-weight: var(--sia-v2-font-weight-regular);
  line-height: var(--sia-v2-line-height-base);
  color: var(--sia-v2-text-muted);
}

.sia-v2-text-caption {
  font-size: var(--sia-v2-font-size-caption);
  line-height: var(--sia-v2-line-height-base);
  color: var(--sia-v2-text-subtle);
}

/* Micro-rótulo — único lugar, junto do cabeçalho de tabela, onde a caixa
   alta sobrevive. Sempre em mono. */
.sia-v2-label-micro {
  font-family: var(--sia-v2-font-mono);
  font-size: var(--sia-v2-font-size-micro);
  font-weight: var(--sia-v2-font-weight-semibold);
  line-height: var(--sia-v2-line-height-tight);
  letter-spacing: var(--sia-v2-letter-spacing-label);
  text-transform: uppercase;
  color: var(--sia-v2-text-subtle);
}

/* Identificadores (SOL, OS, PN, SN) sempre em mono. */
.sia-v2-code {
  font-family: var(--sia-v2-font-mono);
  font-size: var(--sia-v2-font-size-secondary);
  color: var(--sia-v2-text-secondary);
}

.sia-v2-body strong,
.sia-v2-strong {
  font-weight: var(--sia-v2-font-weight-semibold);
}

/* Bloco de leitura — limita a medida do texto corrido. */
.sia-v2-prose {
  max-width: var(--sia-v2-reading-max-width);
  line-height: var(--sia-v2-line-height-relaxed);
  color: var(--sia-v2-text-secondary);
}

.sia-v2-prose > * + * {
  margin-top: var(--sia-v2-space-3);
}

/* --------------------------------------------------------------------------
   Links
   Não existe regra de cor para todo <a>. A versão anterior pintava qualquer
   link com a cor de ação primária e vazava para sidebar, drawer e barra
   inferior — que precisavam de especificidade extra só para se defender.
   A identidade visual do link agora é pedida de propósito: `.sia-v2-link`
   para link textual solto, `.sia-v2-prose a` dentro de texto corrido.
   Componentes compostos (botão, item de navegação, item da barra inferior,
   trilha de contexto, cartão acionável) continuam donos da própria cor.
   -------------------------------------------------------------------------- */

/* Única regra genérica de link: legibilidade da sublinha, sem cor e sem
   decidir se o link é sublinhado. */
.sia-v2-body a {
  text-underline-offset: 2px;
  text-decoration-skip-ink: auto;
}

/* Link textual solto — índices, referências, "ver detalhes" fora de tabela. */
.sia-v2-link {
  color: var(--sia-v2-text-link);
  text-decoration: none;
  transition: color var(--sia-v2-transition-fast);
}

/* Dentro do texto corrido o link já nasce sublinhado: em meio a um parágrafo
   a cor sozinha não o distingue do resto (WCAG 1.4.1). */
.sia-v2-prose a {
  color: var(--sia-v2-text-link);
  text-decoration: underline;
  transition: color var(--sia-v2-transition-fast);
}

.sia-v2-link:hover,
.sia-v2-link:focus-visible,
.sia-v2-prose a:hover,
.sia-v2-prose a:focus-visible {
  color: var(--sia-v2-text-link-hover);
  text-decoration: underline;
}

.sia-v2-link:active,
.sia-v2-prose a:active {
  color: var(--sia-v2-text-link-active);
  text-decoration: underline;
}

/* `:visited` fica idêntico ao repouso de propósito: em ferramenta interna o
   mesmo destino é revisitado o tempo todo, e um segundo verde na tela só
   criaria ruído — o estado que importa é o item ativo da navegação. */

/* --------------------------------------------------------------------------
   Foco — sempre visível, nunca removido
   -------------------------------------------------------------------------- */
.sia-v2-body :focus-visible {
  outline: var(--sia-v2-focus-width) solid var(--sia-v2-focus-color);
  outline-offset: var(--sia-v2-focus-offset);
  border-radius: var(--sia-v2-radius-tag);
}

/* Sobre a navegação escura o anel usa verde claro para manter contraste. */
.sia-v2-body .sia-v2-on-nav :focus-visible {
  outline-color: var(--sia-v2-focus-color-on-nav);
}

/* --------------------------------------------------------------------------
   Pular para o conteúdo principal
   -------------------------------------------------------------------------- */
.sia-v2-skip-link {
  position: absolute;
  left: var(--sia-v2-space-2);
  top: var(--sia-v2-space-2);
  z-index: var(--sia-v2-z-skip-link);
  transform: translateY(-200%);
  padding: var(--sia-v2-space-2) var(--sia-v2-space-3);
  background-color: var(--sia-v2-surface);
  border: var(--sia-v2-border-width) solid var(--sia-v2-border-strong);
  border-radius: var(--sia-v2-radius-control);
  box-shadow: var(--sia-v2-shadow-overlay);
  font-size: var(--sia-v2-font-size-secondary);
  font-weight: var(--sia-v2-font-weight-semibold);
  color: var(--sia-v2-text);
  transition: transform var(--sia-v2-transition-fast);
}

.sia-v2-skip-link:focus {
  transform: translateY(0);
  text-decoration: none;
}

/* --------------------------------------------------------------------------
   Ícones — sprite SVG local
   -------------------------------------------------------------------------- */
.sia-v2-icon {
  width: var(--sia-v2-icon-size);
  height: var(--sia-v2-icon-size);
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  pointer-events: none;
}

.sia-v2-icon--nav {
  width: var(--sia-v2-icon-size-nav);
  height: var(--sia-v2-icon-size-nav);
}

.sia-v2-icon--rail {
  width: var(--sia-v2-icon-size-rail);
  height: var(--sia-v2-icon-size-rail);
}

/* --------------------------------------------------------------------------
   Seleção de texto
   -------------------------------------------------------------------------- */
.sia-v2-body ::selection {
  background-color: var(--sia-v2-brand-green-soft);
  color: var(--sia-v2-text);
}

/* --------------------------------------------------------------------------
   Movimento reduzido
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .sia-v2-body *,
  .sia-v2-body *::before,
  .sia-v2-body *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}
