diff --git a/_includes/publication_panel.html b/_includes/publication_panel.html
new file mode 100644
index 00000000000..f993be6584a
--- /dev/null
+++ b/_includes/publication_panel.html
@@ -0,0 +1,82 @@
+{% comment %}
+ Renders a blue-bordered publication citation box (same as precice.org / landing page).
+
+ Usage:
+ {% include publication_panel.html title="Exact publication title" %}
+ {% include publication_panel.html pub=pub %}
+ {% include publication_panel.html pub=pub flexible=true wrapper=false show_doi_in_body=true %}
+
+ Parameters:
+ title / pub — lookup or pass publication from site.publications
+ flexible — optional journal fields (fenics related literature)
+ wrapper — wrap in row + col-md-10 offset-md-1 (default: true)
+ show_doi_in_body — append doi link in the citation line
+ require_pub_url — only show Publisher's site when pub-url is set
+{% endcomment %}
+
+{% if include.pub %}
+ {% assign pub = include.pub %}
+{% elsif include.title %}
+ {% assign pub = nil %}
+ {% for p in site.publications %}
+ {% if p.title == include.title %}
+ {% assign pub = p %}
+ {% break %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
+
+{% if pub %}
+ {% if pub.doi %}
+ {% assign publisher_url = pub.doi | prepend: 'https://www.doi.org/' %}
+ {% else %}
+ {% assign publisher_url = pub.pub-url %}
+ {% endif %}
+
+ {% assign use_wrapper = true %}
+ {% if include.wrapper == false %}
+ {% assign use_wrapper = false %}
+ {% endif %}
+
+ {% if use_wrapper %}
+
+
+ {% endif %}
+
+
+
+
+ {% if include.flexible %}
+ {{ pub.authors }} {% if pub.journal.name %} {{ pub.journal.name }}, {% endif %}{% if pub.journal.volume %}Volume {{ pub.journal.volume }}, {% endif %}{% if pub.journal.publisher %}{{ pub.journal.publisher }}, {% endif %}{{ pub.year }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }} {% endif %}.
+ {% elsif pub.journal.issue %}
+ {{ pub.authors }} ,
+ {{ pub.journal.name }},
+ {{ pub.year }},
+ {{ pub.journal.volume }}:{{ pub.journal.issue }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }} {% endif %}.
+ {% else %}
+ {{ pub.authors }} ,
+ {{ pub.journal.name }}{% if pub.journal.volume %},
+ Volume {{ pub.journal.volume }}{% endif %}{% if pub.journal.publisher %},
+ {{ pub.journal.publisher }}{% endif %},
+ {{ pub.year }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }} {% endif %}.
+ {% endif %}
+
+ {% if include.flexible and include.require_pub_url %}
+ {% if pub.pub-url %}
+
Publisher's site
+ {% endif %}
+ {% elsif publisher_url %}
+
Publisher's site
+ {% endif %}
+ {% if pub.bibtex %}
+
Download BibTeX
+ {% endif %}
+
+
+ {% if use_wrapper %}
+
+
+ {% endif %}
+{% endif %}
diff --git a/_includes/sidebar.html b/_includes/sidebar.html
index 73645c9a5b9..3334ec8a057 100644
--- a/_includes/sidebar.html
+++ b/_includes/sidebar.html
@@ -1,74 +1,15 @@
{% assign sidebar = site.data.sidebars[page.sidebar].entries %}
-
-
-
-
diff --git a/_includes/sidebar_recursive.html b/_includes/sidebar_recursive.html
new file mode 100644
index 00000000000..6c7d603a4e2
--- /dev/null
+++ b/_includes/sidebar_recursive.html
@@ -0,0 +1,122 @@
+{% comment %}
+ Recursive sidebar: renders nested doc nav from _data/sidebars via folder.folderitems.
+ Parameters: item (folder node), level (1–4), parent_id (element id for data-bs-parent accordion group).
+ Branch rows use BS5 Collapse (data-bs-toggle, .collapse.show); leaves are plain nav-links.
+ Active state compares page.url (no leading slash) to each item url.
+{% endcomment %}
+
+{% assign page_url_clean = page.url | remove_first: "/" %}
+
+{% assign itm = include.item %}
+{% assign title = itm.title %}
+{% assign url = itm.url %}
+{% assign folderitems = itm.folderitems %}
+{% assign subfolders = itm.subfolders %}
+{% assign subfolderitems = itm.subfolderitems %}
+
+{% assign is_branch = false %}
+{% if include.level == 1 %}
+ {% if folderitems.size > 0 %}
+ {% assign is_branch = true %}
+ {% endif %}
+{% elsif include.level == 3 %}
+ {% assign is_branch = true %}
+{% endif %}
+
+{% if is_branch == false %}
+ {% assign current_url_clean = url | remove_first: "/" %}
+
+
+ {{ title }}
+
+
+{% else %}
+ {% capture current_uid %}{{ include.level }}-{{ title | slugify }}{% endcapture %}
+ {% assign current_id = current_uid | prepend: "sb-" %}
+
+ {% assign any_active = false %}
+ {% assign current_url_clean = url | remove_first: "/" %}
+ {% if page_url_clean == current_url_clean and current_url_clean != "" %}{% assign any_active = true %}{% endif %}
+
+ {% if any_active == false %}
+ {% for fi in folderitems %}
+ {% assign fi_url = fi.url | remove_first: "/" %}
+ {% if page_url_clean == fi_url and fi_url != "" %}{% assign any_active = true %}{% break %}{% endif %}
+ {% for sf in fi.subfolders %}
+ {% for sfi in sf.subfolderitems %}
+ {% assign sfi_url = sfi.url | remove_first: "/" %}
+ {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %}
+ {% endfor %}
+ {% if any_active %}{% break %}{% endif %}
+ {% endfor %}
+ {% if any_active %}{% break %}{% endif %}
+ {% endfor %}
+ {% endif %}
+
+ {% if any_active == false %}
+ {% for sf in subfolders %}
+ {% for sfi in sf.subfolderitems %}
+ {% assign sfi_url = sfi.url | remove_first: "/" %}
+ {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %}
+ {% endfor %}
+ {% if any_active %}{% break %}{% endif %}
+ {% endfor %}
+ {% endif %}
+
+ {% if any_active == false %}
+ {% for sfi in subfolderitems %}
+ {% assign sfi_url = sfi.url | remove_first: "/" %}
+ {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %}
+ {% endfor %}
+ {% endif %}
+
+
+
+ {{ title }}
+
+
+
+{% endif %}
diff --git a/_includes/taglogic.html b/_includes/taglogic.html
index c2f76b014bb..3bdbf6e902b 100644
--- a/_includes/taglogic.html
+++ b/_includes/taglogic.html
@@ -1,4 +1,4 @@
-
The following pages and posts are tagged with {{page.tagName}}
+
The following pages and posts are tagged with {{page.tagName}}
Title Type Excerpt
{% assign thisTag = page.tagName %}
@@ -7,7 +7,7 @@
{% if tag == thisTag %}
{{page.title}}
- Page
+ Page
{% if page.summary %} {{ page.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ page.content | truncatewords: 50 | strip_html }} {% endif %}
{% endif %}
@@ -20,7 +20,7 @@
{% if tag == thisTag %}
{{post.title}}
- Post
+ Post
{% if post.summary %} {{ post.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ post.content | truncatewords: 50 | strip_html }} {% endif %}
{% endif %}
@@ -29,4 +29,3 @@
-
diff --git a/_includes/topnav.html b/_includes/topnav.html
index f160361ce2a..807672c2423 100644
--- a/_includes/topnav.html
+++ b/_includes/topnav.html
@@ -1,35 +1,25 @@
-
+
-
-
+
diff --git a/_layouts/default.html b/_layouts/default.html
index b272a8d1868..7dabfcca123 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -2,61 +2,44 @@
{% include head.html %}
-
-
{% if page.datatable == true %}
@@ -68,14 +51,15 @@
Credit here: http://www.beardedhacker.com/blog/2015/08/28/add-class-attribute-to-markdown-table/
-->
{% endif %}
@@ -85,7 +69,7 @@
{% include news_banner.html onlanding=false %}
-
+
{% unless page.hide_sidebar %}