diff --git a/.gitignore b/.gitignore
index 860f5e90c..a307529d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,20 @@
-
+*.tmp
+*.aux
+*.log
+*.out
+*.tex
+Testing/
+/*/*/jl_*/
+.vscode
+_freeze
+_site
+.quarto
/.quarto/
-_site/
\ No newline at end of file
+.venv
+venv
+
+404.html
+site_libs
+.DS_Store
+index_files
+digest.txt
\ No newline at end of file
diff --git a/_includes/card-listing.ejs b/_includes/card-listing.ejs
new file mode 100644
index 000000000..6565a97b8
--- /dev/null
+++ b/_includes/card-listing.ejs
@@ -0,0 +1,52 @@
+```{=html}
+
+```
\ No newline at end of file
diff --git a/_includes/citation/cite.qmd b/_includes/citation/cite.qmd
new file mode 100644
index 000000000..61edc0148
--- /dev/null
+++ b/_includes/citation/cite.qmd
@@ -0,0 +1,221 @@
+```{=html}
+
+
Turing.jl is an MIT
Licensed Open Source Project
+
If you use Turing.jl in your research, please consider citing our papers.
+
+
+
+
+
+
+
+```
\ No newline at end of file
diff --git a/_includes/featured-tutorials.yml b/_includes/featured-tutorials.yml
new file mode 100644
index 000000000..b78a8148a
--- /dev/null
+++ b/_includes/featured-tutorials.yml
@@ -0,0 +1,20 @@
+- title: "Get Started with Turing.jl"
+ href: "https://turinglang.org/docs/getting-started/"
+ description: "Our step-by-step tutorials will guide you from installation to your first probabilistic models."
+ category:
+ - "Basics"
+ - "Getting Started"
+
+- title: "Introduction: Coin Flipping"
+ href: "https://turinglang.org/docs/tutorials/coin-flipping/"
+ description: "Learn the basic concepts of Bayesian modeling by working through a simple coin-flipping example."
+ category:
+ - "Basics"
+ - "Modeling"
+
+- title: "Core Functionality"
+ href: "https://turinglang.org/docs/core-functionality/"
+ description: "This article provides an overview of the core functionality in Turing.jl, which are likely to be used across a wide range of models."
+ category:
+ - "Basics"
+ - "Features"
diff --git a/_includes/header.qmd b/_includes/header.qmd
new file mode 100644
index 000000000..2c619c18a
--- /dev/null
+++ b/_includes/header.qmd
@@ -0,0 +1,13 @@
+```{=html}
+
+
+
+
+
Bayesian inference with probabilistic programming
+
+
+
+```
\ No newline at end of file
diff --git a/_quarto.yml b/_quarto.yml
index 16db4adaa..61befcecc 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -1,7 +1,7 @@
project:
type: website
preview:
- # Change port if it's busy in your system or just remove this line so that It will automatically use any free port
+ # Change port if it's busy in your system or just comment below line so that It will automatically use any free port
port: 4200
browser: true
@@ -15,10 +15,8 @@ website:
location: navbar
type: overlay
navbar:
- logo: "assets/images/turing-logo.svg"
- logo-href: https://turinglang.org/
- background: "#073c44"
- foreground: "#ffffff"
+ logo: "assets/logo/turing-logo.svg"
+ # logo-href: https://turinglang.org/ -- Keep this commented so clicking on logo in dev mode doesn't redirect to the site
left:
- text: Get Started
href: https://turinglang.org/docs/getting-started/
@@ -37,24 +35,10 @@ website:
- icon: github
text: Turing GitHub
href: https://github.com/TuringLang
-
- page-footer:
- background: "#073c44"
- left: |
- Turing is created by Hong Ge , and lovingly maintained by the core team of volunteers.
- The contents of this website are © 2018–2025 under the terms of the MIT License .
-
- right:
- - icon: twitter
- href: https://x.com/TuringLang
- aria-label: Turing Twitter
- - icon: github
- href: https://github.com/TuringLang/Turing.jl
- aria-label: Turing GitHub
back-to-top-navigation: true
repo-url: https://github.com/TuringLang/turinglang.github.io/
- repo-actions: [edit, issue]
+ # repo-actions: [edit, issue]
repo-link-target: _blank
page-navigation: true
@@ -64,6 +48,7 @@ format:
light: cosmo
dark: [cosmo, theming/theme-dark.scss]
css: theming/styles.css
+ highlight-style: github
toc: true
smooth-scroll: true
code-overflow: wrap
@@ -79,6 +64,52 @@ format:
"url" : "https://turinglang.org/",
}
+ include-after-body:
+ - text: |
+
# Global Variables to use in any qmd files using:
# {{< meta site-url >}}
diff --git a/assets/images/brands/Turing_Logo_1000x400px_Black.webp b/assets/images/brands/Turing_Logo_1000x400px_Black.webp
new file mode 100644
index 000000000..68d3caa7e
Binary files /dev/null and b/assets/images/brands/Turing_Logo_1000x400px_Black.webp differ
diff --git a/assets/images/brands/Turing_Logo_1000x400px_White.webp b/assets/images/brands/Turing_Logo_1000x400px_White.webp
new file mode 100644
index 000000000..b1f168278
Binary files /dev/null and b/assets/images/brands/Turing_Logo_1000x400px_White.webp differ
diff --git a/assets/images/brands/university-cambridge-logo-black-example-640x132.png b/assets/images/brands/university-cambridge-logo-black-example-640x132.png
new file mode 100644
index 000000000..b49e59aa9
Binary files /dev/null and b/assets/images/brands/university-cambridge-logo-black-example-640x132.png differ
diff --git a/assets/images/brands/university-cambridge-logo-white-example-640x133.png b/assets/images/brands/university-cambridge-logo-white-example-640x133.png
new file mode 100644
index 000000000..99a75d96f
Binary files /dev/null and b/assets/images/brands/university-cambridge-logo-white-example-640x133.png differ
diff --git a/assets/images/team/shravan-goswami.jpeg b/assets/images/team/shravan-goswami.jpeg
deleted file mode 100644
index 822215e4c..000000000
Binary files a/assets/images/team/shravan-goswami.jpeg and /dev/null differ
diff --git a/assets/images/team/shravan-goswami.jpg b/assets/images/team/shravan-goswami.jpg
new file mode 100644
index 000000000..49091c070
Binary files /dev/null and b/assets/images/team/shravan-goswami.jpg differ
diff --git a/assets/logo/turing-logo-dark.svg b/assets/logo/turing-logo-dark.svg
new file mode 100644
index 000000000..87dab0a03
--- /dev/null
+++ b/assets/logo/turing-logo-dark.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/logo/turing-logo-light.svg b/assets/logo/turing-logo-light.svg
new file mode 100644
index 000000000..d787e8b11
--- /dev/null
+++ b/assets/logo/turing-logo-light.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/images/turing-logo-wide.svg b/assets/logo/turing-logo-wide.svg
similarity index 100%
rename from assets/images/turing-logo-wide.svg
rename to assets/logo/turing-logo-wide.svg
diff --git a/assets/images/turing-logo.svg b/assets/logo/turing-logo.svg
similarity index 100%
rename from assets/images/turing-logo.svg
rename to assets/logo/turing-logo.svg
diff --git a/assets/logo/turing-text-logo.svg b/assets/logo/turing-text-logo.svg
new file mode 100644
index 000000000..d787e8b11
--- /dev/null
+++ b/assets/logo/turing-text-logo.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/index.qmd b/index.qmd
index d2bf8a679..6e12af08b 100644
--- a/index.qmd
+++ b/index.qmd
@@ -1,55 +1,275 @@
---
-# pagetitle: "Turing"
+pagetitle: The Turing Language
toc: false
page-layout: custom
section-divs: false
hide-description: true
description: |
Turing.jl is a probabilistic programming language and Bayesian modelling framework for the Julia programming language.
+listing:
+ - id: news-and-updates
+ contents: "news/posts/*/index.qmd"
+ template: _includes/card-listing.ejs
+ sort: "date desc"
+ max-items: 6
+ include:
+ on_landing: true
+ - id: featured-tutorials
+ contents:
+ - "./_includes/featured-tutorials.yml"
+ template: _includes/card-listing.ejs
+ max-items: 6
---
-::: {.hero-banner}
-::: {.grid}
-::: {.g-col-1}
+:::::: {.side-space}
+
+
+::: {.logo-header}
+
+{{< include _includes/header.qmd >}}
+
+:::
+
+
+
+:::: {.section-start-space}
+
+### What is Turing.jl?
+Turing.jl is a Julia library for general-purpose probabilistic programming.
+
+::::
+
+::::: {.d-flex .flex-row .flex-wrap .panel-wrapper .gap-4 .section-end-space}
+
+::: {.panel .box}
+##### Expressive {.panel-title .pb-1}
+Turing models are easy to write and communicate, with syntax that is close to the mathematical specification of the model.
+:::
+
+::: {.panel .box}
+##### General-purpose {.panel-title .pb-1}
+Turing supports models with discrete parameters and stochastic control flow.
+:::
+
+::: {.panel .box}
+##### Composable {.panel-title .pb-1}
+Turing is written entirely in Julia, and is interoperable with its powerful ecosystem.
+:::
+
+:::::
+
+
+
+:::: {.section-header .section-start-space}
+
+::: {#start}
+
+### Start Your Journey
+Whether you're new to Bayesian modeling or an experienced researcher, find the resources you need.
+
+:::
+
+```{=html}
+Research Papers on Turing.jl →
+```
+
+::::
+
+::::: {.d-flex .flex-row .flex-wrap .panel-wrapper .gap-4 .section-end-space}
+
+:::: {.panel .box}
+
+::: {style="font-size: 2.5rem; text-align: center;"}
+```{=html}
+🚀
+```
+:::
+
+##### New to Turing? {.panel-title .pb-1 .text-center}
+Begin with the basics. Our step-by-step tutorials will guide you from installation to your first probabilistic models.
+
+::: {.d-flex .flex-column .align-items-center .gap-2 .pt-3}
+```{=html}
+Get Started
+Beginner's Walkthrough
+```
+:::
+
+::::
+
+:::: {.panel .box}
+
+::: {style="font-size: 2.5rem; text-align: center;"}
+```{=html}
+🔬
+```
+:::
+
+##### For Researchers {.panel-title .pb-1 .text-center}
+
+Dive into advanced models, explore the rich package ecosystem, and learn how to cite Turing.jl in your work.
+
+::: {.d-flex .flex-column .align-items-center .gap-2 .pt-3}
+
+```{=html}
+Explore Ecosystem
+Cite Turing.jl
+```
+
+:::
+
+::::
+
+:::: {.panel .box}
+
+::: {style="font-size: 2.5rem; text-align: center;"}
+```{=html}
+💻
+```
+:::
+
+##### For Developers {.panel-title .pb-1 .text-center}
+
+Join our community, contribute to the project on GitHub, and connect with fellow developers on Slack.
+
+::: {.d-flex .flex-column .align-items-center .gap-2 .pt-3}
+
+```{=html}
+View on GitHub
+Join the Slack Channel
+```
:::
-::: {.g-col-8}
-# Turing.jl: Bayesian inference with probabilistic programming.
+::::
+
+:::::
-### Intuitive
-Turing models are easy to write and communicate — syntax is close to mathematical notations.
+::: {.mobile-only-button-container}
+```{=html}
+Research Papers on Turing.jl →
+```
+:::
+
-### General-purpose
-Turing supports models with discrete parameters and stochastic control flow.
+
+:::: {.section-header .section-start-space}
-### Modular and composable
-Turing is modular, written entirely in Julia, and is interoperable with the powerful Julia ecosystem.
+::: {#core-packages-header-content}
+### Core Packages {#core-packages}
+The Turing ecosystem is built on a foundation of powerful, composable packages.
-::: {.hero-buttons style="position: relative; display: flex; justify-content: center;"}
-[Get Started]({{< meta get-started >}}){.btn-action-primary .btn-action .btn .btn-lg role="button" style="background-color: #073c44; color: white"}
:::
-::: {.g-col-3}
+```{=html}
+Explore Ecosystem →
+```
+
+::::
+
+::::: {.core-packages-grid .section-end-space}
+
+::: {.package-card .box #core-card}
+
+##### [DynamicPPL.jl ](https://turinglang.org/DynamicPPL.jl/){.panel-title}
+
+A domain-specific language and backend for probabilistic programming languages, used by [Turing.jl.](https://github.com/TuringLang/Turing.jl)
+
:::
+
+::: {.package-card .box #core-card}
+
+##### [JuliaBUGS.jl ](https://turinglang.org/JuliaBUGS.jl/){.panel-title}
+
+A modern implementation of the [BUGS](https://en.wikipedia.org/wiki/Bayesian_inference_using_Gibbs_sampling) probabilistic programming language in Julia.
+
:::
+
+::: {.package-card .box #core-card}
+
+##### [TuringGLM.jl ](https://turinglang.org/TuringGLM.jl/){.panel-title}
+
+Bayesian Generalized Linear models using [`@formula`](https://turinglang.org/TuringGLM.jl/stable/#@formula) syntax and returns an instantiated [Turing](https://github.com/TuringLang/Turing.jl) model.
+
:::
+
+::: {.package-card .box #core-card}
+
+##### [AdvancedHMC.jl ](https://turinglang.org/AdvancedHMC.jl/){.panel-title}
+
+A robust, modular and efficient implementation of advanced HMC algorithms. ([abs](https://proceedings.mlr.press/v118/xu20a.html), [pdf](https://proceedings.mlr.press/v118/xu20a/xu20a.pdf))
+
:::
-::: {style="position: relative; display: flex; justify-content: center;"}
-::: {.grid}
-::: {.g-col-1}
+:::::
+
+::: {.mobile-only-button-container}
+```{=html}
+Explore Ecosystem →
+```
:::
-::: {.g-col-8}
-## Community Resources
+
-The Turing.jl [discourse forum](https://discourse.julialang.org/c/domain/probprog) provides support and discussion for all user levels.
-The [Turing.jl documentation]({{< meta get-started >}}) and [official tutorials]({{< meta tutorials-intro >}}) help users learn and use Turing.jl!
-There's also a [tutorial in Bayesian Statistics using Julia and Turing.jl](https://storopoli.io/Bayesian-Julia).
+
+
+:::: {.section-header .section-start-space}
+
+::: {#news}
+
+### News & Updates {#news-updates}
+
+Read the latest from the Turing team.
+
+:::
+
+```{=html}
+View more →
+```
+::::
+
+::: {#news-and-updates}
+:::
+
+::: {.mobile-only-button-container}
+```{=html}
+View more →
+```
+:::
+
+
+
+
+::: {.section-header .section-start-space}
+
+::: {#tutorials}
+
+### Featured Tutorials {#featured-tutorials}
+
+A selection of tutorials to get you started.
:::
-::: {.g-col-3}
+```{=html}
+View all tutorials →
+```
:::
+
+::: {#featured-tutorials}
:::
+
+::: {.mobile-only-button-container}
+```{=html}
+View all tutorials →
+```
:::
+
+
+
+
+
+{{< include _includes/citation/cite.qmd >}}
+
+
+
+
+::::::
diff --git a/news/index.qmd b/news/index.qmd
index 3b1d47dc4..5bce7790a 100644
--- a/news/index.qmd
+++ b/news/index.qmd
@@ -10,7 +10,7 @@ listing:
categories: true
feed: true
page-layout: full
-title-block-banner: "#EDF3F9"
+title-block-banner: true
title-block-banner-color: "black"
search: false
---
\ No newline at end of file
diff --git a/news/news.css b/news/news.css
index 07eb7337f..dfea67fca 100644
--- a/news/news.css
+++ b/news/news.css
@@ -10,6 +10,10 @@
max-height:fit-content;
}
+.quarto-title-banner {
+ background-color: #ffffff;
+}
+
/* @media (max-width: 768px) {
.quarto-post {
max-height: 200px;
diff --git a/news/posts/2019-12-14-initial-post/index.qmd b/news/posts/2019-12-14-initial-post/index.qmd
index 36b7858c0..2b13f5341 100644
--- a/news/posts/2019-12-14-initial-post/index.qmd
+++ b/news/posts/2019-12-14-initial-post/index.qmd
@@ -11,6 +11,7 @@ author:
affiliation:
- name: University of Oregon
date: 12/14/2019
+on_landing: true
---
All good open source projects should have a blog, and Turing is one such project. Later on, members of the Turing team may be populating this feed with posts on topics like
diff --git a/news/posts/2020-05-04-Imperial-Report13-analysis/index.qmd b/news/posts/2020-05-04-Imperial-Report13-analysis/index.qmd
index 865c91099..f281a24e6 100644
--- a/news/posts/2020-05-04-Imperial-Report13-analysis/index.qmd
+++ b/news/posts/2020-05-04-Imperial-Report13-analysis/index.qmd
@@ -45,6 +45,7 @@ include-in-header:
- text: |
resources: data/*
+on_landing: true
---
The Turing.jl team is currently exploring possibilities in an attempt to help with the ongoing SARS-CoV-2 crisis. As preparation for this and to get our feet wet, we decided to perform a replication study of the [Imperial Report 13](https://www.imperial.ac.uk/mrc-global-infectious-disease-analysis/covid-19/report-13-europe-npi-impact/), which attempts to estimate the real number of infections and impact of non-pharmaceutical interventions on COVID-19. In the report, the inference was performed using the probabilistic programming language (PPL) Stan. We have explicated their model and inference in Turing.jl, a Julia-based PPL. We believe the results and analysis of our study are relevant for the public, and for other researchers who are actively working on epidemiological models. To that end, our implementation and results are available [here](https://github.com/cambridge-mlg/Covid19).
diff --git a/news/posts/2022-02-17-gsoc/index.qmd b/news/posts/2022-02-17-gsoc/index.qmd
index 5dcd040f0..0ea20869c 100644
--- a/news/posts/2022-02-17-gsoc/index.qmd
+++ b/news/posts/2022-02-17-gsoc/index.qmd
@@ -13,6 +13,7 @@ author:
- name: the TuringLang team
url: /team/
date: 02/17/2022
+on_landing: true
---
It is another year of the [Google Summer of Code](https://summerofcode.withgoogle.com/) time, and we have compiled an updated list of exciting Turing projects!
diff --git a/news/posts/2025-06-20-newsletter-9/index.qmd b/news/posts/2025-06-20-newsletter-9/index.qmd
index 73b491c0e..69b6feae9 100644
--- a/news/posts/2025-06-20-newsletter-9/index.qmd
+++ b/news/posts/2025-06-20-newsletter-9/index.qmd
@@ -7,6 +7,7 @@ author:
- name: The TuringLang team
url: /team/
date: 2025-06-20
+on_landing: true
---
**Google Summer of Code**
diff --git a/news/posts/2025-07-11-newsletter-10/index.qmd b/news/posts/2025-07-11-newsletter-10/index.qmd
index bcc290603..4a605f219 100644
--- a/news/posts/2025-07-11-newsletter-10/index.qmd
+++ b/news/posts/2025-07-11-newsletter-10/index.qmd
@@ -7,6 +7,7 @@ author:
- name: The TuringLang team
url: /team/
date: 2025-07-11
+on_landing: true
---
**LKJCholesky**
diff --git a/team/team.css b/team/team.css
index 5bb698fd1..7c3637e40 100644
--- a/team/team.css
+++ b/team/team.css
@@ -6,7 +6,7 @@ a {
.team-member {
display: flex;
align-items: center;
- background-color: #f8f9fa;
+ background-color: #e9ecef; /*gray-200, same as $color-mute-bg */
border-radius: 0.5rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin-bottom: 2rem;
diff --git a/team/team.yml b/team/team.yml
index df54459a1..b05850161 100644
--- a/team/team.yml
+++ b/team/team.yml
@@ -208,7 +208,7 @@
- mail: markus@mhauru.org
- name: Shravan Goswami
- image: shravan-goswami.jpeg
+ image: shravan-goswami.jpg
university: Uka Tarsadia University
links:
- website: https://shravangoswami.com/
diff --git a/theming/styles.css b/theming/styles.css
index 446151cda..4a535440c 100644
--- a/theming/styles.css
+++ b/theming/styles.css
@@ -1,45 +1,776 @@
-/* css styles */
-/* .cell-output {
- background-color: #f1f3f5;
-} */
+/* Hero Section Styles */
+.hero-section {
+ padding: 4rem 1rem;
+ padding-bottom: 0%;
+ text-align: center;
+}
-/* .cell-output img {
- max-width: 100%;
- height: auto;
-} */
+.hero-content {
+ max-width: 800px;
+ margin: 0 auto 3rem auto;
+}
+
+.hero-logo {
+ max-width: 55%;
+ height: auto;
+ margin-bottom: 1.5rem;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.hero-logo-light {
+ display: block;
+}
+
+.hero-logo-dark {
+ display: none;
+}
+
+.hero-subtitle {
+ font-size: clamp(1.1rem, 3vw, 1.5rem);
+ color: #34495e;
+ margin-bottom: 2.5rem;
+ max-width: 600px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.hero-cta-buttons {
+ display: flex;
+ justify-content: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+.btn-lg {
+ padding: 14px 32px;
+ font-size: 1.1rem;
+}
+
+/* === Core Packages Section === */
+.core-packages-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 1.5rem;
+ justify-content: center;
+ padding: 0 1rem;
+}
+
+.package-card {
+ text-align: left;
+}
+
+.package-card p {
+ margin-bottom: 0%;
+}
+
+.package-card h5 {
+ text-align: center;
+}
+
+.package-card .panel-title {
+ font-size: 1.25rem;
+}
+
+.quarto-container {
+ background-color: #f8f9fa;
+}
-/* .cell-output-display pre {
- word-break: break-wor !important;
- white-space: pre-wrap !important;
+.navbar {
+ background-color: #ffffff;
}
- */
.navbar a:hover {
- text-decoration: none;
+ text-decoration: none;
}
.cell-output {
- border: 1px dashed;
+ border: 1px dashed;
}
.cell-output-stdout code {
- word-break: break-wor !important;
- white-space: pre-wrap !important;
+ word-break: break-word !important;
+ white-space: pre-wrap !important;
}
-
.cell-output-display svg {
- height: fit-content;
- width: fit-content;
+ height: fit-content;
+ width: fit-content;
}
.cell-output-display img {
- max-width: 100%;
- max-height: 100%;
- object-fit: contain;
+ max-width: 100%;
+ max-height: 100%;
+ object-fit: contain;
+}
+
+.logo-header {
+ padding: 0%;
+ margin-bottom: 0%;
+}
+
+.content-panel {
+ padding: 1.5rem;
+}
+
+.section-end-space {
+ padding-bottom: 2rem;
+}
+
+.section-start-space {
+ padding-top: 2rem;
+}
+
+/* .responsive-heading {
+ font-size: clamp(1.8rem, 5vw, 2.2rem);
+} */
+
+.panel-wrapper {
+ justify-content: center;
+}
+
+.example-code {
+ flex: 0 1 45%;
+}
+
+.example-text {
+ flex: 0 1 53%;
+}
+
+a {
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.button,
+.button--fill {
+ display: inline-block;
+ padding: 10px 24px;
+ border-radius: 50px;
+ font-weight: 600;
+ text-align: center;
+ cursor: pointer;
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+ text-decoration: none;
+ border-style: solid;
+ border-width: 2px;
+}
+
+.button:hover,
+.button--fill:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+ text-decoration: none;
+}
+
+/* Universal Box Styling */
+.box {
+ border-radius: 12px;
+ padding: 2rem;
+ transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease, border-color 0.3s ease;
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
+ background-color: #ffffff;
+ border: 1px solid #e9ecef;
+}
+
+.box:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
+ border-color: #4DB6AC;
+}
+
+.box--splash {
+ background-color: #eef7f7;
+}
+
+.panel {
+ min-height: 150px;
+ min-width: 300px;
+ max-width: 31%;
+}
+
+.panel-title {
+ font-size: 1.4rem;
+ font-weight: 700;
+ margin-bottom: 1rem;
+}
+
+.button {
+ background-color: #ffffff;
+ border-color: #e9ecef;
+ color: #495057;
+}
+
+.button--fill {
+ background-color: #4DB6AC;
+ border-color: transparent;
+ color: #ffffff;
+}
+
+.button--fill:hover {
+ background-color: #26A69A;
+}
+
+.panel-title {
+ color: #212529;
+}
+
+.panel,
+.panel p {
+ color: #6c757d;
+ font-size: 17px;
+ font-weight: 400;
+}
+
+.card {
+ border: 1px solid #e9ecef;
+ color: #212529;
+}
+
+.card:hover {
+ background-color: #e9ecef;
+ border-color: #dee2e6;
+}
+
+.card .card-title {
+ color: #212529;
+}
+
+.card .card-text {
+ color: #6c757d;
+}
+
+.sourceCode,
+code {
+ color: #212529;
+ border-radius: 0.5rem;
+}
+
+/* Citation Styles */
+.citation-container {
+ margin: auto;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+}
+
+.citation-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.citation-entry {
+ padding: 1.5rem;
+ margin-bottom: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 1rem;
+}
+
+.citation-content {
+ flex-grow: 1;
+}
+
+.citation-text {
+ font-size: 0.95rem;
+ line-height: 1.6;
+ color: #555;
+ margin: 0;
+}
+
+.citation-text em {
+ font-style: italic;
+}
+
+.citation-title {
+ font-weight: 600;
+ color: #222;
+}
+
+.citation-actions {
+ display: flex;
+ gap: 0.5rem;
+ flex-shrink: 0;
+}
+
+.citation-icon-btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 36px;
+ height: 36px;
+ border-radius: 50%;
+ border: 1px solid #e0e0e0;
+ background-color: #fff;
+ color: #6c757d;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ padding: 0;
+ text-decoration: none;
+}
+
+.citation-icon-btn:hover {
+ background-color: #f8f9fa;
+ border-color: #4DB6AC;
+ color: #4DB6AC;
+ transform: translateY(-1px);
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
+ text-decoration: none;
+}
+
+.citation-icon-btn svg {
+ width: 16px;
+ height: 16px;
+ fill: currentColor;
}
-.nav-footer-center {
- display: flex;
+.citation-icon-btn.citation-copied {
+ background-color: #229954;
+ border-color: #229954;
+ color: #fff;
+ font-size: 1.2rem;
+ font-weight: bold;
+}
+
+.citation-icon-btn.citation-copied:hover {
+ background-color: #229954;
+ border-color: #229954;
+ color: #fff;
+ transform: translateY(0);
+ box-shadow: none;
+}
+
+.turing-license-link code {
+ color: #34b8bf !important;
+ text-decoration: none !important;
+}
+
+.turing-license-link code:hover {
+ color: #31dce6 !important;
+}
+
+.side-space {
+ max-width: 1350px;
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 4rem;
+ padding-right: 4rem;
+}
+
+/* Section Header */
+.section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.section-header h3 {
+ margin-bottom: 0;
+}
+
+.mobile-only-button-container {
+ display: none;
+}
+
+/* UNIFIED CARD GRID */
+.unified-card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ align-items: stretch;
+ padding: 0 1rem;
+ padding-top: .5rem
+}
+
+.unified-card {
+ display: flex;
+ flex-direction: column;
+ text-decoration: none;
+ background-color: #ffffff;
+ border-radius: 12px;
+ padding: 0;
+ overflow: hidden;
+ transition: all 0.3s ease;
+ flex: 1 1 320px;
+}
+
+.unified-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
+ text-decoration: none;
+ border-color: #4DB6AC;
+ position: relative;
+ z-index: 10;
+}
+
+.unified-card-body {
+ padding: 1rem;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ padding-bottom: 0%;
+}
+
+.unified-card-title {
+ font-size: 1.2rem;
+ line-height: 1.4;
+ font-weight: 600;
+ color: #212529;
+ margin-bottom: 0.75rem;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+
+.unified-card-text {
+ font-size: 0.95rem;
+ line-height: 1.6;
+ color: #6c757d;
+ margin-bottom: 1rem;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ line-clamp: 3;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+
+.unified-card-categories {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ margin-bottom: 0.75rem;
+}
+
+.category-tag {
+ background-color: #e9ecef;
+ color: #495057;
+ padding: 0.25rem 0.75rem;
+ border-radius: 20px;
+ font-size: 0.8rem;
+ font-weight: 500;
+ white-space: nowrap;
+}
+
+.unified-card-footer {
+ padding: 1rem 1.5rem;
+ border-top: 1px solid #e9ecef;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 0.85rem;
+ color: #6c757d;
+ background-color: #f8f9fa;
+}
+
+.unified-card-meta {
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+ min-width: 0;
+ flex-grow: 1;
+}
+
+.unified-card-author {
+ font-weight: 600;
+ color: #495057;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.unified-card-date {
+ font-size: 0.8rem;
+ color: #6c757d;
+}
+
+.unified-card-reading-time {
+ font-weight: 600;
+ color: #4DB6AC;
+ white-space: nowrap;
+ font-size: 0.8rem;
+}
+
+/* Custom Footer */
+.custom-footer {
+ background-color: #fff;
+ color: #6c757d;
+ font-size: 0.9rem;
+ padding: 3rem 2rem 2rem;
+ border-top: 1px solid #e9ecef;
+}
+
+.custom-footer .footer-container {
+ max-width: 1350px;
+ margin: 0 auto;
+}
+
+.custom-footer .footer-grid {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ gap: 2rem;
+ margin-bottom: 2rem;
+ padding-bottom: 2rem;
+ border-bottom: 1px solid #e9ecef;
+}
+
+.custom-footer .footer-links-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 2rem;
+ flex: 2 1 400px;
+}
+
+.custom-footer .footer-column {
+ flex: 1 1 auto;
+}
+
+.custom-footer .footer-brands {
+ flex: 1 1 320px;
+}
+
+.custom-footer .footer-column h5 {
+ font-weight: 600;
+ color: #212529;
+ margin-bottom: 1.25rem;
+ font-size: 0.9rem;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+}
+
+.custom-footer .footer-column a {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ margin-bottom: 0.75rem;
+ color: #6c757d;
+ text-decoration: none;
+ transition: color 0.2s ease;
+}
+
+.custom-footer .footer-column a:hover {
+ color: #212529;
+ text-decoration: none;
+}
+
+.custom-footer .footer-column a i {
+ font-size: 1.1rem;
+ line-height: 1;
+ width: 20px;
+ text-align: center;
+}
+
+.custom-footer .footer-brands p {
+ font-size: 0.9rem;
+ line-height: 1.6;
+ margin-top: -0.5rem;
+ margin-bottom: 1.5rem;
+}
+
+.custom-footer .footer-brands .logo-grid {
+ display: flex;
+ gap: 2rem;
+ align-items: center;
+}
+
+.custom-footer .partner-logo {
+ flex: 1;
+}
+
+.custom-footer .partner-logo img {
+ max-width: 100%;
+ height: 50px;
+ object-fit: contain;
+ transition: transform 0.2s ease;
+}
+
+.custom-footer .partner-logo:hover img {
+ transform: scale(1.05);
+}
+
+.custom-footer .brands-light-mode-logo {
+ display: inline;
+}
+
+.custom-footer .brands-dark-mode-logo {
+ display: none;
+}
+
+.custom-footer .footer-bottom {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 0.85rem;
+ flex-wrap: wrap;
+ gap: 1rem;
+}
+
+.custom-footer .footer-bottom p {
+ margin: 0;
+ line-height: 1.6;
+}
+
+.custom-footer .footer-bottom a {
+ color: #495057;
+ font-weight: 500;
+ text-decoration: none;
+ border-bottom: 1px solid #dee2e6;
+}
+
+.custom-footer .footer-bottom a:hover {
+ border-bottom-color: #495057;
+}
+
+.footer-source-link {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+@media (max-width: 1200px) {
+ .core-packages-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+
+@media (max-width: 992px) {
+ .custom-footer .footer-links-wrapper {
+ flex-basis: 100%;
justify-content: center;
+ }
+
+ .custom-footer .footer-grid {
+ justify-content: center;
+ }
+
+ .custom-footer .footer-brands {
+ flex-grow: 0;
+ text-align: center;
+ }
+
+ .custom-footer .footer-brands .logo-grid {
+ justify-content: center;
+ }
+
+ .custom-footer .footer-column {
+ flex-grow: 0;
+ }
}
+
+@media (max-width: 768px) {
+ .side-space {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ }
+
+ .section-header {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 1rem;
+ }
+
+ .section-header .desktop-only-button {
+ display: none;
+ }
+
+ .mobile-only-button-container {
+ display: block;
+ margin-top: .3rem;
+ text-align: center;
+ }
+
+ .mobile-only-button-container .button {
+ display: inline-block;
+ width: auto;
+ }
+
+ .core-packages-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .unified-card {
+ flex-basis: 90%;
+ }
+
+ .unified-card-title {
+ font-size: 1.1rem;
+ }
+
+ .unified-card-text {
+ font-size: 0.9rem;
+ }
+
+ .unified-card-body {
+ padding: 1.25rem;
+ padding-bottom: 0%;
+ }
+
+ .unified-card-footer {
+ padding: 0.75rem 1.25rem;
+ }
+
+ .unified-card-meta {
+ gap: 0.15rem;
+ }
+
+ .citation-entry {
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+ .citation-actions {
+ margin-top: 1rem;
+ align-self: flex-end;
+ }
+
+ .custom-footer .footer-bottom {
+ flex-direction: column;
+ gap: 1.5rem;
+ text-align: center;
+ }
+}
+
+@media (max-width: 576px) {
+ .unified-card-title {
+ font-size: 1rem;
+ }
+
+ .unified-card-text {
+ font-size: 0.85rem;
+ }
+
+ .custom-footer .footer-links-wrapper {
+ flex-direction: column;
+ text-align: center;
+ align-items: center;
+ }
+
+ .custom-footer .footer-column {
+ width: 100%;
+ max-width: 350px;
+ }
+
+ .custom-footer .footer-column a {
+ justify-content: center;
+ }
+
+ .custom-footer .footer-brands .logo-grid {
+ flex-direction: column;
+ gap: 1.5rem;
+ align-items: center;
+ }
+
+ .custom-footer .partner-logo {
+ flex-basis: auto;
+ width: 100%;
+ max-width: 220px;
+ }
+}
\ No newline at end of file
diff --git a/theming/theme-dark.scss b/theming/theme-dark.scss
index 9c4361b91..b821154b5 100644
--- a/theming/theme-dark.scss
+++ b/theming/theme-dark.scss
@@ -4,124 +4,150 @@
$theme: "cosmo" !default;
-// Manually-added colors
+// --- Consolidated Variables ---
-$background-nav: #192222;
-$background-body: #131818;
-$foreground: #1bb3ac;
-$foreground-dark: #073c44;
-$links:#2aa198;
+// Base colors for the entire site
+$background-nav: #22272e;
+$background-body: #1c2128; // Using the darker background from new theme
+$foreground: #ffffff;
+$links: #34b8bf;
$links-hover: #31dce6;
-$code-background-color: #172424;
-$li: #bcbcbc;
-
-// Quarto default colors
-
-$white: #ffffff !default;
-$gray-100: #f8f9fa !default;
-$gray-200: #e9ecef !default;
-$gray-300: #dee2e6 !default;
-$gray-400: #ced4da !default;
-$gray-500: #adb5bd !default;
-$gray-600: #868e96 !default;
-$gray-700: #495057 !default;
-$gray-800: #373a3c !default;
-$gray-900: #212529 !default;
-$black: #000000 !default;
-
-$indigo: #6610f2 !default;
-$purple: #613d7c !default;
-$pink: #e83e8c !default;
-$red: #ff0039 !default;
-$orange: #f0ad4e !default;
-$yellow: #ff7518 !default;
-$green: #3fb618 !default;
-$teal: #20c997 !default;
-$cyan: #9954bb !default;
-
-$primary: $links-hover !default;
-$secondary: $gray-800 !default;
-$success: $green !default;
-$info: $cyan !default;
-$warning: $yellow !default;
-$danger: $red !default;
-$light: $gray-100 !default;
-$dark: $gray-800 !default;
-
-$min-contrast-ratio: 2.6 !default;
-
-// Options
+// Text colors
+$text-muted: #bcbcbc;
+$li-color: #bcbcbc;
+
+// Landing Page specific colors
+$lp-cyan: #39d3d7;
+$lp-teal: #4DB6AC;
+
+// Component & Code block colors
+$code-block-bg: #22272e;
+$panel-bg: #22272e;
+$btn-border-color: #444c56;
+
+// Bootstrap color overrides
+$white: #ffffff !default;
+$gray-800: #22272e;
+$gray-900: #1c2128;
+$red: #ff0039 !default;
+$green: #3fb618 !default;
+
+$primary: $links-hover !default;
+$secondary: $gray-800 !default;
+$success: $green !default;
+$danger: $red !default;
+
+// Global settings
+$min-contrast-ratio: 2.6 !default;
$enable-rounded: false !default;
+$font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-font-weight: 400 !default;
-// Fonts
+$navbar-bg: $background-nav;
+$navbar-fg: $foreground;
+$footer-bg: $background-nav;
+$footer-fg: $foreground;
+$body-color: $white;
+$body-bg: $background-body;
-// stylelint-disable-next-line value-keyword-case
-$font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
-$headings-font-weight: 400 !default;
-// Tables
+/*-- scss:rules --*/
-$table-color: initial !default;
+// --- General Heading Styles for Dark Mode ---
+h1, h2, h3, h4, h5, h6 {
+ color: $foreground !important;
+}
-// Alerts
+// --- Hero Section Dark Mode Styles ---
+.hero-section {
+ background: none !important;
+}
-$alert-border-width: 0 !default;
+.hero-logo-light {
+ display: none !important;
+}
-// Progress bars
+.hero-logo-dark {
+ display: block !important;
+}
-$progress-height: .5rem !default;
+.hero-subtitle {
+ color: #bdc3c7 !important;
+}
+// --- Unified Card System Dark Mode ---
+.unified-card {
+ background-color: $panel-bg !important;
+ border-color: $btn-border-color !important;
-// Custom tweaks for Quarto-Cosmo
+ &:hover {
+ border-color: $lp-cyan !important;
+ }
+}
-$navbar-bg: $background-nav;
-$navbar-fg: $foreground;
-$footer-bg: $background-nav;
-$footer-fg: $foreground;
-$body-color: $white;
-$body-bg: $background-body;
+.unified-card-text {
+ color: $text-muted !important;
+}
-a {
- color: $links !important;
+.category-tag {
+ background-color: lighten($panel-bg, 10%) !important;
+ color: $text-muted !important;
}
-a:hover {
- color: $links-hover !important;
+.unified-card-footer {
+ background-color: lighten($panel-bg, 3%) !important;
+ border-top-color: $btn-border-color !important;
+ color: $text-muted !important;
}
-code, p code, li code {
- background-color: $code-background-color !important;
- color: $links;
+.unified-card-author {
+ color: $foreground !important;
}
-li {
- color: $li !important;
+.unified-card-date {
+ color: $text-muted !important;
}
-.menu-text:hover {
- color: $links-hover !important;
+.unified-card-reading-time {
+ color: $lp-cyan !important;
}
-.quarto-title-banner {
- background-color: $foreground-dark !important;
+// --- Global Styles ---
+.quarto-container {
+ background-color: $background-body !important;
}
-.title {
- color: $white !important;
+.navbar {
+ background-color: $navbar-bg !important;
+}
+
+.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item * {
+ color: white !important;
}
-.listing-description a {
- color: $li !important;
+.aa-List li.aa-Item[aria-selected="true"] * {
+ background-color: #4DB6AC !important;
}
p {
- color: $li !important;
+ color: $text-muted !important;
}
+li {
+ color: $li-color !important;
+}
+
+a {
+ color: $links;
+
+ &:hover {
+ color: $links-hover !important;
+ }
+}
.team-member, .input-group-text {
- background-color: $background-nav !important;
+ background-color: $background-nav !important;
}
.level4, .listing-category {
@@ -141,7 +167,7 @@ p {
// table background & text
.packages-table {
background-color: $background-body !important;
- color: $li !important;
+ color: $li-color !important;
}
// cell borders
@@ -157,7 +183,7 @@ p {
// zebra stripes
.packages-table tbody tr:nth-child(odd) {
- background-color: darken($gray-900, 5%) !important;
+ background-color: darken($background-nav, 5%) !important;
}
// hover state
@@ -169,4 +195,153 @@ p {
.badge.deprecated {
color: $white !important;
background-color: $red !important;
-}
\ No newline at end of file
+}
+
+// Universal Box Styling for Dark Mode
+.box {
+ background-color: $panel-bg !important;
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2) !important;
+ border-color: $btn-border-color !important;
+
+ &:hover {
+ background-color: lighten($panel-bg, 3%) !important;
+ border-color: $lp-cyan !important;
+ }
+}
+
+.box--splash {
+ background-color: lighten($panel-bg, 2%) !important;
+}
+
+// Landing Page Buttons
+.button {
+ background-color: transparent !important;
+ border-color: $btn-border-color !important;
+ color: $body-color !important;
+
+ &:hover {
+ background-color: lighten($gray-800, 5%) !important;
+ border-color: $lp-cyan !important;
+ }
+}
+
+.button--fill {
+ background-color: $lp-teal !important;
+ border-color: transparent !important;
+ color: #ffffff !important;
+
+ &:hover {
+ background-color: darken($lp-teal, 5%) !important;
+ box-shadow: 0 4px 15px rgba($lp-teal, 0.2) !important;
+ }
+}
+
+// Landing Page Panels
+.panel {
+ color: $text-muted !important;
+}
+
+.panel-title {
+ color: $foreground !important;
+}
+
+// Misc Quarto and site-specific rules
+.quarto-title-banner {
+ background-color: $background-nav !important;
+}
+
+.quarto-post {
+ border-bottom: 1px solid #383838 !important;
+}
+
+code {
+ background-color: $code-block-bg !important;
+ color: $li-color !important;
+}
+
+// Dark mode styles for the citation section
+.citation-entry {
+ border-color: $btn-border-color !important;
+}
+
+.citation-text {
+ color: $text-muted !important;
+}
+
+.citation-title {
+ color: $foreground !important;
+}
+
+.citation-icon-btn {
+ background-color: lighten($panel-bg, 5%) !important;
+ border-color: $btn-border-color !important;
+ color: $text-muted !important;
+
+ &:hover {
+ background-color: lighten($panel-bg, 10%) !important;
+ border-color: $lp-cyan !important;
+ color: $lp-cyan !important;
+ }
+}
+
+.citation-icon-btn.citation-copied {
+ background-color: $green !important;
+ border-color: $green !important;
+ color: $white !important;
+}
+
+.citation-icon-btn.citation-copied:hover {
+ background-color: $green !important;
+ border-color: $green !important;
+ color: $white !important;
+}
+
+// Custom Footer Dark Mode
+.custom-footer {
+ background-color: $background-nav !important;
+ border-top-color: $btn-border-color !important;
+ color: $text-muted !important;
+}
+
+.custom-footer .footer-grid {
+ border-bottom-color: $btn-border-color !important;
+}
+
+.custom-footer .footer-column h5 {
+ color: $foreground !important;
+}
+
+.custom-footer .footer-column a {
+ color: $text-muted !important;
+ &:hover {
+ color: $links-hover !important;
+ }
+}
+
+.custom-footer .footer-bottom p {
+ color: $text-muted !important;
+}
+
+.custom-footer .footer-bottom a {
+ color: $links !important;
+ border-bottom-color: $btn-border-color !important;
+ &:hover {
+ color: $links-hover !important;
+ border-bottom-color: $links-hover !important;
+ }
+}
+
+.custom-footer .brands-light-mode-logo {
+ display: none !important;
+}
+
+.custom-footer .brands-dark-mode-logo {
+ display: inline !important;
+}
+
+.footer-source-link {
+ color: $text-muted !important;
+ &:hover {
+ color: $links-hover !important;
+ }
+}