{
  "_fonte": "bi-monorepo-front@main — Widget.svelte, Container.svelte, KpiV2.svelte, tailwind.config.cjs. Tokens marcados _origem:'print' foram amostrados dos screenshots de produção porque não têm declaração explícita no código. Ver chassi-horus-bi.md.",

  "pagina": {
    "background": "#F8FAFC",
    "_origem_background": "print (amostrado #F8F8F8, arredondado para slate-50 do design system)",
    "padding": 8,
    "font": "Poppins",
    "colunas": 12,
    "gutter": 4,
    "cellHeight": 40,
    "_fonte_grid": "Container.svelte:65 — GridStack margin:2 (gutter = 2*2px), cellHeight:40, column:12"
  },

  "card": {
    "default": {
      "background": "#FFFFFF",
      "borderWidth": 2,
      "borderColor": "rgba(241, 245, 249, 0.5)",
      "_borderColor_classe": "border-slate-100/50",
      "borderRadius": 8,
      "_borderRadius_classe": "rounded-lg",
      "boxShadow": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
      "_boxShadow_classe": "shadow-sm",
      "padding": 16
    },
    "transparent": {
      "background": "#E9EEF5",
      "_background_classe": "bg-slate-150",
      "borderWidth": 2,
      "borderColor": "rgba(241, 245, 249, 0.5)",
      "borderRadius": 8
    },
    "highlight": {
      "background": "transparent",
      "borderWidth": 2,
      "borderRadius": 8
    },
    "no_border": {
      "background": "transparent",
      "borderWidth": 0
    }
  },

  "header": {
    "titulo": {
      "color": "#334155",
      "_color_classe": "text-slate-700",
      "fontSize": 14,
      "fontWeight": 500,
      "letterSpacing": "0.025em",
      "_classe": "font-medium tracking-wide"
    },
    "acoes": {
      "color": "#CBD5E1",
      "_color_classe": "text-slate-300",
      "hoverColor": "#94A3B8",
      "size": 16,
      "position": "absolute top-4 right-4",
      "gap": 8
    }
  },

  "kpi": {
    "_fonte": "KpiV2.svelte:1279-1341 — grid-cols-[auto_1fr] items-center gap-3",
    "layout": "grid",
    "gridTemplateColumns": "auto 1fr",
    "gap": 12,
    "overline": {
      "fontSize": 12,
      "textTransform": "uppercase",
      "letterSpacing": "0.025em",
      "opacity": 0.7
    },
    "valor": {
      "fontWeight": 500,
      "fontSizeRange": [20, 48],
      "_nota": "KpiV2 escala o tamanho ao container; o mockup escolhe dentro do range conforme a largura do card"
    },
    "subtitle": {
      "fontSize": 12,
      "opacity": 0.8
    },
    "helper": {
      "fontSize": 10,
      "opacity": 0.6
    },
    "icone": {
      "size": 32,
      "_nota": "zona de ícone à esquerda do conteúdo no KpiV2; nos prints de 2021 aparecia à direita"
    }
  },

  "tabela": {
    "colunaOrdem": {
      "header": "#",
      "width": 28,
      "align": "left",
      "color": "#949DAC"
    },
    "header": {
      "background": "#FFFFFF",
      "color": "#334155",
      "fontSize": 12,
      "fontWeight": 500,
      "borderBottom": "1px solid #E2E8F0"
    },
    "celula": {
      "fontSize": 12,
      "color": "#334155",
      "borderBottom": "1px solid #F1F5F9",
      "paddingY": 4,
      "alignNumerico": "right"
    },
    "total": {
      "fontWeight": 600,
      "borderTop": "1px solid #E2E8F0"
    }
  },

  "placeholder": {
    "_papel": "o número que ocupa o lugar do valor não medido. Sempre o MESMO dentro de um widget. Ver forma-sem-magnitude.md §0 e §2.",
    "_sequencia": "1234567890",
    "monetario": {
      "centenas": "R$ 123,45",
      "milhares": "R$ 1.234,56",
      "dezenas-de-milhares": "R$ 12.345,67",
      "centenas-de-milhares": "R$ 123.456,78",
      "milhoes": "R$ 1.234.567,89",
      "dezenas-de-milhoes": "R$ 12.345.678,90",
      "centenas-de-milhoes": "R$ 123.456.789,01"
    },
    "contagem": {
      "centenas": "123",
      "milhares": "1.234",
      "dezenas-de-milhares": "12.345",
      "milhoes": "1.234.567"
    },
    "percentual": "12,3%",
    "percentualAcima100": "123,4%",
    "tempo": { "horas": "1h 23m", "minutos": "12m 34s", "dias": "1d 2h 34m" }
  },

  "slab": {
    "_papel": "fallback: só quando não existe âncora nem default de escala para a métrica (forma-sem-magnitude.md §2b, último caso). Não é mais o mecanismo padrão.",
    "fill": "#E2E8F0",
    "_fill_classe": "slate-200",
    "borderRadius": 5,
    "_borderRadius_fonte": "Barline.svelte:152 — mesmo radius da caixinha de data label do produto",
    "larguraPorDigito": 7,
    "alturaTexto": 12
  },

  "filtro": {
    "_fonte": "print (aparência) + correção do time (ordem e composição)",
    "_regra": "A DATA é um filtro como qualquer outro e vive na MESMA barra de pills, à esquerda, SEMPRE em primeiro lugar. Não existe pill de período separado no canto superior direito.",
    "ordem": ["data", "…demais dimensões da ficha, na ordem em que a ficha as declara"],
    "label": {
      "fontSize": 10,
      "color": "#949DAC"
    },
    "valor": {
      "fontSize": 12,
      "color": "#334155"
    },
    "background": "#FFFFFF",
    "borderColor": "#E2E8F0",
    "borderRadius": 4,
    "paddingX": 8,
    "paddingY": 4,
    "gap": 6,
    "data": {
      "label": "Período",
      "valor": "Abril 1, 2026 - Abril 30, 2026",
      "icone": "calendar",
      "caret": true
    }
  },

  "dark": {
    "_status": "registrado, sem rota de render. Ver spec seção 3.3.",
    "pagina": { "background": "#192132" },
    "card": { "background": "#202B40", "borderColor": "#313E59" },
    "header": { "titulo": { "color": "#C2C9D6" }, "acoes": { "color": "#5C6B8A" } },
    "eixo": { "labelColor": "#aeb8c8", "gridColor": "#192132" },
    "legenda": { "labelColor": "#FFFFFF" }
  }
}
