function ui::logs::fw_row() {
  local ts="${1:-}" client="${2:-}" dest_ip="${3:-}" dest_port="${4:-}" \
        proto="${5:-}" svc_name="${6:-}" count="${7:-1}" \
        w_client="${8:-20}" w_dest="${9:-30}" \
        src_endpoint="${10:-}" w_endpoint="${11:-0}"
 
  local ts_pad client_pad
  ts_pad=$(printf "%-11s" "$ts")
  client_pad=$(printf "%-${w_client}s" "$client")
 
  # ── Source endpoint column ──
  local src_col=""
  if [[ "$w_endpoint" -gt 0 ]]; then
    local src_pad_n
    if [[ -n "$src_endpoint" ]]; then
      local src_resolved
      src_resolved=$(resolve::ip "$src_endpoint" 2>/dev/null || echo "")
      [[ "$src_resolved" == "$src_endpoint" ]] && src_resolved=""
      if [[ -n "$src_resolved" ]]; then
        src_col="${src_endpoint} \033[2m→ ${src_resolved}\033[0m"
      else
        src_col="${src_endpoint}"
      fi
      src_pad_n=$(( w_endpoint - ${#src_endpoint} ))
    else
      src_pad_n="$w_endpoint"
    fi
    [[ $src_pad_n -lt 0 ]] && src_pad_n=0
    src_col="${src_col}$(printf '%*s' "$src_pad_n" '')"
  fi
 
  # ── Destination column ──
  # svc_display: "npm/tcp" or "pihole (icmp)" — used for padding
  # raw_suffix:  dim "(10.0.0.101:3260)" — appended after padding
  local svc_display raw_suffix=""
  if [[ -n "$svc_name" ]]; then
    [[ -n "$dest_port" ]] && svc_display="${svc_name}/${proto}" || svc_display="${svc_name} (${proto})"
    [[ -n "$dest_port" ]] && raw_suffix=" \033[2m(${dest_ip}:${dest_port})\033[0m" \
                          || raw_suffix=" \033[2m(${dest_ip})\033[0m"
  else
    [[ -n "$dest_port" ]] && svc_display="${dest_ip}:${dest_port}/${proto}" \
                          || svc_display="${dest_ip} (${proto})"
  fi
 
  local dest_pad_n=$(( w_dest - ${#svc_display} ))
  [[ $dest_pad_n -lt 0 ]] && dest_pad_n=0
 
  # ── Count ──
  local count_suffix=""
  [[ "$count" -gt 1 ]] && count_suffix=" \033[2m(x${count})\033[0m"
 
  # ── Render ──
  local src_padded
  if [[ -n "$src_endpoint" ]]; then
    local src_colored="$src_endpoint"
    [[ -n "$src_resolved" ]] && src_colored="${src_endpoint} \033[2m→ ${src_resolved}\033[0m"
    src_padded=$(ui::pad_mb "$src_colored" "$w_endpoint")
  else
    src_padded=$(printf "%${w_endpoint}s" "")
  fi

  printf "  %s  %s  %b  \033[1;31m→\033[0m %s%*s%b%b\n" \
    "$ts_pad" "$client_pad" \
    "$src_padded" \
    "$svc_display" "$dest_pad_n" "" \
    "$raw_suffix" "$count_suffix"
}