Laser html.lgs-input-laser · %{KeyboardKeyHitArea}:hover · no glyph badges
RestHoverPressed
EnterEnter hover: glow
Shift onOn + hover: glow
Modifier
Gamepad html.lgs-input-pad · %{Modal>Focused} (virtual focus) · glyph badges
RestFocus at t0 (60 %)FocusPressed (A)
Enter (RT)Enter focus: glow
Shift on (LT)On + focus: glow
Keys unmoved, echo in the bottom band an IME, emoji or Steam's own text row is present (C-D18)
Echo row empty · typing · secret · long text · short-map name · IME composition
Buffered mode Steam's own text row restyled; no echo of ours; keys unmoved
Laser: lit, never white. Hover adds white .08 and a .12 light at the pointer, drawn under the label, at once (no dwell needed: keys never lift). Pressed (%{Modal>Touched}) is white .94 with a dark label, a glow and a 1 px “goes down” shadow. Keys never scale.
Gamepad: lit from within. Steam's virtual focus adds white .28, a .16 light in the upper third and a brighter top highlight (.55). It enters at 60 % on the first frame (P5 lgs-focus-in, keyed on %{Modal>Focused} itself). On white or blue keys focus is the outer glow (P-16), never a fill.
Glyph badges only in gamepad mode (html[data-lgs-vr-mode="gamepad"]): Steam's own %{Modal>ActionButtonGlyph} restyled as 22 kb px badges (30 px × .74). In laser mode they are hidden by opacity, never display: none.
Strings. Field names and Enter labels (Search, Send, Add, Go, Done) come from Steam's localization, found by source text (PLAN §1.15). With no string: English only when the UI language starts with en, else the glyph alone.