{
  "$schema": "https://design-tokens.org/schema.json",
  "seed": {
    "$description": "Design tokens da SEED engenharia v1.10 (2026-08-14). Fonte unica: alimenta CSS do site DS, Tailwind/shadcn dos produtos (ERP, chat), skills seed-ds-* e pecas. Tres camadas: color.* (primitivos) -> semantic.* (proposito, com modo light/dark) -> componente. Esta versao incorpora o pacote mobile v1.2 (breakpoints, tipografia fluida, fonte de campo em toque, safe-area) e as escalas de dado v1.3 (secao 3c do seed-tokens.md, sub-bloco DT da Fase 5): sequencial, no-data, divergente, gauge e stroke reforcado da categorica. A v1.6 promove a categorica ESTENDIDA a estavel por aprovo do Rafael em 2026-08-11 — nenhum valor de token muda nessa versao. A v1.7 acrescenta chart-no-data-hatch. A v1.8 acrescenta DOIS tokens do sub-bloco DP (mapas) da Fase 5: chart-geo-base (territorio de contexto) e chart-geo-boundary (fronteira de municipio) — ADICAO, nenhum valor anterior muda. A v1.11 (2026-08-14, CP-P3) acrescenta os semanticos de COMPOSICAO E CHROME, todos invariantes de tema (sem seed.mode de proposito): rail.background (gradiente do rail, CP20 adotado no gate G2, extremos medidos 6.32/9.37), chrome.overlay-hover/-active (SUP-6 em escopo minimo — veu branco alpha .12/.14 sobre a rampa da marca, medidos EM COMPOSICAO sobre os dois extremos: 4.88/6.82 e 4.68/6.50), entity.1..6 com tinta por posicao (CP23, gate G3 — paleta fechada de identidade, admissao CP22 >=4.5 por par: 5.11/5.30/5.63/9.37/6.43/6.68) e marker.now (CP24, gate G4 — turquesa-600 fixo nos dois temas, >=3.0 contra as cinco superficies canonicas). A v1.12 (2026-08-14) promove o emprestimo declarado do shell a semantico e FECHA a pendencia SH-P1/PN-P5 (aberta desde o bloco 6A): border.interactive = fronteira de componente interativo (SC 1.4.11), cinza-500 #788F9D nos dois temas por medicao (3.38/3.38/3.11 claro · 4.50/5.51/5.05 escuro, todos >=3). Alternativa descartada: cinza-600 tambem passa (3.21-4.74) mas mudaria a cor RENDERIZADA que o gate visual ja aprovou, sem motivo — a pendencia pedia promocao de EXPRESSAO, nao troca de valor. A v1.21 (2026-08-25, fecha a AD-P6) emite a PRIMEIRA camada de componente dos gemeos: os 21 tokens field.* do form-field (grupo semantic.field abaixo), resolucao fiel da §2.5 do seed-componentes.md — adicao pura, nenhum valor anterior muda; fidelidade alias->valor guardada pelo gate G5 da paridade-tokens.py. A v1.22 (2026-08-25) emite a SEGUNDA leva da camada de componente — 19 tokens em seis grupos novos: button.* (12, §1.6 do seed-componentes.md), card.* (3, §26), divider.color (§26-F), list.hover (§26-F), danger.item (§27) e wait.delay (§17 R3-c) — tambem adicao pura, guardada pelo gate G6. A leva nasceu de instrumento, nao de leitura: a guarda nova guarda-spec-gemeo.py (contrato SG1) varre os canonicos e reprova todo custom property que o canon NOMEIA e o gemeo NAO DEFINE; ela acusou 29 faltantes, dos quais 19 tinham origem de valor declarada (alias ou numero fixado) e foram emitidos, e 10 nao — os dez ficam listados com motivo no §9 do seed-tokens.md.",
    "color": {
      "$type": "color",
      "turquesa": {
        "50": {
          "$value": "#E8FBF7"
        },
        "100": {
          "$value": "#CDF3EC"
        },
        "200": {
          "$value": "#9CE4D8"
        },
        "300": {
          "$value": "#66D1C2"
        },
        "400": {
          "$value": "#11B0A0",
          "$description": "ANCORA CANONICA #11B0A0 - cor principal da marca (Pantone 3275C)"
        },
        "500": {
          "$value": "#00A192"
        },
        "600": {
          "$value": "#098475",
          "$description": "ANCORA CANONICA #098475 - verde institucional (Pantone 327C); stop de acao acessivel: 4.60:1 com branco"
        },
        "700": {
          "$value": "#006C62"
        },
        "800": {
          "$value": "#005048"
        },
        "900": {
          "$value": "#00352F"
        }
      },
      "amarelo": {
        "50": {
          "$value": "#FFF6D2"
        },
        "100": {
          "$value": "#FDEA9E"
        },
        "200": {
          "$value": "#FAD61D",
          "$description": "ANCORA CANONICA #FAD61D - amarelo da marca (Pantone 115C); ACENTO OFICIAL de marca (highlight, EEny, simbolo); sempre com texto escuro; nunca na mesma peca que o dourado"
        },
        "300": {
          "$value": "#DABA00"
        },
        "400": {
          "$value": "#BDA100"
        },
        "500": {
          "$value": "#A28A00"
        },
        "600": {
          "$value": "#877200"
        },
        "700": {
          "$value": "#6D5C00"
        },
        "800": {
          "$value": "#504300"
        },
        "900": {
          "$value": "#352C00"
        }
      },
      "dourado": {
        "50": {
          "$value": "#FFF4E4"
        },
        "100": {
          "$value": "#FFE6C0"
        },
        "200": {
          "$value": "#FECA76"
        },
        "300": {
          "$value": "#F9B11C",
          "$description": "ANCORA CANONICA #F9B11C - amarelo dourado (Pantone 7409C); COR DE TRABALHO: warning, dataviz (cat-2), detalhe fotografico - fora de pecas de marca; nunca na mesma peca que o amarelo"
        },
        "400": {
          "$value": "#D49400"
        },
        "500": {
          "$value": "#B67F00"
        },
        "600": {
          "$value": "#986900"
        },
        "700": {
          "$value": "#7B5500"
        },
        "800": {
          "$value": "#5B3E00"
        },
        "900": {
          "$value": "#3D2800"
        }
      },
      "azul": {
        "50": {
          "$value": "#ECF4FC",
          "$description": "ANCORA CANONICA #ECF4FC - antigo 'azul claro' da paleta (Pantone 656C), absorvido como stop 50"
        },
        "100": {
          "$value": "#CDF1FF"
        },
        "200": {
          "$value": "#96E0FD"
        },
        "300": {
          "$value": "#53C2E9",
          "$description": "ANCORA CANONICA #53C2E9 - azul da marca (Pantone 2985C). Papel formal: familia de INFO na interface, cat-3 no dataviz, badges/tags informativos, ceu/agua em ilustracao. Livre no produto digital; contido em material de marca (nao compete com turquesa em titulos/fundos/CTAs). Acao primaria e sempre familia turquesa/verde - nunca azul"
        },
        "400": {
          "$value": "#01B3E0"
        },
        "500": {
          "$value": "#0099C1"
        },
        "600": {
          "$value": "#007FA1"
        },
        "700": {
          "$value": "#006783"
        },
        "800": {
          "$value": "#004C61"
        },
        "900": {
          "$value": "#003241"
        }
      },
      "cinza": {
        "50": {
          "$value": "#F2F6F9"
        },
        "100": {
          "$value": "#E3EBF0"
        },
        "200": {
          "$value": "#C8D6DF"
        },
        "300": {
          "$value": "#ACBECA"
        },
        "400": {
          "$value": "#90A6B3"
        },
        "500": {
          "$value": "#788F9D"
        },
        "600": {
          "$value": "#617683",
          "$description": "ANCORA CANONICA #617683 - cinza da marca (Pantone 5487C); corpo de texto minimo em fundo claro (4.74:1)"
        },
        "700": {
          "$value": "#4D606C"
        },
        "800": {
          "$value": "#38464F"
        },
        "900": {
          "$value": "#242E34"
        }
      },
      "vermelho": {
        "50": {
          "$value": "#FFF2F1"
        },
        "100": {
          "$value": "#FFE2DF"
        },
        "200": {
          "$value": "#FFC2BD"
        },
        "300": {
          "$value": "#FF9C95"
        },
        "400": {
          "$value": "#FC6F6A"
        },
        "500": {
          "$value": "#D94545",
          "$description": "ANCORA #D94545 - vermelho funcional (nao e cor de marca; formalizado a partir do uso previo no DS digital)"
        },
        "600": {
          "$value": "#C6393B"
        },
        "700": {
          "$value": "#A5272A"
        },
        "800": {
          "$value": "#7A1C1E"
        },
        "900": {
          "$value": "#521112"
        }
      },
      "branco": {
        "$value": "#FFFFFF",
        "$description": "ANCORA CANONICA - segunda cor primaria da marca"
      },
      "dark": {
        "$description": "Superficies do modo escuro, tintadas no hue do cinza da marca (OKLCH h~235). Substituem os hex ad-hoc #0d1f25/#1d3138/#11272f do DS v1.",
        "page": {
          "$value": "#0B1419"
        },
        "default": {
          "$value": "#141D23"
        },
        "elevated": {
          "$value": "#1D272D"
        },
        "overlay": {
          "$value": "#273137"
        }
      }
    },
    "font": {
      "family": {
        "$type": "fontFamily",
        "sans": {
          "$value": [
            "Montserrat",
            "-apple-system",
            "Segoe UI",
            "Roboto",
            "Arial",
            "sans-serif"
          ],
          "$description": "Familia de marca e interface. Display -> corpo."
        },
        "mono": {
          "$value": [
            "JetBrains Mono",
            "SF Mono",
            "Consolas",
            "Courier New",
            "monospace"
          ],
          "$description": "Familia tecnica: dados de medicao (kWh/kWp), identificadores (UC, ART, proposta), codigo, timestamps, acento em labels. Nunca em titulos ou paragrafos."
        },
        "expressive": {
          "$value": [
            "Caveat",
            "Segoe Script",
            "cursive"
          ],
          "$description": "TERCIARIA. Familia expressiva, EXCLUSIVA de peca de MARKETING que precise de algo alegorico, fora do normal, festivo. Nunca em interface, nunca em documento tecnico, nunca como assinatura padrao de peca de rotina. Decisao do Rafael em 2026-08-20; supersede a linha do seed-tokens.md que dizia 'sistema final: 2 familias'. Nome escolhido por PROPOSITO (expressive) e nao por tamanho (display), para impedir leitura de 'fonte de titulo grande'. A familia Caveat vem do marca-seed.md v5.0 §4.3 por INFERENCIA declarada — ele decidiu papel e escopo, nao repetiu o nome; confirmar (pendencia MR-P3)."
        }
      },
      "weight": {
        "$type": "fontWeight",
        "light": {
          "$value": 300
        },
        "regular": {
          "$value": 400
        },
        "medium": {
          "$value": 500,
          "$description": "uso exclusivo da mono"
        },
        "semibold": {
          "$value": 600
        },
        "bold": {
          "$value": 700
        }
      },
      "size": {
        "$type": "dimension",
        "display": {
          "$value": "64px"
        },
        "h1": {
          "$value": "42px"
        },
        "h2": {
          "$value": "32px"
        },
        "h3": {
          "$value": "24px"
        },
        "h4": {
          "$value": "18px"
        },
        "body-lg": {
          "$value": "17px"
        },
        "body": {
          "$value": "14px"
        },
        "small": {
          "$value": "12px"
        },
        "caption": {
          "$value": "11px"
        },
        "field-touch": {
          "$value": "16px",
          "$description": "Fonte MINIMA de campo em superficie de toque. Aplicada via @media (pointer: coarse). Resolve o zoom automatico do iOS na causa. Alternativa descartada: maximum-scale=1 (bloquear zoom viola WCAG e pune baixa visao)."
        }
      },
      "lineHeight": {
        "$type": "number",
        "display": {
          "$value": 1.125
        },
        "heading": {
          "$value": 1.2
        },
        "body": {
          "$value": 1.57
        },
        "body-relaxed": {
          "$value": 1.65,
          "$description": "texto corrido longo (blog, relatorio) - regra Montserrat Light"
        },
        "caption": {
          "$value": 1.27
        }
      },
      "letterSpacing": {
        "$type": "dimension",
        "display": {
          "$value": "-2px"
        },
        "h1": {
          "$value": "-0.5px"
        },
        "normal": {
          "$value": "0px"
        },
        "caption": {
          "$value": "2px",
          "$description": "labels micro UPPERCASE"
        }
      },
      "size-fluid": {
        "$type": "dimension",
        "$description": "Escala fluida dos 4 topos (v1.2). Interpolacao calibrada entre 360px e 1280px. REGRA WCAG 1.4.4 EMBUTIDA: a formula sempre combina termo rem dominante + termo vw; clamp com vw puro nao responde ao zoom do navegador e reprova em redimensionamento de texto 200%. De h4 para baixo a escala e invariante (ver font.size).",
        "display": {
          "$value": "clamp(2.5rem, 1.9rem + 2.6vw, 4rem)",
          "$description": "40px -> 64px"
        },
        "h1": {
          "$value": "clamp(1.875rem, 1.58rem + 1.3vw, 2.625rem)",
          "$description": "30px -> 42px"
        },
        "h2": {
          "$value": "clamp(1.5rem, 1.3rem + 0.87vw, 2rem)",
          "$description": "24px -> 32px"
        },
        "h3": {
          "$value": "clamp(1.25rem, 1.15rem + 0.43vw, 1.5rem)",
          "$description": "20px -> 24px"
        }
      }
    },
    "dimension": {
      "$type": "dimension",
      "space": {
        "$description": "Base 4px. Toda margem/padding/gap multiplo de 4.",
        "0": {
          "$value": "0px"
        },
        "1": {
          "$value": "4px"
        },
        "2": {
          "$value": "8px"
        },
        "3": {
          "$value": "12px"
        },
        "4": {
          "$value": "16px"
        },
        "5": {
          "$value": "20px"
        },
        "6": {
          "$value": "24px"
        },
        "8": {
          "$value": "32px"
        },
        "10": {
          "$value": "40px"
        },
        "12": {
          "$value": "48px"
        },
        "16": {
          "$value": "64px"
        },
        "20": {
          "$value": "80px"
        },
        "24": {
          "$value": "96px"
        }
      },
      "radius": {
        "sm": {
          "$value": "4px",
          "$description": "chips, badges, inputs compactos"
        },
        "md": {
          "$value": "8px",
          "$description": "botoes, inputs, padrao de controle"
        },
        "lg": {
          "$value": "12px",
          "$description": "cards"
        },
        "xl": {
          "$value": "16px",
          "$description": "modais, paineis"
        },
        "full": {
          "$value": "9999px",
          "$description": "pills, avatares"
        }
      },
      "safe-area": {
        "$description": "Insets do dispositivo (notch, home indicator). Barras fixas (header, tab bar, CTA fixo de rodape) SOMAM o safe-area ao proprio padding. Requer viewport-fit=cover.",
        "top": {
          "$value": "env(safe-area-inset-top)"
        },
        "bottom": {
          "$value": "env(safe-area-inset-bottom)"
        },
        "left": {
          "$value": "env(safe-area-inset-left)"
        },
        "right": {
          "$value": "env(safe-area-inset-right)"
        }
      }
    },
    "duration": {
      "$description": "Dois registros (modelo Carbon): produtivo (tarefa, sutil) e expressivo (momentos significativos).",
      "productive-fast": {
        "$value": "100ms",
        "$description": "hover, foco, toggles"
      },
      "productive": {
        "$value": "150ms",
        "$description": "dropdowns, tooltips, estados de controle"
      },
      "expressive": {
        "$value": "300ms",
        "$description": "abertura de pagina, modais, notificacoes"
      },
      "expressive-slow": {
        "$value": "400ms",
        "$description": "transicoes de tela, hero"
      }
    },
    "cubicBezier": {
      "productive": {
        "$value": [
          0.2,
          0,
          0.38,
          0.9
        ]
      },
      "productive-exit": {
        "$value": [
          0.2,
          0,
          1,
          0.9
        ]
      },
      "expressive": {
        "$value": [
          0.4,
          0.14,
          0.3,
          1
        ]
      },
      "expressive-exit": {
        "$value": [
          0.4,
          0.14,
          1,
          1
        ]
      },
      "out": {
        "$value": [
          0.2,
          0.8,
          0.4,
          1
        ],
        "$description": "v1.23 (2026-08-26) — a curva que a spec usava QUATRO vezes e nunca fixava, deixando dois valores no acervo (.2,.8,.4,1 em 3 artefatos e .2,.7,.3,1 em 2). Medidos em 21 instantes de um movimento de 120 ms, os dois diferem no maximo 1,5% do percurso e 0,3 MILISSEGUNDO — a 60 Hz um quadro dura 16,7 ms, entao a diferenca e 1/56 de quadro e nao existe em nenhum monitor. Escolhida a de maior uso. E o mesmo teste respondeu se o token deve EXISTIR: contra o `productive` a diferenca e 36,8% do percurso e 24,9 ms, 83x maior. Sao curvas diferentes de verdade."
      }
    },
    "shadow": {
      "$description": "Elevacao = par superficie+sombra. Sombras tintadas no cinza-900 da marca. No dark mode a sombra perde forca e a borda sutil assume a separacao.",
      "raised": {
        "$value": [
          {
            "offsetX": "0px",
            "offsetY": "1px",
            "blur": "2px",
            "spread": "0px",
            "color": "rgba(36,46,52,0.10)"
          },
          {
            "offsetX": "0px",
            "offsetY": "1px",
            "blur": "1px",
            "spread": "0px",
            "color": "rgba(36,46,52,0.06)"
          }
        ]
      },
      "overlay": {
        "$value": [
          {
            "offsetX": "0px",
            "offsetY": "8px",
            "blur": "24px",
            "spread": "0px",
            "color": "rgba(36,46,52,0.14)"
          },
          {
            "offsetX": "0px",
            "offsetY": "2px",
            "blur": "6px",
            "spread": "0px",
            "color": "rgba(36,46,52,0.08)"
          }
        ]
      },
      "modal": {
        "$value": [
          {
            "offsetX": "0px",
            "offsetY": "16px",
            "blur": "48px",
            "spread": "0px",
            "color": "rgba(36,46,52,0.22)"
          }
        ]
      }
    },
    "semantic": {
      "surface": {
        "page": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#0B1419"
            }
          },
          "$description": "fundo da pagina"
        },
        "subtle": {
          "$type": "color",
          "$value": "#F2F6F9",
          "$extensions": {
            "seed.mode": {
              "light": "#F2F6F9",
              "dark": "#141D23"
            }
          },
          "$description": "faixas alternadas, fundos de secao"
        },
        "raised": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#1D272D"
            }
          },
          "$description": "cards; parear com shadow.raised"
        },
        "sunken": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#0B1419"
            }
          },
          "$description": "areas rebaixadas (wells, code blocks)"
        },
        "overlay": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#273137"
            }
          },
          "$description": "popovers, menus; parear com shadow.overlay"
        },
        "brand": {
          "$type": "color",
          "$value": "#11B0A0",
          "$extensions": {
            "seed.mode": {
              "light": "#11B0A0",
              "dark": "#11B0A0"
            }
          },
          "$description": "faixas de marca; texto branco apenas 24px+/bold 19px+ (3.22:1)"
        },
        "brand-subtle": {
          "$type": "color",
          "$value": "#E8FBF7",
          "$extensions": {
            "seed.mode": {
              "light": "#E8FBF7",
              "dark": "#1A3833"
            }
          },
          "$description": "superficie de marca SUTIL — balao de mensagem propria, faixa de destaque leve. Nasce em 2026-08-17 pelo defeito BT-P6: nao existia semantico para isso e o artefato alcancou a primitiva --seed-turquesa-50, que nao inverte com o tema (par media 1,14 no escuro contra piso 3,00). Medido contra --seed-text-primary: 12,79 claro e 10,40 escuro, piso de texto 4,50"
        },
        "brand-strong": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#098475"
            }
          },
          "$description": "v1.17: superficie de marca que CARREGA TEXTO — turquesa-600, igual nos dois temas. Texto branco mede 4,60; a fronteira do controle contra a pagina mede 4,60 no claro, 4,05 sobre a pagina escura e 3,31 sobre a superficie elevada escura, todas acima do piso 3,00 da SC 1.4.11. A marca CHAPADA (surface.brand #11B0A0) continua a ancora visual e fica reservada para area SEM texto funcional."
        },
        "brand-deep": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#005048"
            }
          },
          "$description": "capas e secoes profundas; substitui o hex nao-oficial #0d8f82"
        },
        "inverse": {
          "$type": "color",
          "$value": "#242E34",
          "$extensions": {
            "seed.mode": {
              "light": "#242E34",
              "dark": "#F2F6F9"
            }
          }
        }
      },
      "text": {
        "primary": {
          "$type": "color",
          "$value": "#0B3330",
          "$extensions": {
            "seed.mode": {
              "light": "#0B3330",
              "dark": "#DDECE8"
            }
          },
          "$description": "titulos e texto de alta enfase; substitui o #2a3942 ad-hoc do DS v1"
        },
        "secondary": {
          "$type": "color",
          "$value": "#2F5A54",
          "$extensions": {
            "seed.mode": {
              "light": "#2F5A54",
              "dark": "#A3C4BE"
            }
          },
          "$description": "corpo de texto padrao"
        },
        "muted": {
          "$type": "color",
          "$value": "#40706A",
          "$extensions": {
            "seed.mode": {
              "light": "#40706A",
              "dark": "#8FB5AD"
            }
          },
          "$description": "metadados, placeholders, captions - nunca corpo"
        },
        "disabled": {
          "$type": "color",
          "$value": "#90A6B3",
          "$extensions": {
            "seed.mode": {
              "light": "#90A6B3",
              "dark": "#617683"
            }
          }
        },
        "brand": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "texto na cor da marca com AA garantido"
        },
        "brand-strong": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#66D1C2"
            }
          },
          "$description": "v1.19 (2026-08-20, HV-P5): TINTA DE MARCA QUE SOBREVIVE A SUPERFICIE DE INTERACAO. text.brand mede 4,60 sobre a pagina branca — 0,10 acima do piso 4,5 — e cai abaixo do piso no instante em que a superficie deixa de ser branco puro: 4,23 sobre surface.subtle e action-neutral-hover (#F2F6F9) e 3,81 sobre action-neutral-active e surface.sunken (#E3EBF0). Medido: para #098475 alcancar 4,5 o fundo precisa de luminancia >= 0,978, ou seja o cinza neutro mais escuro que serve e #FDFDFD — NAO EXISTE superficie de interacao possivel para aquela tinta. Este token e a saida: #006C62 no claro mede 6,32 na pagina, 5,82 sobre surface.subtle e 5,24 sobre action-neutral-active. NENHUM HEX NOVO: o claro e o valor de surface.brand-deep e action.primary-hover, o escuro e o mesmo de text.brand (#66D1C2, que ja media 8,31 a 10,16 sobre todas as superficies escuras — no tema escuro nada muda). PRECEDENTE DE MERCADO: o Carbon (IBM) tem exatamente este par — $link-primary (Blue 60 #0f62fe) e $link-primary-hover (Blue 70 #0043ce), mais $link-secondary (Blue 70) descrito como \"secondary link color for lower contrast backgrounds\" — e a issue #7647 do Carbon nomeia o caso fundador com estas palavras: \"the current link color for selected rows and rows with hover doesn't have enough visual contrast\". NORMA: SC 1.4.3 vale em TODOS os estados (WebAIM, verbatim: \"the 4.5:1 (or 7:1) contrast requirement to the background does apply to all link states\"). ALTERNATIVA DESCARTADA, com numero: reusar action.primary-hover como tinta PASSA (5,24 a 12,85 em todas as superficies dos dois temas) e foi recusada por acoplamento de proposito — e token de FUNDO de botao; uma mudanca futura no sobrevoo do botao moveria a tinta do link em silencio. E o mesmo criterio que na v1.18 recusou action-ghost-hover para o sobrevoo neutro."
        },
        "inverse": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#242E34"
            }
          }
        },
        "on-brand": {
          "$type": "color",
          "$value": "#00352F",
          "$extensions": {
            "seed.mode": {
              "light": "#00352F",
              "dark": "#00352F"
            }
          },
          "$description": "v1.15 (MR-P1): tinta sobre a marca CHAPADA (surface.brand #11B0A0). ESCURA nos dois temas porque a marca chapada nao inverte. Mede 4,99. ANTES da v1.15 este token valia #FFFFFF no claro e a sua descricao dizia texto sobre action.primary: um unico token servia tres fundos de marca com necessidades opostas, e branco sobre #11B0A0 mede 2,71, que reprova ate o piso 3,00 do texto grande. Quem serve o botao primario agora e on-action-primary."
        },
        "on-brand-deep": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#FFFFFF"
            }
          },
          "$description": "v1.15 (MR-P2): tinta sobre a marca PROFUNDA (surface.brand-deep #006C62 no claro, #005048 no escuro). BRANCA nos dois temas: mede 6,32 no claro e 9,37 no escuro. Nasce de defeito medido: com a tinta unica anterior o escuro punha #00352F sobre #005048 e media 1,45, em tres textos do tela-tabela."
        },
        "on-brand-strong": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#FFFFFF"
            }
          },
          "$description": "v1.17 (MR-P1, decisao do Rafael pela opcao B): tinta sobre surface.brand-strong (turquesa-600 #098475). BRANCA nos dois temas, mede 4,60. Foi a forma de manter o texto branco sobre a marca, que era o pedido, sem reprovar a SC 1.4.3 — o branco sobre a marca chapada #11B0A0 mede 2,71."
        },
        "on-action-destructive": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#521112"
            }
          },
          "$description": "v1.16 (AD-P1): tinta sobre o BOTAO destrutivo (action.destructive #C6393B no claro, #FC6F6A no escuro). Inverte com o tema: mede 5,19 no claro e 5,26 no escuro; no hover, 7,18 e 7,21. Nasce de defeito medido: antes da v1.16 a tinta ali era branca literal e media 2,76 no escuro, porque a superficie de acao CLAREIA no tema escuro. Mesma forma do papel on-error do Material Design 3."
        },
        "on-action-primary": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#00352F"
            }
          },
          "$description": "v1.15: tinta sobre o BOTAO primario (action.primary #098475 no claro, #66D1C2 no escuro). Inverte com o tema: mede 4,60 no claro e 7,39 no escuro. Estes sao exatamente os valores que on-brand tinha antes da v1.15, entao o botao primario NAO muda de aparencia nesta edicao."
        },
        "link": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          }
        }
      },
      "border": {
        "subtle": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          }
        },
        "default": {
          "$type": "color",
          "$value": "#C8D6DF",
          "$extensions": {
            "seed.mode": {
              "light": "#C8D6DF",
              "dark": "#4D606C"
            }
          }
        },
        "strong": {
          "$type": "color",
          "$value": "#90A6B3",
          "$extensions": {
            "seed.mode": {
              "light": "#90A6B3",
              "dark": "#788F9D"
            }
          }
        },
        "interactive": {
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#788F9D"
            }
          },
          "$description": "v1.12 (fecha SH-P1/PN-P5): fronteira de componente interativo, SC 1.4.11 piso 3:1. Promocao do emprestimo declarado do cinza-500 no campo de busca do shell — medido >=3 nas seis superficies dos dois temas. Slot dark declarado de proposito (mesmo valor hoje por medicao, nao por lei de invariancia)."
        },
        "focus": {
          "$type": "color",
          "$value": "#00A192",
          "$extensions": {
            "seed.mode": {
              "light": "#00A192",
              "dark": "#66D1C2"
            }
          },
          "$description": "anel de foco - sempre visivel, 2px + offset"
        }
      },
      "action": {
        "primary": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "fundo do botao primario. Light: verde institucional #098475 (4.60:1 com branco). Dark: turquesa-300 com texto turquesa-900 (7.39:1)"
        },
        "primary-hover": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#9CE4D8"
            }
          }
        },
        "primary-active": {
          "$type": "color",
          "$value": "#005048",
          "$extensions": {
            "seed.mode": {
              "light": "#005048",
              "dark": "#11B0A0"
            }
          }
        },
        "secondary-bg": {
          "$type": "color",
          "$value": "#E8FBF7",
          "$extensions": {
            "seed.mode": {
              "light": "#E8FBF7",
              "dark": "#1A3833"
            }
          }
        },
        "secondary-text": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#66D1C2"
            }
          }
        },
        "ghost-hover": {
          "$type": "color",
          "$value": "#F2F6F9",
          "$extensions": {
            "seed.mode": {
              "light": "#F2F6F9",
              "dark": "#1D272D"
            }
          }
        },
        "neutral-hover": {
          "$type": "color",
          "$value": "#F2F6F9",
          "$description": "HV1 (v1.18, 2026-08-19): SOBREVOO de controle NEUTRO, qualquer que seja a superficie neutra sob ele. Nasce de medicao: 619 de 1.410 controles ativos do acervo nao tinham NENHUMA resposta ao ponteiro. Sem hex novo — e o valor de surface-subtle nos dois temas; o que nasce e o PROPOSITO com nome. NAO se reusou action-ghost-hover porque no tema escuro ele vale #1D272D, igual a surface-raised, e o hover ficaria invisivel sobre a barra elevada do shell.",
          "$extensions": {
            "seed.mode": {
              "light": "#F2F6F9",
              "dark": "#141D23"
            }
          }
        },
        "neutral-active": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$description": "HV1 (v1.18, 2026-08-19): PRESSIONADO de controle NEUTRO — um passo ADIANTE do sobrevoo, na mesma direcao, que e o canon convergente de Material Design 3, Adobe Spectrum (que registra hover e down como estados INDEPENDENTES), eBay Playbook (hover 8%, press 12%) e Sainsbury's. Nasce de medicao: 1.350 de 1.410 controles ativos tinham o pressionado indistinguivel do sobrevoo — o mesmo buraco que o shadcn/ui, stack de producao do ERP, deixa por nao definir active. Sem hex novo: e o valor de surface-sunken nos dois temas.",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#0B1419"
            }
          }
        },
        "destructive": {
          "$type": "color",
          "$value": "#C6393B",
          "$extensions": {
            "seed.mode": {
              "light": "#C6393B",
              "dark": "#FC6F6A"
            }
          }
        },
        "destructive-hover": {
          "$type": "color",
          "$value": "#A5272A",
          "$extensions": {
            "seed.mode": {
              "light": "#A5272A",
              "dark": "#FF9C95"
            }
          }
        }
      },
      "accent": {
        "$description": "Acentos de marca. Hierarquia dos amarelos (decisao 2026-07-30): amarelo #FAD61D e o acento oficial; dourado #F9B11C e cor de trabalho (warning/dataviz). Nunca os dois na mesma peca.",
        "highlight": {
          "$type": "color",
          "$value": "#FAD61D",
          "$extensions": {
            "seed.mode": {
              "light": "#FAD61D",
              "dark": "#FAD61D"
            }
          },
          "$description": "acento oficial de marca - grifos, marcadores, detalhes de enfase; sempre com texto/elemento escuro por cima"
        },
        "highlight-subtle": {
          "$type": "color",
          "$value": "#FFF6D2",
          "$extensions": {
            "seed.mode": {
              "light": "#FFF6D2",
              "dark": "#3A3410"
            }
          },
          "$description": "fundo de grifo suave (marca-texto)"
        },
        "on-highlight": {
          "$type": "color",
          "$value": "#242E34",
          "$extensions": {
            "seed.mode": {
              "light": "#242E34",
              "dark": "#242E34"
            }
          },
          "$description": "texto sobre o acento amarelo - sempre escuro, nunca branco (9.70:1)"
        }
      },
      "feedback": {
        "$description": "success usa a familia turquesa/verde institucional (decisao: na SEED, exito e verde da marca; desambiguar de acao com icone e contexto). warning=dourado, danger=vermelho funcional, info=azul.",
        "success-bg": {
          "$type": "color",
          "$value": "#E8FBF7",
          "$extensions": {
            "seed.mode": {
              "light": "#E8FBF7",
              "dark": "#00352F"
            }
          }
        },
        "success-text": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#9CE4D8"
            }
          }
        },
        "success-border": {
          "$type": "color",
          "$value": "#66D1C2",
          "$extensions": {
            "seed.mode": {
              "light": "#66D1C2",
              "dark": "#006C62"
            }
          }
        },
        "success-solid": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#11B0A0"
            }
          }
        },
        "warning-bg": {
          "$type": "color",
          "$value": "#FFF4E4",
          "$extensions": {
            "seed.mode": {
              "light": "#FFF4E4",
              "dark": "#3D2800"
            }
          }
        },
        "warning-text": {
          "$type": "color",
          "$value": "#5B3E00",
          "$extensions": {
            "seed.mode": {
              "light": "#5B3E00",
              "dark": "#FECA76"
            }
          }
        },
        "warning-border": {
          "$type": "color",
          "$value": "#F9B11C",
          "$extensions": {
            "seed.mode": {
              "light": "#F9B11C",
              "dark": "#7B5500"
            }
          }
        },
        "warning-solid": {
          "$type": "color",
          "$value": "#F9B11C",
          "$extensions": {
            "seed.mode": {
              "light": "#F9B11C",
              "dark": "#F9B11C"
            }
          }
        },
        "danger-bg": {
          "$type": "color",
          "$value": "#FFF2F1",
          "$extensions": {
            "seed.mode": {
              "light": "#FFF2F1",
              "dark": "#521112"
            }
          }
        },
        "danger-text": {
          "$type": "color",
          "$value": "#A5272A",
          "$extensions": {
            "seed.mode": {
              "light": "#A5272A",
              "dark": "#FFC2BD"
            }
          }
        },
        "danger-border": {
          "$type": "color",
          "$value": "#FF9C95",
          "$extensions": {
            "seed.mode": {
              "light": "#FF9C95",
              "dark": "#A5272A"
            }
          }
        },
        "danger-solid": {
          "$type": "color",
          "$value": "#C6393B",
          "$extensions": {
            "seed.mode": {
              "light": "#C6393B",
              "dark": "#FC6F6A"
            }
          }
        },
        "info-bg": {
          "$type": "color",
          "$value": "#ECF4FC",
          "$extensions": {
            "seed.mode": {
              "light": "#ECF4FC",
              "dark": "#003241"
            }
          }
        },
        "info-text": {
          "$type": "color",
          "$value": "#006783",
          "$extensions": {
            "seed.mode": {
              "light": "#006783",
              "dark": "#96E0FD"
            }
          }
        },
        "info-border": {
          "$type": "color",
          "$value": "#53C2E9",
          "$extensions": {
            "seed.mode": {
              "light": "#53C2E9",
              "dark": "#006783"
            }
          }
        },
        "info-solid": {
          "$type": "color",
          "$value": "#0099C1",
          "$extensions": {
            "seed.mode": {
              "light": "#0099C1",
              "dark": "#53C2E9"
            }
          }
        }
      },
      "chart": {
        "$description": "Cor de DADO (nao de UI). Categorica fixa (ordem obrigatoria) + pares direcionais + escalas v1.3 (secao 3c): sequencial, no-data, divergente. Lei transversal: cor NUNCA e o unico diferenciador de serie — forma de marcador, espessura ou tracejado acompanham.",
        "cat-1": {
          "$type": "color",
          "$description": "Categorica ESTENDIDA v1.5 (supersede da v1.0; valores e medicoes na secao 3c do seed-tokens.md). Sequencia obrigatoria: turquesa -> dourado -> magenta -> azul -> violeta -> azul-800; 5 familias de matiz, nenhuma repete antes da 6a posicao. Magenta (#CD518B light / #E8A1C2 dark) e violeta (#966AC8 / #BD9CE2) sao matizes EXCLUSIVOS de dado: nunca aparecem em UI e nao tem rampa primitiva no 2.1 de proposito. cat-2 (dourado, 1.85 vs branco) so em area grande com rotulo direto - vetado como fill solitario. O cinza saiu da categorica (exclusivo de chart-no-data).",
          "$value": "#00A192",
          "$extensions": {
            "seed.mode": {
              "light": "#00A192",
              "dark": "#66D1C2"
            }
          }
        },
        "cat-2": {
          "$type": "color",
          "$value": "#F9B11C",
          "$extensions": {
            "seed.mode": {
              "light": "#F9B11C",
              "dark": "#F9B11C"
            }
          }
        },
        "cat-3": {
          "$type": "color",
          "$value": "#CD518B",
          "$extensions": {
            "seed.mode": {
              "light": "#CD518B",
              "dark": "#E8A1C2"
            }
          }
        },
        "cat-4": {
          "$type": "color",
          "$value": "#0099C1",
          "$extensions": {
            "seed.mode": {
              "light": "#0099C1",
              "dark": "#53C2E9"
            }
          }
        },
        "cat-5": {
          "$type": "color",
          "$value": "#966AC8",
          "$extensions": {
            "seed.mode": {
              "light": "#966AC8",
              "dark": "#BD9CE2"
            }
          }
        },
        "cat-6": {
          "$type": "color",
          "$value": "#004C61",
          "$extensions": {
            "seed.mode": {
              "light": "#004C61",
              "dark": "#96E0FD"
            }
          }
        },
        "positive": {
          "$type": "color",
          "$value": "#00A192",
          "$extensions": {
            "seed.mode": {
              "light": "#00A192",
              "dark": "#66D1C2"
            }
          }
        },
        "negative": {
          "$type": "color",
          "$value": "#D94545",
          "$extensions": {
            "seed.mode": {
              "light": "#D94545",
              "dark": "#FC6F6A"
            }
          }
        },
        "grid": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          }
        },
        "axis": {
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#90A6B3"
            }
          }
        },
        "seq-1": {
          "$description": "Sequencial 7 classes. Light 100->900 (pula 500 e 700); dark 800->100 (pula 300 e 900). Semantica: valor cresce, tinta cresce (light) / valor cresce, luz cresce (dark). ISENCAO WCAG 1.4.11 declarada (a norma isenta heatmap); condicoes obrigatorias: valor acessivel por rotulo/tooltip/tabela, fronteira por chart-grid, legenda com limites numericos. Escala decidida no gate visual de 2026-08-09: a proposta 50->800 foi reprovada porque os dois primeiros stops liam como CINZA, ambiguos com 'sem dado'.",
          "$type": "color",
          "$value": "#CDF3EC",
          "$extensions": {
            "seed.mode": {
              "light": "#CDF3EC",
              "dark": "#005048"
            }
          }
        },
        "seq-2": {
          "$type": "color",
          "$value": "#9CE4D8",
          "$extensions": {
            "seed.mode": {
              "light": "#9CE4D8",
              "dark": "#006C62"
            }
          }
        },
        "seq-3": {
          "$type": "color",
          "$value": "#66D1C2",
          "$extensions": {
            "seed.mode": {
              "light": "#66D1C2",
              "dark": "#098475"
            }
          }
        },
        "seq-4": {
          "$type": "color",
          "$value": "#11B0A0",
          "$extensions": {
            "seed.mode": {
              "light": "#11B0A0",
              "dark": "#00A192"
            }
          }
        },
        "seq-5": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#11B0A0"
            }
          }
        },
        "seq-6": {
          "$type": "color",
          "$value": "#005048",
          "$extensions": {
            "seed.mode": {
              "light": "#005048",
              "dark": "#9CE4D8"
            }
          }
        },
        "seq-7": {
          "$type": "color",
          "$value": "#00352F",
          "$extensions": {
            "seed.mode": {
              "light": "#00352F",
              "dark": "#CDF3EC"
            }
          }
        },
        "no-data": {
          "$description": "Celula/regiao SEM MEDICAO. REGRA DURA: sempre com HACHURA DIAGONAL (padrao repetido ~45 graus), nunca cor lisa. O cinza e EXCLUSIVO deste papel em qualquer grafico SEED — nenhuma escala de valor pode usa-lo. A hachura garante que a distincao 'gerou pouco x nao reportou' nunca dependa de cor (1.4.1), inclusive em grayscale e impresso. A legenda ganha o item 'sem medicao' sempre que houver celula no-data.",
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          }
        },
        "no-data-hatch": {
          "$description": "Tinta das LINHAS da hachura do no-data (NOVO na v1.7). Papel proprio, token proprio: a errata E3 provou que papel de desenho sem token proprio acaba tomando emprestado o token de outro papel — a hachura desenhava em chart-cat-5-stroke, que a v1.5 tornou VIOLETA, no lugar mais sensivel possivel, porque 'sem medicao' e exatamente o que nao pode parecer categoria. A correcao apontou para chart-axis e QUEBROU A MEDICAO: cinza-500 mede 2.80 contra o preenchimento cinza-100, abaixo do piso de 3:1 do 1.4.11. Valores atuais medidos contra o proprio preenchimento: 3.93 (light) e 3.84 (dark). Descartado consumir o primitivo cinza-700 direto (5.43, passa): repetiria a estrutura do erro, emprestando de um primitivo em vez de emprestar de uma categoria.",
          "$type": "color",
          "$value": "#617683",
          "$extensions": {
            "seed.mode": {
              "light": "#617683",
              "dark": "#90A6B3"
            }
          }
        },
        "geo-base": {
          "$description": "Territorio de CONTEXTO de um mapa (NOVO na v1.8): a area geografica que NAO e objeto de medicao. Papel proprio, token proprio, pelo mesmo racional que criou o no-data-hatch na v1.7 (errata E3): papel de desenho sem token proprio acaba tomando emprestado o de outro papel. Num mapa existem TRES cinzas — contexto, sem medicao e com dado — e num grafico de barras existem so DOIS; o terceiro papel nasce aqui. Valor identico ao surface-subtle vigente, o que e proposital: o que muda nao e a cor, e a responsabilidade de mante-la. Medido contra a fronteira geografica: 3.11 (light) e 6.74 (dark), ambos >=3.",
          "$type": "color",
          "$value": "#F2F6F9",
          "$extensions": {
            "seed.mode": {
              "light": "#F2F6F9",
              "dark": "#141D23"
            }
          }
        },
        "geo-boundary": {
          "$description": "Fronteira de municipio desenhada num mapa (NOVO na v1.8). Ela PORTA INFORMACAO — e a linha que responde 'o que esta dentro deste municipio' — logo entra no piso de 3:1 do WCAG 1.4.11. NAO consome chart-grid: medicao de 2026-08-11 mostrou que chart-grid tem o MESMO HEX de chart-no-data nos dois temas (#E3EBF0 light, #38464F dark), o que faz a fronteira desaparecer sobre um municipio sem medicao (razao 1.00). NAO consome chart-axis por emprestimo: no tema escuro chart-axis tem o mesmo hex do chart-no-data-hatch (#90A6B3), e emprestar repetiria a estrutura da errata E3. Medido contra o territorio de contexto: 3.11 (light) e 6.74 (dark).",
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#90A6B3"
            }
          }
        },
        "div-neg-3": {
          "$description": "Divergente 7 posicoes: vermelho <-> neutro <-> turquesa. Alinhada por construcao ao par chart-positive/chart-negative da v1.0 (os stops +-2 SAO turquesa-500 e vermelho-500). REGRA DA ZONA-ZERO (declaracao, nao isencao): as posicoes +-1 e o zero representam 'perto de zero' e aproximar-se do fundo E a semantica; consequencia dura: dado cuja distincao do fundo e necessaria ao entendimento NUNCA usa sozinho +-1/zero — leva borda chart-axis ou rotulo de valor. As posicoes plenas (+-2, +-3) passam o gate 3:1 medido nos 2 modos.",
          "$type": "color",
          "$value": "#A5272A",
          "$extensions": {
            "seed.mode": {
              "light": "#A5272A",
              "dark": "#FF9C95"
            }
          }
        },
        "div-neg-2": {
          "$type": "color",
          "$value": "#D94545",
          "$extensions": {
            "seed.mode": {
              "light": "#D94545",
              "dark": "#D94545"
            }
          }
        },
        "div-neg-1": {
          "$type": "color",
          "$value": "#FFC2BD",
          "$extensions": {
            "seed.mode": {
              "light": "#FFC2BD",
              "dark": "#7A1C1E"
            }
          }
        },
        "div-zero": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          }
        },
        "div-pos-1": {
          "$type": "color",
          "$value": "#9CE4D8",
          "$extensions": {
            "seed.mode": {
              "light": "#9CE4D8",
              "dark": "#005048"
            }
          }
        },
        "div-pos-2": {
          "$type": "color",
          "$value": "#00A192",
          "$extensions": {
            "seed.mode": {
              "light": "#00A192",
              "dark": "#00A192"
            }
          }
        },
        "div-pos-3": {
          "$type": "color",
          "$value": "#005048",
          "$extensions": {
            "seed.mode": {
              "light": "#005048",
              "dark": "#66D1C2"
            }
          }
        },
        "cat-1-stroke": {
          "$description": "Variante de STROKE para traco fino (linha <=3px, marcador pequeno — o pior caso do 1.4.11). REGRA DE CONSUMO: grafico de linha e sparkline usam cat-N-stroke; barra, area e fatia usam cat-N (fill). O fill v1.0 fica INTOCADO. Nasceu de remedicao que reprovou cat-1 (2.71), cat-2 (1.85) e cat-5 (2.53) contra branco; os pares dark nasceram do achado V2 do render de 2026-08-09 (cat-4-stroke light lia a ~2:1 no fundo escuro). DEPENDENCIA DECLARADA: no dark, cat-2 e cat-6 comprimem para stops vizinhos da rampa dourado (300/100) — a distincao mutua dessas duas series em modo escuro e sustentada pelo tracejado/marcador (1.4.1), nunca so pela cor.",
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          }
        },
        "cat-2-stroke": {
          "$type": "color",
          "$value": "#B67F00",
          "$extensions": {
            "seed.mode": {
              "light": "#B67F00",
              "dark": "#F9B11C"
            }
          }
        },
        "cat-3-stroke": {
          "$type": "color",
          "$value": "#B23871",
          "$extensions": {
            "seed.mode": {
              "light": "#B23871",
              "dark": "#E8A1C2"
            }
          }
        },
        "cat-4-stroke": {
          "$type": "color",
          "$value": "#0099C1",
          "$extensions": {
            "seed.mode": {
              "light": "#0099C1",
              "dark": "#53C2E9"
            }
          }
        },
        "cat-5-stroke": {
          "$type": "color",
          "$value": "#7B42BD",
          "$extensions": {
            "seed.mode": {
              "light": "#7B42BD",
              "dark": "#BD9CE2"
            }
          }
        },
        "cat-6-stroke": {
          "$type": "color",
          "$value": "#004C61",
          "$extensions": {
            "seed.mode": {
              "light": "#004C61",
              "dark": "#96E0FD"
            }
          }
        }
      },
      "gauge": {
        "$description": "Medidor/gauge. As FAIXAS referenciam a taxonomia de feedback existente — nenhuma severidade paralela nasce aqui (mesma lei do Bloco 3 dos componentes). Dois achados de medicao corrigiram a proposta antes da spec (2026-08-09): warning light dourado-500 reprovou vs trilha (2.35) e virou dourado-600 (3.25); critical dark vermelho-400 reprovou (2.38) e virou vermelho-300 (3.26).",
        "track": {
          "$description": "Trilha de fundo. Decorativa em si; o contraste exigido e do VALOR contra ela.",
          "$type": "color",
          "$value": "#C8D6DF",
          "$extensions": {
            "seed.mode": {
              "light": "#C8D6DF",
              "dark": "#4D606C"
            }
          }
        },
        "value": {
          "$description": "3.09 vs track e 4.60 vs branco (light); 3.58 vs track e 10.16 vs page (dark).",
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          }
        },
        "range-ok": {
          "$description": "= feedback-success-solid; herda as medicoes de gauge.value.",
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          }
        },
        "range-warning": {
          "$description": "3.25 vs track e 4.82 vs branco (light); 3.54 vs track e 10.04 vs page (dark).",
          "$type": "color",
          "$value": "#986900",
          "$extensions": {
            "seed.mode": {
              "light": "#986900",
              "dark": "#F9B11C"
            }
          }
        },
        "range-critical": {
          "$description": "3.49 vs track (light); 3.26 vs track e 9.25 vs page (dark).",
          "$type": "color",
          "$value": "#C6393B",
          "$extensions": {
            "seed.mode": {
              "light": "#C6393B",
              "dark": "#FF9C95"
            }
          }
        }
      },
      "rail": {
        "$description": "v1.11 (CP-P3). Chrome do rail de areas — INVARIANTE DE TEMA (SH15/CP20): sem seed.mode de proposito.",
        "background": {
          "$type": "gradient",
          "$value": "linear-gradient(180deg, #006C62 0%, #005048 100%)",
          "$description": "CP20 adotado no gate G2 (2026-08-14): gradiente linear entre dois degraus adjacentes da rampa da marca (turquesa-700 -> turquesa-800). Tinta branca passa NOS DOIS EXTREMOS, nao na media: 6.32 e 9.37. Semantico proprio porque sem ele o tema escuro vira regra manual (custo C13: ClickUp escreveu 22 regras a mao)."
        }
      },
      "chrome": {
        "$description": "v1.11 (CP-P3, SUP-6 em escopo minimo). Overlays de estado sobre chrome cromatico — invariantes por construcao: compoem sobre superficie invariante (o rail).",
        "overlay-hover": {
          "$type": "color",
          "$value": "rgba(255, 255, 255, 0.12)",
          "$description": "Hover de item do rail: veu branco a 12% (valor que o shell ja praticava). Rotulo branco sobre a COMPOSICAO (overlay sobre os dois extremos do gradiente): 4.88 e 6.82, ambos >=4.5."
        },
        "overlay-active": {
          "$type": "color",
          "$value": "rgba(255, 255, 255, 0.14)",
          "$description": "Estado pressionado de item do rail: veu branco a 14% (valor que o preview da composicao ja praticava). Rotulo branco sobre a composicao: 4.68 e 6.50, ambos >=4.5. O item ATIVO (aria-current) continua sendo a pilula clara do SH15-b — este token e o pressed, nao o current."
        }
      },
      "entity": {
        "$description": "v1.11 (CP-P3). Paleta FECHADA de identidade por entidade (CP23, gate G3) — tres familias x dois registros; um hex por posicao, invariante por construcao (o par medido e interno ao chip). Acima de 6 entidades repete-se a cor e distingue-se pelo GLIFO (nunca letra; decisao MANIFESTO v6.4) — nunca nasce setima cor. Magenta/violeta seguem exclusivos de dado (lei (e) da 3c); vermelho, amarelo, turquesa-600 e cinza excluidos com porque no CP23.",
        "1": {
          "$type": "color",
          "$value": "#11B0A0",
          "$description": "E1 turquesa-400 vivo, tinta escura (cinza-900). Admissao CP22 medida: 5.11"
        },
        "1-ink": {
          "$type": "color",
          "$value": "#242E34",
          "$description": "Tinta declarada da posicao E1 (CP22: verificacao na definicao da paleta, nunca em render)."
        },
        "2": {
          "$type": "color",
          "$value": "#D49400",
          "$description": "E2 dourado-400 vivo, tinta escura. Medido: 5.30"
        },
        "2-ink": {
          "$type": "color",
          "$value": "#242E34",
          "$description": "Tinta declarada da posicao E2 (CP22: verificacao na definicao da paleta, nunca em render)."
        },
        "3": {
          "$type": "color",
          "$value": "#01B3E0",
          "$description": "E3 azul-400 vivo, tinta escura. Medido: 5.63"
        },
        "3-ink": {
          "$type": "color",
          "$value": "#242E34",
          "$description": "Tinta declarada da posicao E3 (CP22: verificacao na definicao da paleta, nunca em render)."
        },
        "4": {
          "$type": "color",
          "$value": "#005048",
          "$description": "E4 turquesa-800 profundo, tinta branca. Medido: 9.37"
        },
        "4-ink": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$description": "Tinta declarada da posicao E4 (CP22: verificacao na definicao da paleta, nunca em render)."
        },
        "5": {
          "$type": "color",
          "$value": "#006783",
          "$description": "E5 azul-700 profundo, tinta branca. Medido: 6.43"
        },
        "5-ink": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$description": "Tinta declarada da posicao E5 (CP22: verificacao na definicao da paleta, nunca em render)."
        },
        "6": {
          "$type": "color",
          "$value": "#7B5500",
          "$description": "E6 dourado-700 profundo, tinta branca. Medido: 6.68"
        },
        "6-ink": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$description": "Tinta declarada da posicao E6 (CP22: verificacao na definicao da paleta, nunca em render)."
        }
      },
      "marker": {
        "$description": "v1.11 (CP-P3). Marcadores de composicao temporal.",
        "now": {
          "$type": "color",
          "$value": "#098475",
          "$description": "CP24 (gate G4): marcador de AGORA em turquesa-600, MESMO hex nos dois temas — terceiro membro nomeado da classe invariante de tema (SH15/DG12/CP24). Medido >=3.0 (non-text, SC 1.4.11) contra as cinco superficies canonicas: 4.60/4.23/4.05/3.72/3.31. Em telas sobre o passado o marcador NAO aparece (C16)."
        }
      },
      "row-selected": {
        "bg": {
          "$type": "color",
          "$value": "#E8FBF7",
          "$extensions": {
            "seed.mode": {
              "light": "#E8FBF7",
              "dark": "#00352F"
            }
          },
          "$description": "v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64."
        },
        "text": {
          "$type": "color",
          "$value": "#242E34",
          "$extensions": {
            "seed.mode": {
              "light": "#242E34",
              "dark": "#E3EBF0"
            }
          },
          "$description": "v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64."
        },
        "border": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64."
        }
      },
      "field": {
        "$description": "v1.21 (2026-08-25, fecha a AD-P6): CAMADA 3 (componente) do FORM-FIELD — a primeira camada de componente a entrar nos gemeos. Fonte unica: seed-componentes.md §2.5 (l.384-429), o componente-BASE anatomico de todo o Bloco 2 (13 controles de entrada herdam), validado pelo Rafael em 2026-08-02 (v0.6, emenda v0.7) com contrastes medidos programaticamente. O defeito que esta adicao fecha: a spec citava `seed-field-` 116 vezes e os gemeos tinham ZERO ocorrencias — o documento descrevia uma camada que nenhum artefato (ERP incluso) podia consumir. Cada $value e a RESOLUCAO do alias que a §2.5 declara (alias registrado no $description de cada token); a fidelidade alias->valor e verificada pelo gate G5 da paridade-tokens.py, que reprova se o token-base mudar e o field nao seguir. Estrutura (alturas, raio, gaps) e invariante de tema (regra do §1 do seed-tokens.md). ADICAO PURA: nenhum valor anterior muda.",
        "height-sm": {
          "$type": "dimension",
          "$value": "32px",
          "$description": "§2.5 l.388 — altura sm do controle, fixada pela spec (densidade desktop)."
        },
        "height-md": {
          "$type": "dimension",
          "$value": "44px",
          "$description": "§2.5 l.388 — altura md (padrao): alvo de toque WCAG, igual botao. Decisao explicita da spec: 'md = 44px (nao 40px)' (§1.9/§2.2 do seed-componentes.md). DIFERE de proposito da regua generica --seed-control-md (40px, v1.14) — coexistencia declarada no gemeo CSS; reconciliar e decisao de canonico."
        },
        "height-lg": {
          "$type": "dimension",
          "$value": "52px",
          "$description": "§2.5 l.388 — altura lg do controle, fixada pela spec."
        },
        "radius": {
          "$type": "dimension",
          "$value": "8px",
          "$description": "§2.5 l.389 — alias de radius-md (que aponta radius-4 = 8px)."
        },
        "gap": {
          "$type": "dimension",
          "$value": "8px",
          "$description": "§2.5 l.390 — alias de sp-2. Rotulo->controle e controle->mensagem."
        },
        "stack-gap": {
          "$type": "dimension",
          "$value": "24px",
          "$description": "§2.5 l.391 — alias de sp-6. Campo->campo confortavel; o denso (ERP) usa sp-4 (16px) por regra de layout, nao por token proprio."
        },
        "bg": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#1D272D"
            }
          },
          "$description": "§2.5 l.394/413 — fundo do controle: surface-page no claro, surface-raised no escuro."
        },
        "label": {
          "$type": "color",
          "$value": "#242E34",
          "$extensions": {
            "seed.mode": {
              "light": "#242E34",
              "dark": "#E3EBF0"
            }
          },
          "$description": "§2.5 l.395/414 — rotulo do campo: cinza-900 (13,86:1) / cinza-100 (14,16:1)."
        },
        "value": {
          "$type": "color",
          "$value": "#242E34",
          "$extensions": {
            "seed.mode": {
              "light": "#242E34",
              "dark": "#E3EBF0"
            }
          },
          "$description": "§2.5 l.396/415 — valor digitado: cinza-900 (13,86:1) / cinza-100 (12,61:1 sobre o campo raised)."
        },
        "placeholder": {
          "$type": "color",
          "$value": "#617683",
          "$extensions": {
            "seed.mode": {
              "light": "#617683",
              "dark": "#90A6B3"
            }
          },
          "$description": "§2.5 l.397/416 — placeholder: cinza-600 (4,74:1, AA e distinto do valor) / cinza-400 (6,01:1)."
        },
        "optional-text": {
          "$type": "color",
          "$value": "#617683",
          "$extensions": {
            "seed.mode": {
              "light": "#617683",
              "dark": "#90A6B3"
            }
          },
          "$description": "§2.5 l.398/417 — sufixo '(opcional)' do rotulo: cinza-600 (4,74:1) / cinza-400."
        },
        "help-text": {
          "$type": "color",
          "$value": "#4D606C",
          "$extensions": {
            "seed.mode": {
              "light": "#4D606C",
              "dark": "#ACBECA"
            }
          },
          "$description": "§2.5 l.399/418 — texto auxiliar: cinza-700 (6,55:1, direcao GOV.UK 7:1) / cinza-300 (8,92:1)."
        },
        "border": {
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#788F9D"
            }
          },
          "$description": "Borda default do campo — e ela que identifica o controle (SC 1.4.11). SUPERSEDE CD-P2 (2026-08-17, fechada; seed-componentes.md §66.4 e tabela vigente do §64.6-supersede) sobre a §2.5 l.400: o alias deixa de ser cinza-600 e vira --seed-border-interactive (cinza-500, mesmo hex nos dois temas). Motivo medido: o local degradava na inversao de tema (4,74 claro / 3,21 escuro), o semantico e equilibrado (3,13 claro / 5,05 escuro, ambos >=3). No escuro coincide com o que a §2.5 l.419 ja dizia. A bancada banco-formfield.html consome o alias desde CD-P2. As variantes de estado (-hover/-error/-success/-warning) NAO migram por decisao da propria CD-P2 (nao tem semantico proprio no gemeo) e seguem a §2.5."
        },
        "border-hover": {
          "$type": "color",
          "$value": "#4D606C",
          "$extensions": {
            "seed.mode": {
              "light": "#4D606C",
              "dark": "#90A6B3"
            }
          },
          "$description": "§2.5 l.401/420 — borda no hover: cinza-700 / cinza-400 (6,01:1)."
        },
        "error-text": {
          "$type": "color",
          "$value": "#A5272A",
          "$extensions": {
            "seed.mode": {
              "light": "#A5272A",
              "dark": "#FF9C95"
            }
          },
          "$description": "§2.5 l.402/421 — mensagem de erro: vermelho-700 (7,18:1) / vermelho-300 (8,49:1)."
        },
        "border-error": {
          "$type": "color",
          "$value": "#C6393B",
          "$extensions": {
            "seed.mode": {
              "light": "#C6393B",
              "dark": "#FC6F6A"
            }
          },
          "$description": "§2.5 l.403/422 — borda no estado error: vermelho-600 (5,19:1) / vermelho-400 (5,52:1)."
        },
        "success-text": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#66D1C2"
            }
          },
          "$description": "§2.5 l.404/423 — mensagem de success: turquesa-700 (6,32:1) / turquesa-300 (9,32:1)."
        },
        "border-success": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "§2.5 l.405/424 — borda no estado success: turquesa-600 (4,60:1) / turquesa-300 (8,31:1)."
        },
        "readonly-bg": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#0B1419"
            }
          },
          "$description": "§2.5 l.406/425 — fundo do readonly: surface-sunken nos dois temas (hoje cinza-100 no claro; o comentario da spec media cinza-50 — nota de divergencia registrada na emissao v1.21, o alias vence)."
        },
        "warning-text": {
          "$type": "color",
          "$value": "#7B5500",
          "$extensions": {
            "seed.mode": {
              "light": "#7B5500",
              "dark": "#F9B11C"
            }
          },
          "$description": "§2.5 l.407/426 (emenda v0.7) — mensagem de warning: dourado-700 (6,68:1) / dourado-300 (9,22:1). Guarda-corpo da spec: warning e SO plausibilidade, nunca obrigatoriedade, nunca bloqueia submit."
        },
        "border-warning": {
          "$type": "color",
          "$value": "#986900",
          "$extensions": {
            "seed.mode": {
              "light": "#986900",
              "dark": "#F9B11C"
            }
          },
          "$description": "§2.5 l.408/427 (emenda v0.7) — borda no estado warning: dourado-600 (4,82:1) / dourado-300 (8,21:1)."
        }
      },
      "button": {
        "$description": "v1.22 (2026-08-25): SEGUNDA leva da CAMADA 3 (componente) dos gemeos, depois do form-field da v1.21. Fonte unica: seed-componentes.md §1.6 (l.121-150), que escreve o bloco CSS inteiro com o par dark explicito e a regra que o gerou, verbatim: 'token de componente que referencia primitivo DEVE declarar o par dark — primitivo nao troca de modo sozinho' (correcao v0.5). O defeito que esta adicao fecha, medido pela guarda SG1 (guarda-spec-gemeo.py): os 12 nomes existiam no canon e ZERO no gemeo; a bancada 05-html-de-referencia/bancadas/banco-componentes.html (l.406-411) ja os declarava LOCALMENTE, com os MESMOS aliases — nome com dono no artefato e sem dono no canonico, a mesma classe do row-selected da v1.13. Verificacao de supersede feita antes de emitir, e ela achou tres decisoes posteriores que NAO mudam valor nenhum destes doze: CD-P7 (2026-08-17, fechada — os 93 botoes com borda abaixo de 3:1 nao sao defeito de SC 1.4.11, porque rotulo legivel ja identifica o controle), MR-P1/MR-P2 (2026-08-17, camada de tinta sobre fundo de marca — mexeu em text-on-*, e o registro diz explicitamente que 'o botao primario nao muda de aparencia') e o supersede do §64.16 (2026-08-18, branco sobre turquesa-600). Cada $value e a resolucao do alias; a fidelidade e o gate G6 da paridade-tokens.py. ADICAO PURA.",
        "radius": {
          "$type": "dimension",
          "$value": "8px",
          "$description": "§1.6 l.126 — alias de radius-md (que aponta radius-4 = 8px). Invariante de tema."
        },
        "font-weight": {
          "$type": "fontWeight",
          "$value": "600",
          "$description": "§1.6 l.127 — alias de fw-semibold. Invariante de tema."
        },
        "height-sm": {
          "$type": "dimension",
          "$value": "32px",
          "$description": "§1.6 l.128 — altura sm, fixada pela spec (densidade desktop). Coincide com --seed-control-sm e com --seed-field-height-sm: os tres valem 32px."
        },
        "height-md": {
          "$type": "dimension",
          "$value": "44px",
          "$description": "§1.6 l.129 — altura md (padrao), fixada pela spec como alvo de toque WCAG 2.5.8. ⚠ COLISAO DECLARADA E NAO RESOLVIDA, com os tres numeros lado a lado: --seed-button-height-md 44px = --seed-field-height-md 44px (v1.21, decisao explicita do canonico 'md = 44px (nao 40px)') CONTRA --seed-control-md 40px (v1.14, regua generica de altura de controle). Dois numeros para o mesmo degrau da escala. Emitido como a §1.6 fixa; reconciliar as duas reguas e decisao do Rafael, nao dos gemeos."
        },
        "height-lg": {
          "$type": "dimension",
          "$value": "52px",
          "$description": "§1.6 l.130 — altura lg, fixada pela spec. ⚠ MESMA COLISAO da height-md: 52px (botao) = 52px (field) CONTRA --seed-control-lg 48px."
        },
        "gap": {
          "$type": "dimension",
          "$value": "8px",
          "$description": "§1.6 l.131 — alias de sp-2. Espaco entre icone e rotulo dentro do botao. Invariante de tema."
        },
        "secondary-border": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "§1.6 l.135/143 — borda do botao secundario: turquesa-600 / turquesa-300. Medido nesta emissao: 4,28:1 sobre o action-secondary-bg claro e 6,92:1 sobre o tint dark, ambos acima do piso 3,00 da SC 1.4.11 (a spec declara 9,32 para o dark contra outra superficie de referencia)."
        },
        "secondary-text": {
          "$type": "color",
          "$value": "#005048",
          "$extensions": {
            "seed.mode": {
              "light": "#005048",
              "dark": "#CDF3EC"
            }
          },
          "$description": "§1.6 l.136/144 — rotulo do botao secundario: turquesa-800 / turquesa-100. Medido sobre o action-secondary-bg de cada tema: 8,73:1 claro e 10,64:1 escuro — o 10,64 confere EXATAMENTE com o numero que a spec anota na propria linha."
        },
        "outline-border": {
          "$type": "color",
          "$value": "#617683",
          "$extensions": {
            "seed.mode": {
              "light": "#617683",
              "dark": "#90A6B3"
            }
          },
          "$description": "§1.6 l.137/145 — borda do botao outline (fundo transparente): cinza-600 / cinza-400. Medido sobre a surface-page de cada tema: 4,74:1 claro e 7,35:1 escuro."
        },
        "ghost-text": {
          "$type": "color",
          "$value": "#006C62",
          "$extensions": {
            "seed.mode": {
              "light": "#006C62",
              "dark": "#66D1C2"
            }
          },
          "$description": "§1.6 l.138/146 — rotulo do botao fantasma: turquesa-700 / turquesa-300. Medido sobre a surface-page: 6,32:1 claro e 10,16:1 escuro. Este e o token que a propria spec usa para explicar por que o par dark e OBRIGATORIO: com o primitivo fixo do claro, o escuro mediria 2,7."
        },
        "toggle-on-bg": {
          "$type": "color",
          "$value": "#005048",
          "$extensions": {
            "seed.mode": {
              "light": "#005048",
              "dark": "#66D1C2"
            }
          },
          "$description": "§1.6 l.139/147 — placa solida do botao de alternancia LIGADO (§1.5.1: desligado = transparente/contorno sutil, ligado = placa solida): turquesa-800 / turquesa-300."
        },
        "toggle-on-fg": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#00352F"
            }
          },
          "$description": "§1.6 l.140/148 — glifo/rotulo sobre a placa ligada. O claro e o UNICO valor de cor deste grupo que a spec FIXA em hex (#FFFFFF) em vez de nomear um alias; o dark e turquesa-900. Medido: 9,37:1 claro e 7,39:1 escuro (o 7,39 confere com o numero da spec)."
        }
      },
      "card": {
        "$description": "v1.22 (2026-08-25): CAMADA 3 do CARTAO. Fonte unica: seed-componentes.md §26 (l.1954), sub-bloco F. Consumidor vivo conferido antes de emitir: 05-html-de-referencia/bancadas/banco-superficies.html declara os tres LOCALMENTE com os MESMOS aliases (l.43-45 claro, l.61-63 dark) — zero divergencia, nenhum supersede a aplicar. Achado registrado e NAO aplicado ao valor: a CP-P4 (2026-08-15, seed-componentes.md v0.69) supersedeu a FORMA de aplicar a borda do cartao — de `border` para o par `box-shadow` anel-de-1px + sombra raised —, mas nao mexeu no VALOR do token; por isso a emissao segue a §26 sem emenda.",
        "bg": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#1D272D"
            }
          },
          "$description": "§26 l.1954 — fundo do cartao: alias de surface-raised nos dois temas."
        },
        "border": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          },
          "$description": "§26 l.1954 — contorno do cartao: alias de border-subtle. BORDA DECORATIVA DECLARADA, e a spec escreve por que: 1,21:1 no claro e 1,75:1 no escuro (remedidos nesta emissao contra a superficie de pagina de cada tema — o 1,75 e contra surface-subtle #141D23, que e o fundo real da bancada), abaixo do piso 3,00 da SC 1.4.11 DE PROPOSITO, porque a separacao e carregada por espaco + raio + mudanca de superficie + tipografia, e contorno nao e portador unico de informacao (mesmo racional do skeleton §19.2)."
        },
        "radius": {
          "$type": "dimension",
          "$value": "12px",
          "$description": "§26 l.1954 — 'radius lg': alias de radius-lg (que aponta radius-6 = 12px). Invariante de tema."
        }
      },
      "divider": {
        "$description": "v1.23 (2026-08-26): a CAMADA 3 do divisor FECHA — o `strong` entra. ATE A v1.22 ELE FOI RECUSADO, e o motivo esta registrado aqui de proposito: a spec fixava o alias (border-default) mas media 1,91 APENAS no claro, sem par dark, e o consumidor vivo usava cinza-600 no escuro, que nao e o border-default dark — emitir qualquer lado criaria contradicao ou invencao. O QUE MUDOU NAO FOI A OPINIAO, FOI A MEDICAO: o 1,91 NAO EXISTE. Medidas as cinco superficies do tema claro contra o border-default, nenhuma da 1,91 (page/raised/overlay = 1,49; subtle = 1,37; sunken = 1,23). O numero foi transplantado — 1,91 e o que o border-subtle ESCURO da sobre a pagina escura. Sem o 1,91, o cinza-600 do consumidor se revela DIALETO LOCAL e vale a regra simetrica do irmao: border-subtle nos dois temas para o `color`, border-default nos dois para o `strong`. Fonte: seed-componentes.md §26-F l.1976, corrigida no mesmo dia.",
        "color": {
          "$type": "color",
          "$value": "#E3EBF0",
          "$extensions": {
            "seed.mode": {
              "light": "#E3EBF0",
              "dark": "#38464F"
            }
          },
          "$description": "§26-F l.1976 — linha divisoria: alias de border-subtle nos dois temas, decorativo declarado (1,21 claro / 1,75 escuro). O consumidor vivo banco-superficies.html declara exatamente isto."
        },
        "strong": {
          "$type": "color",
          "$value": "#C8D6DF",
          "$extensions": {
            "seed.mode": {
              "light": "#C8D6DF",
              "dark": "#4D606C"
            }
          },
          "$description": "§26-F l.1976 = border-default nos DOIS temas. Divisor full-width enfatico, DECORATIVO DECLARADO: 1,49 sobre surface-page clara / 2,84 sobre surface-page escura. A linha da spec dizia 1,91 e esse numero nao sai de nenhuma superficie do tema."
        }
      },
      "list": {
        "$description": "v1.22 (2026-08-25): CAMADA 3 da LISTA, sub-bloco F. Fonte: seed-componentes.md §26-F l.2000 e l.2025.",
        "hover": {
          "$type": "color",
          "$value": "#F2F6F9",
          "$extensions": {
            "seed.mode": {
              "light": "#F2F6F9",
              "dark": "#273137"
            }
          },
          "$description": "§26-F l.2000 — realce de item sob o ponteiro. A spec escreve '(surface-subtle / #273137)': o claro por ALIAS e o escuro por HEX, e o hex #273137 e o surface-overlay do tema escuro, nao o surface-subtle (#141D23) — a assimetria e da spec e foi preservada de proposito, porque e o que os QUATRO consumidores vivos renderizam (banco-cn, banco-dados, banco-navegacao, banco-superficies). Reforco, nunca canal unico: o foco tem anel medido (§1). Medido nesta emissao: texto primary sobre o hover = 12,75:1 claro (confere com o numero da propria spec) e 10,90:1 escuro."
        }
      },
      "danger": {
        "$description": "v1.22 (2026-08-25): CAMADA 3 do ITEM DESTRUTIVO de menu. Fonte: seed-componentes.md §27 l.2181 (menu/disclosure). ⚠ SO O `item` FOI EMITIDO. O nome `--seed-danger-solid`, que a guarda SG1 tambem acusou, NAO SE EMITE: ele aparece no mapa-cobertura-ds.md §21 dentro da tabela que documenta a 'cegueira de nome' — a mesma superficie vermelha solida vive no acervo sob TRES nomes, e o `danger-solid` e justamente o que carrega o valor DIVERGENTE (#D94545 contra o #C6393B dos outros dois), ja registrado como pendencia AC-P5 (unificar o valor) e MR-P3 (unificar os nomes). Emiti-lo canonizaria o defeito que o canon documenta. Regra: documentacao de um defeito CITA o defeito, e citar nao e pedir.",
        "item": {
          "$type": "color",
          "$value": "#A5272A",
          "$extensions": {
            "seed.mode": {
              "light": "#A5272A",
              "dark": "#FFC2BD"
            }
          },
          "$description": "§27 l.2181 — rotulo do item DESTRUTIVO dentro do painel de menu: vermelho-700 / vermelho-200. Remedido nesta emissao contra a superficie de overlay de cada tema: 7,18:1 e 8,67:1 — os DOIS numeros conferem exatamente com os pares que a propria spec anota como medidos pela contraste-navegacao.py. Consumidores vivos (banco-dados.html, banco-navegacao.html) ja declaram estes hex localmente."
        }
      },
      "wait": {
        "$description": "v1.22 (2026-08-25): CAMADA 3 da ESPERA. Fonte: seed-componentes.md §17, regra R3-c (l.1687).",
        "delay": {
          "$type": "duration",
          "$value": "1000ms",
          "$description": "§17 R3-c l.1687 — atraso antes de mostrar indicador de espera de REGIAO (regime 3). A spec fixa o numero por escrito ('default 1000ms') e fundamenta no limite de 1s de Nielsen, que pressupoe o clique reconhecido em <=0,1s pelo controle disparador (regime 1). Invariante de tema. A propria linha declara a revisao futura com telemetria real do ERP na Fase 4 — nas palavras dela, 'pendencia declarada, nao decisao aberta', e por isso o token nasce com valor em vez de ficar em lacuna."
        }
      },
      "typography-role": {
        "titulo-tela": {
          "$type": "typography",
          "$value": {
            "fontSize": "22px",
            "fontWeight": "800",
            "lineHeight": "1.25",
            "letterSpacing": "-0.3px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): H1 da regiao de conteudo. Unico por tela."
        },
        "titulo-secao": {
          "$type": "typography",
          "$value": {
            "fontSize": "16px",
            "fontWeight": "700",
            "lineHeight": "1.3",
            "letterSpacing": "-0.1px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): Cabecalho de peca, de grupo e de painel."
        },
        "corpo": {
          "$type": "typography",
          "$value": {
            "fontSize": "14px",
            "fontWeight": "400",
            "lineHeight": "1.5",
            "letterSpacing": "0px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): Texto de LEITURA (paragrafo, estado vazio, nota). lh 1.5 e o piso do SC 1.4.12."
        },
        "corpo-denso": {
          "$type": "typography",
          "$value": {
            "fontSize": "14px",
            "fontWeight": "400",
            "lineHeight": "1.3",
            "letterSpacing": "0px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): Texto de UI DENSA (celula de tabela, item de lista). lh apertado por decisao, nunca por omissao — o Carbon usa 1.28 no body-compact-01 pelo mesmo motivo."
        },
        "rotulo": {
          "$type": "typography",
          "$value": {
            "fontSize": "12px",
            "fontWeight": "600",
            "lineHeight": "1.35",
            "letterSpacing": "-0.15px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): Rotulo de controle, chip, contador, coluna. O ls negativo e ajuste optico: texto pequeno em peso alto empasta sem ele (medido no produto de referencia)."
        },
        "micro": {
          "$type": "typography",
          "$value": {
            "fontSize": "11px",
            "fontWeight": "700",
            "lineHeight": "1.3",
            "letterSpacing": "-0.2px"
          },
          "$description": "v1.14 (retrofit RV1/RV3): Microrrotulo em caixa alta: rail, caption, cabecalho de estatistica."
        }
      },
      "switch": {
        "$description": "v1.23 (2026-08-26): CAMADA 3 do SWITCH. Fonte: seed-componentes.md §8.3 l.1292, EMENDADA no mesmo dia porque a medicao contradisse dois valores dela. A linha mandava trilho cinza-300 com a clausula '3:1 sobre a pagina: medir na producao do preview' — medido, cinza-300 sobre branco da 1,91: a clausula reprovava a si mesma. E medir 'sobre a pagina' era medir METADE do componente, porque o thumb e BRANCO e branco sobre cinza-300 da os mesmos 1,91 — o thumb sumia dentro do trilho, e a posicao do thumb e o unico canal que separa ON de OFF (K3: nunca 'ON/OFF' escrito no trilho). Cinza-500 conserta os dois pares com 3,38. NO TEMA ESCURO quem reprovava era o estado LIGADO, nao o desligado: thumb cinza-100 sobre trilho on = 2,25, e ninguem tinha visto porque a clausula so mandava medir o OFF. A saida nao precisou de cor nova: 'o que vai sobre a superficie de acao' ja e par medido e canonizado (text-on-action-primary), e o thumb de um switch ligado e exatamente isso — 7,39:1. No claro os dois thumbs coincidem em branco, entao a regra e UMA, em dois tokens que colapsam.",
        "off-bg": {
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#617683"
            }
          },
          "$description": "§8.3 l.1292 = cinza-500 claro / cinza-600 escuro. Trilho DESLIGADO. 3,38:1 sobre a pagina e 3,38:1 sobre o thumb no claro; 3,92 e 3,93 no escuro. A spec dizia cinza-300 e dava 1,91 nos dois pares."
        },
        "on-bg": {
          "$type": "color",
          "$value": "#098475",
          "$extensions": {
            "seed.mode": {
              "light": "#098475",
              "dark": "#66D1C2"
            }
          },
          "$description": "§8.3 l.1292 = action-primary. Trilho LIGADO. 4,60:1 claro / 10,16:1 escuro. A spec apontava para --seed-action-primary-bg, token FANTASMA da FF-P2/FF-P3, e dizia turquesa-400 no escuro quando o valor e #66D1C2 = turquesa-300."
        },
        "thumb": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#E3EBF0"
            }
          },
          "$description": "§8.3 l.1292 — thumb DESLIGADO: branco fixado pela spec / cinza-100. 3,38:1 sobre o trilho off no claro, 3,93:1 no escuro."
        },
        "thumb-on": {
          "$type": "color",
          "$value": "#FFFFFF",
          "$extensions": {
            "seed.mode": {
              "light": "#FFFFFF",
              "dark": "#00352F"
            }
          },
          "$description": "§8.3 l.1292 = text-on-action-primary — thumb LIGADO. 4,60:1 claro / 7,39:1 escuro. E o token que NASCEU da medicao: no escuro, o thumb cinza-100 sobre o trilho ligado dava 2,25. No claro ele coincide com o thumb desligado, e isso e a regra colapsando, nao duplicacao."
        }
      },
      "slider": {
        "$description": "v1.23 (2026-08-26): CAMADA 3 do SLIDER. Fonte: seed-componentes.md, linha do trilho, EMENDADA no mesmo dia. Mesmo defeito do switch e mesma causa: a spec mandava cinza-300 (1,91 sobre a pagina) e o token so existia numa regra de escopo dark do preview, entao no tema claro o trilho vazio ficava sem cor. Passa a cinza-500 (3,38). MAS aqui a medicao achou um limite que o switch nao tinha: NENHUM degrau da escala atende os dois pares — o vazio precisa ficar longe do branco da pagina E longe do turquesa do preenchido, e o turquesa-600 mora no meio da escala (cinza-300 da 2,40 contra o preenchido, cinza-500 da 1,36). A decisao nao foi escolher o menos pior: foi ver o que cada par CARREGA. O valor tem canal textual garantido pela propria spec ('valor corrente visivel SEMPRE') e canal de forma no thumb de 24px com borda, entao a divisao preenchido/vazio e o TERCEIRO canal e fica DECORATIVA DECLARADA, com o numero escrito: 1,36 claro / 2,59 escuro. Exigir 3:1 ali seria criar clausula que o canon nunca teve, e clausula nova e decisao do Rafael.",
        "track": {
          "$type": "color",
          "$value": "#788F9D",
          "$extensions": {
            "seed.mode": {
              "light": "#788F9D",
              "dark": "#617683"
            }
          },
          "$description": "= cinza-500 claro / cinza-600 escuro. Trilho NAO preenchido. 3,38:1 / 3,92:1 sobre a pagina."
        }
      }
    },
    "breakpoint": {
      "$type": "dimension",
      "$description": "Escala oficial alinhada ao Tailwind (min-width). NAO gera CSS custom property: media query nao le custom property. Consumidores canonicos: este JSON (app nativo, ferramentas) e theme.screens do Tailwind (produtos web). Supersede o corte 960 do seed-design-system.html v1.0. Faixa de projeto: mobile <640, tablet 640-1023, desktop >=1024. Pior caso de teste: 360px.",
      "sm": {
        "$value": "640px"
      },
      "md": {
        "$value": "768px"
      },
      "lg": {
        "$value": "1024px"
      },
      "xl": {
        "$value": "1280px"
      },
      "2xl": {
        "$value": "1536px"
      }
    },
    "radius": {
      "1": {
        "$type": "dimension",
        "$value": "2px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "2": {
        "$type": "dimension",
        "$value": "4px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "3": {
        "$type": "dimension",
        "$value": "6px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "4": {
        "$type": "dimension",
        "$value": "8px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "5": {
        "$type": "dimension",
        "$value": "10px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "6": {
        "$type": "dimension",
        "$value": "12px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      },
      "8": {
        "$type": "dimension",
        "$value": "16px",
        "$description": "v1.14: escala de raio em passo 2 (o 6px era o valor mais usado do acervo e nao existia na escala)."
      }
    },
    "spacing-half": {
      "1-5": {
        "$type": "dimension",
        "$value": "6px",
        "$description": "v1.14: meio-passo de espaco, medido em 824 (6px) e 417 (10px) ocorrencias fora da escala."
      },
      "2-5": {
        "$type": "dimension",
        "$value": "10px",
        "$description": "v1.14: meio-passo de espaco, medido em 824 (6px) e 417 (10px) ocorrencias fora da escala."
      }
    },
    "control-height": {
      "sm": {
        "$type": "dimension",
        "$value": "32px",
        "$description": "v1.14: altura de controle. O DS nao tinha token e a auditoria mediu botao de 18px a 608px."
      },
      "md": {
        "$type": "dimension",
        "$value": "44px",
        "$description": "v1.23 (2026-08-26): RECONCILIADO com --seed-button-height-* e --seed-field-height-*, que a §1.6 e a §2.5 fixam por escrito em 32/44/52. De 2026-08-15 a 2026-08-26 o DS teve TRES reguas de altura com DOIS numeros. O desempate nao foi por gosto: medido, NENHUM artefato do acervo consome --seed-control-* — os tres consumidores sao a spec, a guarda de paridade e o gemeo. A regua generica era a de papel; vence quem tem spec. O preset compacto (28/32/40) nao muda: e escala de densidade para tela de dado com mouse. Era 40px."
      },
      "lg": {
        "$type": "dimension",
        "$value": "52px",
        "$description": "v1.23 (2026-08-26): RECONCILIADO com --seed-button-height-* e --seed-field-height-*, que a §1.6 e a §2.5 fixam por escrito em 32/44/52. De 2026-08-15 a 2026-08-26 o DS teve TRES reguas de altura com DOIS numeros. O desempate nao foi por gosto: medido, NENHUM artefato do acervo consome --seed-control-* — os tres consumidores sao a spec, a guarda de paridade e o gemeo. A regua generica era a de papel; vence quem tem spec. O preset compacto (28/32/40) nao muda: e escala de densidade para tela de dado com mouse. Era 48px."
      },
      "sm-compacto": {
        "$type": "dimension",
        "$value": "28px",
        "$description": "v1.14: altura de controle. O DS nao tinha token e a auditoria mediu botao de 18px a 608px."
      },
      "md-compacto": {
        "$type": "dimension",
        "$value": "32px",
        "$description": "v1.14: altura de controle. O DS nao tinha token e a auditoria mediu botao de 18px a 608px."
      },
      "lg-compacto": {
        "$type": "dimension",
        "$value": "40px",
        "$description": "v1.14: altura de controle. O DS nao tinha token e a auditoria mediu botao de 18px a 608px."
      }
    }
  }
}
