after visible.focus(): visible after hidden ancestor input.focus() with computed style: visible after display none input.focus(): visible after display none from dirty style input.focus(): visible after display none from dirty style offsetWidth: 0 after display none ancestor from dirty style input.focus(): visible after getComputedStyle in dirty display none subtree: rgb(4, 5, 6) after display none from pending animation input.focus(): visible after display none ancestor from pending animation input.focus(): visible after display none from pending descendant invalidation input.focus(): visible after display none from pending slotted invalidation input.focus(): visible after display none from pending :has invalidation input.focus(): visible after display none from pending media query input.focus(): BODY after display none from pending parent media query input.focus(): BODY after detached input.focus(): visible after display contents div.focus(): display-contents after unhidden input.focus(): hidden-ancestor after documentElement.focus(): BODY after focusable documentElement.focus(): HTML after slotted input in hidden slot subtree focus(): visible after slotted input in visible slot subtree focus(): slotted-hidden-focus-target after focused input display none then blur(): BODY after focused input ancestor hidden then blur(): BODY