```ts
export function sketchBars(values: number[], budget: number): string[] {
  if (values.length === 0) {
    throw new Error("Values list cannot be empty");
  }
  if (budget < 1) {
    throw new Error("Budget must be at least one");
  }
  if (values.some(v => v < 0)) {
    throw new Error("All values must be non-negative");
  }

  const largest = Math.max(...values);
  return values.map(v => {
    if (largest === 0) {
      return ".".repeat(budget);
    }
    const filledCells = Math.max(1, Math.round((v * budget) / largest));
    return "#".repeat(filledCells) + ".".repeat(budget - filledCells);
  });
}
```