:root{
  --focus-ring-color: #1a73e8;
  --focus-ring-width: 3px;
  --focus-ring-offset: 2px;
}

:where(
  a[href], button, input:not([type="hidden"]),
  select, textarea, summary,
  [role="button"], [tabindex]:not([tabindex="-1"])
):focus-visible {
  box-shadow: none !important;         /* テーマの薄い影を無効化 */
  text-decoration-thickness: initial;  /* 文字装飾系で誤魔化す系も無力化（念のため） */
}

body :is(
  a[href], button, input:not([type="hidden"]),
  select, textarea, summary,
  [role="button"], [tabindex]:not([tabindex="-1"])
):focus-visible {
  outline: var(--focus-ring-width) solid var(--focus-ring-color) !important;
  outline-offset: var(--focus-ring-offset) !important;
}

.focus-strong:focus-visible {
  outline: 0 !important;
  box-shadow:
    0 0 0 2px Canvas,
    0 0 0 5px var(--focus-ring-color) !important;
}

@media (prefers-contrast: more) {
  body :is(
    a[href], button, input:not([type="hidden"]),
    select, textarea, summary,
    [role="button"], [tabindex]:not([tabindex="-1"])
  ):focus-visible {
    outline-width: 4px !important;
  }
}

@media (forced-colors: active) {
  body :is(
    a[href], button, input:not([type="hidden"]),
    select, textarea, summary,
    [role="button"], [tabindex]:not([tabindex="-1"])
  ):is(:focus, :focus-visible) {
    outline: 2px solid Highlight !important;
    outline-offset: 2px !important;
    box-shadow: none !important;
  }
}
