Checkbox
Construit pe <input type="checkbox"> nativ cu appearance:none. Wrapper-ul .check-item face tot label-ul clickabil. Grupurile folosesc .check-group.
Markup canonic · components/checkbox.json
Stări
Cu sub-label
Orizontal
În context .field
Card variant · .check-item.card
.sublabel · fill selectat solid (--c-accent-tint)<input class="error"> · fundal normal, label + control roșii, chenar roșuReguli — checkbox & radio
Label pe .check-label / .radio-label = .t-ctrl (15/22, ink, weight 400). Sublabel = .t-ctrl-desc (13/18, fog). Aceleași token-uri pe switch — controalele omoloage trebuie să arate sincronizate când apar împreună.
Inputul stă pe flex-shrink:0 cu margin: 2px 0 0 ca să fie centrat optic pe prima linie a label-ului (15/22). Nu modifica fără să verifici alinierea.
Wrap-uiește item-urile verticale într-un grup cu gap: 10px. Variantă orizontală: .row — gap: 16px, flex-wrap.
Adaugă .card pe .check-item / .radio-item când întreg item-ul trebuie să fie clickable cu chenar — selecții vizuale, plan picker, opțiuni mari.