Package logger provides a structured slog-backed logger for spaniel.
It picks a JSONHandler when stderr is not a TTY (production / CI) and a
TextHandler otherwise (interactive development). Every subsystem should
call With to attach a "subsystem" field so log lines can be filtered by
component.
New returns a fresh *slog.Logger wired to os.Stderr. The handler is chosen
based on whether stderr looks like a terminal; callers that want a specific
handler should build their own logger directly with slog.New.