{{- /* Recursive printer for sections */ -}}
{{- define "llms_print_section" -}}
{{- $section := .section -}}
{{- $depth := .depth -}}
{{- if or (gt (len $section.RegularPages) 0) (gt (len $section.Sections) 0) -}}
{{- $hashes := strings.Repeat (add $depth 1) "#" }}

{{ printf "%s %s" $hashes $section.Title }}

{{- /* Pages in this section */ -}}
{{- range $p := $section.RegularPages }}
  {{- if and (not $p.Params.searchHidden) (ne $p.Layout `archives`) (ne $p.Layout `search`) }}
- [{{ $p.Title }}]({{ $p.Permalink }})
  {{- end -}}
{{- end -}}

{{- /* Recurse into subsections */ -}}
{{- range $s := $section.Sections -}}
{{- template "llms_print_section" (dict "section" $s "depth" (add $depth 1)) -}}
{{- end -}}
{{- end -}}
{{- end -}}

{{- /* Main template starts here */ -}}
# {{ site.Title }}

{{- /* Pages not in any section */ -}}
{{- $orphans := where site.RegularPages "Section" "" -}}
{{ if gt (len $orphans) 0 }}

{{- range $p := $orphans -}}
  {{ if and (not $p.Params.searchHidden) (ne $p.Layout `archives`) (ne $p.Layout `search`) (not $p.IsHome) }}
- [{{ $p.Title }}]({{ $p.Permalink }})
  {{- end -}}
{{- end -}}

{{- end -}}

{{- range site.Sections -}}
{{- template "llms_print_section" (dict "section" . "depth" 1) -}}
{{- end }}
