diff --git a/.filenameignore b/.filenameignore
new file mode 100644
index 0000000..eccf444
--- /dev/null
+++ b/.filenameignore
@@ -0,0 +1,20 @@
+# Paths to ignore for filename/path validation checks.
+# Patterns use fnmatch syntax and are relative to repo root.
+
+_site/**
+.quarto/**
+.github/**
+_extensions/
+assets/bootstrap-grid.min.css
+
+# Common documentation files to ignore
+LICENSE-CODE.md
+LICENSE.md
+LICENSE
+README.md
+README
+README-template.md
+CITATION.cff
+CITATION-template.cff
+_quarto.yml
+404.qmd
\ No newline at end of file
diff --git a/.github/workflows/citation-check.yml b/.github/workflows/citation-check.yml
new file mode 100644
index 0000000..db7b4eb
--- /dev/null
+++ b/.github/workflows/citation-check.yml
@@ -0,0 +1,21 @@
+on:
+ workflow_dispatch:
+ push:
+ branches: [main]
+ paths:
+ - CITATION.cff
+
+name: Check CITATION.cff is Valid
+jobs:
+ Validate-CITATION-cff:
+ runs-on: ubuntu-latest
+ name: Validate CITATION.cff
+ env:
+ GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Validate CITATION.cff
+ uses: dieghernan/cff-validator@v3
diff --git a/.github/workflows/filename-check.yml b/.github/workflows/filename-check.yml
new file mode 100644
index 0000000..7fc2971
--- /dev/null
+++ b/.github/workflows/filename-check.yml
@@ -0,0 +1,22 @@
+name: Filename Checks
+
+on:
+ workflow_dispatch:
+ pull_request:
+ push:
+ branches:
+ - main
+
+jobs:
+ check-names:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Check filenames
+ uses: NeuroShepherd/check-filenames-action@v1
+ with:
+ max-path-length: "65"
+ max-depth: "2"
+ file-types: "html,md,qmd,css,scss,rmd,pdf,png,jpg,svg,yml"
+ ignore-file: ".filenameignore"
+ dotfile-mode: "strip-leading-dot"
\ No newline at end of file
diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml
new file mode 100644
index 0000000..7fa9f73
--- /dev/null
+++ b/.github/workflows/link-checker.yml
@@ -0,0 +1,44 @@
+name: Link Checker
+
+on:
+ schedule:
+ - cron: '0 0 1 * *'
+ workflow_dispatch:
+
+jobs:
+ check-links:
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ steps:
+ - name: Check links
+ id: check
+ uses: filiph/linkcheck@master
+ continue-on-error: true
+ with:
+ arguments: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/
+
+ - name: Create issue on broken links
+ if: steps.check.outputs.exit_code != '0'
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const fs = require('fs');
+ const report = fs.readFileSync('log', 'utf8');
+
+ const { data: issues } = await github.rest.issues.listForRepo({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ state: 'open',
+ labels: 'link-checker'
+ });
+
+ if (issues.length === 0) {
+ await github.rest.issues.create({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ title: 'đ Broken Links Found on Site',
+ body: `The monthly link checker detected broken links.\n\n${report}`,
+ labels: ['link-checker']
+ });
+ }
\ No newline at end of file
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
new file mode 100644
index 0000000..a1937d4
--- /dev/null
+++ b/.github/workflows/publish.yaml
@@ -0,0 +1,106 @@
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 23 * * 0"
+ push:
+ branches: [main]
+
+name: Render Quarto Site
+
+jobs:
+ quarto-publish:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up Quarto
+ uses: quarto-dev/quarto-actions/setup@v2
+ with:
+ tinytex: true
+
+ - name: Install system dependencies
+ run: |
+ sudo apt-get update
+ sudo apt install -y \
+ libcurl4-openssl-dev \
+ libfontconfig1-dev \
+ libssl-dev \
+ libxml2-dev \
+ libpng-dev \
+ libjpeg-dev \
+ libtiff-dev \
+ libcairo2-dev \
+ libxt-dev \
+ libfreetype6-dev \
+ libharfbuzz-dev \
+ libfribidi-dev \
+ zlib1g-dev \
+ libv8-dev \
+ libglpk-dev \
+ librsvg2-bin
+
+ - name: Install R with renv
+ uses: r-lib/actions/setup-r@v2
+ with:
+ r-version: renv
+ if: ${{ hashFiles('renv.lock') != '' }}
+
+ - name: Install R Dependencies with renv
+ uses: r-lib/actions/setup-renv@v2
+ with:
+ cache-version: 1
+ if: ${{ hashFiles('renv.lock') != '' }}
+
+ - name: Install R latest
+ uses: r-lib/actions/setup-r@v2
+ if: ${{ hashFiles('renv.lock') == '' }}
+
+ - name: Set R library path (no lockfile)
+ run: echo "R_LIBS_USER=$HOME/.local/lib/R/site-library" >> "$GITHUB_ENV"
+ if: ${{ hashFiles('renv.lock') == '' }}
+
+ - name: Cache R library (no lockfile)
+ uses: actions/cache@v4
+ with:
+ path: ~/.local/lib/R/site-library
+ key: ${{ runner.os }}-r-nolock-${{ hashFiles('**/*.R', '**/*.Rmd', '**/*.qmd', '_quarto.yml') }}
+ restore-keys: |
+ ${{ runner.os }}-r-nolock-
+ if: ${{ hashFiles('renv.lock') == '' }}
+
+ - name: Install R latest dependencies
+ run: |
+ lib <- Sys.getenv("R_LIBS_USER")
+ if (nzchar(lib)) {
+ dir.create(lib, recursive = TRUE, showWarnings = FALSE)
+ .libPaths(c(lib, .libPaths()))
+ }
+ install.packages("renv")
+ install.packages("rmarkdown")
+ install.packages("yaml")
+ deps <- unique(stats::na.omit(renv::dependencies()$Package))
+ if (length(deps) > 0) install.packages(deps)
+ shell: Rscript {0}
+ if: ${{ hashFiles('renv.lock') == '' }}
+
+ - name: Ensure Quarto R runtime packages
+ run: |
+ lib <- Sys.getenv("R_LIBS_USER")
+ if (nzchar(lib)) {
+ dir.create(lib, recursive = TRUE, showWarnings = FALSE)
+ .libPaths(c(lib, .libPaths()))
+ }
+ pkgs <- c("knitr", "rmarkdown")
+ missing <- pkgs[!vapply(pkgs, requireNamespace, logical(1), quietly = TRUE)]
+ if (length(missing) > 0) install.packages(missing)
+ shell: Rscript {0}
+
+ - name: Render and Publish
+ uses: quarto-dev/quarto-actions/publish@v2
+ with:
+ target: gh-pages
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
deleted file mode 100644
index ea88852..0000000
--- a/.github/workflows/publish.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-on:
- workflow_dispatch:
- push:
- branches: [main]
-
-name: Quarto Publish
-
-jobs:
- build-deploy:
- runs-on: ubuntu-latest
- permissions:
- contents: write
- steps:
- - name: Check out repository
- uses: actions/checkout@v4
-
- - name: Set up Quarto
- uses: quarto-dev/quarto-actions/setup@v2
-
- - name: Install R
- uses: r-lib/actions/setup-r@v2
- with:
- r-version: '4.5.3'
-
- - name: Install R Packages
- uses: r-lib/actions/setup-r-dependencies@v2
- with:
- cache-version: 1
- packages: |
- any::rmarkdown
- any::dplyr
- any::ggplot2
- any::plotly
- any::sessioninfo
-
- - name: Render and Publish
- uses: quarto-dev/quarto-actions/publish@v2
- with:
- target: gh-pages
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml
new file mode 100644
index 0000000..c8ef65f
--- /dev/null
+++ b/.github/workflows/style.yaml
@@ -0,0 +1,27 @@
+on:
+ workflow_dispatch:
+
+name: Air Formatting
+
+permissions:
+ contents: write
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+
+ - name: Install Air
+ uses: posit-dev/setup-air@v1
+
+ - name: Format
+ run: air format .
+
+ - name: Commit and push changes
+ uses: stefanzweifel/git-auto-commit-action@v7
+ with:
+ commit_message: "Style code (Air)"
diff --git a/.github/workflows/update-extension.yml b/.github/workflows/update-extension.yml
new file mode 100644
index 0000000..4e52ef7
--- /dev/null
+++ b/.github/workflows/update-extension.yml
@@ -0,0 +1,32 @@
+name: Update Tutorial Template Extension
+
+on:
+ schedule:
+ - cron: "0 0 2 * *"
+ workflow_dispatch:
+
+permissions: read-all
+
+jobs:
+ update-downstream-tutorials:
+ # prevent action from running in actual extension repo--else, recursive installations
+ # only users of the extension should have these auto-updates
+ if: github.repository != 'lmu-osc/tutorial-template'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+
+ - name: Setup Quarto
+ uses: quarto-dev/quarto-actions/setup@v2
+
+ - name: Update tutorial-template extension
+ run: quarto update lmu-osc/tutorial-template --no-prompt
+
+ - uses: stefanzweifel/git-auto-commit-action@v7
+ with:
+ commit_message: "Update tutorial-template extension (GHA)"
diff --git a/.gitignore b/.gitignore
index 330a18e..34de807 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,3 +58,12 @@ rsconnect/
.httr-oauth
.quarto
_site/
+**_files/
+
+**/*.quarto_ipynb
+
+# ignore posi assistant settings
+.posit/assistant
+
+# ignore individual file
+plot-trait-evolution.html
\ No newline at end of file
diff --git a/404.qmd b/404.qmd
new file mode 100644
index 0000000..515733c
--- /dev/null
+++ b/404.qmd
@@ -0,0 +1,14 @@
+---
+title: Uh-oh, looks like the page is missing!
+description: The page you are looking for cannot be found đ
+---
+
+The page you are looking for either does not exist or has been moved. Please check the URL and try again. If you believe this is an error, please contact the website administrator for assistance.
+
+Note: many pages within our old tutorials have been moved to new locations as part of standardization efforts. It's likely the page you are looking for has been moved to a new location within the site.
+
+
diff --git a/CITATION.cff b/CITATION.cff
index e43be6e..19cf27d 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -6,9 +6,21 @@ authors:
orcid: "https://orcid.org/0000-0002-2378-4915"
affiliation:
- name: "University of Sheffield"
- ror: " https://ror.org/05krs5044"
+ ror: "https://ror.org/05krs5044"
+- family-names: "Ihle"
+ given-names: "Malika"
+ orcid: "https://orcid.org/0000-0002-9543-9310"
+ affiliation:
+ - name: "LMU Open Science Center"
+ ror: "https://ror.org/029e6qe04"
+- family-names: "Kenny"
+ given-names: "Adam"
+ orcid: "https://orcid.org/0000-0002-1316-7382"
+ affiliation:
+ - name: "University of Oxford"
+ ror: "https://ror.org/052gg0110"
title: "Collaborative coding with GitHub and RStudio"
-version: 0.1.0
+version: 0.2.0
doi: "DOI_HERE_AFTER_GENERATED"
date-released: 2024-01-15
repository-code: "https://github.com/lmu-osc/Collaborative-RStudio-GitHub"
@@ -26,4 +38,4 @@ preferred-citation:
ror: "https://ror.org/029e6qe04"
repository-code: "https://github.com/lmu-osc/Collaborative-RStudio-GitHub"
url: "https://lmu-osc.github.io/Collaborative-RStudio-GitHub/"
- type: "book"
\ No newline at end of file
+ type: "book"
diff --git a/Collaborative-RStudio-GitHub.Rproj b/Collaborative-RStudio-GitHub.Rproj
index d64e28b..9b8c091 100644
--- a/Collaborative-RStudio-GitHub.Rproj
+++ b/Collaborative-RStudio-GitHub.Rproj
@@ -1,4 +1,5 @@
Version: 1.0
+ProjectId: e6cff1b6-d495-44c0-9f43-33511fbae88b
RestoreWorkspace: Default
SaveWorkspace: Default
diff --git a/README.md b/README.md
index 79b7fa7..e83c6ea 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ In this session, you will
* observe the outcome of all contributions merged by your collaborator
* **pull the upstream repository into your fork** (i.e. update your fork to reflect all the changes that happened in your collaborator's original repository)
-
+
In this example, the file you will contribute is required to simulate the evolutionary trajectory of an imaginary bird speciesâ body size. We will use RStudio and GitHub to collate all species files and plot them all up together at the end. We will also discover the skull and beak shapes associated with each species you contributed (after they 'evolved' through a simple brownian motion model which assumes steps to progress completely at random).
diff --git a/_extensions/lmu-osc/tutorial-template/_extension.yml b/_extensions/lmu-osc/tutorial-template/_extension.yml
new file mode 100644
index 0000000..b1fce78
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extension.yml
@@ -0,0 +1,48 @@
+title: tutorial-template
+author: Patrick Callahan
+description: A template website for the LMU Open Science Center's tutorials
+version: 1.0.4
+license: CC0-1.0
+quarto-required: ">=1.9.0"
+contributes:
+ metadata:
+ project:
+ brand: _extensions/lmu-osc/osc-brand/brand.yml
+ project:
+ project:
+ type: website
+ website:
+ search:
+ location: sidebar
+ repo-actions: [edit, source, issue]
+ back-to-top-navigation: true
+ page-navigation: true
+ # favicon: Quarto detects the "small" image from the brand file automatically
+ reader-mode: true
+ navbar:
+ background: primary
+ logo: small
+ format: tutorial-template-html+tutorial
+ formats:
+ html+tutorial:
+ theme:
+ light:
+ [flatly, brand, _extensions/lmu-osc/osc-brand/lmu-osc-custom.scss]
+ dark: [darkly, brand, _extensions/lmu-osc/osc-brand/lmu-osc-custom.scss]
+ toc: true
+ toc-title: " "
+ code-tools: true
+ code-overflow: wrap
+ code-copy: true
+ code-link: true
+ smooth-scroll: true
+ link-external-icon: true
+ link-external-newwindow: true
+ footnotes-hover: true
+ citations-hover: true
+ crossrefs-hover: true
+ grid:
+ sidebar-width: 300px
+ css:
+ - assets/bootstrap-grid.min.css
+ html+base: osc-brand-html
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml
new file mode 100644
index 0000000..2a863cd
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml
@@ -0,0 +1,16 @@
+title: LMU Open Science Center Brand
+author: Patrick Callahan
+version: 1.0.2
+url: https://github.com/lmu-osc/osc-brand
+description: LMU Open Science Center brand assets and default HTML format
+license: MIT
+quarto-required: ">=1.9.0"
+contributes:
+ metadata:
+ project:
+ brand: brand.yml
+ formats:
+ html:
+ theme:
+ light: [flatly, brand, lmu-osc-custom.scss]
+ dark: [darkly, brand, lmu-osc-custom.scss]
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml
new file mode 100644
index 0000000..3dd6c6f
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml
@@ -0,0 +1,120 @@
+# minimal brand.yml enabling dark mode
+
+meta:
+ name:
+ full: LMU Open Science Center
+ short: OSC
+ link:
+ home: https://www.osc.lmu.de/
+ github: https://github.com/lmu-osc
+ bluesky: https://bsky.app/profile/lmu-osc.bsky.social
+ description: |
+ Home of open science praxis at Ludwig-Maximilian UniversitĂ€t MĂŒnchen.
+ founded: 2019
+ author: Pat Callahan
+
+# replace with your brand colors, logos, and typography!
+color:
+ palette:
+ lmu-green: "#00883A"
+ lmu-black: "#232323"
+ lmu-white: "#FFF"
+ lmu-darkgrey: "#626468"
+ lmu-darkgray: "#626468"
+ lmu-middlegrey: "#C0C1C3"
+ lmu-middlegray: "#C0C1C3"
+ lmu-lightgrey: "#E6E6E7"
+ lmu-lightgray: "#E6E6E7"
+ lmu-lichtgrau: "#F5F5F5"
+ lmu-blue: "#0F1987"
+ lmu-cyan: "#009FE3"
+ lmu-violet: "#8C4091"
+ lmu-red: "#D71919"
+ lmu-orange: "#F18700"
+ background:
+ light: lmu-white
+ dark: lmu-black
+ foreground:
+ light: lmu-black
+ dark: lmu-white
+ primary:
+ light: lmu-green
+ dark: lmu-green
+ secondary:
+ light: lmu-black
+ dark: lmu-middlegray
+ tertiary:
+ light: lmu-blue
+ dark: lmu-violet
+ success:
+ light: lmu-cyan
+ dark: lmu-cyan
+ info:
+ light: lmu-violet
+ dark: lmu-violet
+ warning:
+ light: lmu-orange
+ dark: lmu-orange
+ danger:
+ light: lmu-red
+ dark: lmu-red
+
+logo:
+ images:
+ icon:
+ path: lmu-osc-favicon.jpg
+ alt: "LMU Open Science Center open book icon"
+ default:
+ path: lmu-osc-logo.svg
+ alt: "LMU Open Science Center logo"
+ dark:
+ path: lmu-osc-logo-dark.svg
+ alt: "LMU Open Science Center logo"
+ large:
+ path: lmu-osc-logo-large.jpg
+ alt: "LMU Open Science Center logo, large"
+ small: icon
+ medium:
+ light: default
+ dark: dark
+ large:
+ light: large
+ dark: large
+
+# https://www.lmu.de/de/die-lmu/struktur/zentrale-universitaetsverwaltung/presse-und-kommunikation-puk/lmu-brand-guide/designgrundsaetze/schrift/
+# Compatil is the official font, but license limited. Online content should use Roboto, and other software e.g. presentations use Arial
+typography:
+ fonts:
+ - family: Roboto
+ source: google
+ - family: Arial
+ source: google
+ - family: Fira Code
+ source: google
+ base:
+ family: "Roboto, Arial"
+ # size: 1.1rem
+ # line-height: 1.65
+ # weight:
+ # style:
+ headings:
+ family: "Roboto, Arial"
+ color: secondary
+ monospace:
+ family: "Fira Code"
+ # size:
+ # weight:
+ monospace-inline:
+ family: "Fira Code"
+ # color:
+ # background-color:
+ monospace-block:
+ family: "Fira Code"
+ # line-height:
+ # color:
+ # background-color:
+ # link:
+ # weight:
+ # color:
+ # background-color:
+ # decoration:
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss
new file mode 100644
index 0000000..dd0d58e
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss
@@ -0,0 +1,52 @@
+/*-- scss:defaults --*/
+
+
+// Brand palette fallbacks (used when brand.yml isn't loaded, e.g., individual file preview)
+// When brand.yml IS loaded via project metadata, these !default values are overridden
+// Ideally, this code can be removed in the future when/if the brand.yml file extends to
+// previews of indidviudal files
+$brand-lmu-green: #00883A !default;
+$brand-lmu-black: #232323 !default;
+$brand-lmu-white: #FFF !default;
+$brand-lmu-darkgrey: #626468 !default;
+$brand-lmu-darkgray: #626468 !default;
+$brand-lmu-middlegrey: #C0C1C3 !default;
+$brand-lmu-middlegray: #C0C1C3 !default;
+$brand-lmu-lightgrey: #E6E6E7 !default;
+$brand-lmu-lightgray: #E6E6E7 !default;
+$brand-lmu-lichtgrau: #F5F5F5 !default;
+$brand-lmu-blue: #0F1987 !default;
+$brand-lmu-cyan: #009FE3 !default;
+$brand-lmu-violet: #8C4091 !default;
+$brand-lmu-red: #D71919 !default;
+$brand-lmu-orange: #F18700 !default;
+
+/*-- scss:rules --*/
+
+
+#quarto-content
+h1, #quarto-content h1[class], #quarto-content .h1[class],
+h2, #quarto-content h2[class], #quarto-content .h2[class],
+h3, #quarto-content h3[class], #quarto-content .h3[class] {
+ margin-top: 1.33rem;
+ margin-bottom: 0.75rem;
+}
+
+#quarto-content
+h4, #quarto-content h4[class], #quarto-content .h4[class],
+h5, #quarto-content h5[class], #quarto-content .h5[class],
+h6, #quarto-content h6[class], #quarto-content .h6[class] {
+ margin-top: 0.66rem;
+ margin-bottom: 0.5rem;
+}
+
+#quarto-content
+h2, #quarto-content h2[class], #quarto-content .h2[class] {
+ border-bottom: $brand-lmu-violet 2px solid;
+}
+
+#quarto-content
+h3, #quarto-content h3[class], #quarto-content .h3[class] {
+ border-bottom: $brand-lmu-violet 1.5px solid;
+ padding-bottom: 0.25rem;
+}
\ No newline at end of file
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-favicon.jpg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-favicon.jpg
new file mode 100644
index 0000000..a06a839
Binary files /dev/null and b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-favicon.jpg differ
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg
new file mode 100644
index 0000000..338367e
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg
@@ -0,0 +1,281 @@
+
+
+
+
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg
new file mode 100644
index 0000000..25bfdcc
Binary files /dev/null and b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg differ
diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg
new file mode 100644
index 0000000..e7b48ef
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg
@@ -0,0 +1,281 @@
+
+
+
+
diff --git a/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css b/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css
new file mode 100644
index 0000000..82bb1bc
--- /dev/null
+++ b/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap Grid v5.3.8 (https://getbootstrap.com/)
+ * Copyright 2011-2025 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file
diff --git a/_quarto.yml b/_quarto.yml
index 143ff4c..8bb4a8e 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -1,56 +1,75 @@
+# Begin Project
project:
- type: website
-
-
+ type: tutorial-template
+ render:
+ - "*.qmd"
+ - "!plot-trait-evolution.qmd"
+# End Project
+# Begin Website
+repo-url: https://github.com/lmu-osc/Collaborative-RStudio-GitHub
website:
- title: ""
+ title: "Collaborative coding with GitHub and RStudio"
page-footer:
- center: "Copyright, 2024 Open Science Center at LMU Munich"
border: false
- search:
- location: sidebar
+ center: © 2024 Anna Krystalli, Malika Ihle, Adam Kenny. Published by LMU Open Science Center. Licensed under CC BY-SA 4.0.
repo-url: https://github.com/lmu-osc/Collaborative-RStudio-GitHub
- repo-actions: [edit, issue]
- page-navigation: true
- favicon: assets/LMU-OSC_favicon.jpg
- margin-header: |
- {width="175"}
+
navbar:
+ right:
+ - about.qmd
left:
- - href: index.md
+ - href: index.qmd
+ text: Home
+ tools:
+ - icon: github
+ menu:
+ - text: Source Code
+ href: https://github.com/lmu-osc/Collaborative-RStudio-GitHub
+ - text: Report a Bug
+ href: https://github.com/lmu-osc/Collaborative-RStudio-GitHub/issues
+ - icon: house-heart
+ url: https://www.osc.lmu.de/
sidebar:
- style: docked
+ style: "docked"
contents:
- - text: "Home"
- href: index.md
+ - text: "Overview"
+ href: index.qmd
- section: "Tutorial"
contents:
- - href: fork.md
+ - href: fork/index.qmd
text: "Fork a Repo"
- - href: clone.md
+ - href: clone/index.qmd
text: "Clone a Repo"
- - href: commit.md
+ - href: commit/index.qmd
text: "Commit to a Project"
- - href: push.md
+ - href: push/index.qmd
text: "Push Changes"
- - href: pull-request.md
+ - href: pull-request/index.qmd
text: "Pull Request"
- - href: merge.md
+ - href: merge/index.qmd
text: "Merge Changes"
- - href: pull-upstream.md
+ - href: pull-upstream/index.qmd
text: "Pull Upstream"
+# End Website
-format:
- html:
- theme:
- - cosmo
- - custom.scss
- css: styles.css
- toc: true
- include-in-header:
- - file: matomo-analytics.html
+# Begin Includes
+include-in-header:
+ - file: matomo-analytics.html
+include-after-body:
+ - file: footer/footer.html
+# End Includes
+# Begin Format
+format:
+ tutorial-template-html+tutorial:
+ css:
+ - footer/footer-style.css
+# End Format
+# Begin Editor
+editor: source
+# End Editor
+bibliography: references.bib
diff --git a/about.qmd b/about.qmd
new file mode 100644
index 0000000..b52eead
--- /dev/null
+++ b/about.qmd
@@ -0,0 +1,45 @@
+---
+title: "About"
+citation:
+ type: "webpage"
+ title: "Collaborative coding with GitHub and RStudio"
+ container-title: "LMU Open Science Center"
+ url: https://lmu-osc.github.io/Collaborative-RStudio-GitHub/
+ doi: "DOI HERE"
+author:
+ - name: Anna Krystalli
+ roles: [conceptualization, funding acquisition, methodology, software, writing - original draft, writing - editing & review]
+ affiliation:
+ - name: University of Sheffield
+ ror: https://ror.org/05krs5044
+ - name: Malika Ihle
+ roles: [project administration, supervision, writing - original draft, writing - editing & review]
+ affiliation:
+ - id: osc
+ name: LMU Open Science Center
+ ror: https://ror.org/029e6qe04
+ isni: 000000041936973X
+ - name: Adam Kenny
+ roles: [software, writing - original draft, writing - editing & review]
+ affiliation:
+ - name: University of Oxford
+google-scholar: true
+---
+
+## Contributors
+
+This site was authored by Anna Krystalli, Malika Ihle, and Adam Kenny.
+
+## Licenses
+
+The overall project is available under the [**CC BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/) license found at [LICENSE](LICENSE.md); all code without any narrative text is also (at your option) available under the [**CC0 1.0 Universal**](https://creativecommons.org/publicdomain/zero/1.0/) license found at [LICENSE-CODE](LICENSE-CODE.md).
+
+Why two licenses? The CC BY-SA 4.0 license is for the content of the website, while the CC0 1.0 Universal license is for the code and configuration files. This is a common practice for websites that include code snippets and other content that may be reused in other projects, particularly because the CC BY-SA 4.0 license is not intended to be used with software.
+
+## Notes
+
+This tutorial was primarily written in 2024 using RStudio and GitHub. Major changes can be found at the website [https://lmu-osc.github.io/Collaborative-RStudio-GitHub/](https://lmu-osc.github.io/Collaborative-RStudio-GitHub/) for the most up-to-date information, and to confirm that our tutorial is not out-of-date.
+
+## Tutorial Template Quarto Extension
+
+This tutorial was written using the [`lmu-osc/tutorial-template`](https://github.com/lmu-osc/tutorial-template) Quarto extension [@callahan2026].
diff --git a/assets/files-tab.png b/assets/files-tab.png
index d097a12..0c8e06b 100644
Binary files a/assets/files-tab.png and b/assets/files-tab.png differ
diff --git a/assets/knit.png b/assets/knit.png
deleted file mode 100755
index f3dea0b..0000000
Binary files a/assets/knit.png and /dev/null differ
diff --git a/assets/lmu-osc-favicon.jpg b/assets/lmu-osc-favicon.jpg
new file mode 100644
index 0000000..a06a839
Binary files /dev/null and b/assets/lmu-osc-favicon.jpg differ
diff --git a/assets/lmu-osc-logo.svg b/assets/lmu-osc-logo.svg
new file mode 100644
index 0000000..e7b48ef
--- /dev/null
+++ b/assets/lmu-osc-logo.svg
@@ -0,0 +1,281 @@
+
+
+
+
diff --git a/assets/render.png b/assets/render.png
new file mode 100644
index 0000000..6c9e70c
Binary files /dev/null and b/assets/render.png differ
diff --git a/clone.md b/clone/index.qmd
similarity index 77%
rename from clone.md
rename to clone/index.qmd
index 05789f5..14004b4 100644
--- a/clone.md
+++ b/clone/index.qmd
@@ -1,46 +1,48 @@
---
title: Clone your GitHub repository
+aliases: [clone.html]
+
---
***
1. **GitHub**: click on the green `<> Code` button, choose the **SSH** URL to secure your connection, and copy **your** repository's URL.
- 
+ 
2. **RStudio**: create a new project
- 
+ 
3. **RStudio**: select `Checkout a project from a version control repository`
- 
+ 
4. **RStudio**: select `Clone a project from a Git repository`
- 
+ 
5. **RStudio**: paste the URL of **your** GitHub repository into 'Repository URL'. Do not locate this new Git repository in the folder created in the first tutorial (i.e. so that each folder has its own Git database). Click `Create Project`. Your password will be requested.
- 
+ 
6. **RStudio**: Click on the Files tab to check that it contains all the files from the GitHub repository
- 
+ 
***
diff --git a/commit.md b/commit/index.qmd
similarity index 88%
rename from commit.md
rename to commit/index.qmd
index 4dcf434..b2011f5 100644
--- a/commit.md
+++ b/commit/index.qmd
@@ -1,5 +1,7 @@
---
title: Commit changes locally
+aliases: [commit.html]
+
---
***
@@ -7,15 +9,15 @@ To avoid conflict during this collaborative coding exercice (i.e. contributors e
1. **RStudio**: select `params/params_tmpl.R` and click on 'More', 'Copy', and give it the name of your imaginary species or your name. **Please to not overwrite or edit the file `params/params_tmpl.R`.**
- 
- 
+ 
+ 
2. **RStudio**: edit your `.R` script
- 
+ 
The parameters each participants need to supply are:
@@ -27,22 +29,21 @@ To avoid conflict during this collaborative coding exercice (i.e. contributors e
(optional) If you want, you can use the RStudio colour picker to select a color. If you don't have it installed, type `install.packages("colourpicker")` in your console.
-
+
3. **RStudio**: save your file and in the Git tab, tick the box next to *** **your new script ONLY** *** to stage your file and click 'commit'.
- 
+ 
4. **RStudio**: supply a descriptive message of the commit and click `commit`
- 
+ 
***
-
diff --git a/custom.scss b/custom.scss
deleted file mode 100644
index 442fd2b..0000000
--- a/custom.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-/*-- scss:defaults --*/
-// Base document colors
-$navbar-bg: #009933;
-$link-color: #006426;
-$sidebar-hl: #006426;
diff --git a/footer/accessibilty.qmd b/footer/accessibilty.qmd
new file mode 100644
index 0000000..9ed86c5
--- /dev/null
+++ b/footer/accessibilty.qmd
@@ -0,0 +1,122 @@
+---
+title: "Accessibility"
+page-layout: full
+---
+
+
+
+:::{.accessibility-container}
+
+The Ludwig-Maximilians-UniversitĂ€t MĂŒnchen strives to make its offers accessible in accordance with § 9 Act on Digitalisation in the Free State of Bavaria (Bayerisches Digitalgesetz â BayDig).
+
+This Accessibility Statement applies to applications available at [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html), [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) and all subdomain pages.
+
+#### Status of Compliance
+
+Partially compliant: This application partially corresponds to § 1 BayEGovV.
+
+##### Legal Name
+Ludwig-Maximilians-UniversitĂ€t MĂŒnchen
+
+##### Website(s):
+[https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html), [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) and all subdomain pages.
+
+#### Known Accessibility Issues
+List and explanation of the problems encountered when implementing the accessibility of these websites
+
+##### Content Not Accessible to People With Disabilities
+- Apart from the main pages, alternative text-based content for images and tables may be missing. There may also be errors in content hierarchy and links may be unintelligible.
+- PDF documents created before 09/23/2018 have not yet been converted to a fully accessible format.
+- Some documents have been provided by institutions of the LMU, which are not yet all available in a fully accessible version.
+- Many of our videos also lack subtitles and audio descriptions.
+We will be adding written directions for the maps used to give directions.
+- Quotes are often not indicated as such using the appropriate HTML tag.
+- Responsive design (for viewing on mobile devices) is only partially available for the websites, screen orientation is otherwise limited to landscape format. For non-responsive pages, texts do not wrap correctly in a small viewport.
+- Fields for inputting user data are not always sufficiently designated as such.
+- Words or passages in other languages are not always indicated as such.
+- Because of the Google Search plugin, the criteria for "valid HTML text" is not being fulfilled.
+
+#### Explanation
+
+All LMU websites are currently undergoing a complete relaunch. It therefore no longer makes sense to revise the existing websites.\
+The deficiencies of the old website have been listed above.
+
+
+**Creation Date**: 09/22/2019\
+**Methodology**: Self-assessment
+
+#### Feedback Mechanism
+As a user, you can inform us of any shortcomings in complying with accessibility requirements or request information in an accessible format that is not required to be displayed in an accessible format.
+
+##### Contact Information
+Unit VI.5 Internet Services\
+MartiusstraĂe 4\
+80802 Munich\
+Mail: [it.internet@verwaltung.uni-muenchen.de](mailto:it.internet@verwaltung.uni-muenchen.de)\
+Phone: +49 (0) 89 / 2180-9832
+
+#### Enforcement Procedure
+If a request for contact remains unanswered in whole or in part within six weeks, the Landesamt fĂŒr Digitalisierung, Breitband und Vermessung (Agency for Digitisation, High-Speed Internet and Surveying) will, at the request of the user, examine whether measures are necessary with regard to the monitoring of the obligated party.
+
+##### Contact information of the agency responsible for the enforcement procedure
+Landesamt fĂŒr Digitalisierung, Breitband und Vermessung\above
+AlexandrastraĂe 4\
+80538 Munich\
+Phone: +49 89 2129-1111\
+Fax: +49 89 2129-1113\
+Email:[service@geodaten.bayern.de](mailto:service@geodaten.bayern.de)\
+[https://www.ldbv.bayern.de/service/kontakt/](https://www.ldbv.bayern.de/service/kontakt/)
+
+##### Other Help Services
+Students with disabilities are supported by the [Beratungsstelle fĂŒr Studierende mit Behinderung und chronischer Erkrankung](https://www.lmu.de/de/workspace-fuer-studierende/support-angebote/studieren-mit-beeintraechtigung/) (Counselling Center for Students with Disabilities and Chronic Illnesses).
+
+The [Schwerbehindertenvertretung (Representative for Disabled Persons)](https://login.lmu.de/idp/profile/SAML2/Redirect/SSO?execution=e3s1) (access protected on the service portal) can support employees.
+
+:::
\ No newline at end of file
diff --git a/footer/footer-style.css b/footer/footer-style.css
new file mode 100644
index 0000000..12cb5e8
--- /dev/null
+++ b/footer/footer-style.css
@@ -0,0 +1,21 @@
+
+.osc-footer-card {
+ --osc-primary-green: #00883A;
+ background-color: var(--osc-primary-green);
+}
+
+.osc-footer-socials a:hover {
+ transform: scale(1.05);
+ filter: brightness(1.2);
+ transition: all 0.2s ease;
+}
+
+.osc-footer-card a:focus-visible {
+ outline: 2px solid #FFD700;
+ outline-offset: 2px;
+}
+
+/* no external window thing for the icons */
+.osc-footer-socials a::after {
+ display: none !important;
+}
\ No newline at end of file
diff --git a/footer/footer.html b/footer/footer.html
new file mode 100644
index 0000000..f2e2998
--- /dev/null
+++ b/footer/footer.html
@@ -0,0 +1,91 @@
+
diff --git a/footer/imprint.qmd b/footer/imprint.qmd
new file mode 100644
index 0000000..ddff8e9
--- /dev/null
+++ b/footer/imprint.qmd
@@ -0,0 +1,112 @@
+---
+title: "Imprint and Disclaimer"
+format:
+ html:
+ toc: false
+ page-layout: full
+---
+
+
+
+:::{.imprint-container}
+
+Information pursuant to § 5 Telemedia Law and § 18 Abs. 2 Medienstaatsvertrag (MStV)
+
+Ludwig-Maximilians-UniversitĂ€t MĂŒnchen is a state institution of the Free State of Bavaria and a legal entity under public law (Art. 4 (1) sentence 1 BayHIG). It is legally represented by its President, Professor Dr. med. Dr. h.c. Matthias H. Tschöp.
+
+#### Address
+Ludwig-Maximilians-UniversitĂ€t MĂŒnchen\
+Geschwister-Scholl-Platz 1\
+80539 Munich\
+Phone: +49 (0) 89 / 2180-0
+
+Web presence: [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) \
+Contact: [poststelle@verwaltung.uni-muenchen.de](mailto:poststelle@verwaltung.uni-muenchen.de)\
+[Addition contact information](https://www.lmu.de/en/index.html)
+
+#### Notices for encrypted communication
+
+In the event that you wish to send us an encrypted message, please use the following public X509-certificate for encryption of your message.
+
+#### Authorized Oversight Agency
+
+Bavarian State Ministry for Science and Art\
+SalvatorstraĂe 2\
+80333 Munich
+
+Internet: [https://www.stmwk.bayern.de](https://www.stmwk.bayern.de)
+
+#### Sales Tax ID Number of the LMU
+
+Sales tax ID number pursuant to § 27 a Sales Tax Law:\
+DE 811205325
+
+#### Responsible for content according to § 18 para. 2 MStV
+
+Ludwig-Maximilians-UniversitĂ€t MĂŒnchen\
+Felix Schönbrodt\
+Email: [felix.schoenbrodt@psy.lmu.de](mailto:felix.schoenbrodt@psy.lmu.de)
+
+#### Responsible party for technical implementation
+
+The webmaster of the facility is responsible for technical implementation. Technical implementation is handled by the Content Management System Fiona by [Infopark AG](https://www.lmu.de/en/index.html).
+
+#### Statement of Release
+
+The information herein is correct to the best of our knowledge, however, error cannot be avoided with absolute certainty. Solely the specifications in the pertinent legal bases (laws, orders, statutes) are legally binding.
+
+We cannot assume any liability for the particular currency, accuracy, completeness and availability of the provided information.
+
+We are not liable for damages caused by the use of this internet offer. This exclusion of liability shall not apply if the regulations of § 839 BGB (liability for violation of official duty) are involved. We are not liable for any damages caused by call-up or downloading of data by damaged software or by the installation or use of software.
+
+This exclusion of liability does not apply to information that falls within the scope of the Order (EU) 2016/679 of the European Parliament and of the Council dated 27 April 2016 (General Data Protection Regulation). The accuracy and currency of this information is guaranteed.
+
+#### Disclaimer
+The information offered by the LMU contains cross-references (âlinksâ) to other internet offers by the LMU or by external, third-parties. Basically the internet pages will open automatically in a new window.
+
+Through this cross-reference, the LMU handles access for use of this content (§ 5 Telemedia Law). We are not responsible for this âforeignâ content since we do not initiate the transmission of the information, have not selected the addressee of the transmitted information and also have not selected or changed the transmitted information.
+
+An automatic, short-term interim saving of this âforeign informationâ by the LMU does not occur due to the selected call-up and linking method, so that the LMU does not thereby assume any responsibility for this foreign content.
+
+However, upon initial linking with these internet offers, the LMU has checked the foreign content to determine whether it may trigger a potential responsibility under civil or penal law. But we do not receive any automatic information about changes to the foreign internet offers and thus cannot constantly monitor their content for any changes. Therefore we also cannot assume any responsibility for them. Solely the particular merchant of the foreign internet offer is liable for illegal, erroneous or incomplete content, and in particular for damages which arise from the use or non-use of information by third parties. However, we endeavor to check the included links regularly with regard to these named criteria.
+
+:::
\ No newline at end of file
diff --git a/footer/privacy.qmd b/footer/privacy.qmd
new file mode 100644
index 0000000..3f31fd0
--- /dev/null
+++ b/footer/privacy.qmd
@@ -0,0 +1,179 @@
+---
+title: "Privacy Policy"
+format:
+ html:
+ toc: false
+ page-layout: full
+---
+
+
+
+For data collected by the LMU Open Science Center, [LMU's general privacy policy](https://www.lmu.de/en/footer/privacy-policy/index.html){target="_blank"} applies.
+
+Additionally, this site is hosted on the webhosting service GitHub Pages ([https://docs.github.com/en/pages](https://docs.github.com/en/pages)) with it's own privacy policy available at [https://docs.github.com/de/site-policy/privacy-policies/github-general-privacy-statement](https://docs.github.com/de/site-policy/privacy-policies/github-general-privacy-statement).
+
+
+
+
+#### Matomo Tracking Opt-Out
+
+This opt-out is only for the Matomo web analytics tool in use directly the LMU Open Science Center website. It does not affect any other tracking or analytics tools that may be in use on this site, including those used by GitHub Pages.
+
+```{=html}
+
+
-
+
+
***
-
diff --git a/pull-upstream.md b/pull-upstream/index.qmd
similarity index 94%
rename from pull-upstream.md
rename to pull-upstream/index.qmd
index 505ccfc..fe5a6b7 100644
--- a/pull-upstream.md
+++ b/pull-upstream/index.qmd
@@ -1,5 +1,7 @@
---
title: Pull upstream repository into your fork
+aliases: [pull-upstream.html]
+
---
***
@@ -22,16 +24,15 @@ To integrate all the contributions made to the original repository into your loc
```
- 
+ 
6. **RStudio**: check in the Files tab that the new contributions appeared.
7. **RStudio**: push those local changes to your GitHub repository (you can do this from the command line by typing `git push`)
- 
+ 
You are done!
***
-
diff --git a/push.md b/push/index.qmd
similarity index 81%
rename from push.md
rename to push/index.qmd
index ebf4463..4523d79 100644
--- a/push.md
+++ b/push/index.qmd
@@ -1,16 +1,18 @@
---
title: "Push your local changes to your remote repository"
+aliases: [push.html]
+
---
***
1. **RStudio**: push your changes to GitHub by clicking, in the Git tab, the green arrow pointing up and entering your password.
- 
+ 
when successful you should get this pop up box which you can close:
-
+