포커스 링은 Tab으로 이동할 때 지금 어떤 요소가 선택됐는지 보여주는 시각 신호입니다. 마우스 사용자에게는 필요 없어 보여서 `outline: none`으로 지워버리는 경우가 흔한데, 그러면 키보드·스위치 사용자는 지금 포커스가 어디 있는지 전혀 알 수 없게 됩니다.
`:focus-visible` 의사 클래스를 쓰면 브라우저가 키보드로 왔는지 마우스로 왔는지를 판단해서, 키보드 포커스일 때만 링을 그려줍니다. 마우스 클릭에는 링이 안 보여 시각적으로 깔끔하고, 키보드 이동에는 항상 보여 접근성도 지킵니다.
데모 왼쪽(`outline: none`)은 Tab으로 이동해도 어떤 버튼이 선택됐는지 표시가 없습니다. 오른쪽(`:focus-visible`)은 이동할 때마다 링이 따라다닙니다.
언제 쓰나
커스텀 버튼·카드 컴포넌트를 만들 때 outline을 지우고 싶다면 반드시 :focus-visible로 대체하세요. 완전히 없애면 절대 안 됩니다.