kShellSeparationShade top-level constant
Quantos passos da rampa neutra separam a surface (rail, header,
assistente) do surfaceContainer (o cartão de conteúdo).
Por que um SHADE e não um ΔT
A rampa neutra já é assimétrica de propósito — passos finos perto do branco,
grossos perto do preto — e a versão escura é a clara invertida. Medindo o
acumulado a partir da base: s50→s300 vale 11.1 tons no claro e 22.2 no
escuro, exatamente 2×. Ou seja: a regra de "dobrar a separação no
escuro" já está embutida na geometria da paleta.
Antes isto era um deltaTone fixo em HCT (14 no claro, 26 no escuro). Três
problemas: o valor caía FORA da rampa e não tinha nome de shade; o 2× tinha
de ser reaplicado à mão a cada ajuste; e nada impedia o valor de aterrissar
em cima de outro token — foi assim que o cartão escuro colidiu com o
preenchimento dos inputs (s200).
Com um shade, os três somem: o 2× vem da rampa e o valor é um stop nomeado.
Implementation
const int kShellSeparationShade = 300;