---
title: "Site Map"
description: "Visual overview of all pages and content on Less Likely"
image: "images/sitemap-visual.svg"
date: "2025-01-08"
date-modified: last-modified
toc: true
page-layout: full
title-block-banner: false
execute:
freeze: false # always recompute the stat counts below, even when posts change
format:
html:
other-links: false
listing:
- id: sm-statistics
contents: "statistics/*.{qmd,Rmd,ipynb}"
type: table
sort: "date desc"
fields: [title, date]
sort-ui: false
filter-ui: false
categories: false
feed: false
page-size: 200
- id: sm-medicine
contents: "medicine/*.{qmd,Rmd,ipynb}"
type: table
sort: "date desc"
fields: [title, date]
sort-ui: false
filter-ui: false
categories: false
feed: false
page-size: 200
- id: sm-nutrition
contents: "nutrition/*.{qmd,Rmd,ipynb}"
type: table
sort: "date desc"
fields: [title, date]
sort-ui: false
filter-ui: false
categories: false
feed: false
page-size: 200
---
```{r}
#| label: sitemap-counts
#| include: false
# Counts the stat boxes display. Recomputed on every render (freeze:false above),
# so they stay accurate as posts are added/removed. Paths are relative to this
# file's directory (the project root).
.count_posts <- function(dir) {
if (!dir.exists(dir)) return(0L)
f <- list.files(dir, pattern = "\\.(qmd|Rmd|ipynb)$", ignore.case = TRUE)
length(f[!startsWith(f, "_")]) # drop _index / _metadata helpers
}
.cats <- c("statistics", "medicine", "nutrition")
.n_per_cat <- vapply(.cats, .count_posts, integer(1))
n_posts <- sum(.n_per_cat) # total blog posts
n_categories <- sum(.n_per_cat > 0) # categories that actually have posts
.top <- list.files(".", pattern = "\\.qmd$") # top-level rendered pages...
.top <- .top[!grepl("^post-template-", .top) & .top != "test-local.qmd"] # ...minus templates/tests
n_pages <- length(.top) + n_posts # total pages on the site
```
```{=html}
<style>
.sitemap-container {
max-width: 1400px;
margin: 2rem auto;
padding: 2rem;
}
.sitemap-intro {
text-align: center;
max-width: 800px;
margin: 0 auto 3rem auto;
color: #6c757d;
}
.sitemap-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin: 3rem 0;
}
.sitemap-section {
background: white;
border: 2px solid #e9ecef;
border-radius: 12px;
padding: 1.5rem;
transition: all 0.3s ease;
}
.sitemap-section:hover {
border-color: #4895ab;
box-shadow: 0 8px 16px rgba(72, 149, 171, 0.15);
transform: translateY(-4px);
}
.sitemap-section-header {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 1rem;
padding-bottom: 0.75rem;
border-bottom: 2px solid #4895ab;
}
.sitemap-icon {
font-size: 2rem;
flex-shrink: 0;
}
.sitemap-section-title {
font-size: 1.3rem;
font-weight: 700;
color: #4895ab;
margin: 0;
}
.sitemap-section-desc {
font-size: 0.9rem;
color: #6c757d;
margin: 0.5rem 0 1rem 0;
}
.sitemap-links {
list-style: none;
padding: 0;
margin: 0;
}
.sitemap-links li {
margin: 0.5rem 0;
}
.sitemap-links a {
color: #495057;
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem;
border-radius: 6px;
transition: all 0.2s;
font-size: 0.95rem;
}
.sitemap-links a:hover {
background: #f8f9fa;
color: #4895ab;
padding-left: 1rem;
}
.sitemap-links a::before {
content: "→";
color: #4895ab;
font-weight: bold;
flex-shrink: 0;
}
.sitemap-count {
background: #e9ecef;
color: #495057;
padding: 0.25rem 0.75rem;
border-radius: 12px;
font-size: 0.85rem;
font-weight: 600;
margin-left: auto;
}
.sitemap-visual {
margin: 4rem 0;
padding: 2rem;
background: #f8f9fa;
border-radius: 12px;
}
.sitemap-visual h2 {
text-align: center;
color: #4895ab;
margin-bottom: 2rem;
}
.tree-diagram {
max-width: 100%;
overflow-x: auto;
padding: 1rem;
}
/* Dark mode support */
@media (prefers-color-scheme: dark) {
.sitemap-section {
background: #2d2d2d;
border-color: #404040;
}
.sitemap-section:hover {
border-color: #5aa9bd;
box-shadow: 0 8px 16px rgba(90, 169, 189, 0.15);
}
.sitemap-section-title {
color: #5aa9bd;
}
.sitemap-section-desc,
.sitemap-intro {
color: #adb5bd;
}
.sitemap-links a {
color: #adb5bd;
}
.sitemap-links a:hover {
background: #404040;
color: #5aa9bd;
}
.sitemap-count {
background: #404040;
color: #adb5bd;
}
.sitemap-visual {
background: #2d2d2d;
}
}
body.quarto-dark .sitemap-section {
background: #2d2d2d;
border-color: #404040;
}
body.quarto-dark .sitemap-section:hover {
border-color: #5aa9bd;
}
body.quarto-dark .sitemap-section-title {
color: #5aa9bd;
}
body.quarto-dark .sitemap-section-desc,
body.quarto-dark .sitemap-intro {
color: #adb5bd;
}
body.quarto-dark .sitemap-links a {
color: #adb5bd;
}
body.quarto-dark .sitemap-links a:hover {
background: #404040;
color: #5aa9bd;
}
body.quarto-dark .sitemap-count {
background: #404040;
color: #adb5bd;
}
body.quarto-dark .sitemap-visual {
background: #2d2d2d;
}
/* Mobile responsive */
@media (max-width: 768px) {
.sitemap-grid {
grid-template-columns: 1fr;
}
.sitemap-container {
padding: 1rem;
}
}
</style>
```
::::::::::::::::: sitemap-container
::: sitemap-intro
Complete navigation map of Less Likely. Explore all pages, blog posts, and resources organized by category.
:::
## Visual Hierarchy
{fig-alt="Visual diagram showing the hierarchical structure of Less Likely website"}
## Statistics
::::::::::::::: {style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin: 2rem 0; text-align: center;"}
::::: {style="padding: 1.5rem; background: #f8f9fa; border-radius: 8px;"}
::: {style="font-size: 2.5rem; font-weight: bold; color: #4895ab;"}
`r n_pages`
:::
::: {style="color: #6c757d;"}
Total Pages
:::
:::::
::::: {style="padding: 1.5rem; background: #f8f9fa; border-radius: 8px;"}
::: {style="font-size: 2.5rem; font-weight: bold; color: #d46c5b;"}
`r n_posts`
:::
::: {style="color: #6c757d;"}
Blog Posts
:::
:::::
::::: {style="padding: 1.5rem; background: #f8f9fa; border-radius: 8px;"}
::: {style="font-size: 2.5rem; font-weight: bold; color: #4895ab;"}
`r n_categories`
:::
::: {style="color: #6c757d;"}
Categories
:::
:::::
::::: {style="padding: 1.5rem; background: #f8f9fa; border-radius: 8px;"}
::: {style="font-size: 2.5rem; font-weight: bold; color: #d46c5b;"}
6
:::
::: {style="color: #6c757d;"}
Main Sections
:::
:::::
:::::::::::::::
## Search & Navigation
Can't find what you're looking for? Try these options:
- **Search**: Press `f`, `/`, or `s` to open site search
- **Browse by Category**: Use the category filters on the [blog page](blog.html)
- **View All Posts**: Check the complete [archive](posts.html)
- **Contact**: Have a question? [Get in touch](contact.html)
------------------------------------------------------------------------
*Site map last updated:* {{< meta date-modified >}}
:::::::::::::::::
Comments