From 5cfeefe2699c925f95f94c9bf78de731d8efabdc Mon Sep 17 00:00:00 2001
From: Landon Taylor
Date: Fri, 13 Jun 2025 15:05:28 -0600
Subject: [PATCH] rebuild
---
404.html | 2 +-
about/index.html | 2 +-
applications/constraint-solver/index.html | 2 +-
.../counterexample-generator/index.html | 130 ++++
.../counterexample-generator/index.xml | 19 +
applications/index.html | 20 +-
applications/index.xml | 7 +
applications/model-checker/index.html | 2 +-
.../probabilistic-model-checker/index.html | 2 +-
applications/sat-solver/index.html | 11 +-
applications/sat-solver/index.xml | 7 +
applications/smt-solver/index.html | 2 +-
applications/theorem-prover/index.html | 28 +-
applications/theorem-prover/index.xml | 21 +
contribute/index.html | 2 +-
...691b4b53d252beaf465990992181819c6dd200.css | 640 +++++++++++++++++
...6d3912b75f05d5d2892d3bc718274a7468e887.css | 640 +++++++++++++++++
...eecc9323aba90bd059afaa8cab4f01149f7898.css | 640 +++++++++++++++++
...dab3fb0bf40e1b6f686bc3f10d03246d027d29.css | 640 +++++++++++++++++
...359192edeb7bfaac990e44713f5f67852c758f.css | 638 +++++++++++++++++
...104aa937aad9683dc00bd9ba251f0c386cdd70.css | 640 +++++++++++++++++
...897fcb8805ed2f6fc0c232c75be051a177e8f6.css | 639 +++++++++++++++++
...cbcf5a0dbadd62760226df965ec3dbb86dfa41.css | 640 +++++++++++++++++
...d7e8055a60a99b02eea96eb03acacb2659f08a.css | 640 +++++++++++++++++
...3a1c3a8a5d75ebfc83e160333112e4f33d68d8.css | 640 +++++++++++++++++
css/styles.css.map | 4 +-
...998f7c8bcdc05825337eef616dbd49e7328e3e.css | 639 +++++++++++++++++
...340f395c49749fe3a4e11392fe59be5f941282.css | 627 +++++++++++++++++
...47232d75c2370b5f1d25ab55a532e03f6ba419.css | 641 ++++++++++++++++++
.../albert-ludwigs-universität/index.html | 2 +-
developers/cea/index.html | 2 +-
developers/dhbw-stuttgart/index.html | 130 ++++
developers/dhbw-stuttgart/index.xml | 19 +
.../disi-university-of-trento/index.html | 2 +-
.../index.html | 2 +-
.../fondazione-bruno-kessler/index.html | 2 +-
developers/gilles-audemard/index.html | 2 +-
developers/index.html | 38 +-
developers/index.xml | 14 +
developers/inria-rhône-alpes/index.html | 2 +-
.../index.html | 2 +-
developers/laurent-simon/index.html | 2 +-
developers/loria/index.html | 2 +-
developers/masaryk-university/index.html | 2 +-
developers/microsoft-research/index.html | 2 +-
developers/niklas-eén/index.html | 2 +-
developers/niklas-sörensson/index.html | 2 +-
developers/norbert-manthey/index.html | 2 +-
developers/ocaml-pro/index.html | 2 +-
developers/oxford-university/index.html | 2 +-
developers/rwth-aachen/index.html | 10 +-
developers/rwth-aachen/index.xml | 7 +
developers/sri-international/index.html | 2 +-
developers/stanford-university/index.html | 2 +-
developers/tu-wien/index.html | 140 ++++
developers/tu-wien/index.xml | 26 +
developers/uliege/index.html | 2 +-
developers/university-of-freiburg/index.html | 11 +-
developers/university-of-freiburg/index.xml | 7 +
developers/university-of-illinois/index.html | 2 +-
developers/university-of-iowa/index.html | 2 +-
developers/university-of-lugano/index.html | 2 +-
developers/university-of-virginia/index.html | 2 +-
developers/utah-state-university/index.html | 2 +-
domains/index.html | 2 +-
index.html | 362 +++++-----
index.xml | 35 +
inputs/alt-ergo/index.html | 2 +-
inputs/cnf/index.html | 2 +-
inputs/dimacs/index.html | 2 +-
inputs/galileo/index.html | 2 +-
inputs/greatspn/index.html | 2 +-
inputs/index.html | 2 +-
inputs/jani/index.html | 2 +-
inputs/mrmc/index.html | 2 +-
inputs/pnml/index.html | 2 +-
inputs/prism/index.html | 2 +-
inputs/sally/index.html | 2 +-
inputs/smtlib2/index.html | 2 +-
inputs/yices-2/index.html | 2 +-
interfaces/.net/index.html | 2 +-
interfaces/c++/index.html | 2 +-
interfaces/c/index.html | 2 +-
interfaces/cli/index.html | 37 +-
interfaces/cli/index.xml | 28 +
interfaces/index.html | 2 +-
interfaces/java/index.html | 2 +-
interfaces/online/index.html | 2 +-
interfaces/python/index.html | 2 +-
interfaces/rust/index.html | 2 +-
license/index.html | 2 +-
licenses/all-rights-reserved/index.html | 2 +-
licenses/apache-2.0/index.html | 2 +-
licenses/bsd/index.html | 20 +-
licenses/bsd/index.xml | 14 +
licenses/gplv2/index.html | 10 +-
licenses/gplv2/index.xml | 7 +
licenses/gplv3/index.html | 2 +-
licenses/index.html | 2 +-
licenses/lgplv2/index.html | 2 +-
licenses/mit/index.html | 11 +-
licenses/mit/index.xml | 7 +
licenses/ocamlpro-non-commercial/index.html | 2 +-
maintenance/actively-maintained/index.html | 37 +-
maintenance/actively-maintained/index.xml | 28 +
maintenance/index.html | 20 +-
maintenance/index.xml | 7 +
maintenance/not-maintained/index.html | 2 +-
maintenance/unknown/index.html | 122 ++++
maintenance/unknown/index.xml | 11 +
privacy/index.html | 2 +-
sitemap.xml | 31 +-
taxonomies/index.html | 53 +-
techniques/cdcl/index.html | 2 +-
techniques/gpu/index.html | 2 +-
techniques/index.html | 2 +-
tools/index.html | 599 +++++++++++++++-
tools/mc/index.html | 4 +-
tools/mc/sally/index.html | 2 +-
tools/prob/comics/index.html | 237 +++++++
tools/prob/index.html | 91 ++-
tools/prob/index.xml | 7 +
tools/prob/prism/index.html | 2 +-
tools/prob/stamina/index.html | 2 +-
tools/prob/storm-copy/index.html | 550 +++++++++++++++
tools/prob/storm/index.html | 2 +-
tools/sat-smt/alt-ergo/index.html | 2 +-
tools/sat-smt/bitwuzla/index.html | 2 +-
tools/sat-smt/boolector/index.html | 2 +-
tools/sat-smt/cadical/index.html | 327 +++++++++
tools/sat-smt/colibri/index.html | 2 +-
tools/sat-smt/cryptominisat/index.html | 2 +-
tools/sat-smt/cvc4/index.html | 2 +-
tools/sat-smt/cvc5/index.html | 2 +-
tools/sat-smt/dreal/index.html | 2 +-
tools/sat-smt/e-copy/index.html | 329 +++++++++
tools/sat-smt/e/index.html | 329 +++++++++
tools/sat-smt/glucose/index.html | 2 +-
tools/sat-smt/index.html | 518 +++++++++++++-
tools/sat-smt/index.xml | 28 +
tools/sat-smt/lingeling/index.html | 2 +-
tools/sat-smt/mathsat/index.html | 2 +-
tools/sat-smt/minisat/index.html | 2 +-
tools/sat-smt/opensmt/index.html | 2 +-
tools/sat-smt/parafrost/index.html | 2 +-
tools/sat-smt/q3b/index.html | 2 +-
tools/sat-smt/riss/index.html | 2 +-
tools/sat-smt/smt-rat/index.html | 2 +-
tools/sat-smt/smtinterpol/index.html | 2 +-
tools/sat-smt/stp/index.html | 2 +-
tools/sat-smt/vampire-copy/index.html | 329 +++++++++
tools/sat-smt/vampire/index.html | 329 +++++++++
tools/sat-smt/verit/index.html | 2 +-
tools/sat-smt/yices/index.html | 2 +-
tools/sat-smt/z3/index.html | 2 +-
tools/sat-smt/zipperposition/index.html | 329 +++++++++
tools/termination/index.html | 2 +-
tools/termination/index.xml | 1 -
158 files changed, 13647 insertions(+), 339 deletions(-)
create mode 100644 applications/counterexample-generator/index.html
create mode 100644 applications/counterexample-generator/index.xml
create mode 100644 css/styles.0277d1714bd680ab748db439eb5ba3a01878c7fc0c2454d169b97e4e18ced623e2346f2d80ddf3b512abafbf4b691b4b53d252beaf465990992181819c6dd200.css
create mode 100644 css/styles.087ff949adeb037c9d6370b3a80a17a4b8f4204b6fdf8cb5a90bad5ce63d3f2544441f97ae4816783cef4a07366d3912b75f05d5d2892d3bc718274a7468e887.css
create mode 100644 css/styles.18b7f5118d1dcf0e8f3d7435b8e20b3123ce1f2a6b4c4d8f1a7c57146f48e5edb58dae611a93b4553219d54eb4eecc9323aba90bd059afaa8cab4f01149f7898.css
create mode 100644 css/styles.1c30669efbad6e9c5eadc5dd780867ab0f98c06db8b75428718e33f9f2e178784c105e51b68a377dec81c529aadab3fb0bf40e1b6f686bc3f10d03246d027d29.css
create mode 100644 css/styles.256b9fe8f59dcf5eb078f26c8dc26801592eb04b43e5058d5f9b04c2e0e84222d42ff62b207f47e15481a1a1ba359192edeb7bfaac990e44713f5f67852c758f.css
create mode 100644 css/styles.2deb1a8fcb78105cb53040860ad7e932dfbe5d2294174212986b85c14582497ac987f7269d84839aa49597a2d3104aa937aad9683dc00bd9ba251f0c386cdd70.css
create mode 100644 css/styles.32e14209d14690574fc586eaf6c8e3646751df5aa66d4249a5e22d4b4ea0bdcc23b4e88aa5a625fef7d90b4966897fcb8805ed2f6fc0c232c75be051a177e8f6.css
create mode 100644 css/styles.578881480ce66a12f64771a4e0739355e385e34f80ac1cb42838023ce21f2b1e6e6cae32b6f6311a958e68d9d1cbcf5a0dbadd62760226df965ec3dbb86dfa41.css
create mode 100644 css/styles.b66e385fd50f900667398f3d748f95f200501822c897d1bf8b45292ea077d761348f7962021c16995dcbb8fe7ed7e8055a60a99b02eea96eb03acacb2659f08a.css
create mode 100644 css/styles.cccc9b579e6530591e43f498830c7b929d88df3c45da07b91ea167e31179e0d72afe23418c5c10ee0ba73ddb8c3a1c3a8a5d75ebfc83e160333112e4f33d68d8.css
create mode 100644 css/styles.d4f303f1ff2cc812b2e0b183220644579ba7aa860938854dafccb29277d93943d3561dee6700ff044cb4325f6f998f7c8bcdc05825337eef616dbd49e7328e3e.css
create mode 100644 css/styles.ebf2566cba8f43f92944cd7386e2406d102cd1549d0eb96c8aad4719a336e4ee8b4e1b4171a11d912b19a8a176340f395c49749fe3a4e11392fe59be5f941282.css
create mode 100644 css/styles.fc75b23e06647821502a4513924807f5f51292b031cbb185dac8461df71993ee1b734acd2a13cc0e7e8b3c992e47232d75c2370b5f1d25ab55a532e03f6ba419.css
create mode 100644 developers/dhbw-stuttgart/index.html
create mode 100644 developers/dhbw-stuttgart/index.xml
create mode 100644 developers/tu-wien/index.html
create mode 100644 developers/tu-wien/index.xml
create mode 100644 maintenance/unknown/index.html
create mode 100644 maintenance/unknown/index.xml
create mode 100644 tools/prob/comics/index.html
create mode 100644 tools/prob/storm-copy/index.html
create mode 100644 tools/sat-smt/cadical/index.html
create mode 100644 tools/sat-smt/e-copy/index.html
create mode 100644 tools/sat-smt/e/index.html
create mode 100644 tools/sat-smt/vampire-copy/index.html
create mode 100644 tools/sat-smt/vampire/index.html
create mode 100644 tools/sat-smt/zipperposition/index.html
diff --git a/404.html b/404.html
index ec13b59..bdc278a 100644
--- a/404.html
+++ b/404.html
@@ -23,7 +23,7 @@
-
+
diff --git a/about/index.html b/about/index.html
index 3a782f3..6e52a25 100644
--- a/about/index.html
+++ b/about/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/applications/constraint-solver/index.html b/applications/constraint-solver/index.html
index d66f509..59e48f3 100644
--- a/applications/constraint-solver/index.html
+++ b/applications/constraint-solver/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/applications/counterexample-generator/index.html b/applications/counterexample-generator/index.html
new file mode 100644
index 0000000..6958962
--- /dev/null
+++ b/applications/counterexample-generator/index.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+Counterexample Generator | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Counterexample Generator
+
+
+
+
+
+
+
diff --git a/applications/counterexample-generator/index.xml b/applications/counterexample-generator/index.xml
new file mode 100644
index 0000000..77c541b
--- /dev/null
+++ b/applications/counterexample-generator/index.xml
@@ -0,0 +1,19 @@
+
+
+
+ Counterexample Generator on Formal Methods Tools
+ http://localhost:1313/applications/counterexample-generator/
+ Recent content in Counterexample Generator on Formal Methods Tools
+ Hugo
+ en-us
+ Sat, 07 Jun 2025 00:00:00 +0000
+
+ -
+
COMICS
+ http://localhost:1313/tools/prob/comics/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/prob/comics/
+ <p>COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for discrete-time Markov Chains (DTMCs).</p>
+
+
+
diff --git a/applications/index.html b/applications/index.html
index a706acb..9f47141 100644
--- a/applications/index.html
+++ b/applications/index.html
@@ -23,7 +23,7 @@
-
+
@@ -114,6 +114,24 @@
+
+ Counterexample Generator
+
+
+
+
+
+
+
+
+
+
+
+
http://localhost:1313/applications/constraint-solver/
+ -
+
Counterexample Generator
+ http://localhost:1313/applications/counterexample-generator/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/applications/counterexample-generator/
+
+
-
Model Checker
http://localhost:1313/applications/model-checker/
diff --git a/applications/model-checker/index.html b/applications/model-checker/index.html
index fa6905a..60f7b1a 100644
--- a/applications/model-checker/index.html
+++ b/applications/model-checker/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/applications/probabilistic-model-checker/index.html b/applications/probabilistic-model-checker/index.html
index d4cb45f..45f8007 100644
--- a/applications/probabilistic-model-checker/index.html
+++ b/applications/probabilistic-model-checker/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/applications/sat-solver/index.html b/applications/sat-solver/index.html
index 51158b9..ace4b15 100644
--- a/applications/sat-solver/index.html
+++ b/applications/sat-solver/index.html
@@ -23,7 +23,7 @@
-
+
@@ -121,6 +121,15 @@
+
+
+
+ CaDiCaL
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
diff --git a/applications/sat-solver/index.xml b/applications/sat-solver/index.xml
index 4518a85..94120b7 100644
--- a/applications/sat-solver/index.xml
+++ b/applications/sat-solver/index.xml
@@ -22,6 +22,13 @@
http://localhost:1313/tools/sat-smt/boolector/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2024</span>
<span style="display:none">]</span>
</div>
Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
Succeeded by <a href="../bitwuzla" >Bitwuzla</a></p>
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
CryptoMiniSat
http://localhost:1313/tools/sat-smt/cryptominisat/
diff --git a/applications/smt-solver/index.html b/applications/smt-solver/index.html
index 528fbf5..7af8910 100644
--- a/applications/smt-solver/index.html
+++ b/applications/smt-solver/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/applications/theorem-prover/index.html b/applications/theorem-prover/index.html
index 4cea332..a45235f 100644
--- a/applications/theorem-prover/index.html
+++ b/applications/theorem-prover/index.html
@@ -23,7 +23,7 @@
-
+
@@ -138,6 +138,14 @@
+
+
+
+ E
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with …
+
+
+
@@ -147,6 +155,15 @@ APIs and Bindings This tool is available …
+
+
+
+ Vampire
+ Vampire is a theorem prover.
+
+
+
+
@@ -156,6 +173,15 @@ APIs and Bindings This …
+
+
+
+ Zipperposition
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+
+
+
diff --git a/applications/theorem-prover/index.xml b/applications/theorem-prover/index.xml
index 67391fd..9960957 100644
--- a/applications/theorem-prover/index.xml
+++ b/applications/theorem-prover/index.xml
@@ -36,6 +36,13 @@
http://localhost:1313/tools/sat-smt/cvc5/
<p>cvc5 is an automatic theorem prover for SMT problems.</p>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
STP
http://localhost:1313/tools/sat-smt/stp/
@@ -43,6 +50,13 @@
http://localhost:1313/tools/sat-smt/stp/
<p>STP is a constraint solver for quantifier-free bitvectors.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://stp.readthedocs.io/en/latest/#c-library-usage" target="_blank" >stp C API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://stp.readthedocs.io/en/latest/#python-usage" target="_blank" >stp PyPI package</a></li>
</ul>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
Z3
http://localhost:1313/tools/sat-smt/z3/
@@ -50,5 +64,12 @@
http://localhost:1313/tools/sat-smt/z3/
<p>Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://z3prover.github.io/api/html/group__capi.html" target="_blank" >Z3 C API Reference</a></li>
<li><strong>C++ API:</strong> <a href="https://z3prover.github.io/api/html/namespacez3.html" target="_blank" >Z3 C++ Namespace Reference</a></li>
<li><strong>.NET API:</strong> <a href="https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html" target="_blank" >Z3 .NET Namespace Reference</a></li>
<li><strong>Java API:</strong> <a href="https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html" target="_blank" >Z3 Java API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://pypi.org/project/z3-solver/" target="_blank" >z3-solver PyPI package</a> (<a href="https://z3prover.github.io/api/html/z3.html" target="_blank" >Documentation</a>)</li>
<li><strong>Rust bindings:</strong> <a href="https://crates.io/crates/z3" target="_blank" >z3 crate on crates.io</a></li>
</ul>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
diff --git a/contribute/index.html b/contribute/index.html
index b41371e..ac61ea2 100644
--- a/contribute/index.html
+++ b/contribute/index.html
@@ -26,7 +26,7 @@ Request addding a tool: Submit">
-
+
diff --git a/css/styles.0277d1714bd680ab748db439eb5ba3a01878c7fc0c2454d169b97e4e18ced623e2346f2d80ddf3b512abafbf4b691b4b53d252beaf465990992181819c6dd200.css b/css/styles.0277d1714bd680ab748db439eb5ba3a01878c7fc0c2454d169b97e4e18ced623e2346f2d80ddf3b512abafbf4b691b4b53d252beaf465990992181819c6dd200.css
new file mode 100644
index 0000000..b72931f
--- /dev/null
+++ b/css/styles.0277d1714bd680ab748db439eb5ba3a01878c7fc0c2454d169b97e4e18ced623e2346f2d80ddf3b512abafbf4b691b4b53d252beaf465990992181819c6dd200.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 2rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.087ff949adeb037c9d6370b3a80a17a4b8f4204b6fdf8cb5a90bad5ce63d3f2544441f97ae4816783cef4a07366d3912b75f05d5d2892d3bc718274a7468e887.css b/css/styles.087ff949adeb037c9d6370b3a80a17a4b8f4204b6fdf8cb5a90bad5ce63d3f2544441f97ae4816783cef4a07366d3912b75f05d5d2892d3bc718274a7468e887.css
new file mode 100644
index 0000000..3759333
--- /dev/null
+++ b/css/styles.087ff949adeb037c9d6370b3a80a17a4b8f4204b6fdf8cb5a90bad5ce63d3f2544441f97ae4816783cef4a07366d3912b75f05d5d2892d3bc718274a7468e887.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: calc($spacing-unit / 2);
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.18b7f5118d1dcf0e8f3d7435b8e20b3123ce1f2a6b4c4d8f1a7c57146f48e5edb58dae611a93b4553219d54eb4eecc9323aba90bd059afaa8cab4f01149f7898.css b/css/styles.18b7f5118d1dcf0e8f3d7435b8e20b3123ce1f2a6b4c4d8f1a7c57146f48e5edb58dae611a93b4553219d54eb4eecc9323aba90bd059afaa8cab4f01149f7898.css
new file mode 100644
index 0000000..85b1fea
--- /dev/null
+++ b/css/styles.18b7f5118d1dcf0e8f3d7435b8e20b3123ce1f2a6b4c4d8f1a7c57146f48e5edb58dae611a93b4553219d54eb4eecc9323aba90bd059afaa8cab4f01149f7898.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 1.5rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.1c30669efbad6e9c5eadc5dd780867ab0f98c06db8b75428718e33f9f2e178784c105e51b68a377dec81c529aadab3fb0bf40e1b6f686bc3f10d03246d027d29.css b/css/styles.1c30669efbad6e9c5eadc5dd780867ab0f98c06db8b75428718e33f9f2e178784c105e51b68a377dec81c529aadab3fb0bf40e1b6f686bc3f10d03246d027d29.css
new file mode 100644
index 0000000..7147339
--- /dev/null
+++ b/css/styles.1c30669efbad6e9c5eadc5dd780867ab0f98c06db8b75428718e33f9f2e178784c105e51b68a377dec81c529aadab3fb0bf40e1b6f686bc3f10d03246d027d29.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.256b9fe8f59dcf5eb078f26c8dc26801592eb04b43e5058d5f9b04c2e0e84222d42ff62b207f47e15481a1a1ba359192edeb7bfaac990e44713f5f67852c758f.css b/css/styles.256b9fe8f59dcf5eb078f26c8dc26801592eb04b43e5058d5f9b04c2e0e84222d42ff62b207f47e15481a1a1ba359192edeb7bfaac990e44713f5f67852c758f.css
new file mode 100644
index 0000000..8a080ee
--- /dev/null
+++ b/css/styles.256b9fe8f59dcf5eb078f26c8dc26801592eb04b43e5058d5f9b04c2e0e84222d42ff62b207f47e15481a1a1ba359192edeb7bfaac990e44713f5f67852c758f.css
@@ -0,0 +1,638 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 1.5rem;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.2deb1a8fcb78105cb53040860ad7e932dfbe5d2294174212986b85c14582497ac987f7269d84839aa49597a2d3104aa937aad9683dc00bd9ba251f0c386cdd70.css b/css/styles.2deb1a8fcb78105cb53040860ad7e932dfbe5d2294174212986b85c14582497ac987f7269d84839aa49597a2d3104aa937aad9683dc00bd9ba251f0c386cdd70.css
new file mode 100644
index 0000000..f47570b
--- /dev/null
+++ b/css/styles.2deb1a8fcb78105cb53040860ad7e932dfbe5d2294174212986b85c14582497ac987f7269d84839aa49597a2d3104aa937aad9683dc00bd9ba251f0c386cdd70.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: calc($spacing-unit/2);
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.32e14209d14690574fc586eaf6c8e3646751df5aa66d4249a5e22d4b4ea0bdcc23b4e88aa5a625fef7d90b4966897fcb8805ed2f6fc0c232c75be051a177e8f6.css b/css/styles.32e14209d14690574fc586eaf6c8e3646751df5aa66d4249a5e22d4b4ea0bdcc23b4e88aa5a625fef7d90b4966897fcb8805ed2f6fc0c232c75be051a177e8f6.css
new file mode 100644
index 0000000..791edf3
--- /dev/null
+++ b/css/styles.32e14209d14690574fc586eaf6c8e3646751df5aa66d4249a5e22d4b4ea0bdcc23b4e88aa5a625fef7d90b4966897fcb8805ed2f6fc0c232c75be051a177e8f6.css
@@ -0,0 +1,639 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.578881480ce66a12f64771a4e0739355e385e34f80ac1cb42838023ce21f2b1e6e6cae32b6f6311a958e68d9d1cbcf5a0dbadd62760226df965ec3dbb86dfa41.css b/css/styles.578881480ce66a12f64771a4e0739355e385e34f80ac1cb42838023ce21f2b1e6e6cae32b6f6311a958e68d9d1cbcf5a0dbadd62760226df965ec3dbb86dfa41.css
new file mode 100644
index 0000000..1bd5b95
--- /dev/null
+++ b/css/styles.578881480ce66a12f64771a4e0739355e385e34f80ac1cb42838023ce21f2b1e6e6cae32b6f6311a958e68d9d1cbcf5a0dbadd62760226df965ec3dbb86dfa41.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 49%;
+ min-width: 300px;
+ max-width: 49%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 1.5rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.b66e385fd50f900667398f3d748f95f200501822c897d1bf8b45292ea077d761348f7962021c16995dcbb8fe7ed7e8055a60a99b02eea96eb03acacb2659f08a.css b/css/styles.b66e385fd50f900667398f3d748f95f200501822c897d1bf8b45292ea077d761348f7962021c16995dcbb8fe7ed7e8055a60a99b02eea96eb03acacb2659f08a.css
new file mode 100644
index 0000000..ef6e641
--- /dev/null
+++ b/css/styles.b66e385fd50f900667398f3d748f95f200501822c897d1bf8b45292ea077d761348f7962021c16995dcbb8fe7ed7e8055a60a99b02eea96eb03acacb2659f08a.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1.5rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.cccc9b579e6530591e43f498830c7b929d88df3c45da07b91ea167e31179e0d72afe23418c5c10ee0ba73ddb8c3a1c3a8a5d75ebfc83e160333112e4f33d68d8.css b/css/styles.cccc9b579e6530591e43f498830c7b929d88df3c45da07b91ea167e31179e0d72afe23418c5c10ee0ba73ddb8c3a1c3a8a5d75ebfc83e160333112e4f33d68d8.css
new file mode 100644
index 0000000..d714509
--- /dev/null
+++ b/css/styles.cccc9b579e6530591e43f498830c7b929d88df3c45da07b91ea167e31179e0d72afe23418c5c10ee0ba73ddb8c3a1c3a8a5d75ebfc83e160333112e4f33d68d8.css
@@ -0,0 +1,640 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 50%;
+ min-width: 300px;
+ max-width: 50%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 1.5rem;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.css.map b/css/styles.css.map
index 0838033..ba76c46 100644
--- a/css/styles.css.map
+++ b/css/styles.css.map
@@ -15,11 +15,11 @@
"@import \"fonts\";\n@import \"colors\";\n@import \"layout\";\n@import \"taxonomy\";\n@import \"links\";\n@import \"publications\";\n",
"$font-path: '/fonts/static/';\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src: local('Source Sans 3 ExtraLight'), local('SourceSans3-ExtraLight'), url('#{$font-path}SourceSans3-ExtraLight.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraLight.ttf') format('truetype'); }\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 200;\n src: local('Source Sans 3 ExtraLight'), local('SourceSans3-ExtraLight'), url('#{$font-path}SourceSans3-ExtraLight.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraLight.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: local('Source Sans 3 Light'), local('SourceSans3-Light'), url('#{$font-path}SourceSans3-Light.woff2') format('woff2'), url('#{$font-path}SourceSans3-Light.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: local('Source Sans 3 Regular'), local('SourceSans3-Regular'), url('#{$font-path}SourceSans3-Regular.woff2') format('woff2'), url('#{$font-path}SourceSans3-Regular.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src: local('Source Sans 3 Italic'), local('SourceSans3-Italic'), url('#{$font-path}SourceSans3-Italic.woff2') format('woff2'), url('#{$font-path}SourceSans3-Italic.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: local('Source Sans 3 Medium'), local('SourceSans3-Medium'), url('#{$font-path}SourceSans3-Medium.woff2') format('woff2'), url('#{$font-path}SourceSans3-Medium.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: local('Source Sans 3 SemiBold'), local('SourceSans3-SemiBold'), url('#{$font-path}SourceSans3-SemiBold.woff2') format('woff2'), url('#{$font-path}SourceSans3-SemiBold.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: local('Source Sans 3 Bold'), local('SourceSans3-Bold'), url('#{$font-path}SourceSans3-Bold.woff2') format('woff2'), url('#{$font-path}SourceSans3-Bold.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src: local('Source Sans 3 Bold Italic'), local('SourceSans3-BoldItalic'), url('#{$font-path}SourceSans3-BoldItalic.woff2') format('woff2'), url('#{$font-path}SourceSans3-BoldItalic.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 800;\n src: local('Source Sans 3 ExtraBold'), local('SourceSans3-ExtraBold'), url('#{$font-path}SourceSans3-ExtraBold.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraBold.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Sans 3';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src: local('Source Sans 3 Black'), local('SourceSans3-Black'), url('#{$font-path}SourceSans3-Black.woff2') format('woff2'), url('#{$font-path}SourceSans3-Black.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Code Pro';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: local('Source Code Pro Medium'), local('SourceCodePro-Medium'), url('#{$font-path}SourceCodePro-Medium.woff2') format('woff2'), url('#{$font-path}SourceCodePro-Medium.ttf') format('truetype'); }\n\n@font-face {\n font-family: 'Source Code Pro';\n font-style: italic;\n font-display: swap;\n font-weight: 600;\n src: local('Source Code Pro Medium Italic'), local('SourceCodePro-MediumItalic'), url('#{$font-path}SourceCodePro-MediumItalic.woff2') format('woff2'), url('#{$font-path}SourceCodePro-MediumItalic.ttf') format('truetype'); }\n\n\n\n\n* {\n font-family: 'Source Sans 3', sans-serif; }\ncode {\n font-family: 'Source Code Pro', monospace; }\n",
"//\n// _colors.sass\n// Attractive dark mode color scheme for fmtools\n//\n\n// Primary palette\n$primary: #3380ff;\n$primary-dark: #1a3e70;\n$primary-light: #8fc6ff;\n\n// Accent colors\n$accent: #1de9b6;\n$accent-dark: #00897b;\n$accent-light: #6fffd2;\n\n\n// Success, warning, error\n$success: #00e676;\n$warning: #ffd600;\n$error: #ff1744;\n\n// Neutral palette (dark mode)\n$darkest: #0a0c11;\n$background: #10131a;\n$surface: #1a1e29;\n$border: #3a4054;\n$text: #ffffff;\n$text-subtle: #bfc9e6;\n",
- "/* _layout.sass */\n\n/* Variables */\n$spacing-unit: 1.5rem;\n$section-spacing: 2rem;\n$border-radius: 8px;\n$body-width: 1024px;\n\nhtml {\n background: darken($background, 3%); }\n\n/* Base Layout */\nbody {\n background: $background;\n color: $text;\n font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;\n width: 100%;\n height: 100%;\n max-width: $body-width;\n margin: $spacing-unit auto;\n padding: $spacing-unit;\n box-sizing: border-box;\n border-radius: $border-radius; }\n\nheader {\n background: $surface;\n margin: $spacing-unit;\n padding: $spacing-unit;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n border-radius: $border-radius;\n margin: 0 auto; }\n\nheader h1, header h1 a {\n margin: 0;\n font-size: 1.6rem;\n font-weight: 900;\n color: $text;\n text-decoration: none;\n padding: 0;\n transition: color 0.4s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } }\n\nnav {\n display: flex;\n gap: $spacing-unit;\n align-items: center; }\n\nnav ul {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap; }\n\nnav ul li {\n margin: 0;\n padding: 0; }\n\nnav ul li a {\n padding: 0.4rem 0.6rem;\n border-radius: $border-radius;\n background: $primary-dark;\n color: $text;\n text-decoration: none;\n font-weight: 500;\n transition: background 0.4s ease-in-out;\n &:hover, &:focus {\n background: $accent-dark;\n color: $text; } }\n\n@media (max-width: 600px) {\n header {\n flex-direction: column;\n align-items: flex-start;\n gap: $spacing-unit; }\n\n nav {\n width: 100%;\n justify-content: flex-start;\n margin-top: $spacing-unit; } }\n\nmain {\n margin: $spacing-unit 0;\n padding: $spacing-unit; }\n\nfooter {\n background: $surface;\n margin: $spacing-unit;\n padding: $spacing-unit;\n border-radius: $border-radius;\n margin: 0 auto;\n text-align: center; }\n\nfooter p {\n margin: 0;\n font-size: 0.9rem;\n color: $text-subtle;\n text-align: center; }\n\nsection {\n border-bottom: 3px solid $surface;\n margin: $section-spacing 0;\n padding-bottom: $section-spacing; }\n\n#page-header {\n border-bottom: 3px solid $surface;\n margin: $section-spacing 0;\n padding-bottom: $section-spacing;\n text-align: center;\n h1 {\n margin: 0;\n width: 100%;\n font-size: 3rem;\n word-break: break-word; }\n .subtitle {\n margin: 0;\n width: 100%;\n font-size: 1.2rem;\n font-weight: 300;\n color: $text-subtle; } }\n.time {\n font-size: 0.8rem;\n color: $text-subtle;\n text-align: center; }\n\narticle {\n background: $surface;\n border-radius: 8px;\n padding: $spacing-unit;\n margin: $spacing-unit 0;\n position: relative;\n transition: background 0.5s ease-in-out;\n &:hover, &:focus {\n background: $primary-dark; }\n h3 {\n margin: 0;\n font-size: 1.5rem;\n font-weight: 700;\n color: $text; }\n a {\n color: $text;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n text-indent: -9999px;\n overflow: hidden;\n text-decoration: none;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } }\n &:not(a) {\n position: relative;\n z-index: 2; }\n p {\n margin: 0.5rem 0;\n font-size: 1rem;\n color: $text;\n font-weight: 300; }\n\n .subtitle {\n margin: 0 0 0 0.5rem;\n width: 100%;\n font-size: 1.1rem;\n font-weight: 300;\n color: $text-subtle; } }\n\n.term-title {\n font-weight: 700;\n padding: 0.3rem 0.8rem;\n margin-bottom: 0.5rem;\n border-radius: $border-radius; }\n\np code {\n background: darken($primary-dark,10%);\n margin: 0 0.2rem;\n padding: 0.2rem 0.4rem;\n border-radius: 5px;\n font-size: 0.8rem; }\n\npre {\n padding: 0.5rem;\n border-radius: 5px;\n overflow-x: auto;\n code {\n font-size: 0.8rem; } }\n\n.banner {\n position: fixed;\n top: 0;\n width: 100%;\n max-width: $body-width;\n background-color: $accent;\n color: $darkest;\n padding: 5px 0;\n font-weight: 400;\n text-align: center;\n font-size: 1.1em;\n border-radius: 0 0 8px 8px;\n z-index: 1000;\n font-size: 0.9rem;\n height: 1.3rem;\n margin-left: calc(0% - #{$spacing-unit});\n\n a {\n color: $darkest;\n text-decoration: underline;\n font-weight: 700;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $primary-dark; } } }\n\nbody:has(.banner) {\n margin-top: 2.6rem; }\n\n@media (max-width: 600px) {\n .banner {\n position: absolute;\n top: 0;\n width: calc(100% - #{$spacing-unit});\n max-width: $body-width;\n background-color: $accent;\n color: $darkest;\n padding: 5px;\n font-weight: 400;\n text-align: center;\n font-size: 1.1em;\n border-radius: 0 0 8px 8px;\n z-index: 1000;\n font-size: 0.9rem;\n height: 4.3rem;\n margin-left: calc(0% - #{$spacing-unit});\n\n .banner-text {\n display: block;\n margin: 0 5px; } }\n\n\n body:has(.banner) {\n margin-top: 5.6rem; } }\n",
+ "/* _layout.sass */\n\n/* Variables */\n$spacing-unit: 1.5rem;\n$section-spacing: 2rem;\n$border-radius: 8px;\n$body-width: 1024px;\n\nhtml {\n background: darken($background, 3%); }\n\n/* Base Layout */\nbody {\n background: $background;\n color: $text;\n font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;\n width: 100%;\n height: 100%;\n max-width: $body-width;\n margin: $spacing-unit auto;\n padding: $spacing-unit;\n box-sizing: border-box;\n border-radius: $border-radius; }\n\nheader {\n background: $surface;\n margin: $spacing-unit;\n padding: $spacing-unit;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n border-radius: $border-radius;\n margin: 0 auto; }\n\nheader h1, header h1 a {\n margin: 0;\n font-size: 1.6rem;\n font-weight: 900;\n color: $text;\n text-decoration: none;\n padding: 0;\n transition: color 0.4s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } }\n\nnav {\n display: flex;\n gap: $spacing-unit;\n align-items: center; }\n\nnav ul {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap; }\n\nnav ul li {\n margin: 0;\n padding: 0; }\n\nnav ul li a {\n padding: 0.4rem 0.6rem;\n border-radius: $border-radius;\n background: $primary-dark;\n color: $text;\n text-decoration: none;\n font-weight: 500;\n transition: background 0.4s ease-in-out;\n &:hover, &:focus {\n background: $accent-dark;\n color: $text; } }\n\n@media (max-width: 600px) {\n header {\n flex-direction: column;\n align-items: flex-start;\n gap: $spacing-unit; }\n\n nav {\n width: 100%;\n justify-content: flex-start;\n margin-top: $spacing-unit; } }\n\nmain {\n margin: $spacing-unit 0;\n padding: $spacing-unit; }\n\nfooter {\n background: $surface;\n margin: $spacing-unit;\n padding: $spacing-unit;\n border-radius: $border-radius;\n margin: 0 auto;\n text-align: center; }\n\nfooter p {\n margin: 0;\n font-size: 0.9rem;\n color: $text-subtle;\n text-align: center; }\n\nsection {\n border-bottom: 3px solid $surface;\n margin: $section-spacing 0;\n padding-bottom: $section-spacing; }\n\n#page-header {\n border-bottom: 3px solid $surface;\n margin: $section-spacing 0;\n padding-bottom: $section-spacing;\n text-align: center;\n h1 {\n margin: 0;\n width: 100%;\n font-size: 3rem;\n word-break: break-word; }\n .subtitle {\n margin: 0;\n width: 100%;\n font-size: 1.2rem;\n font-weight: 300;\n color: $text-subtle; } }\n.time {\n font-size: 0.8rem;\n color: $text-subtle;\n text-align: center; }\n\n#tool-cards {\n display: flex;\n flex-wrap: wrap;\n gap: $spacing-unit;\n // justify-content: space-between\n\n > article {\n flex: 1 1 48%;\n min-width: 300px;\n max-width: 48%;\n box-sizing: border-box; }\n\n @media (max-width: 900px) {\n > article {\n flex-basis: 100%;\n max-width: 100%; } } }\n\narticle {\n background: $surface;\n border-radius: 8px;\n padding: 1rem 1.5rem;\n // margin: $spacing-unit 0\n // position: relative\n transition: background 0.5s ease-in-out;\n &:hover, &:focus {\n background: $primary-dark; }\n h3 {\n margin: 0;\n font-size: 1.5rem;\n font-weight: 700;\n color: $text; }\n a {\n color: $text;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n text-indent: -9999px;\n overflow: hidden;\n text-decoration: none;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } }\n &:not(a) {\n position: relative;\n z-index: 2; }\n p {\n margin: 0.5rem 0;\n font-size: 1rem;\n color: $text;\n font-weight: 300; }\n\n .subtitle {\n margin: 0 0 0 0.5rem;\n width: 100%;\n font-size: 1.1rem;\n font-weight: 300;\n color: $text-subtle; } }\n\n.term-title {\n font-weight: 700;\n padding: 0.3rem 0.8rem;\n margin-bottom: 0.5rem;\n border-radius: $border-radius; }\n\np code {\n background: darken($primary-dark,10%);\n margin: 0 0.2rem;\n padding: 0.2rem 0.4rem;\n border-radius: 5px;\n font-size: 0.8rem; }\n\npre {\n padding: 0.5rem;\n border-radius: 5px;\n overflow-x: auto;\n code {\n font-size: 0.8rem; } }\n\n.banner {\n position: fixed;\n top: 0;\n width: 100%;\n max-width: $body-width;\n background-color: $accent;\n color: $darkest;\n padding: 5px 0;\n font-weight: 400;\n text-align: center;\n font-size: 1.1em;\n border-radius: 0 0 8px 8px;\n z-index: 1000;\n font-size: 0.9rem;\n height: 1.3rem;\n margin-left: calc(0% - #{$spacing-unit});\n\n a {\n color: $darkest;\n text-decoration: underline;\n font-weight: 700;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $primary-dark; } } }\n\nbody:has(.banner) {\n margin-top: 2.6rem; }\n\n@media (max-width: 600px) {\n .banner {\n position: absolute;\n top: 0;\n width: calc(100% - #{$spacing-unit});\n max-width: $body-width;\n background-color: $accent;\n color: $darkest;\n padding: 5px;\n font-weight: 400;\n text-align: center;\n font-size: 1.1em;\n border-radius: 0 0 8px 8px;\n z-index: 1000;\n font-size: 0.9rem;\n height: 4.3rem;\n margin-left: calc(0% - #{$spacing-unit});\n\n .banner-text {\n display: block;\n margin: 0 5px; } }\n\n\n body:has(.banner) {\n margin-top: 5.6rem; } }\n",
"\ntable#taxonomy-table {\n width: 100%;\n border-collapse: collapse;\n // border: 3px solid $darkest\n box-sizing: border-box;\n background: $surface;\n text-align: left;\n\n tr {\n border-bottom: 3px solid $background;\n &:nth-child(even) {\n background: darken($surface, 2%);\n transition: background 0.4s ease-in-out; }\n &:nth-child(odd) {\n background: lighten($surface, 3%);\n transition: background 0.4s ease-in-out; }\n &:hover, &:focus {\n background: $border; } }\n\n thead {\n text-align: left;\n border: none;\n border-radius: $border-radius $border-radius 0 0; }\n\n th {\n color: $text;\n background: $darkest !important;\n padding: 0.6rem 0.6rem;\n text-align: left;\n font-weight: 600;\n border: none; }\n\n td {\n padding: 0.3rem 0.6rem;\n text-align: left;\n font-weight: 600;\n border: none; }\n\n td.description {\n font-weight: 300;\n color: $text-subtle; }\n td.tool {\n min-width: 100px; }\n\n a.term-link {\n padding: 0.2rem 0.6rem;\n margin: 0.2rem;\n display: inline-block;\n border-radius: $border-radius;\n text-decoration: none;\n font-weight: 500;\n color: $text;\n transition: color 0.4s ease-in-out, background 0.4s ease-in-out;\n &:hover, &:focus {\n color: $darkest !important;\n background: $text-subtle !important; } }\n\n a.taxonomy-name {\n padding: 0;\n margin: 0.2rem;\n display: inline-block;\n border-radius: $border-radius;\n text-decoration: none;\n font-weight: 500;\n color: $text;\n transition: color 0.4s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } }\n\n a {\n color: $text;\n text-decoration: none;\n &:hover, &:focus {\n color: $accent; } } }\n\n#taxonomy-page a.term-link {\n padding: 0.3rem 1.2rem;\n margin: 0.2rem;\n display: inline-block;\n border-radius: $border-radius;\n text-decoration: none;\n font-weight: 500;\n font-size: 1.2rem;\n color: $text;\n transition: color 0.4s ease-in-out, background 0.4s ease-in-out;\n &:hover, &:focus {\n color: $darkest !important;\n background: $text-subtle !important; } }\n\n",
"/* _text.sass */\n\na {\n color: $accent-light;\n text-decoration: underline;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $primary; } }\n\n#quick-links {\n text-align: left; }\n\n#link-list {\n display: flex;\n gap: $spacing-unit;\n align-items: center;\n flex-wrap: wrap;\n margin: 2rem 0 $spacing-unit 0;\n justify-content: center; }\n\n#link-list h2 {\n flex: none; }\n\n#link-list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n gap: 1rem;\n flex-wrap: wrap; }\n\n#link-list ul li {\n margin: 0;\n padding: 0; }\n\n#link-list ul li a {\n padding: 0.3rem 0.6rem;\n border-radius: $border-radius;\n background: $primary-light;\n color: $darkest;\n text-decoration: none;\n font-weight: 500;\n transition: background 0.3s ease-in-out;\n &:hover, &:focus {\n background: $accent-light; } }\n\na.button {\n padding: 0.3rem 0.6rem;\n margin: 0 0.2rem;\n border-radius: $border-radius;\n background: $primary-light;\n color: $darkest;\n text-decoration: none;\n font-weight: 500;\n transition: background 0.3s ease-in-out;\n &:hover, &:focus {\n background: $accent-light; } }\n",
"#publications {\n font-weight: 300;\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 1em;\n\n li {\n background: $surface;\n border-radius: 8px;\n padding: 1em 1.5em; } }\n a {\n color: $primary-light;\n text-decoration: none;\n font-weight: 100;\n transition: color 0.3s ease-in-out;\n &:hover, &:focus {\n color: $accent-light; } } }\n"
],
"names": [],
- "mappings": "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"
+ "mappings": "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"
}
\ No newline at end of file
diff --git a/css/styles.d4f303f1ff2cc812b2e0b183220644579ba7aa860938854dafccb29277d93943d3561dee6700ff044cb4325f6f998f7c8bcdc05825337eef616dbd49e7328e3e.css b/css/styles.d4f303f1ff2cc812b2e0b183220644579ba7aa860938854dafccb29277d93943d3561dee6700ff044cb4325f6f998f7c8bcdc05825337eef616dbd49e7328e3e.css
new file mode 100644
index 0000000..f1862cd
--- /dev/null
+++ b/css/styles.d4f303f1ff2cc812b2e0b183220644579ba7aa860938854dafccb29277d93943d3561dee6700ff044cb4325f6f998f7c8bcdc05825337eef616dbd49e7328e3e.css
@@ -0,0 +1,639 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1rem 1.5rem;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.ebf2566cba8f43f92944cd7386e2406d102cd1549d0eb96c8aad4719a336e4ee8b4e1b4171a11d912b19a8a176340f395c49749fe3a4e11392fe59be5f941282.css b/css/styles.ebf2566cba8f43f92944cd7386e2406d102cd1549d0eb96c8aad4719a336e4ee8b4e1b4171a11d912b19a8a176340f395c49749fe3a4e11392fe59be5f941282.css
new file mode 100644
index 0000000..6915161
--- /dev/null
+++ b/css/styles.ebf2566cba8f43f92944cd7386e2406d102cd1549d0eb96c8aad4719a336e4ee8b4e1b4171a11d912b19a8a176340f395c49749fe3a4e11392fe59be5f941282.css
@@ -0,0 +1,627 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: center;
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1.5rem;
+ margin: 1.5rem 0;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/css/styles.fc75b23e06647821502a4513924807f5f51292b031cbb185dac8461df71993ee1b734acd2a13cc0e7e8b3c992e47232d75c2370b5f1d25ab55a532e03f6ba419.css b/css/styles.fc75b23e06647821502a4513924807f5f51292b031cbb185dac8461df71993ee1b734acd2a13cc0e7e8b3c992e47232d75c2370b5f1d25ab55a532e03f6ba419.css
new file mode 100644
index 0000000..09b9c00
--- /dev/null
+++ b/css/styles.fc75b23e06647821502a4513924807f5f51292b031cbb185dac8461df71993ee1b734acd2a13cc0e7e8b3c992e47232d75c2370b5f1d25ab55a532e03f6ba419.css
@@ -0,0 +1,641 @@
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: local("Source Sans 3 ExtraLight"), local("SourceSans3-ExtraLight"), url("/fonts/static/SourceSans3-ExtraLight.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: local("Source Sans 3 Light"), local("SourceSans3-Light"), url("/fonts/static/SourceSans3-Light.woff2") format("woff2"), url("/fonts/static/SourceSans3-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Regular"), local("SourceSans3-Regular"), url("/fonts/static/SourceSans3-Regular.woff2") format("woff2"), url("/fonts/static/SourceSans3-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: local("Source Sans 3 Italic"), local("SourceSans3-Italic"), url("/fonts/static/SourceSans3-Italic.woff2") format("woff2"), url("/fonts/static/SourceSans3-Italic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: local("Source Sans 3 Medium"), local("SourceSans3-Medium"), url("/fonts/static/SourceSans3-Medium.woff2") format("woff2"), url("/fonts/static/SourceSans3-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Sans 3 SemiBold"), local("SourceSans3-SemiBold"), url("/fonts/static/SourceSans3-SemiBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold"), local("SourceSans3-Bold"), url("/fonts/static/SourceSans3-Bold.woff2") format("woff2"), url("/fonts/static/SourceSans3-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: local("Source Sans 3 Bold Italic"), local("SourceSans3-BoldItalic"), url("/fonts/static/SourceSans3-BoldItalic.woff2") format("woff2"), url("/fonts/static/SourceSans3-BoldItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: local("Source Sans 3 ExtraBold"), local("SourceSans3-ExtraBold"), url("/fonts/static/SourceSans3-ExtraBold.woff2") format("woff2"), url("/fonts/static/SourceSans3-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Sans 3';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: local("Source Sans 3 Black"), local("SourceSans3-Black"), url("/fonts/static/SourceSans3-Black.woff2") format("woff2"), url("/fonts/static/SourceSans3-Black.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium"), local("SourceCodePro-Medium"), url("/fonts/static/SourceCodePro-Medium.woff2") format("woff2"), url("/fonts/static/SourceCodePro-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Source Code Pro';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: local("Source Code Pro Medium Italic"), local("SourceCodePro-MediumItalic"), url("/fonts/static/SourceCodePro-MediumItalic.woff2") format("woff2"), url("/fonts/static/SourceCodePro-MediumItalic.ttf") format("truetype");
+}
+
+* {
+ font-family: 'Source Sans 3', sans-serif;
+}
+
+code {
+ font-family: 'Source Code Pro', monospace;
+}
+
+/* _layout.sass */
+/* Variables */
+html {
+ background: #0a0c11;
+}
+
+/* Base Layout */
+body {
+ background: #10131a;
+ color: #ffffff;
+ font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
+ width: 100%;
+ height: 100%;
+ max-width: 1024px;
+ margin: 1.5rem auto;
+ padding: 1.5rem;
+ box-sizing: border-box;
+ border-radius: 8px;
+}
+
+header {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 8px;
+ margin: 0 auto;
+}
+
+header h1, header h1 a {
+ margin: 0;
+ font-size: 1.6rem;
+ font-weight: 900;
+ color: #ffffff;
+ text-decoration: none;
+ padding: 0;
+ transition: color 0.4s ease-in-out;
+}
+
+header h1:hover, header h1:focus, header h1 a:hover, header h1 a:focus {
+ color: #6fffd2;
+}
+
+nav {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+}
+
+nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+}
+
+nav ul li {
+ margin: 0;
+ padding: 0;
+}
+
+nav ul li a {
+ padding: 0.4rem 0.6rem;
+ border-radius: 8px;
+ background: #1a3e70;
+ color: #ffffff;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.4s ease-in-out;
+}
+
+nav ul li a:hover, nav ul li a:focus {
+ background: #00897b;
+ color: #ffffff;
+}
+
+@media (max-width: 600px) {
+ header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1.5rem;
+ }
+ nav {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 1.5rem;
+ }
+}
+
+main {
+ margin: 1.5rem 0;
+ padding: 1.5rem;
+}
+
+footer {
+ background: #1a1e29;
+ margin: 1.5rem;
+ padding: 1.5rem;
+ border-radius: 8px;
+ margin: 0 auto;
+ text-align: center;
+}
+
+footer p {
+ margin: 0;
+ font-size: 0.9rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+section {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+}
+
+#page-header {
+ border-bottom: 3px solid #1a1e29;
+ margin: 2rem 0;
+ padding-bottom: 2rem;
+ text-align: center;
+}
+
+#page-header h1 {
+ margin: 0;
+ width: 100%;
+ font-size: 3rem;
+ word-break: break-word;
+}
+
+#page-header .subtitle {
+ margin: 0;
+ width: 100%;
+ font-size: 1.2rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.time {
+ font-size: 0.8rem;
+ color: #bfc9e6;
+ text-align: center;
+}
+
+#tool-cards {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1.5rem;
+ justify-content: space-between;
+}
+
+#tool-cards > article {
+ flex: 1 1 48%;
+ min-width: 300px;
+ max-width: 48%;
+ box-sizing: border-box;
+}
+
+@media (max-width: 900px) {
+ #tool-cards > article {
+ flex-basis: 100%;
+ max-width: 100%;
+ }
+}
+
+article {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1.5rem;
+ margin: 1.5rem 0;
+ position: relative;
+ transition: background 0.5s ease-in-out;
+}
+
+article:hover, article:focus {
+ background: #1a3e70;
+}
+
+article h3 {
+ margin: 0;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #ffffff;
+}
+
+article a {
+ color: #ffffff;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ transition: color 0.3s ease-in-out;
+}
+
+article a:hover, article a:focus {
+ color: #6fffd2;
+}
+
+article:not(a) {
+ position: relative;
+ z-index: 2;
+}
+
+article p {
+ margin: 0.5rem 0;
+ font-size: 1rem;
+ color: #ffffff;
+ font-weight: 300;
+}
+
+article .subtitle {
+ margin: 0 0 0 0.5rem;
+ width: 100%;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+.term-title {
+ font-weight: 700;
+ padding: 0.3rem 0.8rem;
+ margin-bottom: 0.5rem;
+ border-radius: 8px;
+}
+
+p code {
+ background: #102747;
+ margin: 0 0.2rem;
+ padding: 0.2rem 0.4rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+}
+
+pre {
+ padding: 0.5rem;
+ border-radius: 5px;
+ overflow-x: auto;
+}
+
+pre code {
+ font-size: 0.8rem;
+}
+
+.banner {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px 0;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 1.3rem;
+ margin-left: calc(0% - 1.5rem);
+}
+
+.banner a {
+ color: #0a0c11;
+ text-decoration: underline;
+ font-weight: 700;
+ transition: color 0.3s ease-in-out;
+}
+
+.banner a:hover, .banner a:focus {
+ color: #1a3e70;
+}
+
+body:has(.banner) {
+ margin-top: 2.6rem;
+}
+
+@media (max-width: 600px) {
+ .banner {
+ position: absolute;
+ top: 0;
+ width: calc(100% - 1.5rem);
+ max-width: 1024px;
+ background-color: #1de9b6;
+ color: #0a0c11;
+ padding: 5px;
+ font-weight: 400;
+ text-align: center;
+ font-size: 1.1em;
+ border-radius: 0 0 8px 8px;
+ z-index: 1000;
+ font-size: 0.9rem;
+ height: 4.3rem;
+ margin-left: calc(0% - 1.5rem);
+ }
+ .banner .banner-text {
+ display: block;
+ margin: 0 5px;
+ }
+ body:has(.banner) {
+ margin-top: 5.6rem;
+ }
+}
+
+table#taxonomy-table {
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: border-box;
+ background: #1a1e29;
+ text-align: left;
+}
+
+table#taxonomy-table tr {
+ border-bottom: 3px solid #10131a;
+}
+
+table#taxonomy-table tr:nth-child(even) {
+ background: #161923;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:nth-child(odd) {
+ background: #202532;
+ transition: background 0.4s ease-in-out;
+}
+
+table#taxonomy-table tr:hover, table#taxonomy-table tr:focus {
+ background: #3a4054;
+}
+
+table#taxonomy-table thead {
+ text-align: left;
+ border: none;
+ border-radius: 8px 8px 0 0;
+}
+
+table#taxonomy-table th {
+ color: #ffffff;
+ background: #0a0c11 !important;
+ padding: 0.6rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td {
+ padding: 0.3rem 0.6rem;
+ text-align: left;
+ font-weight: 600;
+ border: none;
+}
+
+table#taxonomy-table td.description {
+ font-weight: 300;
+ color: #bfc9e6;
+}
+
+table#taxonomy-table td.tool {
+ min-width: 100px;
+}
+
+table#taxonomy-table a.term-link {
+ padding: 0.2rem 0.6rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.term-link:hover, table#taxonomy-table a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+table#taxonomy-table a.taxonomy-name {
+ padding: 0;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out;
+}
+
+table#taxonomy-table a.taxonomy-name:hover, table#taxonomy-table a.taxonomy-name:focus {
+ color: #6fffd2;
+}
+
+table#taxonomy-table a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+table#taxonomy-table a:hover, table#taxonomy-table a:focus {
+ color: #1de9b6;
+}
+
+#taxonomy-page a.term-link {
+ padding: 0.3rem 1.2rem;
+ margin: 0.2rem;
+ display: inline-block;
+ border-radius: 8px;
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1.2rem;
+ color: #ffffff;
+ transition: color 0.4s ease-in-out, background 0.4s ease-in-out;
+}
+
+#taxonomy-page a.term-link:hover, #taxonomy-page a.term-link:focus {
+ color: #0a0c11 !important;
+ background: #bfc9e6 !important;
+}
+
+/* _text.sass */
+a {
+ color: #6fffd2;
+ text-decoration: underline;
+ transition: color 0.3s ease-in-out;
+}
+
+a:hover, a:focus {
+ color: #3380ff;
+}
+
+#quick-links {
+ text-align: left;
+}
+
+#link-list {
+ display: flex;
+ gap: 1.5rem;
+ align-items: center;
+ flex-wrap: wrap;
+ margin: 2rem 0 1.5rem 0;
+ justify-content: center;
+}
+
+#link-list h2 {
+ flex: none;
+}
+
+#link-list ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+#link-list ul li {
+ margin: 0;
+ padding: 0;
+}
+
+#link-list ul li a {
+ padding: 0.3rem 0.6rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+#link-list ul li a:hover, #link-list ul li a:focus {
+ background: #6fffd2;
+}
+
+a.button {
+ padding: 0.3rem 0.6rem;
+ margin: 0 0.2rem;
+ border-radius: 8px;
+ background: #8fc6ff;
+ color: #0a0c11;
+ text-decoration: none;
+ font-weight: 500;
+ transition: background 0.3s ease-in-out;
+}
+
+a.button:hover, a.button:focus {
+ background: #6fffd2;
+}
+
+#publications {
+ font-weight: 300;
+}
+
+#publications ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+#publications ul li {
+ background: #1a1e29;
+ border-radius: 8px;
+ padding: 1em 1.5em;
+}
+
+#publications a {
+ color: #8fc6ff;
+ text-decoration: none;
+ font-weight: 100;
+ transition: color 0.3s ease-in-out;
+}
+
+#publications a:hover, #publications a:focus {
+ color: #6fffd2;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/developers/albert-ludwigs-universität/index.html b/developers/albert-ludwigs-universität/index.html
index 1873558..f48bb50 100644
--- a/developers/albert-ludwigs-universität/index.html
+++ b/developers/albert-ludwigs-universität/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/cea/index.html b/developers/cea/index.html
index c635ef0..4d4e137 100644
--- a/developers/cea/index.html
+++ b/developers/cea/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/dhbw-stuttgart/index.html b/developers/dhbw-stuttgart/index.html
new file mode 100644
index 0000000..8f58182
--- /dev/null
+++ b/developers/dhbw-stuttgart/index.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+DHBW Stuttgart | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DHBW Stuttgart
+
+
+
+
+
+
+
diff --git a/developers/dhbw-stuttgart/index.xml b/developers/dhbw-stuttgart/index.xml
new file mode 100644
index 0000000..16b9694
--- /dev/null
+++ b/developers/dhbw-stuttgart/index.xml
@@ -0,0 +1,19 @@
+
+
+
+ DHBW Stuttgart on Formal Methods Tools
+ http://localhost:1313/developers/dhbw-stuttgart/
+ Recent content in DHBW Stuttgart on Formal Methods Tools
+ Hugo
+ en-us
+ Sat, 07 Jun 2025 00:00:00 +0000
+
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
+
+
diff --git a/developers/disi-university-of-trento/index.html b/developers/disi-university-of-trento/index.html
index e4061d2..e99ed39 100644
--- a/developers/disi-university-of-trento/index.html
+++ b/developers/disi-university-of-trento/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/eindhoven-university-of-technology/index.html b/developers/eindhoven-university-of-technology/index.html
index 31f773f..bf5eba5 100644
--- a/developers/eindhoven-university-of-technology/index.html
+++ b/developers/eindhoven-university-of-technology/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/fondazione-bruno-kessler/index.html b/developers/fondazione-bruno-kessler/index.html
index 5ef35f8..653df9a 100644
--- a/developers/fondazione-bruno-kessler/index.html
+++ b/developers/fondazione-bruno-kessler/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/gilles-audemard/index.html b/developers/gilles-audemard/index.html
index d69e7ed..5240c49 100644
--- a/developers/gilles-audemard/index.html
+++ b/developers/gilles-audemard/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/index.html b/developers/index.html
index cb3b19d..a9b9611 100644
--- a/developers/index.html
+++ b/developers/index.html
@@ -23,7 +23,7 @@
-
+
@@ -132,6 +132,24 @@
+
+ DHBW Stuttgart
+
+
+
+
+
+
+
+
+
+
+
+
+ TU Wien
+
+
+
+
+
+
+
+
+
+
+
+
http://localhost:1313/developers/cea/
+ -
+
DHBW Stuttgart
+ http://localhost:1313/developers/dhbw-stuttgart/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/developers/dhbw-stuttgart/
+
+
-
DISI-University of Trento
http://localhost:1313/developers/disi-university-of-trento/
@@ -148,6 +155,13 @@
http://localhost:1313/developers/stanford-university/
+ -
+
TU Wien
+ http://localhost:1313/developers/tu-wien/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/developers/tu-wien/
+
+
-
ULiege
http://localhost:1313/developers/uliege/
diff --git a/developers/inria-rhône-alpes/index.html b/developers/inria-rhône-alpes/index.html
index f095be4..7def371 100644
--- a/developers/inria-rhône-alpes/index.html
+++ b/developers/inria-rhône-alpes/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/johannes-kepler-universität-linz/index.html b/developers/johannes-kepler-universität-linz/index.html
index a897240..6264200 100644
--- a/developers/johannes-kepler-universität-linz/index.html
+++ b/developers/johannes-kepler-universität-linz/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/laurent-simon/index.html b/developers/laurent-simon/index.html
index 6f2b55f..1b99a1c 100644
--- a/developers/laurent-simon/index.html
+++ b/developers/laurent-simon/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/loria/index.html b/developers/loria/index.html
index e64ab1c..4d59a64 100644
--- a/developers/loria/index.html
+++ b/developers/loria/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/masaryk-university/index.html b/developers/masaryk-university/index.html
index 0cf579b..11ebba1 100644
--- a/developers/masaryk-university/index.html
+++ b/developers/masaryk-university/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/microsoft-research/index.html b/developers/microsoft-research/index.html
index 912918c..28c8cf0 100644
--- a/developers/microsoft-research/index.html
+++ b/developers/microsoft-research/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/niklas-eén/index.html b/developers/niklas-eén/index.html
index 049a276..3f40539 100644
--- a/developers/niklas-eén/index.html
+++ b/developers/niklas-eén/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/niklas-sörensson/index.html b/developers/niklas-sörensson/index.html
index 358205a..f51ffd4 100644
--- a/developers/niklas-sörensson/index.html
+++ b/developers/niklas-sörensson/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/norbert-manthey/index.html b/developers/norbert-manthey/index.html
index b7fea0c..fa5178a 100644
--- a/developers/norbert-manthey/index.html
+++ b/developers/norbert-manthey/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/ocaml-pro/index.html b/developers/ocaml-pro/index.html
index 354a749..e978698 100644
--- a/developers/ocaml-pro/index.html
+++ b/developers/ocaml-pro/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/oxford-university/index.html b/developers/oxford-university/index.html
index 739bfee..e79171e 100644
--- a/developers/oxford-university/index.html
+++ b/developers/oxford-university/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/rwth-aachen/index.html b/developers/rwth-aachen/index.html
index a083098..102d56a 100644
--- a/developers/rwth-aachen/index.html
+++ b/developers/rwth-aachen/index.html
@@ -23,7 +23,7 @@
-
+
@@ -107,6 +107,14 @@
+
+ COMICS
+ COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for …
+
+
+
+
+
SMT-RAT
SMT-RAT is an SMT Real Algebra Toolbox.
diff --git a/developers/rwth-aachen/index.xml b/developers/rwth-aachen/index.xml
index 127bd39..fb855c7 100644
--- a/developers/rwth-aachen/index.xml
+++ b/developers/rwth-aachen/index.xml
@@ -8,6 +8,13 @@
en-us
Sat, 07 Jun 2025 00:00:00 +0000
+ -
+
COMICS
+ http://localhost:1313/tools/prob/comics/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/prob/comics/
+ <p>COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for discrete-time Markov Chains (DTMCs).</p>
+
-
SMT-RAT
http://localhost:1313/tools/sat-smt/smt-rat/
diff --git a/developers/sri-international/index.html b/developers/sri-international/index.html
index c189b01..eda635c 100644
--- a/developers/sri-international/index.html
+++ b/developers/sri-international/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/stanford-university/index.html b/developers/stanford-university/index.html
index 10e7ece..1ba4919 100644
--- a/developers/stanford-university/index.html
+++ b/developers/stanford-university/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/tu-wien/index.html b/developers/tu-wien/index.html
new file mode 100644
index 0000000..a23925f
--- /dev/null
+++ b/developers/tu-wien/index.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+TU Wien | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TU Wien
+
+
+
+
+
+
+
diff --git a/developers/tu-wien/index.xml b/developers/tu-wien/index.xml
new file mode 100644
index 0000000..422ec05
--- /dev/null
+++ b/developers/tu-wien/index.xml
@@ -0,0 +1,26 @@
+
+
+
+ TU Wien on Formal Methods Tools
+ http://localhost:1313/developers/tu-wien/
+ Recent content in TU Wien on Formal Methods Tools
+ Hugo
+ en-us
+ Sat, 07 Jun 2025 00:00:00 +0000
+
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
+
+
diff --git a/developers/uliege/index.html b/developers/uliege/index.html
index 1d4cb04..02e9944 100644
--- a/developers/uliege/index.html
+++ b/developers/uliege/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/university-of-freiburg/index.html b/developers/university-of-freiburg/index.html
index 7bdb183..c8508c9 100644
--- a/developers/university-of-freiburg/index.html
+++ b/developers/university-of-freiburg/index.html
@@ -23,7 +23,7 @@
-
+
@@ -107,6 +107,15 @@
+
+ CaDiCaL
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
+
+
SMTInterpol
SMTInterpol is an SMT Solver that can compute Craig interpolants for various theories.
diff --git a/developers/university-of-freiburg/index.xml b/developers/university-of-freiburg/index.xml
index e659c8d..83498d9 100644
--- a/developers/university-of-freiburg/index.xml
+++ b/developers/university-of-freiburg/index.xml
@@ -8,6 +8,13 @@
en-us
Sat, 07 Jun 2025 00:00:00 +0000
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
SMTInterpol
http://localhost:1313/tools/sat-smt/smtinterpol/
diff --git a/developers/university-of-illinois/index.html b/developers/university-of-illinois/index.html
index ae28329..a0515d3 100644
--- a/developers/university-of-illinois/index.html
+++ b/developers/university-of-illinois/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/university-of-iowa/index.html b/developers/university-of-iowa/index.html
index c78bbac..400141c 100644
--- a/developers/university-of-iowa/index.html
+++ b/developers/university-of-iowa/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/university-of-lugano/index.html b/developers/university-of-lugano/index.html
index ff41290..94f0c3e 100644
--- a/developers/university-of-lugano/index.html
+++ b/developers/university-of-lugano/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/university-of-virginia/index.html b/developers/university-of-virginia/index.html
index 5d44ad3..5291835 100644
--- a/developers/university-of-virginia/index.html
+++ b/developers/university-of-virginia/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/developers/utah-state-university/index.html b/developers/utah-state-university/index.html
index b5c52ec..ed19e21 100644
--- a/developers/utah-state-university/index.html
+++ b/developers/utah-state-university/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/domains/index.html b/domains/index.html
index e639737..b3f3807 100644
--- a/domains/index.html
+++ b/domains/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/index.html b/index.html
index 9e79c06..ab92f05 100644
--- a/index.html
+++ b/index.html
@@ -24,7 +24,7 @@
-
+
@@ -118,6 +118,31 @@ Contribute
Try Something New
This list shows a selection of 20 random tools, refreshed every time this site is updated.
+
+
+
+
+ STP
+
+ Simple Theorem Prover
+
+
+ STP is a constraint solver for quantifier-free bitvectors.
+APIs and Bindings This tool is available …
+ STP
+
+
+
+
+ Storm
+
+ Probabilistic Model Checker
+
+
+ Storm is a tool for the analysis of systems involving random or probabilistic phenomena.
+
+ Storm
+
@@ -127,43 +152,43 @@ Contribute
CryptoMiniSat is a SAT solver.
-APIs and Bindings This tool is available through the following interfaces:
-C++ Namespace: …
+APIs and Bindings This tool is available through the following …
CryptoMiniSat
- Sally
-
- Probabilistic Model Checker
-
-
- Sally is a model checker for infinite state systems described as transition systems.
-
- Sally
-
-
-
-
- STAMINA
-
- Probabilistic Model Checker
-
-
- A state-space truncation tool for Markov-Chains that can analyze infinite-sized models. Intefaces with either Storm or PRISM. …
- STAMINA
-
-
-
-
- veriT
+ MathSAT
SMT Solver
- veriT is an SMT solver developed by LORIA and ULiege. It supports a wide range of theories and is designed for use in formal …
- veriT
+ [ Closed-Source Tool ] MiniSat is a minimalistic, open-source SAT solver, developed to help …
+ MathSAT
+
+
+
+
+ Lingeling
+
+ SAT Solver
+
+
+ Lingeling is a SAT solver.
+
+ Lingeling
+
+
+
+
+ Zipperposition
+
+ Theorem Prover
+
+
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+ Zipperposition
@@ -173,7 +198,7 @@ C++ Namespace: …
SMT Solver
- Alt-Ergo is an automatic prover of mathematical formulas used behind software verification tools such as Frama-C, SPARK, …
+ Alt-Ergo is an automatic prover of mathematical formulas used behind software verification tools …
Alt-Ergo
@@ -191,14 +216,127 @@ C++ Namespace: …
- cvc5
+ Boolector
- Theorem Prover
+ SMT Solver
- cvc5 is an automatic theorem prover for SMT problems.
+
[ Not Maintained Since 2024 ] Boolector is a Satisfiability Modulo Theories (SMT) solver for the …
+ Boolector
+
+
+
+
+ Yices 2
+
+ SMT Solver
+
+
+ Yices is an SMT solver developed by SRI International. It is widely used for checking the …
+ Yices 2
+
+
+
+
+ SMT-RAT
+
+ SMT Toolbox
+
+
+ SMT-RAT is an SMT Real Algebra Toolbox.
+APIs and Bindings This tool is available through the …
+ SMT-RAT
+
+
+
+
+ dReal
+
+ SMT Solver
+
+
+ [ Not Maintained Since 2023 ] dReal is an automated reasoning tool. It focuses on solving problems …
+ dReal
+
+
+
+
+ SMTInterpol
+
+ Interpolating SMT Solver
+
+
+ SMTInterpol is an SMT Solver that can compute Craig interpolants for various theories.
+APIs and …
+ SMTInterpol
+
+
+
+
+ Q3B
+
+ SMT Solver
+
+
+ [ Not Maintained Since 2023 ] Q3B is an SMT solver for the quantified bit-vector formulas which …
+ Q3B
+
+
+
+
+ CaDiCaL
+
+ SAT Solver
+
+
+ CaDiCaL is a simplified satisfiability solver.
- cvc5
+ CaDiCaL
+
+
+
+
+ ParaFROST
+
+ SMT Solver
+
+
+ ParaFROST is a parallel SAT solver with GPU-accelerated inprocessing capable of harnessing NVIDIA …
+ ParaFROST
+
+
+
+
+ OpenSMT
+
+ SMT Solver
+
+
+ OpenSMT is a compact and open-source SMT-solver written in C++, with the main goal of making …
+ OpenSMT
+
+
+
+
+ MiniSat
+
+ SAT Solver
+
+
+ [ Not Maintained Since 2013 ] MiniSat is a minimalistic, open-source SAT solver, developed to help …
+ MiniSat
+
+
+
+
+ Sally
+
+ Probabilistic Model Checker
+
+
+ Sally is a model checker for infinite state systems described as transition systems.
+
+ Sally
@@ -213,145 +351,27 @@ C++ Namespace: …
Riss
-
-
- Boolector
-
- SMT Solver
-
-
- [ Not Maintained Since 2024 ] Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size …
- Boolector
-
-
-
-
- SMTInterpol
-
- Interpolating SMT Solver
-
-
- SMTInterpol is an SMT Solver that can compute Craig interpolants for various theories.
-APIs and Bindings This tool is …
- SMTInterpol
-
-
-
-
- MathSAT
-
- SMT Solver
-
-
- [ Closed-Source Tool ] MiniSat is a minimalistic, open-source SAT solver, developed to help researchers and developers …
- MathSAT
-
-
-
-
- Z3
-
- Theorem Prover
-
-
- Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.
-APIs and Bindings This tool is available …
- Z3
-
-
-
-
- Bitwuzla
-
- SMT Solver
-
-
- Bitwuzla is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, floating-point …
- Bitwuzla
-
-
-
-
- Yices 2
-
- SMT Solver
-
-
- Yices is an SMT solver developed by SRI International. It is widely used for checking the satisfiability of logical formulas …
- Yices 2
-
-
-
-
- Lingeling
-
- SAT Solver
-
-
- Lingeling is a SAT solver.
-
- Lingeling
-
-
-
-
- dReal
-
- SMT Solver
-
-
- [ Not Maintained Since 2023 ] dReal is an automated reasoning tool. It focuses on solving problems that can be encoded as …
- dReal
-
-
-
-
- MiniSat
-
- SAT Solver
-
-
- [ Not Maintained Since 2013 ] MiniSat is a minimalistic, open-source SAT solver, developed to help researchers and …
- MiniSat
-
-
-
-
- OpenSMT
-
- SMT Solver
-
-
- OpenSMT is a compact and open-source SMT-solver written in C++, with the main goal of making SMT-Solvers easy to understand …
- OpenSMT
-
-
-
-
- cvc4
-
- Theorem Prover
-
-
- [ Not Maintained Since 2021 ] cvc4 is an automatic theorem prover for SMT problems. It is succeeded by cvc5
-
- cvc4
-
-
-
-
- STP
-
- Simple Theorem Prover
-
-
- STP is a constraint solver for quantifier-free bitvectors.
-APIs and Bindings This tool is available through the following …
- STP
-
-
+
+
+
+
+
+
+
+
+
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
Colibri
http://localhost:1313/tools/sat-smt/colibri/
@@ -36,6 +43,13 @@
http://localhost:1313/tools/sat-smt/colibri/
<p>Colibri is an SMT solver.</p>
+ -
+
COMICS
+ http://localhost:1313/tools/prob/comics/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/prob/comics/
+ <p>COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for discrete-time Markov Chains (DTMCs).</p>
+
-
CryptoMiniSat
http://localhost:1313/tools/sat-smt/cryptominisat/
@@ -64,6 +78,13 @@
http://localhost:1313/tools/sat-smt/dreal/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2023</span>
<span style="display:none">]</span>
</div>
dReal is an automated reasoning tool. It focuses on solving problems that can be encoded as first-order logic formulas over the real numbers. Its special strength is in handling problems that involve a wide range of nonlinear real functions.</p>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
Glucose
http://localhost:1313/tools/sat-smt/glucose/
@@ -169,6 +190,13 @@
http://localhost:1313/tools/sat-smt/stp/
<p>STP is a constraint solver for quantifier-free bitvectors.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://stp.readthedocs.io/en/latest/#c-library-usage" target="_blank" >stp C API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://stp.readthedocs.io/en/latest/#python-usage" target="_blank" >stp PyPI package</a></li>
</ul>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
veriT
http://localhost:1313/tools/sat-smt/verit/
@@ -190,6 +218,13 @@
http://localhost:1313/tools/sat-smt/z3/
<p>Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://z3prover.github.io/api/html/group__capi.html" target="_blank" >Z3 C API Reference</a></li>
<li><strong>C++ API:</strong> <a href="https://z3prover.github.io/api/html/namespacez3.html" target="_blank" >Z3 C++ Namespace Reference</a></li>
<li><strong>.NET API:</strong> <a href="https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html" target="_blank" >Z3 .NET Namespace Reference</a></li>
<li><strong>Java API:</strong> <a href="https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html" target="_blank" >Z3 Java API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://pypi.org/project/z3-solver/" target="_blank" >z3-solver PyPI package</a> (<a href="https://z3prover.github.io/api/html/z3.html" target="_blank" >Documentation</a>)</li>
<li><strong>Rust bindings:</strong> <a href="https://crates.io/crates/z3" target="_blank" >z3 crate on crates.io</a></li>
</ul>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
-
About
http://localhost:1313/about/
diff --git a/inputs/alt-ergo/index.html b/inputs/alt-ergo/index.html
index 636c159..55f0d71 100644
--- a/inputs/alt-ergo/index.html
+++ b/inputs/alt-ergo/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/cnf/index.html b/inputs/cnf/index.html
index eba2209..f413806 100644
--- a/inputs/cnf/index.html
+++ b/inputs/cnf/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/dimacs/index.html b/inputs/dimacs/index.html
index a4dd8e7..73a62ae 100644
--- a/inputs/dimacs/index.html
+++ b/inputs/dimacs/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/galileo/index.html b/inputs/galileo/index.html
index 750d01d..87e7ad8 100644
--- a/inputs/galileo/index.html
+++ b/inputs/galileo/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/greatspn/index.html b/inputs/greatspn/index.html
index b74602b..cc33ef9 100644
--- a/inputs/greatspn/index.html
+++ b/inputs/greatspn/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/index.html b/inputs/index.html
index 80cd46f..98da698 100644
--- a/inputs/index.html
+++ b/inputs/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/jani/index.html b/inputs/jani/index.html
index 323f2c5..841902f 100644
--- a/inputs/jani/index.html
+++ b/inputs/jani/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/mrmc/index.html b/inputs/mrmc/index.html
index ca5d681..95d9736 100644
--- a/inputs/mrmc/index.html
+++ b/inputs/mrmc/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/pnml/index.html b/inputs/pnml/index.html
index ee800d4..f0ae43e 100644
--- a/inputs/pnml/index.html
+++ b/inputs/pnml/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/prism/index.html b/inputs/prism/index.html
index 01b8e67..ad04328 100644
--- a/inputs/prism/index.html
+++ b/inputs/prism/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/sally/index.html b/inputs/sally/index.html
index 475ec1b..b0baba7 100644
--- a/inputs/sally/index.html
+++ b/inputs/sally/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/smtlib2/index.html b/inputs/smtlib2/index.html
index d033fcb..ebb7791 100644
--- a/inputs/smtlib2/index.html
+++ b/inputs/smtlib2/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/inputs/yices-2/index.html b/inputs/yices-2/index.html
index 5f5574e..faee39b 100644
--- a/inputs/yices-2/index.html
+++ b/inputs/yices-2/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/.net/index.html b/interfaces/.net/index.html
index d6198bc..a3d5199 100644
--- a/interfaces/.net/index.html
+++ b/interfaces/.net/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/c++/index.html b/interfaces/c++/index.html
index dc0327e..dec3b23 100644
--- a/interfaces/c++/index.html
+++ b/interfaces/c++/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/c/index.html b/interfaces/c/index.html
index c7ca055..df70337 100644
--- a/interfaces/c/index.html
+++ b/interfaces/c/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/cli/index.html b/interfaces/cli/index.html
index 3671617..62cdd8b 100644
--- a/interfaces/cli/index.html
+++ b/interfaces/cli/index.html
@@ -23,7 +23,7 @@
-
+
@@ -129,6 +129,15 @@
+
+
+
+ CaDiCaL
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
@@ -172,6 +181,14 @@ APIs and Bindings This tool is available through the following …
+
+
+
+ E
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with …
+
+
+
@@ -300,6 +317,15 @@ APIs and Bindings This tool is available …
+
+
+
+ Vampire
+ Vampire is a theorem prover.
+
+
+
+
@@ -325,6 +351,15 @@ APIs and Bindings This …
+
+
+
+ Zipperposition
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+
+
+
diff --git a/interfaces/cli/index.xml b/interfaces/cli/index.xml
index 2be35d0..5f17352 100644
--- a/interfaces/cli/index.xml
+++ b/interfaces/cli/index.xml
@@ -29,6 +29,13 @@
http://localhost:1313/tools/sat-smt/boolector/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2024</span>
<span style="display:none">]</span>
</div>
Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
Succeeded by <a href="../bitwuzla" >Bitwuzla</a></p>
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
Colibri
http://localhost:1313/tools/sat-smt/colibri/
@@ -64,6 +71,13 @@
http://localhost:1313/tools/sat-smt/dreal/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2023</span>
<span style="display:none">]</span>
</div>
dReal is an automated reasoning tool. It focuses on solving problems that can be encoded as first-order logic formulas over the real numbers. Its special strength is in handling problems that involve a wide range of nonlinear real functions.</p>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
Glucose
http://localhost:1313/tools/sat-smt/glucose/
@@ -169,6 +183,13 @@
http://localhost:1313/tools/sat-smt/stp/
<p>STP is a constraint solver for quantifier-free bitvectors.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://stp.readthedocs.io/en/latest/#c-library-usage" target="_blank" >stp C API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://stp.readthedocs.io/en/latest/#python-usage" target="_blank" >stp PyPI package</a></li>
</ul>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
veriT
http://localhost:1313/tools/sat-smt/verit/
@@ -190,5 +211,12 @@
http://localhost:1313/tools/sat-smt/z3/
<p>Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://z3prover.github.io/api/html/group__capi.html" target="_blank" >Z3 C API Reference</a></li>
<li><strong>C++ API:</strong> <a href="https://z3prover.github.io/api/html/namespacez3.html" target="_blank" >Z3 C++ Namespace Reference</a></li>
<li><strong>.NET API:</strong> <a href="https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html" target="_blank" >Z3 .NET Namespace Reference</a></li>
<li><strong>Java API:</strong> <a href="https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html" target="_blank" >Z3 Java API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://pypi.org/project/z3-solver/" target="_blank" >z3-solver PyPI package</a> (<a href="https://z3prover.github.io/api/html/z3.html" target="_blank" >Documentation</a>)</li>
<li><strong>Rust bindings:</strong> <a href="https://crates.io/crates/z3" target="_blank" >z3 crate on crates.io</a></li>
</ul>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
diff --git a/interfaces/index.html b/interfaces/index.html
index 768a248..016be92 100644
--- a/interfaces/index.html
+++ b/interfaces/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/java/index.html b/interfaces/java/index.html
index 355f488..bac98f6 100644
--- a/interfaces/java/index.html
+++ b/interfaces/java/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/online/index.html b/interfaces/online/index.html
index 6197598..7883152 100644
--- a/interfaces/online/index.html
+++ b/interfaces/online/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/python/index.html b/interfaces/python/index.html
index 922f6f6..0dd8433 100644
--- a/interfaces/python/index.html
+++ b/interfaces/python/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/interfaces/rust/index.html b/interfaces/rust/index.html
index ca23e77..1dc6317 100644
--- a/interfaces/rust/index.html
+++ b/interfaces/rust/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/license/index.html b/license/index.html
index 10f9bb5..1baf034 100644
--- a/license/index.html
+++ b/license/index.html
@@ -25,7 +25,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
-
+
diff --git a/licenses/all-rights-reserved/index.html b/licenses/all-rights-reserved/index.html
index 843edaf..1e8b6ab 100644
--- a/licenses/all-rights-reserved/index.html
+++ b/licenses/all-rights-reserved/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/licenses/apache-2.0/index.html b/licenses/apache-2.0/index.html
index 70c7b91..eac6c24 100644
--- a/licenses/apache-2.0/index.html
+++ b/licenses/apache-2.0/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/licenses/bsd/index.html b/licenses/bsd/index.html
index 4db885f..6d66c4a 100644
--- a/licenses/bsd/index.html
+++ b/licenses/bsd/index.html
@@ -23,7 +23,7 @@
-
+
@@ -122,6 +122,15 @@
+
+
+
+ Vampire
+ Vampire is a theorem prover.
+
+
+
+
@@ -130,6 +139,15 @@
+
+
+
+ Zipperposition
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+
+
+
diff --git a/licenses/bsd/index.xml b/licenses/bsd/index.xml
index 3b8aec9..a24267e 100644
--- a/licenses/bsd/index.xml
+++ b/licenses/bsd/index.xml
@@ -22,6 +22,13 @@
http://localhost:1313/tools/sat-smt/cvc5/
<p>cvc5 is an automatic theorem prover for SMT problems.</p>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
veriT
http://localhost:1313/tools/sat-smt/verit/
@@ -29,5 +36,12 @@
http://localhost:1313/tools/sat-smt/verit/
<p>veriT is an SMT solver developed by LORIA and ULiege. It supports a wide range of theories and is designed for use in formal verification, automated reasoning, and related research areas. veriT accepts input in SMT-LIB2 and DIMACS formats and provides a command-line interface for ease of integration into verification workflows. The solver is actively maintained and distributed under the BSD license, making it suitable for both academic and industrial applications.</p>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
diff --git a/licenses/gplv2/index.html b/licenses/gplv2/index.html
index 4a61a3a..34d86ce 100644
--- a/licenses/gplv2/index.html
+++ b/licenses/gplv2/index.html
@@ -23,7 +23,7 @@
-
+
@@ -114,6 +114,14 @@ APIs and Bindings This tool is available through the following …
+
+
+
+ E
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with …
+
+
+
diff --git a/licenses/gplv2/index.xml b/licenses/gplv2/index.xml
index ec4c7e3..cfdd9d3 100644
--- a/licenses/gplv2/index.xml
+++ b/licenses/gplv2/index.xml
@@ -15,6 +15,13 @@
http://localhost:1313/tools/sat-smt/cryptominisat/
<p>CryptoMiniSat is a SAT solver.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C++ Namespace:</strong> Documentation on <a href="https://www.msoos.org/cryptominisat5/" target="_blank" >homepage</a></li>
<li><strong>Python package:</strong> <a href="https://pypi.org/project/pycryptosat/" target="_blank" >PyPI package</a></li>
</ul>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
PRISM
http://localhost:1313/tools/prob/prism/
diff --git a/licenses/gplv3/index.html b/licenses/gplv3/index.html
index dd1c817..3fa2632 100644
--- a/licenses/gplv3/index.html
+++ b/licenses/gplv3/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/licenses/index.html b/licenses/index.html
index 18de491..dccc3b4 100644
--- a/licenses/index.html
+++ b/licenses/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/licenses/lgplv2/index.html b/licenses/lgplv2/index.html
index 7afbc31..a856029 100644
--- a/licenses/lgplv2/index.html
+++ b/licenses/lgplv2/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/licenses/mit/index.html b/licenses/mit/index.html
index 1cb1987..ad9950f 100644
--- a/licenses/mit/index.html
+++ b/licenses/mit/index.html
@@ -23,7 +23,7 @@
-
+
@@ -121,6 +121,15 @@
+
+
+
+ CaDiCaL
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
diff --git a/licenses/mit/index.xml b/licenses/mit/index.xml
index df220f6..cd23aee 100644
--- a/licenses/mit/index.xml
+++ b/licenses/mit/index.xml
@@ -22,6 +22,13 @@
http://localhost:1313/tools/sat-smt/boolector/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2024</span>
<span style="display:none">]</span>
</div>
Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
Succeeded by <a href="../bitwuzla" >Bitwuzla</a></p>
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
Colibri
http://localhost:1313/tools/sat-smt/colibri/
diff --git a/licenses/ocamlpro-non-commercial/index.html b/licenses/ocamlpro-non-commercial/index.html
index a8407e3..5ea84ec 100644
--- a/licenses/ocamlpro-non-commercial/index.html
+++ b/licenses/ocamlpro-non-commercial/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/maintenance/actively-maintained/index.html b/maintenance/actively-maintained/index.html
index 0c4709d..9a8f774 100644
--- a/maintenance/actively-maintained/index.html
+++ b/maintenance/actively-maintained/index.html
@@ -23,7 +23,7 @@
-
+
@@ -121,6 +121,15 @@
+
+
+
+ CaDiCaL
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
@@ -148,6 +157,14 @@ APIs and Bindings This tool is available through the following …
+
+
+
+ E
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with …
+
+
+
@@ -251,6 +268,15 @@ APIs and Bindings This tool is available …
+
+
+
+ Vampire
+ Vampire is a theorem prover.
+
+
+
+
@@ -276,6 +302,15 @@ APIs and Bindings This …
+
+
+
+ Zipperposition
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+
+
+
diff --git a/maintenance/actively-maintained/index.xml b/maintenance/actively-maintained/index.xml
index 8394ced..9f0f0be 100644
--- a/maintenance/actively-maintained/index.xml
+++ b/maintenance/actively-maintained/index.xml
@@ -22,6 +22,13 @@
http://localhost:1313/tools/sat-smt/bitwuzla/
<p>Bitwuzla is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, floating-point arithmetic, arrays, uninterpreted functions and their combinations.</p>
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
Colibri
http://localhost:1313/tools/sat-smt/colibri/
@@ -43,6 +50,13 @@
http://localhost:1313/tools/sat-smt/cvc5/
<p>cvc5 is an automatic theorem prover for SMT problems.</p>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
Glucose
http://localhost:1313/tools/sat-smt/glucose/
@@ -127,6 +141,13 @@
http://localhost:1313/tools/sat-smt/stp/
<p>STP is a constraint solver for quantifier-free bitvectors.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://stp.readthedocs.io/en/latest/#c-library-usage" target="_blank" >stp C API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://stp.readthedocs.io/en/latest/#python-usage" target="_blank" >stp PyPI package</a></li>
</ul>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
veriT
http://localhost:1313/tools/sat-smt/verit/
@@ -148,5 +169,12 @@
http://localhost:1313/tools/sat-smt/z3/
<p>Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://z3prover.github.io/api/html/group__capi.html" target="_blank" >Z3 C API Reference</a></li>
<li><strong>C++ API:</strong> <a href="https://z3prover.github.io/api/html/namespacez3.html" target="_blank" >Z3 C++ Namespace Reference</a></li>
<li><strong>.NET API:</strong> <a href="https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html" target="_blank" >Z3 .NET Namespace Reference</a></li>
<li><strong>Java API:</strong> <a href="https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html" target="_blank" >Z3 Java API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://pypi.org/project/z3-solver/" target="_blank" >z3-solver PyPI package</a> (<a href="https://z3prover.github.io/api/html/z3.html" target="_blank" >Documentation</a>)</li>
<li><strong>Rust bindings:</strong> <a href="https://crates.io/crates/z3" target="_blank" >z3 crate on crates.io</a></li>
</ul>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
diff --git a/maintenance/index.html b/maintenance/index.html
index a6dc3d2..88e7c70 100644
--- a/maintenance/index.html
+++ b/maintenance/index.html
@@ -23,7 +23,7 @@
-
+
@@ -123,6 +123,24 @@
+
+
+
+
+
+
+
+
+
+
+ Unknown
+
+
+
diff --git a/maintenance/index.xml b/maintenance/index.xml
index 110dd90..8448981 100644
--- a/maintenance/index.xml
+++ b/maintenance/index.xml
@@ -22,5 +22,12 @@
http://localhost:1313/maintenance/not-maintained/
+ -
+
Unknown
+ http://localhost:1313/maintenance/unknown/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/maintenance/unknown/
+
+
diff --git a/maintenance/not-maintained/index.html b/maintenance/not-maintained/index.html
index 4a249be..b73e04f 100644
--- a/maintenance/not-maintained/index.html
+++ b/maintenance/not-maintained/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/maintenance/unknown/index.html b/maintenance/unknown/index.html
new file mode 100644
index 0000000..bc6f8d9
--- /dev/null
+++ b/maintenance/unknown/index.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+Unknown | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unknown
+
+
+
+
+
+
+
diff --git a/maintenance/unknown/index.xml b/maintenance/unknown/index.xml
new file mode 100644
index 0000000..c2689b8
--- /dev/null
+++ b/maintenance/unknown/index.xml
@@ -0,0 +1,11 @@
+
+
+
+ Unknown on Formal Methods Tools
+ http://localhost:1313/maintenance/unknown/
+ Recent content in Unknown on Formal Methods Tools
+ Hugo
+ en-us
+
+
+
diff --git a/privacy/index.html b/privacy/index.html
index 8b231ec..77bfa5c 100644
--- a/privacy/index.html
+++ b/privacy/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/sitemap.xml b/sitemap.xml
index 1a73ce8..bc86000 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -43,6 +43,9 @@
http://localhost:1313/interfaces/c++/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/tools/sat-smt/cadical/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/techniques/cdcl/
2025-06-07T00:00:00+00:00
@@ -58,9 +61,15 @@
http://localhost:1313/tools/sat-smt/colibri/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/tools/prob/comics/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/applications/constraint-solver/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/applications/counterexample-generator/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/tools/sat-smt/cryptominisat/
2025-06-07T00:00:00+00:00
@@ -73,6 +82,9 @@
http://localhost:1313/developers/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/developers/dhbw-stuttgart/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/inputs/dimacs/
2025-06-07T00:00:00+00:00
@@ -82,6 +94,9 @@
http://localhost:1313/tools/sat-smt/dreal/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/tools/sat-smt/e/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/developers/eindhoven-university-of-technology/
2025-06-07T00:00:00+00:00
@@ -271,15 +286,15 @@
http://localhost:1313/techniques/
2025-06-07T00:00:00+00:00
-
- http://localhost:1313/tools/termination/
- 2025-06-07T00:00:00+00:00
http://localhost:1313/
2025-06-07T00:00:00+00:00
http://localhost:1313/applications/theorem-prover/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/developers/tu-wien/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/developers/uliege/
2025-06-07T00:00:00+00:00
@@ -301,6 +316,9 @@
http://localhost:1313/developers/utah-state-university/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/tools/sat-smt/vampire/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/tools/sat-smt/verit/
2025-06-07T00:00:00+00:00
@@ -313,6 +331,9 @@
http://localhost:1313/tools/sat-smt/z3/
2025-06-07T00:00:00+00:00
+
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ 2025-06-07T00:00:00+00:00
http://localhost:1313/about/
@@ -325,5 +346,9 @@
http://localhost:1313/license/
http://localhost:1313/privacy/
+
+ http://localhost:1313/tools/termination/
+
+ http://localhost:1313/maintenance/unknown/
diff --git a/taxonomies/index.html b/taxonomies/index.html
index 3a7ac1f..984ffb2 100644
--- a/taxonomies/index.html
+++ b/taxonomies/index.html
@@ -24,7 +24,7 @@ Click on an item in the first column to focus">
-
+
@@ -131,6 +131,23 @@ the tools developed at SRI International).
+
+ Counterexample Generator
+
+
+
+
+
+
+
+
+
+
+
+
+ DHBW Stuttgart
+
+
+
+
+
+
+
+
+
+
+
+
+ TU Wien
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/techniques/gpu/index.html b/techniques/gpu/index.html
index 389612a..3c101aa 100644
--- a/techniques/gpu/index.html
+++ b/techniques/gpu/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/techniques/index.html b/techniques/index.html
index 1244feb..5f85cb8 100644
--- a/techniques/index.html
+++ b/techniques/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/index.html b/tools/index.html
index 7988923..88cd32a 100644
--- a/tools/index.html
+++ b/tools/index.html
@@ -25,7 +25,7 @@ Click a colorful item in the">
-
+
@@ -104,6 +104,8 @@ Click a colorful item in the">
+
+
@@ -144,6 +146,14 @@ Click a colorful item in the">
+
+
+
+
+
+
+
+
@@ -209,7 +219,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Alt-Ergo
-
+
@@ -327,7 +337,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Bitwuzla
-
+
@@ -486,7 +496,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -631,6 +641,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ CaDiCaL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SAT Solver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MIT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -642,7 +766,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Colibri
-
+
@@ -747,6 +871,85 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+
+ COMICS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Counterexample Generator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -760,7 +963,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
CryptoMiniSat
-
+
@@ -902,7 +1105,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1041,7 +1244,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
cvc5
-
+
@@ -1183,7 +1386,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1282,6 +1485,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GPLv2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1293,7 +1610,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Glucose
-
+
@@ -1411,7 +1728,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Lingeling
-
+
@@ -1525,7 +1842,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
MathSAT
-
+
@@ -1642,7 +1959,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1756,7 +2073,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
OpenSMT
-
+
@@ -1874,7 +2191,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
ParaFROST
-
+
@@ -2000,7 +2317,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
PRISM
-
+
@@ -2125,7 +2442,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -2250,7 +2567,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -2368,7 +2685,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Sally
-
+
@@ -2486,7 +2803,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
SMT-RAT
-
+
@@ -2625,7 +2942,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
SMTInterpol
-
+
@@ -2747,7 +3064,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
STAMINA
-
+
@@ -2886,7 +3203,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Storm
-
+
@@ -3008,7 +3325,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
STP
-
+
@@ -3153,6 +3470,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ Vampire
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BSD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3164,7 +3595,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
veriT
-
+
@@ -3286,7 +3717,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Yices 2
-
+
@@ -3425,7 +3856,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Z3
-
+
@@ -3570,6 +4001,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ Zipperposition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BSD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/mc/index.html b/tools/mc/index.html
index 6c2cfd8..958a9a2 100644
--- a/tools/mc/index.html
+++ b/tools/mc/index.html
@@ -25,7 +25,7 @@ Click a colorful">
-
+
@@ -125,7 +125,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Sally
-
+
diff --git a/tools/mc/sally/index.html b/tools/mc/sally/index.html
index e9a5030..063e308 100644
--- a/tools/mc/sally/index.html
+++ b/tools/mc/sally/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/prob/comics/index.html b/tools/prob/comics/index.html
new file mode 100644
index 0000000..b2380e2
--- /dev/null
+++ b/tools/prob/comics/index.html
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+COMICS | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for discrete-time Markov Chains (DTMCs).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/prob/index.html b/tools/prob/index.html
index e4bb249..45a455f 100644
--- a/tools/prob/index.html
+++ b/tools/prob/index.html
@@ -25,7 +25,7 @@ Click a colorful">
-
+
@@ -99,6 +99,10 @@ Click a colorful">
+
+
+
+
@@ -127,13 +131,92 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+ COMICS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Counterexample Generator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PRISM
-
+
@@ -255,7 +338,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
STAMINA
-
+
@@ -394,7 +477,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Storm
-
+
diff --git a/tools/prob/index.xml b/tools/prob/index.xml
index 68dac05..ee7f89c 100644
--- a/tools/prob/index.xml
+++ b/tools/prob/index.xml
@@ -8,6 +8,13 @@
en-us
Sat, 07 Jun 2025 00:00:00 +0000
+ -
+
COMICS
+ http://localhost:1313/tools/prob/comics/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/prob/comics/
+ <p>COMICS is a stand-alone tool which performs model checking and the generation of counterexamples for discrete-time Markov Chains (DTMCs).</p>
+
-
PRISM
http://localhost:1313/tools/prob/prism/
diff --git a/tools/prob/prism/index.html b/tools/prob/prism/index.html
index 2dc4a98..8c92e33 100644
--- a/tools/prob/prism/index.html
+++ b/tools/prob/prism/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/prob/stamina/index.html b/tools/prob/stamina/index.html
index 26d0f24..29a8651 100644
--- a/tools/prob/stamina/index.html
+++ b/tools/prob/stamina/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/prob/storm-copy/index.html b/tools/prob/storm-copy/index.html
new file mode 100644
index 0000000..bf0ea75
--- /dev/null
+++ b/tools/prob/storm-copy/index.html
@@ -0,0 +1,550 @@
+
+
+
+
+
+
+
+
+Storm | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ Storm is a tool for the analysis of systems involving random or probabilistic phenomena.
+
+
+
+
+
+
+ Publications
+
+
+
+
+
+
+
+
+
+
+
+ The probabilistic model checker Storm
+
+
+ (2022)
+
+
+ by Hensel, Christian et. al.
+
+ (589-610)
+ | Appears in International Journal on Software Tools for Technology Transfer
+ | Volume 24
+ | Published by Springer
+ | 10.1007/s10009-021-00633-z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/prob/storm/index.html b/tools/prob/storm/index.html
index 9b20e58..f764d11 100644
--- a/tools/prob/storm/index.html
+++ b/tools/prob/storm/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/alt-ergo/index.html b/tools/sat-smt/alt-ergo/index.html
index c8fb1e1..06c703d 100644
--- a/tools/sat-smt/alt-ergo/index.html
+++ b/tools/sat-smt/alt-ergo/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/bitwuzla/index.html b/tools/sat-smt/bitwuzla/index.html
index feb97a6..3ab34c4 100644
--- a/tools/sat-smt/bitwuzla/index.html
+++ b/tools/sat-smt/bitwuzla/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/boolector/index.html b/tools/sat-smt/boolector/index.html
index a45ea23..55d9b15 100644
--- a/tools/sat-smt/boolector/index.html
+++ b/tools/sat-smt/boolector/index.html
@@ -33,7 +33,7 @@ Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of f
-
+
diff --git a/tools/sat-smt/cadical/index.html b/tools/sat-smt/cadical/index.html
new file mode 100644
index 0000000..f3d4929
--- /dev/null
+++ b/tools/sat-smt/cadical/index.html
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+CaDiCaL | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ CaDiCaL is a simplified satisfiability solver.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/colibri/index.html b/tools/sat-smt/colibri/index.html
index d22ccf1..2a266ad 100644
--- a/tools/sat-smt/colibri/index.html
+++ b/tools/sat-smt/colibri/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/cryptominisat/index.html b/tools/sat-smt/cryptominisat/index.html
index 618f6ee..2c70bdc 100644
--- a/tools/sat-smt/cryptominisat/index.html
+++ b/tools/sat-smt/cryptominisat/index.html
@@ -28,7 +28,7 @@ Python">
-
+
diff --git a/tools/sat-smt/cvc4/index.html b/tools/sat-smt/cvc4/index.html
index ab7c6f2..85302b8 100644
--- a/tools/sat-smt/cvc4/index.html
+++ b/tools/sat-smt/cvc4/index.html
@@ -33,7 +33,7 @@ cvc4 is an automatic theorem prover for SMT problems. It is succeeded by cvc5">
-
+
diff --git a/tools/sat-smt/cvc5/index.html b/tools/sat-smt/cvc5/index.html
index 59a3315..6cde6b0 100644
--- a/tools/sat-smt/cvc5/index.html
+++ b/tools/sat-smt/cvc5/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/dreal/index.html b/tools/sat-smt/dreal/index.html
index be09e0d..e6801ee 100644
--- a/tools/sat-smt/dreal/index.html
+++ b/tools/sat-smt/dreal/index.html
@@ -33,7 +33,7 @@ dReal is an automated reasoning tool. It focuses on solving problems that can be
-
+
diff --git a/tools/sat-smt/e-copy/index.html b/tools/sat-smt/e-copy/index.html
new file mode 100644
index 0000000..b0ff907
--- /dev/null
+++ b/tools/sat-smt/e-copy/index.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+E | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/e/index.html b/tools/sat-smt/e/index.html
new file mode 100644
index 0000000..2745a43
--- /dev/null
+++ b/tools/sat-smt/e/index.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+E | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/glucose/index.html b/tools/sat-smt/glucose/index.html
index aff8e9f..a3d674f 100644
--- a/tools/sat-smt/glucose/index.html
+++ b/tools/sat-smt/glucose/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/index.html b/tools/sat-smt/index.html
index 39ef94f..9b0ef11 100644
--- a/tools/sat-smt/index.html
+++ b/tools/sat-smt/index.html
@@ -25,7 +25,7 @@ Click a colorful">
-
+
@@ -159,6 +159,22 @@ Click a colorful">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -209,7 +225,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Alt-Ergo
-
+
@@ -327,7 +343,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Bitwuzla
-
+
@@ -486,7 +502,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -631,6 +647,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ CaDiCaL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SAT Solver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MIT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -642,7 +772,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Colibri
-
+
@@ -760,7 +890,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
CryptoMiniSat
-
+
@@ -902,7 +1032,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1041,7 +1171,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
cvc5
-
+
@@ -1183,7 +1313,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1282,6 +1412,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GPLv2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1293,7 +1537,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Glucose
-
+
@@ -1411,7 +1655,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Lingeling
-
+
@@ -1525,7 +1769,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
MathSAT
-
+
@@ -1642,7 +1886,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -1756,7 +2000,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
OpenSMT
-
+
@@ -1874,7 +2118,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
ParaFROST
-
+
@@ -2003,7 +2247,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -2128,7 +2372,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
-
+
@@ -2246,7 +2490,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
SMT-RAT
-
+
@@ -2385,7 +2629,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
SMTInterpol
-
+
@@ -2507,7 +2751,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
STP
-
+
@@ -2652,6 +2896,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ Vampire
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BSD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2663,7 +3021,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
veriT
-
+
@@ -2785,7 +3143,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Yices 2
-
+
@@ -2924,7 +3282,7 @@ Colors are generated by hashing each term’s name and converting it to RGB
Z3
-
+
@@ -3069,6 +3427,120 @@ Colors are generated by hashing each term’s name and converting it to RGB
+
+
+
+
+
+
+
+
+
+ Zipperposition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theorem Prover
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BSD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/index.xml b/tools/sat-smt/index.xml
index ead6647..6e43a8c 100644
--- a/tools/sat-smt/index.xml
+++ b/tools/sat-smt/index.xml
@@ -29,6 +29,13 @@
http://localhost:1313/tools/sat-smt/boolector/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2024</span>
<span style="display:none">]</span>
</div>
Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
Succeeded by <a href="../bitwuzla" >Bitwuzla</a></p>
+ -
+
CaDiCaL
+ http://localhost:1313/tools/sat-smt/cadical/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/cadical/
+ <p>CaDiCaL is a simplified satisfiability solver.</p>
+
-
Colibri
http://localhost:1313/tools/sat-smt/colibri/
@@ -64,6 +71,13 @@
http://localhost:1313/tools/sat-smt/dreal/
<p>
<div style="display: flex; align-items: center; gap: 8px;">
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
<span style="display:none">[</span>
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since 2023</span>
<span style="display:none">]</span>
</div>
dReal is an automated reasoning tool. It focuses on solving problems that can be encoded as first-order logic formulas over the real numbers. Its special strength is in handling problems that involve a wide range of nonlinear real functions.</p>
+ -
+
E
+ http://localhost:1313/tools/sat-smt/e/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/e/
+ <p>E is a theorem prover for full first-order logic (and now monomorphic higher-order logic) with equality.</p>
+
-
Glucose
http://localhost:1313/tools/sat-smt/glucose/
@@ -141,6 +155,13 @@
http://localhost:1313/tools/sat-smt/stp/
<p>STP is a constraint solver for quantifier-free bitvectors.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://stp.readthedocs.io/en/latest/#c-library-usage" target="_blank" >stp C API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://stp.readthedocs.io/en/latest/#python-usage" target="_blank" >stp PyPI package</a></li>
</ul>
+ -
+
Vampire
+ http://localhost:1313/tools/sat-smt/vampire/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/vampire/
+ <p>Vampire is a theorem prover.</p>
+
-
veriT
http://localhost:1313/tools/sat-smt/verit/
@@ -162,5 +183,12 @@
http://localhost:1313/tools/sat-smt/z3/
<p>Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.</p>
<h2 id="apis-and-bindings">APIs and Bindings</h2>
<p>This tool is available through the following interfaces:</p>
<ul>
<li><strong>C API:</strong> <a href="https://z3prover.github.io/api/html/group__capi.html" target="_blank" >Z3 C API Reference</a></li>
<li><strong>C++ API:</strong> <a href="https://z3prover.github.io/api/html/namespacez3.html" target="_blank" >Z3 C++ Namespace Reference</a></li>
<li><strong>.NET API:</strong> <a href="https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html" target="_blank" >Z3 .NET Namespace Reference</a></li>
<li><strong>Java API:</strong> <a href="https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html" target="_blank" >Z3 Java API Reference</a></li>
<li><strong>Python bindings:</strong> <a href="https://pypi.org/project/z3-solver/" target="_blank" >z3-solver PyPI package</a> (<a href="https://z3prover.github.io/api/html/z3.html" target="_blank" >Documentation</a>)</li>
<li><strong>Rust bindings:</strong> <a href="https://crates.io/crates/z3" target="_blank" >z3 crate on crates.io</a></li>
</ul>
+ -
+
Zipperposition
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ Sat, 07 Jun 2025 00:00:00 +0000
+ http://localhost:1313/tools/sat-smt/zipperposition/
+ <p>Zipperposition is an automated theorem prover for first-order logic with equality and theories.</p>
+
diff --git a/tools/sat-smt/lingeling/index.html b/tools/sat-smt/lingeling/index.html
index 8dc5117..75e3014 100644
--- a/tools/sat-smt/lingeling/index.html
+++ b/tools/sat-smt/lingeling/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/mathsat/index.html b/tools/sat-smt/mathsat/index.html
index d7e0f02..0b70a7a 100644
--- a/tools/sat-smt/mathsat/index.html
+++ b/tools/sat-smt/mathsat/index.html
@@ -29,7 +29,7 @@ MiniSat is a minimalistic, open-source SAT solver, developed to help researchers
-
+
diff --git a/tools/sat-smt/minisat/index.html b/tools/sat-smt/minisat/index.html
index fc57e06..84816ad 100644
--- a/tools/sat-smt/minisat/index.html
+++ b/tools/sat-smt/minisat/index.html
@@ -33,7 +33,7 @@ MiniSat is a minimalistic, open-source SAT solver, developed to help researchers
-
+
diff --git a/tools/sat-smt/opensmt/index.html b/tools/sat-smt/opensmt/index.html
index c3f41b2..dc681a5 100644
--- a/tools/sat-smt/opensmt/index.html
+++ b/tools/sat-smt/opensmt/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/parafrost/index.html b/tools/sat-smt/parafrost/index.html
index fb1187c..c465002 100644
--- a/tools/sat-smt/parafrost/index.html
+++ b/tools/sat-smt/parafrost/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/q3b/index.html b/tools/sat-smt/q3b/index.html
index 772fa65..b07a20a 100644
--- a/tools/sat-smt/q3b/index.html
+++ b/tools/sat-smt/q3b/index.html
@@ -33,7 +33,7 @@ Q3B is an SMT solver for the quantified bit-vector formulas which uses BDDs.">
-
+
diff --git a/tools/sat-smt/riss/index.html b/tools/sat-smt/riss/index.html
index 9290c86..57a849c 100644
--- a/tools/sat-smt/riss/index.html
+++ b/tools/sat-smt/riss/index.html
@@ -33,7 +33,7 @@ Riss is a SAT solving tool collection.">
-
+
diff --git a/tools/sat-smt/smt-rat/index.html b/tools/sat-smt/smt-rat/index.html
index 94acb32..84b643c 100644
--- a/tools/sat-smt/smt-rat/index.html
+++ b/tools/sat-smt/smt-rat/index.html
@@ -28,7 +28,7 @@ C++ API: C++ API Reference
-
+
diff --git a/tools/sat-smt/smtinterpol/index.html b/tools/sat-smt/smtinterpol/index.html
index 37dcd3a..03968c4 100644
--- a/tools/sat-smt/smtinterpol/index.html
+++ b/tools/sat-smt/smtinterpol/index.html
@@ -25,7 +25,7 @@ This tool is available through the following">
-
+
diff --git a/tools/sat-smt/stp/index.html b/tools/sat-smt/stp/index.html
index 6367c62..d8861f0 100644
--- a/tools/sat-smt/stp/index.html
+++ b/tools/sat-smt/stp/index.html
@@ -27,7 +27,7 @@ C API: stp C API">
-
+
diff --git a/tools/sat-smt/vampire-copy/index.html b/tools/sat-smt/vampire-copy/index.html
new file mode 100644
index 0000000..0faa362
--- /dev/null
+++ b/tools/sat-smt/vampire-copy/index.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+Vampire | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ Vampire is a theorem prover.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/vampire/index.html b/tools/sat-smt/vampire/index.html
new file mode 100644
index 0000000..7a91f72
--- /dev/null
+++ b/tools/sat-smt/vampire/index.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+Vampire | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ Vampire is a theorem prover.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/sat-smt/verit/index.html b/tools/sat-smt/verit/index.html
index f0a48ba..d4af65e 100644
--- a/tools/sat-smt/verit/index.html
+++ b/tools/sat-smt/verit/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/yices/index.html b/tools/sat-smt/yices/index.html
index 5320154..94219e5 100644
--- a/tools/sat-smt/yices/index.html
+++ b/tools/sat-smt/yices/index.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tools/sat-smt/z3/index.html b/tools/sat-smt/z3/index.html
index 4d52476..ee22a81 100644
--- a/tools/sat-smt/z3/index.html
+++ b/tools/sat-smt/z3/index.html
@@ -27,7 +27,7 @@ C API:">
-
+
diff --git a/tools/sat-smt/zipperposition/index.html b/tools/sat-smt/zipperposition/index.html
new file mode 100644
index 0000000..fa28382
--- /dev/null
+++ b/tools/sat-smt/zipperposition/index.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+Zipperposition | Formal Methods Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🚧 This site is a work in progress. Don’t be shy to submit an issue or pull request 🚧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+ Zipperposition is an automated theorem prover for first-order logic with equality and theories.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/termination/index.html b/tools/termination/index.html
index 5e5f75e..269bf03 100644
--- a/tools/termination/index.html
+++ b/tools/termination/index.html
@@ -25,7 +25,7 @@ Click a colorful">
-
+
diff --git a/tools/termination/index.xml b/tools/termination/index.xml
index ef3c065..f2e237e 100644
--- a/tools/termination/index.xml
+++ b/tools/termination/index.xml
@@ -6,7 +6,6 @@
Recent content in Termination Tools on Formal Methods Tools
Hugo
en-us
-